rand: fix build error with autotools + LibreSSL #12274
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
autotools unexpectedly detects
arc4random
because it is also lookinginto dependency libs. One dependency, LibreSSL, happens to publish an
arc4random
function (via its shared lib before v3.7, also via staticlib as of v3.8.2). When trying to use this function in
lib/rand.c
,its protoype is missing. To fix that, curl included a prototype, but
that used a C99 type without including
stdint.h
, causing:This patch improves this by dropping the local prototype and instead
limiting
arc4random
use for non-OpenSSL builds. OpenSSL builds providetheir own random source anyway.
The better fix would be to teach autotools to not link dependency libs
while detecting
arc4random
.LibreSSL publishing a non-namespaced
arc4random
tracked here:libressl/portable#928
Regression from 755ddbe #10672
Fixes #12257
Closes #12274