diff options
author | Dmitry Stogov <dmitry@php.net> | 2004-07-19 12:53:29 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2004-07-19 12:53:29 +0000 |
commit | e0f33c589fa590d28b24a69ffd78c06b7b0232fc (patch) | |
tree | afa0f7e8b5ccd8a48f3571f10369c0f48afabb35 /ext/soap | |
parent | e35bc2e2b4eed3fc2bbbe01d7e78ba0981bcebb4 (diff) | |
download | php-git-e0f33c589fa590d28b24a69ffd78c06b7b0232fc.tar.gz |
Fixed bug #29061 (soap extension segfaults).
Diffstat (limited to 'ext/soap')
-rw-r--r-- | ext/soap/soap.c | 12 | ||||
-rw-r--r-- | ext/soap/tests/bugs/bug29061.phpt | 12 | ||||
-rw-r--r-- | ext/soap/tests/bugs/bug29061.wsdl | 41 |
3 files changed, 63 insertions, 2 deletions
diff --git a/ext/soap/soap.c b/ext/soap/soap.c index e6ccc79a31..1125849dc8 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -1993,10 +1993,18 @@ static int do_request(zval *this_ptr, xmlDoc *request, char *location, char *act ZVAL_STRINGL(params[0], buf, buf_size, 0); INIT_ZVAL(param1); params[1] = ¶m1; - ZVAL_STRING(params[1], location, 0); + if (location == NULL) { + ZVAL_NULL(params[1]); + } else { + ZVAL_STRING(params[1], location, 0); + } INIT_ZVAL(param2); params[2] = ¶m2; - ZVAL_STRING(params[2], action, 0); + if (action == NULL) { + ZVAL_NULL(params[2]); + } else { + ZVAL_STRING(params[2], action, 0); + } INIT_ZVAL(param3); params[3] = ¶m3; ZVAL_LONG(params[3], version); diff --git a/ext/soap/tests/bugs/bug29061.phpt b/ext/soap/tests/bugs/bug29061.phpt new file mode 100644 index 0000000000..0bf8917fa5 --- /dev/null +++ b/ext/soap/tests/bugs/bug29061.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #29061 (soap extension segfaults) +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +$client = new SoapClient(dirname(__FILE__)."/bug29061.wsdl", array("exceptions"=>0)); +$client->getQuote("ibm"); +echo "ok\n"; +?> +--EXPECT-- +ok
\ No newline at end of file diff --git a/ext/soap/tests/bugs/bug29061.wsdl b/ext/soap/tests/bugs/bug29061.wsdl new file mode 100644 index 0000000000..fb4d9aa3b5 --- /dev/null +++ b/ext/soap/tests/bugs/bug29061.wsdl @@ -0,0 +1,41 @@ +<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://
+schemas.xmlsoap.org/wsdl/http/"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/e
+ncoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+xmlns:y="http://new.webservice.namespace" targetNamespace="http
+://new.webservice.namespace">
+<types>
+<xs:schema/>
+</types>
+<message name="getQuoteResponse">
+<part name="parameter" element="" type="xs:string"/>
+</message>
+<message name="getQuoteRequest">
+<part name="String" element="" type="xs:string"/>
+</message>
+<portType name="SOAPport">
+<operation name="getQuote">
+<input message="y:getQuoteRequest"/>
+<output message="y:getQuoteResponse"/>
+</operation>
+</portType>
+<binding name="bindingName" type="y:SOAPport">
+<soap:binding style="rpc"
+transport="http://schemas.xmlsoap.org/soap/http"/>
+<operation name="getQuote">
+<input>
+<soap:body use="literal"/>
+</input>
+<output>
+<soap:body use="literal"/>
+</output>
+</operation>
+</binding>
+<service name="myService">
+<port name="myPort" binding="y:bindingName">
+<soap:address location="test://"/>
+</port>
+</service>
+</definitions>
|