Mantis - Quercus
Viewing Issue Advanced Details
2697 major always 05-26-08 13:13 09-05-08 22:38
perololo  
nam  
normal  
closed 3.2.0  
fixed  
none    
none 3.2.1  
0002697: [PATCH] unserialize does not work properly with lot of dereferencing
unserialize failed to operate properly with lot of references and the following scenario after some already dereferenced references:

Parent.children = array(Child.parent --> reference-to-parent )

Error:
------
Index out of bounds:

SEVERE: java.io.IOException: reference id '438' not found in list (max id: 428, parse index: 12209)
java.io.IOException: reference id '438' not found in list (max id: 428, parse index: 12209)
        at com.caucho.quercus.lib.UnserializeReader.unserialize(UnserializeReader.java:319)
        at com.caucho.quercus.lib.UnserializeReader.unserialize(UnserializeReader.java:280)
        at com.caucho.quercus.lib.UnserializeReader.unserialize(UnserializeReader.java:232)
        at com.caucho.quercus.lib.UnserializeReader.unserialize(UnserializeReader.java:280)
        at com.caucho.quercus.lib.UnserializeReader.unserialize(UnserializeReader.java:232)
        at com.caucho.quercus.lib.UnserializeReader.unserialize(UnserializeReader.java:280)
        at com.caucho.quercus.lib.UnserializeReader.unserialize(UnserializeReader.java:280)
        at com.caucho.quercus.lib.VariableModule.unserialize(VariableModule.java:675)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


Reason:
-------
When dereferencing takes place, the new read reference does not add any value to the reference list (_valueList). But this list must contain exactly as many data elements as there are in the serialized string. Therefore after some deferencing _valueList contains less values than expected. An index-out-of-bounds exception may take place.

Solution:
---------
All read references must add a dummy value to _valueList.

--> see attached patch
 g:\Kundenumsetzungen\Online\quercus-3.2-svn_unserialize.2008-05-26.22-00.diff [^] (3,269 bytes) 05-26-08 13:13

Notes
(0003404)
nam   
09-05-08 22:38   
Issue was due to Quercus not correctly serializing object assignments.

See:
http://bugs.caucho.com/view.php?id=2895 [^]
http://bugs.caucho.com/view.php?id=2910 [^]