Don't. This looks like a portability issue. The definition of
random_init() that makes use of arc4random_addrandom() is
#ifdef-guarded. It gets picked up if macro SKALIBS_HASARC4RANDOM is
defined, and whether it is (in <skalibs/sysdeps.h>) or not depends on
the result of tests perfomed by skalib's 'configure' script.


What it actually tests for is the presence of function
arc4random_uniform(), probably assuming that if it is available, then
arc4random_addrandom() will be as well, and looking at OpenBSD's man
pages, it seems version 5.5 and later defeat that assumption.
 If that's really it, you did the right thing by reporting it here, and
Laurent is going to love this one :D

That's really it, and indeed you did the right thing, OP - thanks for the report. My bad for using an old version of OpenBSD for testing... but I'm wondering more and more if OpenBSD if even a target worth porting to, given that it
shamelessly and purposefully breaks POSIX in several places, and that it
doesn't seem to care (as this report shows) about API stability either.

I'll fix this one, but given I don't have access to my usual dev environment, it will be a few weeks in the making. (It requires adding new sysdeps to check for
arc4random_addrandom(), and/or the new wonderful OpenBSD API to add
randomness: add_foobar_randomness() with various values of foobar, knowing that those functions take an int and not a stream of bytes, because of course they don't. And if none of these functions is available, what is one supposed
to do?)

I wish I had a quick workaround for the OP but since the API has changed,
a workaround would take at least a few lines.
The quickest workaround is to comment out the call to
arc4random_addrandom() in skalibs' random_init.c, and pray that the entropy pool has already be correctly initialized. (That's effectively what the OP already
does by commenting calls to random_init().)

I'm not going to chase after OpenBSD for much longer. One of the next times they break something without giving a shit, I'll just drop support and document that since this OS isn't even trying to pretend to be nice to developers, the heavy lifting should be done by the OS maintainers, and if someone wants an OpenBSD
port of my software, they should nag OpenBSD people for it.

 Laurent, who is loving this one indeed.

Reply via email to