summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2003-07-24 13:06:25 +0000
committerZeev Suraski <zeev@php.net>2003-07-24 13:06:25 +0000
commit2109ab34387293723a258b61e234c2f4b0b1fbe2 (patch)
treea7183d303e98d62d19b4d6890d8b82fc15378b39 /Zend/zend_builtin_functions.c
parent06105157038764a36df96d4a7e5574c403a92d88 (diff)
downloadphp-git-2109ab34387293723a258b61e234c2f4b0b1fbe2.tar.gz
Fix each() binary safety for keys
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 084471856d..6fc3017c3a 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -352,6 +352,7 @@ ZEND_FUNCTION(each)
{
zval **array, *entry, **entry_ptr, *tmp;
char *string_key;
+ uint string_key_len;
ulong num_key;
zval **inserted_pointer;
HashTable *target_hash;
@@ -386,9 +387,9 @@ ZEND_FUNCTION(each)
entry->refcount++;
/* add the key elements */
- switch (zend_hash_get_current_key(target_hash, &string_key, &num_key, 1)) {
+ switch (zend_hash_get_current_key_ex(target_hash, &string_key, &string_key_len, &num_key, 1, NULL)) {
case HASH_KEY_IS_STRING:
- add_get_index_string(return_value, 0, string_key, (void **) &inserted_pointer, 0);
+ add_get_index_stringl(return_value, 0, string_key, string_key_len-1, (void **) &inserted_pointer, 0);
break;
case HASH_KEY_IS_LONG:
add_get_index_long(return_value, 0, num_key, (void **) &inserted_pointer);