mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Fix assertion failure from arc4random_uniform with invalid limit
When the arc4random_uniform() is called on NetBSD with upper_bound that
makes no sense statistically (0 or 1), the call crashes the calling
program. Fix this by returning 0 when upper bound is < 2 as does Linux,
FreeBSD and NetBSD. (Hint: System CSPRNG should never crash.)
(cherry picked from commit 871bce312b)
This commit is contained in:
parent
a4f92e99e3
commit
97487d1abb
1 changed files with 4 additions and 3 deletions
|
|
@ -28,9 +28,10 @@
|
|||
ISC_LANG_BEGINDECLS
|
||||
|
||||
#if HAVE_ARC4RANDOM && !defined(__linux__)
|
||||
#define isc_random32() arc4random()
|
||||
#define isc_random_buf(buf, buflen) arc4random_buf(buf, buflen)
|
||||
#define isc_random_uniform(upper_bound) arc4random_uniform(upper_bound)
|
||||
#define isc_random32() arc4random()
|
||||
#define isc_random_buf(buf, buflen) arc4random_buf(buf, buflen)
|
||||
#define isc_random_uniform(upper_bound) \
|
||||
((upper_bound) < 2 ? 0 : arc4random_uniform(upper_bound))
|
||||
#else /* HAVE_ARC4RANDOM && !defined(__linux__) */
|
||||
uint32_t
|
||||
isc_random32(void);
|
||||
|
|
|
|||
Loading…
Reference in a new issue