#34641 [Opn->Csd]: base64binary wrong decode

From: Date: Mon, 26 Sep 2005 09:27:00 +0000
Subject: #34641 [Opn->Csd]: base64binary wrong decode
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-85588@lists.php.net to get a copy of this message
ID: 34641 Updated by: tony2001@php.net Reported By: dev at lechat dot org -Status: Open +Status: Closed Bug Type: SOAP related Operating System: XP PHP Version: 5.1.0RC1 New Comment: Fixed -> closed. Previous Comments: ------------------------------------------------------------------------ [2005-09-26 11:24:27] dev at lechat dot org As requested tried with last http://snaps.php.net/win32/php5-win32-latest.zip CVS Snaphshot, and soapclient base64binary auto decode is correct (-; No more manual decode is necessary. Thanks you for your work and quick reply. Thierry ------------------------------------------------------------------------ [2005-09-26 10:52:23] tony2001@php.net Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2005-09-26 10:21:05] dev at lechat dot org Description: ------------ With 5.0.5, a SOAP client getting a "base64Binary" datatype is not performing the appropriate decoding. Since Bug #32139 (base64binary encode/decode) this issue was marked fixed. With 5.1.0RC1, autodecode is present, but returns a wrong decode. - PHP 5.0.5 : -> SoapClient doesn't autodecode base64binary, it returns a base64 encoded string. -> base64_decode() did a wrong decode. -> GET EXPECTED results if use of mb_convert_encoding(). - PHP 5.1.0RC1 : -> SoapClient autodecode base64binary, -> but return a wrong decoded string base64binary encoded string to be decode is not short, so I don't put it in this report. Request if necessary. Reproduce code: --------------- header('Content-Type: text/xml; charset=UTF-8'); $client = new SoapClient( "http://192.168.72.75/MSWCONFIGWEBSERVICE/Deployment.asmx?WSDL", array('trace' => 1) ); $param = array( 'schemaVersion' => 1, 'user' => array( 'Username' => "myuser", 'Password' => "mypassword", 'CultureID' => 1033)); $result=$client->LoadConfiguration($param); //PHP 5.0.5 : SoapClient doesn't autodecode base64binary // return a base64 encoded string : //PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PENv bmZpZ3VyYXRpb24+PEtleSBuYW1lPSJ..... //PHP 5.0.5 : base64_decode() did a wrong decode (*) $conf=base64_decode($result->LoadConfigurationResult->Configuration); echo $conf; //PHP 5.0.5 : GET EXPECTED results if use of mb_convert_encoding() $conf=mb_convert_encoding($result->LoadConfigurationResult->Configuration,"UTF-8","BASE64"); echo $conf; //PHP 5.1.0RC1 : SoapClient autodecode base64binary, but return a wrong decoded string ( same as *) echo $result->LoadConfigurationResult->Configuration; Expected result: ---------------- <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Configuration> <Key name="CharacterSetAliases" default=""> <PropertyList duplicates="true"> <Property name="iso-646" type="string" value="us-ascii" /> </PropertyList> </Key> ... Actual result: -------------- This is the content of $result->LoadConfigurationResult->Configuration : <?xml version="1.0" encoding="UTF-8" standalone="no"?><Coù¹™¥ÕɅѥ½¸øñ-•䁹…µ”ô‰ ¡…É…Ñ•ÉM•ѱ¥…͕̈‘•™…Õ±ÐôˆˆøñCç&÷W'G”Æ—7BGWƖ6FW3Ò'G'VR#ãÅ&÷W'G’æÖS ... ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34641&edit=1

« previous php.bugs (#85588) next »