Fixed Bug #36614 (Segfault when using Soap)

This commit is contained in:
Dmitry Stogov 2006-03-15 16:14:40 +00:00
parent 111046ceed
commit 09619a30cb
4 changed files with 220 additions and 1 deletions

View file

@ -2117,7 +2117,7 @@ static void schema_attribute_fixup(sdlCtx *ctx, sdlAttributePtr attr)
}
if (attr->name == NULL && attr->ref != NULL) {
char *name = strrchr(attr->ref, ':');
if (*name) {
if (name) {
attr->name = estrdup(name+1);
} else{
attr->name = estrdup(attr->ref);

View file

@ -0,0 +1,13 @@
--TEST--
Bug #36614 (Segfault when using Soap)
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--INI--
soap.wsdl_cache_enabled=0
--FILE--
<?php
$lo_soap = new SoapClient(dirname(__FILE__)."/bug36614.wsdl");
echo "ok\n";
?>
--EXPECT--
ok

204
ext/soap/tests/bugs/bug36614.wsdl Executable file
View file

@ -0,0 +1,204 @@
<?xml version="1.0" encoding="UTF-8" ?>
<definitions name="SonicMobile Web-Services"
targetNamespace="http://soap.sonicmobile.com/sonicmobile.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:sonic="http://soap.sonicmobile.com/sonicmobile.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xsd:schema xmlns="http://www.w3.org/2000/10/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="TransportCount">
<all>
<element name="transport" type="string" />
<element name="count" type="integer" />
<element name="rate" type="integer" />
<element name="last_message" type="integer" />
</all>
</complexType>
<complexType name="ArrayOfTransportCount">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" arrayType="TransportCount[]" />
</restriction>
</complexContent>
</complexType>
</xsd:schema>
</types>
<message name="userSendMessageRequest">
<part name="sourceUser" type="xsd:int"/>
<part name="password" type="xsd:string"/>
<part name="destinationUser" type="xsd:int"/>
<part name="content" type="xsd:string"/>
<part name="sendRepliesTo" type="xsd:string"/>
<part name="reference" type="xsd:string"/>
</message>
<message name="sendMessageRequest">
<part name="application" type="xsd:string"/>
<part name="password" type="xsd:string"/>
<part name="destination" type="xsd:string"/>
<part name="content" type="xsd:string"/>
<part name="reference" type="xsd:string"/>
<part name="requestSource" type="xsd:string"/>
<part name="customer" type="xsd:string"/>
<part name="class" type="xsd:string"/>
</message>
<message name="MessageResponse">
<part name="messageid" type="xsd:int"/>
<part name="response" type="xsd:string"/>
</message>
<message name="messageCountRequest">
<part name="password" type="xsd:string"/>
</message>
<message name="messageCountResponse">
<part name="transports" type="tns:ArrayOfTransportCount"/>
</message>
<message name="serverStatusRequest">
<part name="password" type="xsd:string"/>
</message>
<message name="serverStatusResponse">
<part name="status_string" type="xsd:string"/>
</message>
<message name="flushGatewayRequest">
<part name="password" type="xsd:string"/>
</message>
<message name="flushGatewayResponse">
<part name="status_string" type="xsd:string"/>
</message>
<portType name="SonicMobilePortType">
<operation name="userSendMessage">
<input message="sonic:userSendMessageRequest"/>
<output message="sonic:MessageResponse"/>
</operation>
<operation name="sendMessage">
<input message="sonic:sendMessageRequest"/>
<output message="sonic:MessageResponse"/>
</operation>
<operation name="messageCount">
<input message="sonic:messageCountRequest"/>
<output message="sonic:messageCountResponse"/>
</operation>
<operation name="serverStatus">
<input message="sonic:serverStatusRequest"/>
<output message="sonic:serverStatusResponse"/>
</operation>
<operation name="flushGateway">
<input message="sonic:flushGatewayRequest"/>
<output message="sonic:flushGatewayResponse"/>
</operation>
</portType>
<binding name="SonicMobileBinding" type="sonic:SonicMobilePortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="userSendMessage">
<soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#userSendMessage"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</output>
</operation>
<operation name="sendMessage">
<soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#sendMessage"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</output>
</operation>
<operation name="messageCount">
<soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#messageCount"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</output>
</operation>
<operation name="serverStatus">
<soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#serverStatus"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</output>
</operation>
<operation name="flushGateway">
<soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#flushGateway"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
use="encoded" />
</output>
</operation>
</binding>
<service name="SonicMobile">
<port name="SonicMobilePort" binding="sonic:SonicMobileBinding">
<soap:address location="http://soap.sonicmobile.com/"/>
</port>
</service>
</definitions>

View file

@ -1,5 +1,7 @@
--TEST--
Bug #36629 (SoapServer::handle() exits on SOAP faults)
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
function test1() {