mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 22:10:13 +00:00
stdlib: fix arc4random fallback to /dev/urandom (BZ 31612)
The __getrandom_nocancel used by __arc4random_buf uses INLINE_SYSCALL_CALL (which returns -1/errno) and the loop checks for the return value instead of errno to fallback to /dev/urandom. The malloc code now uses __getrandom_nocancel_nostatus, which uses INTERNAL_SYSCALL_CALL, so there is no need to use the variant that does not set errno (BZ#29624). Checked on x86_64-linux-gnu. Reviewed-by: Xi Ruoyao <xry111@xry111.site>
This commit is contained in:
parent
9fc639f654
commit
184b9e530e
@ -51,7 +51,7 @@ __arc4random_buf (void *p, size_t n)
|
|||||||
n -= l;
|
n -= l;
|
||||||
continue; /* Interrupted by a signal; keep going. */
|
continue; /* Interrupted by a signal; keep going. */
|
||||||
}
|
}
|
||||||
else if (l == -ENOSYS)
|
else if (l < 0 && errno == ENOSYS)
|
||||||
break; /* No syscall, so fallback to /dev/urandom. */
|
break; /* No syscall, so fallback to /dev/urandom. */
|
||||||
arc4random_getrandom_failure ();
|
arc4random_getrandom_failure ();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user