iliaa Wed Aug 10 18:36:25 2005 EDT
Modified files:
/php-src/ext/wddx wddx.c
Log:
Fixed bug #34068 (Numeric string as array key not cast to integer in
wddx_deserialize()).
http://cvs.php.net/diff.php/php-src/ext/wddx/wddx.c?r1=1.119&r2=1.120&ty=u
Index: php-src/ext/wddx/wddx.c
diff -u php-src/ext/wddx/wddx.c:1.119 php-src/ext/wddx/wddx.c:1.120
--- php-src/ext/wddx/wddx.c:1.119 Wed Aug 3 10:08:20 2005
+++ php-src/ext/wddx/wddx.c Wed Aug 10 18:36:20 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: wddx.c,v 1.119 2005/08/03 14:08:20 sniper Exp $ */
+/* $Id: wddx.c,v 1.120 2005/08/10 22:36:20 iliaa Exp $ */
#include "php.h"
@@ -997,10 +997,20 @@
ent1->data->refcount--;
add_property_zval(ent2->data,
ent1->varname, ent1->data);
EG(scope) = old_scope;
- } else
- zend_hash_update(target_hash,
-
ent1->varname, strlen(ent1->varname)+1,
-
&ent1->data, sizeof(zval *), NULL);
+ } else {
+ long l;
+ double d;
+
+ switch
(is_numeric_string(ent1->varname, strlen(ent1->varname), &l, &d, 0)) {
+ case IS_DOUBLE:
+ l = (long) d;
+ case IS_LONG:
+
zend_hash_index_update(target_hash, l, &ent1->data, sizeof(zval *), NULL);
+ break;
+ default:
+
zend_hash_update(target_hash,ent1->varname, strlen(ent1->varname)+1,
&ent1->data, sizeof(zval *), NULL);
+ }
+ }
efree(ent1->varname);
} else {
zend_hash_next_index_insert(target_hash,
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php