From: Dmitry Stogov Date: Wed, 15 Nov 2006 11:14:27 +0000 (+0000) Subject: Fixed wrong ext/filter behavior. It might not to register FastCGI environment variabl... X-Git-Tag: RELEASE_1_0_0RC1~1009 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ad2b3e69f03eca33ba3f525413685e6dcab4690f;p=php Fixed wrong ext/filter behavior. It might not to register FastCGI environment variables and make memory leaks. --- diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index 63df1832a6..906d955bd4 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -476,13 +476,14 @@ void cgi_php_import_environment_variables(zval *array_ptr TSRMLS_DC) uint var_len; char **val; ulong idx; + int filter_arg = (array_ptr == PG(http_globals)[TRACK_VARS_ENV])?PARSE_ENV:PARSE_SERVER; for (zend_hash_internal_pointer_reset_ex(&request->env, &pos); zend_hash_get_current_key_ex(&request->env, &var, &var_len, &idx, 0, &pos) == HASH_KEY_IS_STRING && zend_hash_get_current_data_ex(&request->env, (void **) &val, &pos) == SUCCESS; zend_hash_move_forward_ex(&request->env, &pos)) { - int new_val_len; - if (sapi_module.input_filter(PARSE_SERVER, var.s, val, strlen(*val), &new_val_len TSRMLS_CC)) { + unsigned int new_val_len; + if (sapi_module.input_filter(filter_arg, var.s, val, strlen(*val), &new_val_len TSRMLS_CC)) { php_register_variable_safe(var.s, *val, new_val_len, array_ptr TSRMLS_CC); } } @@ -491,7 +492,7 @@ void cgi_php_import_environment_variables(zval *array_ptr TSRMLS_DC) static void sapi_cgi_register_variables(zval *track_vars_array TSRMLS_DC) { - int new_val_len; + unsigned int new_val_len; char *val = SG(request_info).request_uri ? SG(request_info).request_uri : ""; /* In CGI mode, we consider the environment to be a part of the server * variables