Bug #65724 [NEW]: unserialize doesn't always restore referenced objects
| From: | niko dot sams at gmail dot com | Date: | Fri, 20 Sep 2013 12:34:48 +0000 |
| Subject: | Bug #65724 [NEW]: unserialize doesn't always restore referenced objects | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-181713@lists.php.net to get a copy of this message | ||
From: niko dot sams at gmail dot com
Operating system: Linux
PHP version: 5.5.4
Package: *General Issues
Bug Type: Bug
Bug description:unserialize doesn't always restore referenced objects
Description:
------------
when doing another unserialize that creates objects in an
Serializable::unserialize implementation things break, the 'parent' isn't
unserialized correctly.
ok: PHP 5.3.3-7+squeeze14
ok: PHP 5.3.10-1ubuntu3.6
fail: PHP 5.4.4-14+deb7u2
fail: PHP 5.5.3
See phpt test script:
http://paste.kde.org/p83ce39d0/
Test script:
---------------
class Bar {}
class Foo implements Serializable {
public $test;
public function __construct($test) { $this->test = $test; }
public function serialize()
{
return $this->test;
}
public function unserialize($serialized)
{
//the following line causes problems
unserialize('O:3:"Bar":1:{s:4:"bar1";O:3:"Bar":0:{}}');
$this->test = $serialized;
}
}
$foo1 = new Foo('foo1');
$foo2 = new Foo('foo2');
$foo3 = new Foo('foo3');
$ar = array(
array(
'instance' => $foo1,
),
array(
'instance' => $foo2,
),
array(
'instance' => $foo3,
'parent' => $foo2
)
);
$ar = serialize($ar);
$ar = unserialize($ar);
print_r($ar);
Expected result:
----------------
[parent] => Foo Object ( [test] => foo2 ) )
Actual result:
--------------
[parent] => foo2
--
Edit bug report at https://bugs.php.net/bug.php?id=65724&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=65724&r=trysnapshot54
Try a snapshot (PHP 5.3): https://bugs.php.net/fix.php?id=65724&r=trysnapshot53
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=65724&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=65724&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=65724&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=65724&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=65724&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=65724&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=65724&r=support
Expected behavior: https://bugs.php.net/fix.php?id=65724&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=65724&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=65724&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=65724&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65724&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=65724&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=65724&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=65724&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65724&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=65724&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=65724&r=mysqlcfg