#35410 [Opn->Asn]: Strange behavior of function "wddx_deserialize"
| From: | sniper@php.net | Date: | Wed, 30 Nov 2005 16:04:48 +0000 |
| Subject: | #35410 [Opn->Asn]: Strange behavior of function "wddx_deserialize" | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-89495@lists.php.net to get a copy of this message | ||
ID: 35410
Updated by: sniper@php.net
Reported By: thomas dot werner at mac dot com
-Status: Open
+Status: Assigned
Bug Type: WDDX related
-Operating System: Linux / MacOSX
+Operating System: *
-PHP Version: 4.4.1
+PHP Version: 5CVS, 4CVS (2005-11-30) (cvs)
-Assigned To:
+Assigned To: iliaa
New Comment:
Assigned to the one who broke it. :)
Previous Comments:
------------------------------------------------------------------------
[2005-11-28 09:03:06] thomas dot werner at mac dot com
what does it mean? a bug or a new "feature"? feature because
you wrote "the behaviour changed" ...
------------------------------------------------------------------------
[2005-11-26 18:55:20] mj@php.net
I looked into this a bit deeper and it appears that the behaviour
changed when fixing #34068. The patch can be seen at
http://cvs.php.net/diff.php/php-src/ext/wddx/wddx.c?ws=0&r1=1.119&r2=1.120&ty=u.
------------------------------------------------------------------------
[2005-11-26 18:32:57] thomas dot werner at mac dot com
PHP 5.0.4/5.0.5 on mac and 5.0.5 on linux outputs the same
like 4.4.0. I guess, this behavior beguns with the "fast"
fixes of PHP file-upload/$GLOBALS overwrite vulnerability, but
i'm not shure, or another fix introduced in 4.4.1. maybe the
xml-parser thinks, oh its a number, not a string and convert
it to integer, but its out of range... i know only, my php-app
worked over years :o)
------------------------------------------------------------------------
[2005-11-26 18:11:43] mj@php.net
PHP 5.1.0 on Linux compiled with ./configure --enable-wddx gives me the
following results that are again different from the 4.4.1 and 4.4.0
results:
array(1) {
["content_queries"]=>
array(1) {
["content_113300831086270200"]=>
array(1) {
[-2147483648]=>
array(3) {
["max"]=>
int(10)
["cache"]=>
int(4)
["order"]=>
array(1) {
["content_113300831086270200"]=>
array(1) {
["CMS_BUILD"]=>
string(4) "desc"
}
}
}
}
}
}
------------------------------------------------------------------------
[2005-11-26 17:11:23] thomas dot werner at mac dot com
Description:
------------
I have a wddx file:
*******************
<wddxpacket version="1.0">
<header>
<comment>Content Configuration File</comment>
</header>
<data>
<struct>
<var name="content_queries">
<struct>
<var name="content_113300831086270200">
<struct>
<var name="113301888545229100">
<struct>
<var name="max">
<number>10</number>
</var>
<var name="cache">
<number>4</number>
</var>
<var name="order">
<struct>
<var
name="content_113300831086270200">
<struct>
<var name="CMS_BUILD">
<string>desc</string>
</var>
</struct>
</var>
</struct>
</var>
</struct>
</var>
</struct>
</var>
</struct>
</var>
</struct>
</data>
</wddxpacket>
and load it with the function "wddx_deserialize" in $config.
var_dump outputs different arrays in php-4.4.0 and
php-4.4.1.
["113301888545229100"] (4.4.0) and [2147483647] (4.4.1) are
not the same (string vs. int).
i used exact the same configuration for compiling and
checked it with debian sarge on linux and macosx too.
cheers tom
Reproduce code:
---------------
[...]
if ( !( $filepointer = @fopen( $filename, 'r' ) ) ) {
return false;
}
while ( !feof( $filepointer) ) {
$data .= fgets( $filepointer, 4096 );
}
fclose( $filepointer );
if ( $data ) {
$config = wddx_deserialize( $data );
[...]
Expected result:
----------------
[...]
["content_queries"]=>
array(1) {
["content_113300831086270200"]=>
array(1) {
["113301888545229100"]=>
array(3) {
["max"]=>
int(10)
["cache"]=>
int(4)
["order"]=>
array(1) {
["content_113300831086270200"]=>
array(1) {
["CMS_BUILD"]=>
string(4) "desc"
}
}
}
}
}
[...]
Actual result:
--------------
[...]
["content_queries"]=>
array(1) {
["content_113300831086270200"]=>
array(1) {
[2147483647]=>
[...]
2147483647 is not right...
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=35410&edit=1