$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 {
$bytes = RandomCompat_intval($bytes);
} catch (TypeError $ex) {
'random_bytes(): $bytes must be an integer'
);
}
+
if ($bytes < 1) {
throw new Error(
'Length must be greater than 0'
);
}
+
/**
* This if() block only runs if we managed to open a file handle
*
if (!empty($fp)) {
$remaining = $bytes;
$buf = '';
+
/**
* We use fread() in a loop to protect against partial reads
*/
}
}
}
+
/**
* If we reach here, PHP has failed us.
*/