]> granicus.if.org Git - php/commitdiff
Fix binary safety in foreach() keys (fixes bug #24783)
authorZeev Suraski <zeev@php.net>
Thu, 24 Jul 2003 08:36:39 +0000 (08:36 +0000)
committerZeev Suraski <zeev@php.net>
Thu, 24 Jul 2003 08:36:39 +0000 (08:36 +0000)
Zend/zend_execute.c

index 4d2685a8eaf9fa1d4cccd0ddcf314f581e89fda4..76b5ad3a87bd3c5868e49af18462c38d1bdbd19f 100644 (file)
@@ -3492,6 +3492,7 @@ int zend_fe_fetch_handler(ZEND_OPCODE_HANDLER_ARGS)
        zval *result = &EX_T(EX(opline)->result.u.var).tmp_var;
        zval **value, *key;
        char *str_key;
+       uint str_key_len;
        ulong int_key;
        HashTable *fe_ht;
 
@@ -3514,10 +3515,10 @@ int zend_fe_fetch_handler(ZEND_OPCODE_HANDLER_ARGS)
 
        ALLOC_ZVAL(key);
        INIT_PZVAL(key);
-       switch (zend_hash_get_current_key(fe_ht, &str_key, &int_key, 1)) {
+       switch (zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 1, NULL)) {
                case HASH_KEY_IS_STRING:
                        key->value.str.val = str_key;
-                       key->value.str.len = strlen(str_key);
+                       key->value.str.len = str_key_len-1;
                        key->type = IS_STRING;
                        break;
                case HASH_KEY_IS_LONG: