helly Fri Sep 24 18:05:37 2004 EDT
Added files: (Branch: PHP_5_0)
/php-src/ext/standard/tests/serialize 002.phpt
Modified files:
/php-src/ext/standard php_var.h var.c var_unserializer.c
/php-src/ext/standard/tests/serialize bug14293.phpt bug25378.phpt
Log:
MFH unserialize fixes
http://cvs.php.net/diff.php/php-src/ext/standard/php_var.h?r1=1.27&r2=1.27.2.1&ty=u
Index: php-src/ext/standard/php_var.h
diff -u php-src/ext/standard/php_var.h:1.27 php-src/ext/standard/php_var.h:1.27.2.1
--- php-src/ext/standard/php_var.h:1.27 Thu Jan 8 12:32:51 2004
+++ php-src/ext/standard/php_var.h Fri Sep 24 18:05:35 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_var.h,v 1.27 2004/01/08 17:32:51 sniper Exp $ */
+/* $Id: php_var.h,v 1.27.2.1 2004/09/24 22:05:35 helly Exp $ */
#ifndef PHP_VAR_H
#define PHP_VAR_H
@@ -46,7 +46,7 @@
typedef struct php_unserialize_data php_unserialize_data_t;
PHPAPI void php_var_serialize(smart_str *buf, zval **struc, php_serialize_data_t
*var_hash TSRMLS_DC);
-PHPAPI int php_var_unserialize(zval **rval, const char **p, const char *max,
php_unserialize_data_t *var_hash TSRMLS_DC);
+PHPAPI int php_var_unserialize(zval **rval, const unsigned char **p, const unsigned
char *max, php_unserialize_data_t *var_hash TSRMLS_DC);
#define PHP_VAR_SERIALIZE_INIT(var_hash) \
zend_hash_init(&(var_hash), 10, NULL, NULL, 0)
http://cvs.php.net/diff.php/php-src/ext/standard/var.c?r1=1.191.2.2&r2=1.191.2.3&ty=u
Index: php-src/ext/standard/var.c
diff -u php-src/ext/standard/var.c:1.191.2.2 php-src/ext/standard/var.c:1.191.2.3
--- php-src/ext/standard/var.c:1.191.2.2 Sun Aug 29 13:16:21 2004
+++ php-src/ext/standard/var.c Fri Sep 24 18:05:35 2004
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var.c,v 1.191.2.2 2004/08/29 17:16:21 iliaa Exp $ */
+/* $Id: var.c,v 1.191.2.3 2004/09/24 22:05:35 helly Exp $ */
/* {{{ includes
@@ -578,7 +578,6 @@
smart_str_appendl(buf,"N;", 2);
continue;
}
-
if (zend_hash_find(Z_OBJPROP_PP(struc), Z_STRVAL_PP(name),
Z_STRLEN_PP(name) + 1, (void *) &d) ==
SUCCESS) {
php_var_serialize_string(buf, Z_STRVAL_PP(name),
Z_STRLEN_PP(name));
@@ -599,6 +598,7 @@
php_var_serialize_intern(buf,
d, var_hash TSRMLS_CC);
break;
}
+ efree(priv_name);
zend_mangle_property_name(&prot_name,
&prop_name_length, "*", 1,
Z_STRVAL_PP(name), Z_STRLEN_PP(name) + 1, ce->type & ZEND_INTERNAL_CLASS);
if
(zend_hash_find(Z_OBJPROP_PP(struc), prot_name, prop_name_length, (void *) &d) ==
SUCCESS) {
@@ -607,12 +607,10 @@
php_var_serialize_intern(buf,
d, var_hash TSRMLS_CC);
break;
}
+ efree(prot_name);
php_error_docref(NULL TSRMLS_CC,
E_NOTICE, "\"%s\" returned as member variable from __sleep() but does not exist",
Z_STRVAL_PP(name));
php_var_serialize_string(buf,
Z_STRVAL_PP(name), Z_STRLEN_PP(name));
php_var_serialize_intern(buf, &nvalp,
var_hash TSRMLS_CC);
-
- efree(prot_name);
- efree(priv_name);
} while (0);
} else {
php_var_serialize_string(buf,
Z_STRVAL_PP(name), Z_STRLEN_PP(name));
@@ -825,7 +823,7 @@
}
if (Z_TYPE_PP(buf) == IS_STRING) {
- const char *p = Z_STRVAL_PP(buf);
+ const unsigned char *p = (unsigned char*)Z_STRVAL_PP(buf);
if (Z_STRLEN_PP(buf) == 0) {
RETURN_FALSE;
@@ -835,7 +833,7 @@
if (!php_var_unserialize(&return_value, &p, p + Z_STRLEN_PP(buf),
&var_hash TSRMLS_CC)) {
PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
zval_dtor(return_value);
- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Error at offset
%ld of %d bytes", (long)(p - Z_STRVAL_PP(buf)), Z_STRLEN_PP(buf));
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Error at offset
%ld of %d bytes", (long)((char*)p - Z_STRVAL_PP(buf)), Z_STRLEN_PP(buf));
RETURN_FALSE;
}
PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
http://cvs.php.net/diff.php/php-src/ext/standard/var_unserializer.c?r1=1.38&r2=1.38.2.1&ty=u
Index: php-src/ext/standard/var_unserializer.c
diff -u php-src/ext/standard/var_unserializer.c:1.38
php-src/ext/standard/var_unserializer.c:1.38.2.1
--- php-src/ext/standard/var_unserializer.c:1.38 Fri Mar 26 20:27:53 2004
+++ php-src/ext/standard/var_unserializer.c Fri Sep 24 18:05:36 2004
@@ -1,5 +1,5 @@
-/* Generated by re2c 0.9.2 on Sat Mar 27 02:27:57 2004 */
-#line 1 "/usr/src/php5/ext/standard/var_unserializer.re"
+/* Generated by re2c 0.9.4 on Sat Sep 25 00:06:16 2004 */
+#line 1 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var_unserializer.c,v 1.38 2004/03/27 01:27:53 helly Exp $ */
+/* $Id: var_unserializer.c,v 1.38.2.1 2004/09/24 22:05:36 helly Exp $ */
#include "php.h"
#include "ext/standard/php_var.h"
@@ -111,12 +111,12 @@
#define YYMARKER marker
-#line 118 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 118 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
-static inline int parse_iv2(const char *p, const char **q)
+static inline int parse_iv2(const unsigned char *p, const unsigned char **q)
{
char cursor;
int result = 0;
@@ -131,7 +131,7 @@
}
while (1) {
- cursor = *p;
+ cursor = (char)*p;
if (cursor >= '0' && cursor <= '9') {
result = result * 10 + cursor - '0';
} else {
@@ -144,12 +144,34 @@
return result;
}
-static inline int parse_iv(const char *p)
+static inline int parse_iv(const unsigned char *p)
{
return parse_iv2(p, NULL);
}
-#define UNSERIALIZE_PARAMETER zval **rval, const char **p, const char *max,
php_unserialize_data_t *var_hash TSRMLS_DC
+/* no need to check for length - re2c already did */
+static inline size_t parse_uiv(const unsigned char *p)
+{
+ unsigned char cursor;
+ size_t result = 0;
+
+ if (*p == '+') {
+ p++;
+ }
+
+ while (1) {
+ cursor = *p;
+ if (cursor >= '0' && cursor <= '9') {
+ result = result * 10 + (size_t)(cursor - (unsigned char)'0');
+ } else {
+ break;
+ }
+ p++;
+ }
+ return result;
+}
+
+#define UNSERIALIZE_PARAMETER zval **rval, const unsigned char **p, const unsigned
char *max, php_unserialize_data_t *var_hash TSRMLS_DC
#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash TSRMLS_CC
static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, int
elements)
@@ -165,6 +187,12 @@
return 0;
}
+ if (Z_TYPE_P(key) != IS_LONG && Z_TYPE_P(key) != IS_STRING) {
+ zval_dtor(key);
+ FREE_ZVAL(key);
+ return 0;
+ }
+
ALLOC_INIT_ZVAL(data);
if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) {
@@ -182,11 +210,15 @@
case IS_STRING:
zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key)
+ 1, &data, sizeof(data), NULL);
break;
-
}
zval_dtor(key);
FREE_ZVAL(key);
+
+ if (elements && *(*p-1) != ';' && *(*p-1) != '}') {
+ (*p)--;
+ return 0;
+ }
}
return 1;
@@ -253,7 +285,7 @@
-#line 7 "re2c-output.c"
+#line 7 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -332,7 +364,7 @@
goto yy16;
} else {
if(yych <= '}') goto yy14;
- if(yych <= '\277') goto yy16;
+ if(yych <= 0xBF) goto yy16;
goto yy2;
}
}
@@ -343,18 +375,18 @@
}
yy3: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == ':') goto yy89;
+ if(yych == ':') goto yy87;
goto yy4;
yy4:
-#line 478 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 532 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{ return 0; }
-#line 102 "re2c-output.c"
+#line 102 "<stdout>"
yy5: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == ':') goto yy83;
+ if(yych == ':') goto yy81;
goto yy4;
yy6: yych = *++YYCURSOR;
- if(yych == ';') goto yy81;
+ if(yych == ';') goto yy79;
goto yy4;
yy7: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
@@ -384,16 +416,16 @@
yych = *(YYMARKER = ++YYCURSOR);
if(yych == ':') goto yy17;
goto yy4;
-yy14: yych = *++YYCURSOR;
+yy14: ++YYCURSOR;
goto yy15;
yy15:
-#line 472 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 526 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
/* this is the case where we have less data than planned */
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Unexpected end of serialized
data");
return 0; /* not sure if it should be 0 or 1 here? */
}
-#line 147 "re2c-output.c"
+#line 147 "<stdout>"
yy16: yych = *++YYCURSOR;
goto yy4;
yy17: yych = *++YYCURSOR;
@@ -413,14 +445,13 @@
yy21: yych = *++YYCURSOR;
if(yych != '"') goto yy2;
goto yy22;
-yy22: yych = *++YYCURSOR;
+yy22: ++YYCURSOR;
goto yy23;
yy23:
-#line 393 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 433 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
- int len;
+ size_t len, len2, maxlen;
int elements;
- int len2;
char *class_name;
zend_class_entry *ce;
zend_class_entry **pce;
@@ -432,13 +463,28 @@
zval *arg_func_name;
INIT_PZVAL(*rval);
- len2 = len = parse_iv(start + 2);
- if (len == 0)
+ len2 = len = parse_uiv(start + 2);
+ maxlen = max - YYCURSOR;
+ if (maxlen < len || len == 0) {
+ *p = start + 2;
return 0;
+ }
+
+ class_name = (char*)YYCURSOR;
- class_name = estrndup(YYCURSOR, len);
YYCURSOR += len;
+ if (*(YYCURSOR) != '"') {
+ *p = YYCURSOR;
+ return 0;
+ }
+ if (*(YYCURSOR+1) != ':') {
+ *p = YYCURSOR+1;
+ return 0;
+ }
+
+ class_name = estrndup(class_name, len);
+
do {
/* Try to find class directly */
if (zend_lookup_class(class_name, len2, &pce TSRMLS_CC) == SUCCESS) {
@@ -495,7 +541,7 @@
return object_common2(UNSERIALIZE_PASSTHRU, elements);
}
-#line 249 "re2c-output.c"
+#line 264 "<stdout>"
yy24: yych = *++YYCURSOR;
if(yych <= ','){
if(yych != '+') goto yy2;
@@ -521,10 +567,10 @@
yy28: yych = *++YYCURSOR;
if(yych != '"') goto yy2;
goto yy29;
-yy29: yych = *++YYCURSOR;
+yy29: ++YYCURSOR;
goto yy30;
yy30:
-#line 385 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 425 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
INIT_PZVAL(*rval);
@@ -532,7 +578,7 @@
return object_common2(UNSERIALIZE_PASSTHRU,
object_common1(UNSERIALIZE_PASSTHRU,
ZEND_STANDARD_CLASS_DEF_PTR));
}
-#line 286 "re2c-output.c"
+#line 302 "<stdout>"
yy31: yych = *++YYCURSOR;
if(yych == '+') goto yy32;
if(yych <= '/') goto yy2;
@@ -553,10 +599,10 @@
yy35: yych = *++YYCURSOR;
if(yych != '{') goto yy2;
goto yy36;
-yy36: yych = *++YYCURSOR;
+yy36: ++YYCURSOR;
goto yy37;
yy37:
-#line 367 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 407 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
int elements = parse_iv(start + 2);
@@ -574,7 +620,7 @@
return finish_nested_data(UNSERIALIZE_PASSTHRU);
}
-#line 328 "re2c-output.c"
+#line 345 "<stdout>"
yy38: yych = *++YYCURSOR;
if(yych == '+') goto yy39;
if(yych <= '/') goto yy2;
@@ -595,30 +641,38 @@
yy42: yych = *++YYCURSOR;
if(yych != '"') goto yy2;
goto yy43;
-yy43: yych = *++YYCURSOR;
+yy43: ++YYCURSOR;
goto yy44;
yy44:
-#line 347 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 379 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
- int len;
+ size_t len, maxlen;
char *str;
- len = parse_iv(start + 2);
+ len = parse_uiv(start + 2);
+ maxlen = max - YYCURSOR;
+ if (maxlen < len) {
+ *p = start + 2;
+ return 0;
+ }
- if (len == 0) {
- str = empty_string;
- } else {
- str = estrndup(YYCURSOR, len);
+ str = (char*)YYCURSOR;
+
+ YYCURSOR += len;
+
+ if (*(YYCURSOR) != '"') {
+ *p = YYCURSOR;
+ return 0;
}
- YYCURSOR += len + 2;
+ YYCURSOR += 2;
*p = YYCURSOR;
INIT_PZVAL(*rval);
- ZVAL_STRINGL(*rval, str, len, 0);
+ ZVAL_STRINGL(*rval, str, len, 1);
return 1;
}
-#line 372 "re2c-output.c"
+#line 398 "<stdout>"
yy45: yych = *++YYCURSOR;
if(yych <= '/'){
if(yych <= ','){
@@ -704,17 +758,17 @@
goto yy2;
}
}
-yy55: yych = *++YYCURSOR;
+yy55: ++YYCURSOR;
goto yy56;
yy56:
-#line 340 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 372 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
ZVAL_DOUBLE(*rval, atof(start + 2));
return 1;
}
-#line 468 "re2c-output.c"
+#line 496 "<stdout>"
yy57: yych = *++YYCURSOR;
if(yych <= ','){
if(yych != '+') goto yy2;
@@ -771,10 +825,10 @@
yy65: yych = *++YYCURSOR;
if(yych != ';') goto yy2;
goto yy66;
-yy66: yych = *++YYCURSOR;
+yy66: ++YYCURSOR;
goto yy67;
yy67:
-#line 323 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 355 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
@@ -791,7 +845,7 @@
#endif
return 1;
}
-#line 545 "re2c-output.c"
+#line 575 "<stdout>"
yy68: yych = *++YYCURSOR;
if(yych == 'N') goto yy65;
goto yy2;
@@ -817,87 +871,72 @@
if(yych <= '9') goto yy71;
if(yych != ';') goto yy2;
goto yy73;
-yy73: yych = *++YYCURSOR;
+yy73: ++YYCURSOR;
goto yy74;
yy74:
-#line 316 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 348 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
ZVAL_LONG(*rval, parse_iv(start + 2));
return 1;
}
-#line 581 "re2c-output.c"
+#line 612 "<stdout>"
yy75: yych = *++YYCURSOR;
- if(yych <= ','){
- if(yych != '+') goto yy2;
- goto yy76;
- } else {
- if(yych <= '-') goto yy76;
- if(yych <= '/') goto yy2;
- if(yych <= '9') goto yy77;
- goto yy2;
- }
-yy76: yych = *++YYCURSOR;
if(yych <= '/') goto yy2;
- if(yych >= ':') goto yy2;
+ if(yych >= '2') goto yy2;
+ goto yy76;
+yy76: yych = *++YYCURSOR;
+ if(yych != ';') goto yy2;
goto yy77;
yy77: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
goto yy78;
-yy78: if(yych <= '/') goto yy2;
- if(yych <= '9') goto yy77;
- if(yych != ';') goto yy2;
- goto yy79;
-yy79: yych = *++YYCURSOR;
- goto yy80;
-yy80:
-#line 309 "/usr/src/php5/ext/standard/var_unserializer.re"
+yy78:
+#line 341 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
ZVAL_BOOL(*rval, parse_iv(start + 2));
return 1;
}
-#line 614 "re2c-output.c"
-yy81: yych = *++YYCURSOR;
- goto yy82;
-yy82:
-#line 302 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 630 "<stdout>"
+yy79: ++YYCURSOR;
+ goto yy80;
+yy80:
+#line 334 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
*p = YYCURSOR;
INIT_PZVAL(*rval);
ZVAL_NULL(*rval);
return 1;
}
-#line 625 "re2c-output.c"
-yy83: yych = *++YYCURSOR;
+#line 641 "<stdout>"
+yy81: yych = *++YYCURSOR;
if(yych <= ','){
if(yych != '+') goto yy2;
- goto yy84;
+ goto yy82;
} else {
- if(yych <= '-') goto yy84;
+ if(yych <= '-') goto yy82;
if(yych <= '/') goto yy2;
- if(yych <= '9') goto yy85;
+ if(yych <= '9') goto yy83;
goto yy2;
}
-yy84: yych = *++YYCURSOR;
+yy82: yych = *++YYCURSOR;
if(yych <= '/') goto yy2;
if(yych >= ':') goto yy2;
- goto yy85;
-yy85: ++YYCURSOR;
+ goto yy83;
+yy83: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy86;
-yy86: if(yych <= '/') goto yy2;
- if(yych <= '9') goto yy85;
+ goto yy84;
+yy84: if(yych <= '/') goto yy2;
+ if(yych <= '9') goto yy83;
if(yych != ';') goto yy2;
- goto yy87;
-yy87: yych = *++YYCURSOR;
- goto yy88;
-yy88:
-#line 281 "/usr/src/php5/ext/standard/var_unserializer.re"
+ goto yy85;
+yy85: ++YYCURSOR;
+ goto yy86;
+yy86:
+#line 313 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
int id;
@@ -918,33 +957,33 @@
return 1;
}
-#line 672 "re2c-output.c"
-yy89: yych = *++YYCURSOR;
+#line 689 "<stdout>"
+yy87: yych = *++YYCURSOR;
if(yych <= ','){
if(yych != '+') goto yy2;
- goto yy90;
+ goto yy88;
} else {
- if(yych <= '-') goto yy90;
+ if(yych <= '-') goto yy88;
if(yych <= '/') goto yy2;
- if(yych <= '9') goto yy91;
+ if(yych <= '9') goto yy89;
goto yy2;
}
-yy90: yych = *++YYCURSOR;
+yy88: yych = *++YYCURSOR;
if(yych <= '/') goto yy2;
if(yych >= ':') goto yy2;
- goto yy91;
-yy91: ++YYCURSOR;
+ goto yy89;
+yy89: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy92;
-yy92: if(yych <= '/') goto yy2;
- if(yych <= '9') goto yy91;
+ goto yy90;
+yy90: if(yych <= '/') goto yy2;
+ if(yych <= '9') goto yy89;
if(yych != ';') goto yy2;
- goto yy93;
-yy93: yych = *++YYCURSOR;
- goto yy94;
-yy94:
-#line 260 "/usr/src/php5/ext/standard/var_unserializer.re"
+ goto yy91;
+yy91: ++YYCURSOR;
+ goto yy92;
+yy92:
+#line 292 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
{
int id;
@@ -965,9 +1004,9 @@
return 1;
}
-#line 719 "re2c-output.c"
+#line 737 "<stdout>"
}
-#line 480 "/usr/src/php5/ext/standard/var_unserializer.re"
+#line 534 "/usr/src/PHP_5_0/ext/standard/var_unserializer.re"
return 0;
http://cvs.php.net/diff.php/php-src/ext/standard/tests/serialize/bug14293.phpt?r1=1.2&r2=1.2.2.1&ty=u
Index: php-src/ext/standard/tests/serialize/bug14293.phpt
diff -u php-src/ext/standard/tests/serialize/bug14293.phpt:1.2
php-src/ext/standard/tests/serialize/bug14293.phpt:1.2.2.1
--- php-src/ext/standard/tests/serialize/bug14293.phpt:1.2 Thu May 8 19:23:02
2003
+++ php-src/ext/standard/tests/serialize/bug14293.phpt Fri Sep 24 18:05:36 2004
@@ -25,6 +25,8 @@
?>
--EXPECTF--
__sleep called
+
+Notice: serialize(): "b" returned as member variable from __sleep() but does not
exist in %sbug14293.php on line %d
O:1:"t":2:{s:1:"a";s:5:"hello";s:1:"b";N;}
object(t)#%d (2) {
["a"]=>
http://cvs.php.net/diff.php/php-src/ext/standard/tests/serialize/bug25378.phpt?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/standard/tests/serialize/bug25378.phpt
diff -u php-src/ext/standard/tests/serialize/bug25378.phpt:1.1
php-src/ext/standard/tests/serialize/bug25378.phpt:1.1.4.1
--- php-src/ext/standard/tests/serialize/bug25378.phpt:1.1 Wed Sep 3 12:40:52
2003
+++ php-src/ext/standard/tests/serialize/bug25378.phpt Fri Sep 24 18:05:36 2004
@@ -3,7 +3,57 @@
--FILE--
<?php
var_dump(unserialize("s:-1:\"\";"));
+var_dump(unserialize("i:823"));
+var_dump(unserialize("O:8:\"stdClass :0:{}"));
+var_dump(unserialize("O:8:\"stdClass\"+0:{}"));
+var_dump(unserialize("O:1000:\"stdClass\":0:{}"));
+var_dump(unserialize("a:2:{i:0;s:2:\"12\":"));
+var_dump(unserialize("a:2:{i:0;s:2:\"12\";i:1;s:3000:\"123"));
+var_dump(unserialize("a:2:{i:0;s:2:\"12\"+i:1;s:3:\"123\";}"));
+var_dump(unserialize("a:2:{i:0;s:2:\"12\";i:1;s:3:\"123\";"));
+var_dump(unserialize("s:3000:\"123\";"));
+var_dump(unserialize("s:3000:\"123"));
+var_dump(unserialize("s:3:\"123;"));
+var_dump(unserialize("s:0:\"123\";"));
?>
+===DONE===
--EXPECTF--
-Notice: unserialize(): Error at offset 0 of 8 bytes in %s on line %d
+Notice: unserialize(): Error at offset 0 of 8 bytes in %sbug25378.php on line %d
bool(false)
+
+Notice: unserialize(): Error at offset 0 of 5 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 13 of 19 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 14 of 19 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 2 of 22 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 17 of 18 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 24 of 33 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 17 of 33 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 33 of 32 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 2 of 13 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 2 of 11 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 8 of 9 bytes in %sbug25378.php on line %d
+bool(false)
+
+Notice: unserialize(): Error at offset 5 of 10 bytes in %sbug25378.php on line %d
+bool(false)
+===DONE===
http://cvs.php.net/co.php/php-src/ext/standard/tests/serialize/002.phpt?r=1.1&p=1
Index: php-src/ext/standard/tests/serialize/002.phpt
+++ php-src/ext/standard/tests/serialize/002.phpt
--TEST--
serialize() (Bug #14293)
--POST--
--GET--
--FILE--
<?php
class t
{
function t()
{
$this->a = 'hello';
}
function __sleep()
{
echo "__sleep called\n";
return array('a','b');
}
}
$t = new t();
$data = serialize($t);
echo "$data\n";
$t = unserialize($data);
var_dump($t);
?>
--EXPECT--
__sleep called
O:1:"t":1:{s:1:"a";s:5:"hello";}
object(t)(1) {
["a"]=>
string(5) "hello"
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php