#27428 [Opn]: serialize brakes output for unserialize, returning garbage
| From: | black at scene-si dot org | Date: | Sat, 28 Feb 2004 22:38:50 +0000 |
| Subject: | #27428 [Opn]: serialize brakes output for unserialize, returning garbage | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-55681@lists.php.net to get a copy of this message | ||
ID: 27428
User updated by: black at scene-si dot org
Reported By: black at scene-si dot org
Status: Open
Bug Type: Strings related
Operating System: debian unstable
PHP Version: Irrelevant
New Comment:
i've also tried using mysql_real_escape_string, but it didnt solve
anything (for long anyway, the garbage output came back at the worst of
moments.)
the phpinfo above is still valid - any help would be appreciated, as i
really dont know what to do
Previous Comments:
------------------------------------------------------------------------
[2004-02-27 20:31:55] black at scene-si dot org
Description:
------------
The following has been tested on:
php-4.3.2
php-4.3.4
php-4.3.5rc2
php-4.3.5rc3
php4-STABLE-200310032330
php4-STABLE-200402101030
php4-STABLE-200402272030
with various compile options turned on/off (oracle support &
turckmmcache), always giving same result
basically with every version of this some or most serialize() calls
result in an incorrectlly constructed serialized string... given i only
input plaintext, the serialized string must have a length of
6+strlen(original), albeit:
["cache_data"]=> string(9277) "s:9309:"... (oops!)
["cache_data"]=> string(24259) "s:24248:"... (correct.)
["cache_data"]=> string(23850) "s:23881:"... (oops!)
["cache_data"]=> string(224081) "s:224069:"... (correct.)
["cache_data"]=> string(21055) "s:21107:"... (WTF!)
["cache_data"]=> string(19590) "s:19663:"... (wrong)
...
http://scene-si.org/test.tgz - 800kb, contains 15Mb
output of the
reproduce code.
http://193.77.198.80/phpinfo.php for phpinfo()
Linux dahim 2.4.23-1-686 #1 Sun Nov 30 20:51:10 EST 2003 i686 GNU/Linux
(thats the server this runs on).
the funny part is, that this code (the same code to generate the
entries in condor_dbcache) works also on other servers, also debian,
iis, apache-win, redhat, mandrake, openbsd, freebsd.. it only fucked
here..
after the serialize is done, the ONLY command it goes trough is
mysql_escape_string, so there is no character or other conversions
which could explain the wrong length in serialized() output
Reproduce code:
---------------
<?php
mysql_pconnect("localhost","root","");
mysql_select_db("condor");
$query = mysql_query("select * from condor_dbcache");
while ($row = mysql_fetch_assoc($query)) {
var_dump($row);
var_dump(unserialize($row['cache_data']));
}
// unserialize throws out crap after serialized data end
Expected result:
----------------
I dont want the "; and crap after it displayed.. but more accurately..
i want serialize to behave propperly here.
since i never had this problem, i pressume its a system dependant
problem, i guess you'll want this:
Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.3/specs
Configured with: ../src/configure -v
--enable-languages=c,c++,java,f77,pascal,objc,ada,treelang
--prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
--with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared
--with-system-zlib --enable-nls --without-included-gettext
--enable-__cxa_atexit --enable-clocale=gnu --enable-debug
--enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc
i486-linux
Thread model: posix
gcc version 3.3.3 (Debian)
if you need some other application version or lib version, comment - or
atleast tell on what libs this depends.
Actual result:
--------------
Content starts with ei: 's:9309:"<table wid' and ends with
'<br><br>";'
... but the content length is 9277..
the content was input with serialize in the following way:
$content = serialize($content);
mysql_query("update condor_dbcache set cache_timestamp='".time()."',
cache_data='".mysql_escape_string($content)."' where
cache_filename='".mysql_escape_string($filename)."'");
filename beeing the correspondant key to this dbcache table.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27428&edit=1