Patch bug65591.phpt for Reproducible crash Bug #65591
Patch version 2013-08-30 09:53 UTC
Return to Bug #65591 |
Download this patch
Patch Revisions:
Developer: arjen@react.com
--TEST--
Segfault when calling parent::serialize in serialize().
--FILE--
<?php
class Permission implements \Serializable {
protected $id = 3;
public function serialize()
{
return serialize(array($this->id));
}
public function unserialize($serialized)
{
list($this->id) = unserialize($serialized);
}
}
class UserPermission implements \Serializable {
public $permission;
public $webshop;
public function serialize()
{
return serialize(array($this->webshop, $this->permission));
}
public function unserialize($serialized)
{
list($this->webshop, $this->permission) = unserialize($serialized);
}
}
class Webshop implements \Serializable {
protected $id = 13;
public function serialize()
{
return serialize(array($this->id));
}
public function unserialize($serialized)
{
list($this->id) = unserialize($serialized);
}
}
class AbstractToken implements \Serializable {
public $roles;
public function serialize()
{
return serialize(array($this->roles));
}
public function unserialize($serialized)
{
list($this->roles) = unserialize($serialized);
}
}
class UsernamePasswordToken extends AbstractToken {
private $credentials = null;
private $providerKey = null;
public function serialize()
{
return serialize(array($this->credentials, $this->providerKey, parent::serialize()));
}
public function unserialize($str)
{
list($this->credentials, $this->providerKey, $parentStr) = unserialize($str);
parent::unserialize($parentStr);
}
}
$token = new UsernamePasswordToken();
$webshop = new Webshop;
$permission = new Permission;
$roles = array();
for ($i = 0; $i < 2; $i++) {
$roles[$i] = new UserPermission();
$roles[$i]->webshop = $webshop;
$roles[$i]->permission = $permission;
}
$token->roles = $roles;
unserialize(serialize($token));
echo 'done';
--EXPECT--
done
|