felipe                                   Tue, 27 Oct 2009 21:37:03 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=290001

Log:
- Fixed memory leak in openssl_pkcs12_export_to_file()

Changed paths:
    U   php/php-src/branches/PHP_5_2/NEWS
    U   php/php-src/branches/PHP_5_2/ext/openssl/openssl.c
    U   php/php-src/branches/PHP_5_3/ext/openssl/openssl.c
    U   php/php-src/trunk/ext/openssl/openssl.c

Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS   2009-10-27 21:04:35 UTC (rev 290000)
+++ php/php-src/branches/PHP_5_2/NEWS   2009-10-27 21:37:03 UTC (rev 290001)
@@ -16,6 +16,7 @@
   when calling using Reflection. (Felipe)
 - Fixed crash when instantiating PDORow and PDOStatement through Reflection.
   (Felipe)
+- Fixed memory leak in openssl_pkcs12_export_to_file(). (Felipe)

 - Fixed bug #49990 (SNMP3 warning message about security level printed twice).
   (Jani)

Modified: php/php-src/branches/PHP_5_2/ext/openssl/openssl.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/openssl/openssl.c  2009-10-27 21:04:35 UTC 
(rev 290000)
+++ php/php-src/branches/PHP_5_2/ext/openssl/openssl.c  2009-10-27 21:37:03 UTC 
(rev 290001)
@@ -1444,18 +1444,18 @@
        int filename_len;
        char * pass;
        int pass_len;
-       zval *zcert = NULL, *zpkey = NULL, *args = NULL;
+       zval **zcert = NULL, *zpkey = NULL, *args = NULL;
        EVP_PKEY *priv_key = NULL;
        long certresource, keyresource;
        zval ** item;
        STACK_OF(X509) *ca = NULL;

-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zszs|a", &zcert, 
&filename, &filename_len, &zpkey, &pass, &pass_len, &args) == FAILURE)
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zszs|a", &zcert, 
&filename, &filename_len, &zpkey, &pass, &pass_len, &args) == FAILURE)
                return;

        RETVAL_FALSE;

-       cert = php_openssl_x509_from_zval(&zcert, 0, &certresource TSRMLS_CC);
+       cert = php_openssl_x509_from_zval(zcert, 0, &certresource TSRMLS_CC);
        if (cert == NULL) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot get cert 
from parameter 1");
                return;

Modified: php/php-src/branches/PHP_5_3/ext/openssl/openssl.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/openssl/openssl.c  2009-10-27 21:04:35 UTC 
(rev 290000)
+++ php/php-src/branches/PHP_5_3/ext/openssl/openssl.c  2009-10-27 21:37:03 UTC 
(rev 290001)
@@ -1738,18 +1738,18 @@
        int filename_len;
        char * pass;
        int pass_len;
-       zval *zcert = NULL, *zpkey = NULL, *args = NULL;
+       zval **zcert = NULL, *zpkey = NULL, *args = NULL;
        EVP_PKEY *priv_key = NULL;
        long certresource, keyresource;
        zval ** item;
        STACK_OF(X509) *ca = NULL;

-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zszs|a", &zcert, 
&filename, &filename_len, &zpkey, &pass, &pass_len, &args) == FAILURE)
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zszs|a", &zcert, 
&filename, &filename_len, &zpkey, &pass, &pass_len, &args) == FAILURE)
                return;

        RETVAL_FALSE;

-       cert = php_openssl_x509_from_zval(&zcert, 0, &certresource TSRMLS_CC);
+       cert = php_openssl_x509_from_zval(zcert, 0, &certresource TSRMLS_CC);
        if (cert == NULL) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot get cert 
from parameter 1");
                return;

Modified: php/php-src/trunk/ext/openssl/openssl.c
===================================================================
--- php/php-src/trunk/ext/openssl/openssl.c     2009-10-27 21:04:35 UTC (rev 
290000)
+++ php/php-src/trunk/ext/openssl/openssl.c     2009-10-27 21:37:03 UTC (rev 
290001)
@@ -2796,6 +2796,9 @@

                if (Z_TYPE_PP(val) == IS_UNICODE && !filename) {
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Binary 
string expected, Unicode string received");
+                       if (free_phrase) {
+                               efree(passphrase);
+                       }
                        return NULL;
                }

@@ -4737,14 +4740,12 @@

 static void openssl_add_method_or_alias(const OBJ_NAME *name, void *arg) /* 
{{{ */
 {
-       TSRMLS_FETCH();
        add_next_index_ascii_string((zval*)arg, (char*)name->name, 1);
 }
 /* }}} */

 static void openssl_add_method(const OBJ_NAME *name, void *arg) /* {{{ */
 {
-       TSRMLS_FETCH();
        if (name->alias == 0) {
                add_next_index_ascii_string((zval*)arg, (char*)name->name, 1);
        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to