ID: 19493
Updated by: sas@php.net
Reported By: matthias.boldt@ticket-web.de
Status: Open
-Bug Type: Session related
+Bug Type: Strings related
Operating System: Linux 2.4.18
PHP Version: 4.2.3
New Comment:
While the session module makes use of the serializer, it is not the
serializer itself.
Reclassified as "Strings related".
Previous Comments:
------------------------------------------------------------------------
[2002-09-20 02:19:10] matthias.boldt@ticket-web.de
Hello, there is a new patch (without C++-comments :-):
--- ext/standard/var_unserializer.re.old Thu Sep 19 16:34:32 2002
+++ ext/standard/var_unserializer.re Fri Sep 20 09:07:25 2002
@@ -144,31 +144,29 @@
if (!php_var_unserialize(&key, p, max, NULL TSRMLS_CC)) {
zval_dtor(key);
FREE_ZVAL(key);
- return 0;
- }
-
- ALLOC_INIT_ZVAL(data);
-
- if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) {
- zval_dtor(key);
- FREE_ZVAL(key);
- zval_dtor(data);
- FREE_ZVAL(data);
- return 0;
- }
+ } else {
+ ALLOC_INIT_ZVAL(data);
- switch (Z_TYPE_P(key)) {
- case IS_LONG:
- zend_hash_index_update(ht, Z_LVAL_P(key), &data, sizeof(data),
NULL);
- break;
- case IS_STRING:
- zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data,
sizeof(data), NULL);
- break;
+ if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) {
+ zval_dtor(key);
+ FREE_ZVAL(key);
+ zval_dtor(data);
+ FREE_ZVAL(data);
+ } else {
+ switch (Z_TYPE_P(key)) {
+ case IS_LONG:
+ zend_hash_index_update(ht, Z_LVAL_P(key), &data, sizeof(data),
NULL);
+ break;
+ 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);
+ zval_dtor(key);
+ FREE_ZVAL(key);
+ }
+ }
}
return 1;
------------------------------------------------------------------------
[2002-09-19 13:17:02] kalowsky@php.net
No C++ comment styles allowed! Can you fix that and resubmit the
patch?
------------------------------------------------------------------------
[2002-09-19 09:44:58] matthias.boldt@ticket-web.de
There is the diff:
--- ext/standard/var_unserializer.re.old Thu Sep 19 16:34:32 2002
+++ ext/standard/var_unserializer.re Thu Sep 19 11:20:08 2002
@@ -144,31 +144,29 @@
if (!php_var_unserialize(&key, p, max, NULL TSRMLS_CC)) {
zval_dtor(key);
FREE_ZVAL(key);
- return 0;
- }
-
- ALLOC_INIT_ZVAL(data);
-
- if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) {
- zval_dtor(key);
- FREE_ZVAL(key);
- zval_dtor(data);
- FREE_ZVAL(data);
- return 0;
- }
+ } else {
+ ALLOC_INIT_ZVAL(data);
- switch (Z_TYPE_P(key)) {
- case IS_LONG:
- zend_hash_index_update(ht, Z_LVAL_P(key), &data, sizeof(data),
NULL);
- break;
- case IS_STRING:
- zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data,
sizeof(data), NULL);
- break;
+ if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) {
+ zval_dtor(key);
+ FREE_ZVAL(key);
+ zval_dtor(data);
+ FREE_ZVAL(data);
+ } else {
+ switch (Z_TYPE_P(key)) {
+ case IS_LONG:
+ zend_hash_index_update(ht, Z_LVAL_P(key), &data, sizeof(data),
NULL);
+ break;
+ 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);
+ zval_dtor(key);
+ FREE_ZVAL(key);
+ }
+ }
}
return 1;
@@ -396,9 +394,9 @@
}
"}" {
- /* this is the case where we have less data than planned */
+ // this is the case where we have less data than planned
zend_error(E_NOTICE, "Unexpected end of serialized data");
- return 0; /* not sure if it should be 0 or 1 here? */
+ return 0; // not sure if it should be 0 or 1 here?
}
any { return 0; }
------------------------------------------------------------------------
[2002-09-19 09:05:16] sander@php.net
Please supply a unified diff here.
------------------------------------------------------------------------
[2002-09-19 04:53:25] matthias.boldt@ticket-web.de
I've changed thd category ...
------------------------------------------------------------------------
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
http://bugs.php.net/19493
--
Edit this bug report at http://bugs.php.net/?id=19493&edit=1