]> granicus.if.org Git - php/commitdiff
Removed double allocation of buffer inside openssl_random_pseudo_bytes() and cleanup...
authorIlia Alshanetsky <iliaa@php.net>
Tue, 11 May 2010 14:31:00 +0000 (14:31 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 11 May 2010 14:31:00 +0000 (14:31 +0000)
ext/openssl/openssl.c

index 5bc44d717956dd4c04063a4d021243b803f51241..75a203965314d69d9345af9adec25cc37054eb17 100644 (file)
@@ -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);
 }
 /* }}} */