mirror of
https://github.com/php/php-src.git
synced 2025-01-11 05:24:49 +08:00
Fixed wrong ext/filter behavior. It might not to register FastCGI environment variables and make memory leaks.
This commit is contained in:
parent
af43feda28
commit
ad2b3e69f0
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user