ID:               42196
 User updated by:  joungkyun at gmail dot com
 Reported By:      joungkyun at gmail dot com
-Status:           Feedback
+Status:           Open
 Bug Type:         Output Control
 Operating System: Linux
 PHP Version:      5CVS-2007-08-03 (CVS)
 New Comment:

I thinks that php has auto casting type. So, on 32bit systems php get
64bit interger, first convert casting type to double.

sorry for my pool english.


Previous Comments:
------------------------------------------------------------------------

[2007-08-04 14:08:04] [EMAIL PROTECTED]

First of all, exactly why do you pass data like this between machines?
Secondly: OF course you can't pass huge integers to 32bit system. So 
this is expected behaviour. What do you suggest happens in this case?

Try this on 32bit system: 

echo (int) 4294967297;


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

[2007-08-03 09:51:46] joungkyun at gmail dot com

Description:
------------
There is serialized data that made with 64bit integer on 64 bit
system.

On 32bit machine, if unserialize this data, you have result of integer
overflow.


Reproduce code:
---------------
On, 64bit system

echo serialize (4294967296 + 1);

=> result : "i:4294967297;"

On, 32bit system

echo unserilaize ("i:4294967297;");

=> result : 1

Expected result:
----------------
On, 32bit system

echo unserilaize ("i:4294967297;");

=> result : 4294967297

Actual result:
--------------
On, 32bit system

echo unserilaize ("i:4294967297;");

=> result : 1


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


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

Reply via email to