summaryrefslogtreecommitdiff
path: root/main/php_variables.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-03-17 23:15:22 +0400
committerDmitry Stogov <dmitry@zend.com>2014-03-17 23:15:22 +0400
commitaa5f55306b4bd630e9304e9a8d1ea10cf4121f78 (patch)
treec62ba226140efbe77cb039552300249902476f1d /main/php_variables.c
parent1b6327fd3bfba7be7d821e85b648e890350e7809 (diff)
downloadphp-git-aa5f55306b4bd630e9304e9a8d1ea10cf4121f78.tar.gz
Refactored EG(active_symbol_table) to be zend_array* instead of HashTable*
Diffstat (limited to 'main/php_variables.c')
-rw-r--r--main/php_variables.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/main/php_variables.c b/main/php_variables.c
index 671d8e59ff..47b2c522bd 100644
--- a/main/php_variables.c
+++ b/main/php_variables.c
@@ -67,7 +67,7 @@ PHPAPI void php_register_variable_ex(char *var_name, zval *val, zval *track_vars
assert(var_name != NULL);
- if (track_vars_array) {
+ if (track_vars_array && Z_TYPE_P(track_vars_array) == IS_ARRAY) {
symtable1 = Z_ARRVAL_P(track_vars_array);
}
@@ -110,7 +110,8 @@ PHPAPI void php_register_variable_ex(char *var_name, zval *val, zval *track_vars
}
/* GLOBALS hijack attempt, reject parameter */
- if (symtable1 == EG(active_symbol_table) &&
+ if (symtable1 && EG(active_symbol_table) &&
+ symtable1 == &EG(active_symbol_table)->ht &&
var_len == sizeof("GLOBALS")-1 &&
!memcmp(var, "GLOBALS", sizeof("GLOBALS")-1)) {
zval_dtor(val);
@@ -353,6 +354,7 @@ SAPI_API SAPI_TREAT_DATA_FUNC(php_default_treat_data)
char *strtok_buf = NULL;
long count = 0;
+ ZVAL_UNDEF(&array);
switch (arg) {
case PARSE_POST:
case PARSE_GET: