ID: 43614
User updated by: dmitriy dot buldakov at toatech dot com
Reported By: dmitriy dot buldakov at toatech dot com
Status: Open
Bug Type: Arrays related
Operating System: Mac OS X
PHP Version: 5.2.5
New Comment:
--- var_unserializer.c.orig 2007-12-18 12:13:16.000000000 +0200
+++ var_unserializer.c 2007-12-18 15:40:22.000000000 +0200
@@ -282,16 +282,10 @@ static inline int process_nested_data(UN
switch (Z_TYPE_P(key)) {
case IS_LONG:
- if (zend_hash_index_find(ht,
Z_LVAL_P(key), (void **)&old_data)==SUCCESS) {
- var_push_dtor(var_hash,
old_data);
- }
zend_hash_index_update(ht,
Z_LVAL_P(key), &data, sizeof(data), NULL);
break;
case IS_STRING:
- if (zend_hash_find(ht, Z_STRVAL_P(key),
Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) {
- var_push_dtor(var_hash,
old_data);
- }
- zend_hash_update(ht, Z_STRVAL_P(key),
Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);
+ zend_symtable_update(ht,
Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);
break;
}
Previous Comments:
------------------------------------------------------------------------
[2007-12-18 13:46:45] dmitriy dot buldakov at toatech dot com
The following code works well
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_symtable_update(ht, Z_STRVAL_P(key),
Z_STRLEN_P(key) + 1,
&data, sizeof(data), NULL);
break;
}
but looks like still there is a problem here.
compearing var_unserialize.c with array.c you can see that key array.c
uses more sufficient key preparation.
So, about the code - what should I do to put the code into repository?
------------------------------------------------------------------------
[2007-12-18 12:05:00] dmitriy dot buldakov at toatech dot com
I have not tesdet last patch yet, but looks like "0" is not converted
to int 0 with the patch.
------------------------------------------------------------------------
[2007-12-18 12:04:46] dmitriy dot buldakov at toatech dot com
I have not tesdet last patch yet, but looks like "0" is not converted
to int 0 with the patch.
------------------------------------------------------------------------
[2007-12-18 01:52:38] [EMAIL PROTECTED]
Updated. The function did accept other characters. And how not is
possible to use de HANDLE_NUMERIC(), I make a loop and check for each
char.
http://ecl.zoone.com.br/etc/patches/bug43614.patch
------------------------------------------------------------------------
[2007-12-17 16:03:08] dmitriy dot buldakov at toatech dot com
Last patch works much more better, but there is still a problem.
the patch ignores leading spaces.
for example keys ' 10' and ' -10' are converted to integer 10 and -10.
------------------------------------------------------------------------
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/43614
--
Edit this bug report at http://bugs.php.net/?id=43614&edit=1