Fix logic error reading random bytes from /dev/urandom #1466
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes a bug introduced in c2be7e6
Previously, this would return those bytes if the number of bytes read
was less than the number of bytes this was trying to read.
In practice, I believe this would mean bytes from /dev/urandom would never
get used. (Noticed when upgrading phpseclib)
Also, I think that
if (!\is_bool($fp))
might be even faster thanif ($fp !== true && $fp !== false) {
orif (!is_bool($fp))
- PHP Opcache can convert the is_bool call to an efficient ZEND_TYPE_CHECK opcode instead of a function call, but only if opcache is enabled and the call is fully qualified (e.g. with\
).This looks like it only impacts php 5 applications without openssl support