Update random_compat to latest master (~1.1.5)

Changes:
 * Checks `disable_classes` for `COM()` before using to avoid PHP Warnings
 * Uses `stream_set_chunk_size()` to avoid reading 8KiB from `/dev/urandom` unintentionally.
See #34948


git-svn-id: https://develop.svn.wordpress.org/trunk@35922 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Dion Hulse 2015-12-14 07:45:13 +00:00
parent c2d8c86b93
commit 7b273d6a5c
2 changed files with 30 additions and 17 deletions

View File

@ -90,15 +90,23 @@ if (PHP_VERSION_ID < 70000) {
extension_loaded('com_dotnet') &&
class_exists('COM')
) {
try {
$RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
// See random_bytes_com_dotnet.php
require_once $RandomCompatDIR.'/random_bytes_com_dotnet.php';
$RandomCompat_disabled_classes = preg_split(
'#\s*,\s*#',
strtolower(ini_get('disable_classes'))
);
if (!in_array('com', $RandomCompat_disabled_classes)) {
try {
$RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
// See random_bytes_com_dotnet.php
require_once $RandomCompatDIR.'/random_bytes_com_dotnet.php';
}
} catch (com_exception $e) {
// Don't try to use it.
}
} catch (com_exception $e) {
// Don't try to use it.
}
$RandomCompat_disabled_classes = null;
$RandomCompatCOMtest = null;
}
if (

View File

@ -62,16 +62,21 @@ function random_bytes($bytes)
$fp = false;
}
}
/**
* stream_set_read_buffer() does not exist in HHVM
*
* If we don't set the stream's read buffer to 0, PHP will
* internally buffer 8192 bytes, which can waste entropy
*
* stream_set_read_buffer returns 0 on success
*/
if (!empty($fp) && function_exists('stream_set_read_buffer')) {
stream_set_read_buffer($fp, RANDOM_COMPAT_READ_BUFFER);
if (!empty($fp)) {
/**
* stream_set_read_buffer() does not exist in HHVM
*
* If we don't set the stream's read buffer to 0, PHP will
* internally buffer 8192 bytes, which can waste entropy
*
* stream_set_read_buffer returns 0 on success
*/
if (function_exists('stream_set_read_buffer')) {
stream_set_read_buffer($fp, RANDOM_COMPAT_READ_BUFFER);
}
if (function_exists('stream_set_chunk_size')) {
stream_set_chunk_size($fp, RANDOM_COMPAT_READ_BUFFER);
}
}
}
try {