File tree Expand file tree Collapse file tree 2 files changed +16
-8
lines changed Expand file tree Collapse file tree 2 files changed +16
-8
lines changed Original file line number Diff line number Diff line change @@ -92,6 +92,8 @@ PHP NEWS
9292 (cmb)
9393 . Fixed bug GH-16433 (Large values for openssl_csr_sign() $days overflow).
9494 (cmb)
95+ . Fix various memory leaks on error conditions in openssl_x509_parse().
96+ (nielsdos)
9597
9698- PDO_ODBC:
9799 . Fixed bug GH-16450 (PDO_ODBC can inject garbage into field values). (cmb)
Original file line number Diff line number Diff line change @@ -2131,15 +2131,15 @@ PHP_FUNCTION(openssl_x509_parse)
21312131 /* Can return NULL on error or memory allocation failure */
21322132 if (!bn_serial ) {
21332133 php_openssl_store_errors ();
2134- RETURN_FALSE ;
2134+ goto err ;
21352135 }
21362136
21372137 hex_serial = BN_bn2hex (bn_serial );
21382138 BN_free (bn_serial );
21392139 /* Can return NULL on error or memory allocation failure */
21402140 if (!hex_serial ) {
21412141 php_openssl_store_errors ();
2142- RETURN_FALSE ;
2142+ goto err ;
21432143 }
21442144
21452145 str_serial = i2s_ASN1_INTEGER (NULL , asn1_serial );
@@ -2211,19 +2211,15 @@ PHP_FUNCTION(openssl_x509_parse)
22112211 bio_out = BIO_new (BIO_s_mem ());
22122212 if (bio_out == NULL ) {
22132213 php_openssl_store_errors ();
2214- RETURN_FALSE ;
2214+ goto err_subitem ;
22152215 }
22162216 if (nid == NID_subject_alt_name ) {
22172217 if (openssl_x509v3_subjectAltName (bio_out , extension ) == 0 ) {
22182218 BIO_get_mem_ptr (bio_out , & bio_buf );
22192219 add_assoc_stringl (& subitem , extname , bio_buf -> data , bio_buf -> length );
22202220 } else {
2221- zend_array_destroy (Z_ARR_P (return_value ));
22222221 BIO_free (bio_out );
2223- if (cert_str ) {
2224- X509_free (cert );
2225- }
2226- RETURN_FALSE ;
2222+ goto err_subitem ;
22272223 }
22282224 }
22292225 else if (X509V3_EXT_print (bio_out , extension , 0 , 0 )) {
@@ -2238,6 +2234,16 @@ PHP_FUNCTION(openssl_x509_parse)
22382234 if (cert_str ) {
22392235 X509_free (cert );
22402236 }
2237+ return ;
2238+
2239+ err_subitem :
2240+ zval_ptr_dtor (& subitem );
2241+ err :
2242+ zend_array_destroy (Z_ARR_P (return_value ));
2243+ if (cert_str ) {
2244+ X509_free (cert );
2245+ }
2246+ RETURN_FALSE ;
22412247}
22422248/* }}} */
22432249
You can’t perform that action at this time.
0 commit comments