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

 ID:                 63481
 Updated by:         m...@php.net
 Reported by:        aurelijus at astdev dot lt
 Summary:            Segmentation fault caused by unserialize()
 Status:             Assigned
 Type:               Bug
 Package:            Reproducible crash
 Operating System:   RHEL 6 & Mac OS X 10.7.4
 PHP Version:        5.4.8
 Assigned To:        mike
 Block user comment: N
 Private report:     N

 New Comment:

See bug #65481


Previous Comments:
------------------------------------------------------------------------
[2013-07-29 18:11:56] m...@php.net

Yes, please. I already have a possible fix for the second issue.

------------------------------------------------------------------------
[2013-06-06 09:57:11] arjen at react dot com

I believe these are different issues, the backtrace is quite different.

Got the following results using php-5.4.15 from php.net:

Original report: https://gist.github.com/anonymous/5720457
Backtrace of https://gist.github.com/aurelijus/4713758: 
https://gist.github.com/anonymous/5720464

I tried reducing the original testcase, got a segfault but again the backtrace 
is quite different.

Testscript http://3v4l.org/3WCpP (crashes >= 5.4.0)
Backtrace at https://gist.github.com/anonymous/5720491

Should I create a seperate issue for it?

------------------------------------------------------------------------
[2013-03-08 15:44:18] zach dot quintana at gmail dot com

I'm also experiencing a similar bug, but will unserializing a class that 
doesn't 
implement serializable. Need the code?

------------------------------------------------------------------------
[2013-02-06 10:07:49] m...@php.net

Yep, avoiding parent::serialize() helps:

diff --git a/serialize.php b/serialize.php
index 14ae4c8..4def326 100644
--- a/serialize.php
+++ b/serialize.php
@@ -58,13 +58,12 @@ class UsernamePasswordToken extends AbstractToken {
 
     public function serialize()
     {
-        return serialize(array($this->credentials, $this->providerKey, 
parent::serialize()));
+        return serialize(array($this->credentials, $this->providerKey, $this-
>roles));
     }
 
     public function unserialize($str)
     {
-        list($this->credentials, $this->providerKey, $parentStr) = 
unserialize($str);
-        parent::unserialize($parentStr);
+        list($this->credentials, $this->providerKey, $this->roles) = 
unserialize($str);
     }
 }

------------------------------------------------------------------------
[2013-02-06 09:54:10] m...@php.net

Looks like an excellent test case.

I suspect the problem is calling parent::(un)serialize() within a 
(un)serialize() 
callback.

I'll try to find out.

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


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=63481


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

Reply via email to