#48171 [Bgs]: Unserialize converts string to integer in case of numeric properties

2009-05-06 Thread csnyder at fcny dot org
 ID:   48171
 User updated by:  csnyder at fcny dot org
 Reported By:  csnyder at fcny dot org
 Status:   Bogus
 Bug Type: Scripting Engine problem
 Operating System: Linux
 PHP Version:  5.2.9
 New Comment:

Bogus really? If serialize handles numeric property names correctly,
why shouldn't unserialize?

Also, would be interested in actual citation in the manual as to why
this bug is bogus. Thanks.


Previous Comments:


[2009-05-06 18:39:06] j...@php.net

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php





[2009-05-06 18:36:32] csnyder at fcny dot org

Description:

When unserializing a string like
O:8:stdClass:3:{s:5:22387;s:1:a;s:5:22386;s:1:a;s:5:22368;s:1:a;},
the resulting object will have integers as property names instead of
strings.

This may be regression of #43614, marked fixed in CVS but that was a
year ago.

Reproduce code:
---
?php

// an object with some numeric keys
$keys = array( 1, 2, 3 );
foreach( $keys AS $key ) {
  $obj-{$key} = 'a';
}

var_dump( $obj );
$s = serialize( $obj );
$u = unserialize( $s );
var_dump( $u );

?

Expected result:

object(stdClass)#1 (3) {
  [1]=
  string(1) a
  [2]=
  string(1) a
  [3]=
  string(1) a
}
object(stdClass)#2 (3) {
  [1]=
  string(1) a
  [2]=
  string(1) a
  [3]=
  string(1) a
}


Actual result:
--
object(stdClass)#1 (3) {
  [1]=
  string(1) a
  [2]=
  string(1) a
  [3]=
  string(1) a
}
object(stdClass)#2 (3) {
  [1]=
  string(1) a
  [2]=
  string(1) a
  [3]=
  string(1) a
}






-- 
Edit this bug report at http://bugs.php.net/?id=48171edit=1



#48171 [Bgs]: Unserialize converts string to integer in case of numeric properties

2009-05-06 Thread jani
 ID:   48171
 Updated by:   j...@php.net
 Reported By:  csnyder at fcny dot org
 Status:   Bogus
 Bug Type: Scripting Engine problem
 Operating System: Linux
 PHP Version:  5.2.9
 New Comment:

See bug #45959


Previous Comments:


[2009-05-06 18:43:19] csnyder at fcny dot org

Bogus really? If serialize handles numeric property names correctly,
why shouldn't unserialize?

Also, would be interested in actual citation in the manual as to why
this bug is bogus. Thanks.



[2009-05-06 18:39:06] j...@php.net

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php





[2009-05-06 18:36:32] csnyder at fcny dot org

Description:

When unserializing a string like
O:8:stdClass:3:{s:5:22387;s:1:a;s:5:22386;s:1:a;s:5:22368;s:1:a;},
the resulting object will have integers as property names instead of
strings.

This may be regression of #43614, marked fixed in CVS but that was a
year ago.

Reproduce code:
---
?php

// an object with some numeric keys
$keys = array( 1, 2, 3 );
foreach( $keys AS $key ) {
  $obj-{$key} = 'a';
}

var_dump( $obj );
$s = serialize( $obj );
$u = unserialize( $s );
var_dump( $u );

?

Expected result:

object(stdClass)#1 (3) {
  [1]=
  string(1) a
  [2]=
  string(1) a
  [3]=
  string(1) a
}
object(stdClass)#2 (3) {
  [1]=
  string(1) a
  [2]=
  string(1) a
  [3]=
  string(1) a
}


Actual result:
--
object(stdClass)#1 (3) {
  [1]=
  string(1) a
  [2]=
  string(1) a
  [3]=
  string(1) a
}
object(stdClass)#2 (3) {
  [1]=
  string(1) a
  [2]=
  string(1) a
  [3]=
  string(1) a
}






-- 
Edit this bug report at http://bugs.php.net/?id=48171edit=1