summaryrefslogtreecommitdiff
path: root/main/php_variables.c
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2009-04-10 14:09:48 +0200
committerSean Finney <seanius@debian.org>2009-04-10 14:09:48 +0200
commitcd0b49c72aee33b3e44a9c589fcd93b9e1c7a64f (patch)
tree1315c623bb7d9dfa8d366fa9cd2c6834ceeb5da5 /main/php_variables.c
parent9ea47aab740772adf0c69d8c94b208a464e599ea (diff)
downloadphp-cd0b49c72aee33b3e44a9c589fcd93b9e1c7a64f.tar.gz
Imported Upstream version 5.2.9.dfsg.1upstream/5.2.9.dfsg.1
Diffstat (limited to 'main/php_variables.c')
-rw-r--r--main/php_variables.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/main/php_variables.c b/main/php_variables.c
index 1064951d9..2f3098c8b 100644
--- a/main/php_variables.c
+++ b/main/php_variables.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2008 The PHP Group |
+ | Copyright (c) 1997-2009 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_variables.c,v 1.104.2.10.2.12 2007/12/31 07:20:15 sebastian Exp $ */
+/* $Id: php_variables.c,v 1.104.2.10.2.15 2008/12/31 11:17:47 sebastian Exp $ */
#include <stdio.h>
#include "php.h"
@@ -57,17 +57,18 @@ PHPAPI void php_register_variable_safe(char *var, char *strval, int str_len, zva
php_register_variable_ex(var, &new_entry, track_vars_array TSRMLS_CC);
}
-PHPAPI void php_register_variable_ex(char *var, zval *val, zval *track_vars_array TSRMLS_DC)
+PHPAPI void php_register_variable_ex(char *var_name, zval *val, zval *track_vars_array TSRMLS_DC)
{
char *p = NULL;
char *ip; /* index pointer */
char *index, *escaped_index = NULL;
+ char *var, *var_orig;
int var_len, index_len;
zval *gpc_element, **gpc_element_p;
zend_bool is_array = 0;
HashTable *symtable1 = NULL;
- assert(var != NULL);
+ assert(var_name != NULL);
if (track_vars_array) {
symtable1 = Z_ARRVAL_P(track_vars_array);
@@ -84,6 +85,8 @@ PHPAPI void php_register_variable_ex(char *var, zval *val, zval *track_vars_arra
* Prepare variable name
*/
+ var_orig = estrdup(var_name);
+ var = var_orig;
/* ignore leading spaces in the variable name */
while (*var && *var==' ') {
var++;
@@ -104,6 +107,7 @@ PHPAPI void php_register_variable_ex(char *var, zval *val, zval *track_vars_arra
if (var_len==0) { /* empty variable name, or variable name with a space in it */
zval_dtor(val);
+ efree(var_orig);
return;
}
@@ -112,6 +116,7 @@ PHPAPI void php_register_variable_ex(char *var, zval *val, zval *track_vars_arra
var_len == sizeof("GLOBALS")-1 &&
!memcmp(var, "GLOBALS", sizeof("GLOBALS")-1)) {
zval_dtor(val);
+ efree(var_orig);
return;
}
@@ -142,6 +147,7 @@ PHPAPI void php_register_variable_ex(char *var, zval *val, zval *track_vars_arra
if (!PG(display_errors)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Input variable nesting level exceeded %ld. To increase the limit change max_input_nesting_level in php.ini.", PG(max_input_nesting_level));
}
+ efree(var_orig);
return;
}
@@ -233,6 +239,7 @@ plain_var:
}
}
}
+ efree(var_orig);
}
SAPI_API SAPI_POST_HANDLER_FUNC(php_std_post_handler)