summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/main.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/main/main.c b/main/main.c
index ac4e172ab0..8d141cbbb8 100644
--- a/main/main.c
+++ b/main/main.c
@@ -1500,12 +1500,14 @@ static int php_hash_environment(TSRMLS_D)
zval **data;
char *string_key;
uint string_key_len;
+ ulong num_key;
zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(form_variables), &pos);
while (zend_hash_get_current_data_ex(Z_ARRVAL_P(form_variables), (void **)&data, &pos) == SUCCESS) {
- zend_hash_get_current_key_ex(Z_ARRVAL_P(form_variables), &string_key, &string_key_len, NULL, 0, &pos);
-
- ZEND_SET_SYMBOL_WITH_LENGTH(&EG(symbol_table), string_key, string_key_len, *data, (*data)->refcount+1, 0);
+ /* we only register string keys, since we cannot have $1234 */
+ if (zend_hash_get_current_key_ex(Z_ARRVAL_P(form_variables), &string_key, &string_key_len, &num_key, 0, &pos) == HASH_KEY_IS_STRING) {
+ ZEND_SET_SYMBOL_WITH_LENGTH(&EG(symbol_table), string_key, string_key_len, *data, (*data)->refcount+1, 0);
+ }
zend_hash_move_forward_ex(Z_ARRVAL_P(form_variables), &pos);
}
}