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:

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);
     }
 }


Previous Comments:
------------------------------------------------------------------------
[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.

------------------------------------------------------------------------
[2013-02-05 12:00:29] aurelijus at astdev dot lt

Hi,
Here is a reproducible serialization/unserialization code
https://gist.github.com/aurelijus/4713758

------------------------------------------------------------------------
[2012-11-12 12:29:29] aurelijus at astdev dot lt

It might have been another php process, it might have been the same.
1. generate $object.
2. serialize $object.
3. save $string in php session (under /tmp)
/* might be different process from here, it did not really matter, 
segmenatation 
fault happend in both cases */
4. get $string from session
5. dumped to a file for debugging (optional)
6. unserialize($string)
7. segmenatation fault.

------------------------------------------------------------------------
[2012-11-12 02:51:46] larue...@php.net

did you generated the "serialize data" by two PHP process?


like:
1. serializer($xxx) then write to a temporary file like /tmp/xxx.txt
2. then in another PHP script, 
   $data[2]= file_get_contents("/tmp/xxx.txt");
  
then you got your serialization data by:
 $result = serialize($data);  ?

thanks

------------------------------------------------------------------------
[2012-11-11 16:52:42] aurelijus at astdev dot lt

Getting serialization code might be complicated, cause it's mostly 3rd pary 
framework code + DB, but I'll try.

String was generated with 5.4.8.

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


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