diff --git a/NEWS b/NEWS index 35df57abccc..5c1c80189cb 100644 --- a/NEWS +++ b/NEWS @@ -76,6 +76,7 @@ PHP NEWS . Fixed bug #62900 (Wrong namespace on xsd import error message). (nielsdos) . Fixed bug GH-15711 (SoapClient can't convert BackedEnum to scalar value). (nielsdos) + . Fixed bug GH-16237 (Segmentation fault when cloning SoapServer). (nielsdos) - SPL: . Fixed bug GH-15918 (Assertion failure in ext/spl/spl_fixedarray.c). diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 114d3695789..1459a2361c9 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -412,6 +412,7 @@ PHP_MINIT_FUNCTION(soap) memcpy(&soap_server_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); soap_server_object_handlers.offset = XtOffsetOf(soap_server_object, std); soap_server_object_handlers.free_obj = soap_server_object_free; + soap_server_object_handlers.clone_obj = NULL; /* Register SoapFault class */ soap_fault_class_entry = register_class_SoapFault(zend_ce_exception); diff --git a/ext/soap/tests/bugs/gh16237.phpt b/ext/soap/tests/bugs/gh16237.phpt new file mode 100644 index 00000000000..468f2794399 --- /dev/null +++ b/ext/soap/tests/bugs/gh16237.phpt @@ -0,0 +1,17 @@ +--TEST-- +GH-16237 (Segmentation fault when cloning SoapServer) +--EXTENSIONS-- +soap +--FILE-- +"http://testuri.org"]); +try { + clone $server; +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} + +?> +--EXPECT-- +Trying to clone an uncloneable object of class SoapServer