diff options
author | Scott <scott@paragonie.com> | 2017-11-21 22:02:07 -0500 |
---|---|---|
committer | krakjoe <krakjoe@php.net> | 2017-11-22 04:26:54 +0000 |
commit | 269d1601596341f574ff6c875a826ce2b671f1f0 (patch) | |
tree | 410c6eae6ce57fb0e5839e2dd86a7052ccae01fd | |
parent | 38be3c4ac445adbdf06883b1e9d3f106d986755e (diff) | |
download | php-git-269d1601596341f574ff6c875a826ce2b671f1f0.tar.gz |
Fix bug #75409
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | ext/standard/random.c | 12 |
2 files changed, 5 insertions, 9 deletions
@@ -17,6 +17,8 @@ PHP NEWS - Standard: . Fixed bug #75535 (Inappropriately parsing HTTP response leads to PHP segment fault). (Nikita) + . Fixed bug #75409 (accept EFAULT in addition to ENOSYS as indicator + that getrandom() is missing). (sarciszewski) - Zip: . Fixed bug #75540 (Segfault with libzip 1.3.1). (Remi) diff --git a/ext/standard/random.c b/ext/standard/random.c index b52566cef0..a963c8f791 100644 --- a/ext/standard/random.c +++ b/ext/standard/random.c @@ -122,16 +122,10 @@ PHPAPI int php_random_bytes(void *bytes, size_t size, zend_bool should_throw) } else if (errno == EINTR || errno == EAGAIN) { /* Try again */ continue; + } else { + /* If the syscall fails, fall back to reading from /dev/urandom */ + break; } - /* - If the syscall fails, we are doomed. The loop that calls - php_random_bytes should be terminated by the exception instead - of proceeding to demand more entropy. - */ - if (should_throw) { - zend_throw_exception(zend_ce_exception, "Could not gather sufficient random data", errno); - } - return FAILURE; } read_bytes += (size_t) n; |