[PATCH] stdlib: fix arc4random fallback to /dev/urandom (BZ 31612)
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Mon Jul 8 11:40:25 GMT 2024
Ping, I really want this small fix on 2.40.
On 06/05/24 15:19, Adhemerval Zanella wrote:
> 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.
> ---
> stdlib/arc4random.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/stdlib/arc4random.c b/stdlib/arc4random.c
> index 3ae8fc1302..7818cb9cf6 100644
> --- a/stdlib/arc4random.c
> +++ b/stdlib/arc4random.c
> @@ -51,7 +51,7 @@ __arc4random_buf (void *p, size_t n)
> n -= l;
> 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. */
> arc4random_getrandom_failure ();
> }
More information about the Libc-alpha
mailing list