1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.4'

* PHP-8.4:
  Fix GH-16256: Assertion failure in ext/soap/php_encoding.c:460
This commit is contained in:
Niels Dossche
2024-10-06 18:02:38 +02:00
2 changed files with 31 additions and 0 deletions

View File

@@ -955,6 +955,9 @@ PHP_METHOD(SoapServer, __construct)
if ((tmp = zend_hash_str_find(ht, "classmap", sizeof("classmap")-1)) != NULL &&
Z_TYPE_P(tmp) == IS_ARRAY) {
if (HT_IS_PACKED(Z_ARRVAL_P(tmp))) {
php_error_docref(NULL, E_ERROR, "'classmap' option must be an associative array");
}
service->class_map = zend_array_dup(Z_ARRVAL_P(tmp));
}
@@ -2117,6 +2120,9 @@ PHP_METHOD(SoapClient, __construct)
}
if ((tmp = zend_hash_str_find(ht, "classmap", sizeof("classmap")-1)) != NULL &&
Z_TYPE_P(tmp) == IS_ARRAY) {
if (HT_IS_PACKED(Z_ARRVAL_P(tmp))) {
php_error_docref(NULL, E_ERROR, "'classmap' option must be an associative array");
}
ZVAL_COPY(Z_CLIENT_CLASSMAP_P(this_ptr), tmp);
}

View File

@@ -0,0 +1,25 @@
--TEST--
GH-16256 (Assertion failure in ext/soap/php_encoding.c:460)
--EXTENSIONS--
soap
--FILE--
<?php
$classmap = [
"bogus",
];
$wsdl = __DIR__."/ext/soap/tests/bug41004.wsdl";
try {
new SoapClient($wsdl, ["classmap" => $classmap]);
} catch (Throwable $e) {
echo $e->getMessage(), "\n";
}
try {
new SoapServer($wsdl, ["classmap" => $classmap]);
} catch (Throwable $e) {
echo $e->getMessage(), "\n";
}
?>
--EXPECT--
SoapClient::__construct(): 'classmap' option must be an associative array
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>SoapServer::__construct(): 'classmap' option must be an associative array</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>