Commit bf62dd5
authored
expat asks for entropy the graph has, instead of one no musl provides (#451)
`lib/expat_config.h` is one static header shared by every target, and it
carried `#define HAVE_ARC4RANDOM_BUF 1` from a glibc configure run. Over
openkal-musl the member stopped at
xmlparse.c:977:3: error: call to undeclared function 'arc4random_buf'
musl 1.2.5 has no arc4random at all --- its `src/prng/` is the rand48 family,
and the name appears in no header. This is therefore a recipe that claims a
function for hosts that do not have it, not a gap in the C library.
THE MACRO SHORT-CIRCUITS THE WHOLE CHAIN, which is why the fallbacks below it
never ran. `generate_hash_secret_salt` reads:
#if defined(HAVE_ARC4RANDOM_BUF)
arc4random_buf(&entropy, sizeof(entropy));
#elif defined(HAVE_ARC4RANDOM)
#else
/* Try high quality providers first .. */
# elif defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM)
Undefined, the chain falls to `HAVE_GETRANDOM`, already defined in this same
header and provided by both musl and glibc, and then to `XML_DEV_URANDOM`. No
target loses a high-quality entropy source; the glibc hosts that were reaching
arc4random_buf reach getrandom instead.
Verified against the published stack --- openkal-linux 0.15.0, openkal-musl
0.18.0, openkal-llvm-runtime 0.13.0 --- with this checkout as a live index:
expat 2.7.1 compiles and the program links and runs, and the artefact
references no arc4random symbol.1 parent 3c62571 commit bf62dd5
1 file changed
Lines changed: 11 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
137 | | - | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
138 | 148 | | |
139 | 149 | | |
140 | 150 | | |
| |||
0 commit comments