Merge branch 'PHP-8.3'

* PHP-8.3:
  ext/soap: Fix memory leaks when calling SoapFault::__construct() twice
This commit is contained in:
Gina Peter Banyard 2024-06-16 23:01:52 +01:00
commit a888c4f0ff
No known key found for this signature in database
GPG key ID: 3306078E3194AEBD
2 changed files with 26 additions and 0 deletions

View file

@ -627,6 +627,17 @@ PHP_METHOD(SoapHeader, __construct)
}
/* }}} */
static void soap_fault_dtor_properties(zval *obj)
{
zval_ptr_dtor(Z_FAULT_STRING_P(obj));
zval_ptr_dtor(Z_FAULT_CODE_P(obj));
zval_ptr_dtor(Z_FAULT_CODENS_P(obj));
zval_ptr_dtor(Z_FAULT_ACTOR_P(obj));
zval_ptr_dtor(Z_FAULT_DETAIL_P(obj));
zval_ptr_dtor(Z_FAULT_NAME_P(obj));
zval_ptr_dtor(Z_FAULT_HEADERFAULT_P(obj));
}
/* {{{ SoapFault constructor */
PHP_METHOD(SoapFault, __construct)
{
@ -646,6 +657,9 @@ PHP_METHOD(SoapFault, __construct)
Z_PARAM_ZVAL_OR_NULL(headerfault)
ZEND_PARSE_PARAMETERS_END();
/* Delete previously set properties */
soap_fault_dtor_properties(ZEND_THIS);
if (code_str) {
fault_code = ZSTR_VAL(code_str);
fault_code_len = ZSTR_LEN(code_str);

View file

@ -0,0 +1,12 @@
--TEST--
GH-14586: SoapFault::__construct() leaks memory if called twice
--EXTENSIONS--
soap
--FILE--
<?php
$sf = new SoapFault(null, "x");
$sf->__construct(null, "x");
?>
DONE
--EXPECT--
DONE