Bug #29865 [Com]: serialize produces invalid output

From: Date: Tue, 30 Nov 2010 23:53:55 +0000
Subject: Bug #29865 [Com]: serialize produces invalid output
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-156606@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=29865&edit=1

 ID:                 29865
 Comment by:         sdo at inbox dot lv
 Reported by:        aidan@php.net
 Summary:            serialize produces invalid output
 Status:             Closed
 Type:               Bug
 Package:            Strings related
 Operating System:   *
 PHP Version:        5CVS-2005-03-07
 Assigned To:        derick
 Block user comment: N
 Private report:     N

 New Comment:

Bug can still be reproduced in PHP 5.2 and 5.3

Example of running a simple test (orignally submitted by
aidan@php.net):

$ php -v
PHP 5.2.14 (cli) (built: Aug 12 2010 16:03:48)
$ php  -r 'class Foo { protected $bar = 1; } $v = new Foo; echo
serialize($v);' | hexdump
0000000 3a4f 3a33 4622 6f6f 3a22 3a31 737b 363a
0000010 223a 2a00 6200 7261 3b22 3a69 3b31 007d
000001f


Previous Comments:
------------------------------------------------------------------------
[2005-10-01 12:13:49] aidan@php.net

Yep, no problem in head.

------------------------------------------------------------------------
[2005-09-30 19:17:15] jhargis at gmail dot com

Can confirm this as being corrected and working in 5.0.5 as well.

------------------------------------------------------------------------
[2005-07-14 22:40:00] php dot net at sharpdreams dot com

Still busted in recent CVS, win32 & FreeBSD. Seems to work in 5.0.4.
This ought to be fixed before the next b3, or at least prior to release
of 5.1.

------------------------------------------------------------------------
[2005-01-22 13:57:12] aidan@php.net

This is still a problem in the latest head, simple test case:

$ ./php5_1 -r 'class Foo { protected $bar = 1; } $v = new Foo; echo
serialize($v);' | hexdump

0000000 3a4f 3a33 4622 6f6f 3a22 3a31 737b 363a
0000010 223a 2a00 6200 7261 3b22 3a69 3b31 007d
000001f

------------------------------------------------------------------------
[2005-01-06 20:23:42] jhargis at gmail dot com

I have noticed similar.  

<?php
class User {
  protected $username = "name";
  public function getU(){
    return $this->username;
  }
}

$ob_User = New User();
$wUser = serialize($ob_User);
echo $wUser;
$wUser2 = unserialize($wUser); 
echo $wUser2->getU() . "<br>\n";
?>

Protected/private members appear to have the 0x00 bytes around the
notation.  For the time, I base64 the serialized string so I can store
it in the DB without having to deal with it as a binary.  Also, this may
be related to why when using WDDX as the serialization handler it only
picks up the last member var when you need implement __sleep.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    http://bugs.php.net/bug.php?id=29865


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


Thread (12 messages)

« previous php.bugs (#156606) next »