Edit report at https://bugs.php.net/bug.php?id=64206&edit=1

 ID:                 64206
 Updated by:         m...@php.net
 Reported by:        cameron dot junge at sella dot co dot nz
 Summary:            Serialized object becomes r:2, which breaks
                     unserialization
-Status:             Verified
+Status:             Wont fix
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Ubuntu 12.10
 PHP Version:        5.4.11
 Assigned To:        mike
 Block user comment: N
 Private report:     N



Previous Comments:
------------------------------------------------------------------------
[2013-02-20 22:02:47] cameron dot junge at sella dot co dot nz

If unserialize is blocked inside serialize, then either the inherited class(es) 
need to know all the required properties from the parent class(es), which might 
cause a bit of a maintenance headache (one field changed in a base class means 
all inherited classes need to be updated).

A "solution" would be to use get_object_vars() in the base class and filter the 
properties returned, but that seems to me like a bit of a kludge. Would mean 
only serializing once, without the unserialize.

The use-case I've got is to prevent serializing a PDO connection inside classes 
that need to be persisted to memcache.

------------------------------------------------------------------------
[2013-02-20 15:03:59] larue...@php.net

oh, then I understand wrongly about your "deny" word, hehe

------------------------------------------------------------------------
[2013-02-20 14:56:08] m...@php.net

What dynamic check? 

I guess a differentiated BG(serialize_lock)/BG(unserialize_lock) should do it.

------------------------------------------------------------------------
[2013-02-20 14:47:32] larue...@php.net

I think deny unserialize in serialize is not a choice. it need a dynamic check 
and 
make no sense.

reseting one need to be test with...

------------------------------------------------------------------------
[2013-02-20 10:42:39] m...@php.net

As the var_hash is kept between recursive serialize() calls, the serializer 
thinks the object is already serialized, but in fact, your hacky code replaces 
the previously serialized object.

I see two options:

- deny unserialize() in serialize()
- reset the serialize var_hash on unserialize() (which may break other things)

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


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

    https://bugs.php.net/bug.php?id=64206


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

Reply via email to