mirror of
https://github.com/php/php-src.git
synced 2024-11-24 02:15:04 +08:00
Fix #76348: WSDL_CACHE_MEMORY causes Segmentation fault
“Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.”
This commit is contained in:
parent
e58388ea6d
commit
625f614cb1
3
NEWS
3
NEWS
@ -9,6 +9,9 @@ PHP NEWS
|
||||
- Opcache:
|
||||
. Fixed bug #77058 (Type inference in opcache causes side effects). (Nikita)
|
||||
|
||||
- SOAP:
|
||||
. Fixed bug #76348 (WSDL_CACHE_MEMORY causes Segmentation fault). (cmb)
|
||||
|
||||
08 Nov 2018, PHP 7.1.24
|
||||
|
||||
- Core:
|
||||
|
@ -2449,7 +2449,7 @@ static HashTable* make_persistent_sdl_function_headers(HashTable *headers, HashT
|
||||
pheader->ns = strdup(pheader->ns);
|
||||
}
|
||||
|
||||
if (pheader->encode->details.sdl_type) {
|
||||
if (pheader->encode && pheader->encode->details.sdl_type) {
|
||||
if ((penc = zend_hash_str_find_ptr(ptr_map, (char*)&pheader->encode, sizeof(encodePtr))) == NULL) {
|
||||
assert(0);
|
||||
}
|
||||
|
15
ext/soap/tests/bugs/bug76348.phpt
Normal file
15
ext/soap/tests/bugs/bug76348.phpt
Normal file
@ -0,0 +1,15 @@
|
||||
--TEST--
|
||||
Bug #76348 (WSDL_CACHE_MEMORY causes Segmentation fault)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('soap')) die('skip soap extension not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$client = new SoapClient(__DIR__ . DIRECTORY_SEPARATOR . 'bug76348.wsdl', [
|
||||
'cache_wsdl' => WSDL_CACHE_MEMORY,
|
||||
]);
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
===DONE===
|
87
ext/soap/tests/bugs/bug76348.wsdl
Normal file
87
ext/soap/tests/bugs/bug76348.wsdl
Normal file
@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<definitions
|
||||
xmlns="http://schemas.xmlsoap.org/wsdl/"
|
||||
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
||||
xmlns:tns="http://example.x-road.ee/producer/"
|
||||
xmlns:xrd="http://x-road.eu/xsd/xroad.xsd"
|
||||
targetNamespace="http://example.x-road.ee/producer/">
|
||||
<types>
|
||||
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.x-road.ee/producer/">
|
||||
<import namespace="http://x-road.ee/xsd/x-road.xsd" schemaLocation="http://x-road.ee/xsd/x-road.xsd"/>
|
||||
<import namespace="http://www.w3.org/XML/1998/namespace"
|
||||
schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
|
||||
<element name="exampleOperation">
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element name="request" type="tns:exampleOperationRequest"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
</element>
|
||||
<element name="exampleOperationResponse">
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element name="request" type="tns:exampleOperationRequest"/>
|
||||
<element name="response" type="tns:exampleOperationResponse"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
</element>
|
||||
<complexType name="exampleOperationRequest">
|
||||
<sequence>
|
||||
<element name="name">
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element name="id" type="integer" minOccurs="0" nillable="true" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
</element>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<complexType name="exampleOperationResponse">
|
||||
<sequence>
|
||||
<element name="ok" type="boolean" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
</schema>
|
||||
</types>
|
||||
|
||||
|
||||
<message name="exampleOperationInputMessage">
|
||||
<part name="body" element="tns:exampleOperation"/>
|
||||
</message>
|
||||
<message name="exampleOperationOutputMessage">
|
||||
<part name="body" element="tns:exampleOperationResponse"/>
|
||||
</message>
|
||||
|
||||
<message name="requestheader">
|
||||
<part name="id" element="xrd:id"/>
|
||||
</message>
|
||||
|
||||
<portType name="example_porttype">
|
||||
<operation name="exampleOperation">
|
||||
<input message="tns:exampleOperationInputMessage"/>
|
||||
<output message="tns:exampleOperationOutputMessage"/>
|
||||
</operation>
|
||||
</portType>
|
||||
|
||||
<binding name="example_binding" type="tns:example_porttype">
|
||||
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||
<operation name="exampleOperation">
|
||||
<soap:operation soapAction=""/>
|
||||
<xrd:version>v1</xrd:version>
|
||||
<input>
|
||||
<soap:body use="literal"/>
|
||||
</input>
|
||||
<output>
|
||||
<soap:header message="tns:requestheader" part="id" use="literal"/>
|
||||
<soap:body use="literal"/>
|
||||
</output>
|
||||
</operation>
|
||||
</binding>
|
||||
|
||||
<service name="example">
|
||||
<port name="example_porttype" binding="tns:example_binding">
|
||||
<soap:address location="http://PROXY/cgi-bin/consumer_proxy"/>
|
||||
</port>
|
||||
</service>
|
||||
|
||||
</definitions>
|
Loading…
Reference in New Issue
Block a user