php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #34641 base64binary wrong decode
Submitted: 2005-09-26 10:21 UTC Modified: 2005-09-26 11:27 UTC
From: dev at lechat dot org Assigned:
Status: Closed Package: SOAP related
PHP Version: 5.1.0RC1 OS: XP
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: dev at lechat dot org
New email:
PHP Version: OS:

 

 [2005-09-26 10:21 UTC] 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
...

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-09-26 10:52 UTC] 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 11:24 UTC] 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 11:27 UTC] tony2001@php.net
Fixed -> closed.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 18:01:29 2024 UTC