#38004 [NEW]: Parameters in SoapServer are decoded twice

From: Date: Tue, 04 Jul 2006 12:24:16 +0000
Subject: #38004 [NEW]: Parameters in SoapServer are decoded twice
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-99079@lists.php.net to get a copy of this message
From: afalak at poczta dot onet dot pl Operating system: Windows 2000 PHP version: 5CVS-2006-07-04 (CVS) PHP Bug Type: SOAP related Bug description: Parameters in SoapServer are decoded twice Description: ------------ Strings sent as SOAP message parameters change when transported to server functions. This may result in a string cut or even in an encoding error "Encoding: Violation of encoding rules in client.php:" Reproduce code: --------------- [client] <?php $client = new SoapClient('a.wsdl'); $strA = 'test &amp; test'; $strB = 'test & test'; $res = $client->Test(array('strA'=>$strA, 'strB'=>$strB)); ?> [server] <?php function Test($param) { file_put_contents('test.txt', $param->strA."\n".$param->strB ); return 1; } $server = new SoapServer('a.wsdl'); $server->addFunction('Test'); $server->handle(); ?> [a.wsdl] <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://test.pl" targetNamespace="http://test.pl" xmlns="http://schemas.xmlsoap.org/wsdl/" > <types> <s:schema elementFormDefault="qualified" targetNamespace="http://test.pl"> <s:complexType name="Test"> <s:attribute use="required" name="strA" type="s:string"/> <s:attribute use="required" name="strB" type="s:string"/> </s:complexType> <s:element type="s0:Test" name="Test"/> <s:element type="s:int" name="Ret"/> </s:schema> </types> <message name="TestSoapIn"> <part name="parameters" element="s0:Test"/> </message> <message name="TestSoapOut"> <part name="parameters" element="s0:Ret"/> </message> <portType name="TestSoap"> <operation name="Test"> <input message="s0:TestSoapIn"/> <output message="s0:TestSoapOut"/> </operation> </portType> <binding name="TestSoap" type="s0:TestSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="Test"> <soap:operation soapAction="http:/Test/Test" style="document"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="Test"> <port name="TestSoapPort" binding="s0:TestSoap"> <soap:address location="http://localhost/server.php"/> </port> </service> </definitions> Expected result: ---------------- File text.txt shall contain exactly the same values as calling parameters: test &amp; test test & test Actual result: -------------- The parameters are improperly decoded twice: test & test test (note: the second line is cut at "&") Try to change a line in a client to: $strA = 'test &xxx; test'; then you'll get an error "Encoding: Violation of encoding rules in client.php" -- Edit bug report at http://bugs.php.net/?id=38004&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=38004&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=38004&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=38004&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=38004&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=38004&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=38004&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=38004&r=needscript Try newer version: http://bugs.php.net/fix.php?id=38004&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=38004&r=support Expected behavior: http://bugs.php.net/fix.php?id=38004&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=38004&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=38004&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=38004&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=38004&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=38004&r=dst IIS Stability: http://bugs.php.net/fix.php?id=38004&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=38004&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=38004&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=38004&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=38004&r=mysqlcfg

« previous php.bugs (#99079) next »