]> granicus.if.org Git - php/commitdiff
Fixed wrong ext/filter behavior. It didn't register FastCGI environment variables...
authorDmitry Stogov <dmitry@php.net>
Wed, 15 Nov 2006 11:13:02 +0000 (11:13 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 15 Nov 2006 11:13:02 +0000 (11:13 +0000)
sapi/cgi/cgi_main.c

index 2341be38e2a1272f44b5289c6f41d1919eac8ec7..349df5b80e94c20356c3020b094eaee4e2ec84e2 100644 (file)
@@ -498,6 +498,7 @@ void cgi_php_import_environment_variables(zval *array_ptr TSRMLS_DC)
                char *var, **val;
                uint var_len;
                ulong idx;
+               int filter_arg = (array_ptr == PG(http_globals)[TRACK_VARS_ENV])?PARSE_ENV:PARSE_SERVER;
 
                /* turn off magic_quotes while importing environment variables */
                PG(magic_quotes_gpc) = 0;
@@ -505,8 +506,8 @@ void cgi_php_import_environment_variables(zval *array_ptr TSRMLS_DC)
                     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, val, strlen(*val), &new_val_len TSRMLS_CC)) {
+                       unsigned int new_val_len;
+                       if (sapi_module.input_filter(filter_arg, var, val, strlen(*val), &new_val_len TSRMLS_CC)) {
                                php_register_variable_safe(var, *val, new_val_len, array_ptr TSRMLS_CC);
                        }
                }
@@ -517,7 +518,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