summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2011-07-19 23:01:41 +0000
committerPierre Joye <pajoye@php.net>2011-07-19 23:01:41 +0000
commitb03817afb5c2bc8808dd402f1d9b0d1e51401da4 (patch)
treeb7d451f36472cd5caca8adc4797d4c3f59175707 /ext
parent8a2736fd77b0566724011d255c0bf21d52e2b0be (diff)
downloadphp-git-b03817afb5c2bc8808dd402f1d9b0d1e51401da4.tar.gz
- re apply the rng change specific to windows, long term it should be a std function but as this function was badly introduced in the 1st place, we have to fix the bad things here instead, pls do not revert again, bad idea.
Diffstat (limited to 'ext')
-rw-r--r--ext/openssl/openssl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index f8266a381c..b41d04c3bb 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -4930,10 +4930,19 @@ PHP_FUNCTION(openssl_random_pseudo_bytes)
buffer = emalloc(buffer_length + 1);
+#ifdef PHP_WIN32
+ strong_result = 1;
+ /* random/urandom equivalent on Windows */
+ if (php_win32_get_random_bytes(buffer, (size_t) buffer_length) == FAILURE){
+ efree(buffer);
+ RETURN_FALSE;
+ }
+#else
if ((strong_result = RAND_pseudo_bytes(buffer, buffer_length)) < 0) {
efree(buffer);
RETURN_FALSE;
}
+#endif
buffer[buffer_length] = 0;
RETVAL_STRINGL((char *)buffer, buffer_length, 0);