From c7a553a7fb27ddf9b09672caa0f69ff070fba456 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Tue, 11 May 2010 14:31:00 +0000 Subject: [PATCH] Removed double allocation of buffer inside openssl_random_pseudo_bytes() and cleanup code --- ext/openssl/openssl.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 5bc44d7179..75a2039653 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -4785,27 +4785,23 @@ PHP_FUNCTION(openssl_random_pseudo_bytes) ZVAL_BOOL(zstrong_result_returned, 0); } - buffer = emalloc(buffer_length); - - if (!buffer) { - RETURN_FALSE; - } + buffer = emalloc(buffer_length + 1); #ifdef WINDOWS RAND_screen(); #endif if ((strong_result = RAND_pseudo_bytes(buffer, buffer_length)) < 0) { - RETVAL_FALSE; - } else { - RETVAL_STRINGL((char *)buffer, buffer_length, 1); + efree(buffer); + RETURN_FALSE; + } - if (zstrong_result_returned) { - ZVAL_BOOL(zstrong_result_returned, strong_result); - } + buffer[buffer_length] = 0; + RETVAL_STRINGL((char *)buffer, buffer_length, 0); + if (zstrong_result_returned) { + ZVAL_BOOL(zstrong_result_returned, strong_result); } - efree(buffer); } /* }}} */ -- 2.40.0