From 94b7a0076028fa4386b1a1c2212c382b66ff8aca Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 28 Apr 2009 21:30:23 +0000 Subject: [PATCH] fix for #47930 --- ext/filter/filter.c | 14 +++++++++++++- main/SAPI.c | 9 ++++++++- main/SAPI.h | 3 ++- main/php_content_types.c | 2 +- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/ext/filter/filter.c b/ext/filter/filter.c index 62b9dbcb25..bbe457de85 100644 --- a/ext/filter/filter.c +++ b/ext/filter/filter.c @@ -76,6 +76,7 @@ static const filter_list_entry filter_list[] = { #endif static unsigned int php_sapi_filter(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC); +static unsigned int php_sapi_filter_init(TSRMLS_D); /* {{{ arginfo */ ZEND_BEGIN_ARG_INFO_EX(arginfo_filter_input, 0, 0, 2) @@ -270,7 +271,7 @@ PHP_MINIT_FUNCTION(filter) REGISTER_LONG_CONSTANT("FILTER_FLAG_NO_RES_RANGE", FILTER_FLAG_NO_RES_RANGE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FILTER_FLAG_NO_PRIV_RANGE", FILTER_FLAG_NO_PRIV_RANGE, CONST_CS | CONST_PERSISTENT); - sapi_register_input_filter(php_sapi_filter); + sapi_register_input_filter(php_sapi_filter, php_sapi_filter_init); return SUCCESS; } @@ -339,6 +340,17 @@ static filter_list_entry php_find_filter(long id) /* {{{ */ } /* }}} */ +static unsigned int php_sapi_filter_init(TSRMLS_D) +{ + IF_G(get_array) = NULL; + IF_G(post_array) = NULL; + IF_G(cookie_array) = NULL; + IF_G(server_array) = NULL; + IF_G(env_array) = NULL; + IF_G(session_array) = NULL; + return SUCCESS; +} + static void php_zval_filter(zval **value, long filter, long flags, zval *options, char* charset, zend_bool copy TSRMLS_DC) /* {{{ */ { filter_list_entry filter_func; diff --git a/main/SAPI.c b/main/SAPI.c index bc3759829c..4174d206ea 100644 --- a/main/SAPI.c +++ b/main/SAPI.c @@ -326,6 +326,9 @@ SAPI_API void sapi_activate_headers_only(TSRMLS_D) sapi_module.activate(TSRMLS_C); } } + if (sapi_module.input_filter_init ) { + sapi_module.input_filter_init(TSRMLS_C); + } } /* @@ -392,6 +395,9 @@ SAPI_API void sapi_activate(TSRMLS_D) sapi_module.activate(TSRMLS_C); } } + if (sapi_module.input_filter_init ) { + sapi_module.input_filter_init(TSRMLS_C); + } } @@ -925,13 +931,14 @@ SAPI_API int sapi_register_treat_data(void (*treat_data)(int arg, char *str, zva return SUCCESS; } -SAPI_API int sapi_register_input_filter(unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC)) +SAPI_API int sapi_register_input_filter(unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC), unsigned int (*input_filter_init)(TSRMLS_D)) { TSRMLS_FETCH(); if (SG(sapi_started) && EG(in_execution)) { return FAILURE; } sapi_module.input_filter = input_filter; + sapi_module.input_filter_init = input_filter_init; return SUCCESS; } diff --git a/main/SAPI.h b/main/SAPI.h index ad5fe7e2b4..329b4ed6b1 100644 --- a/main/SAPI.h +++ b/main/SAPI.h @@ -192,7 +192,7 @@ SAPI_API int sapi_register_post_entry(sapi_post_entry *post_entry TSRMLS_DC); SAPI_API void sapi_unregister_post_entry(sapi_post_entry *post_entry TSRMLS_DC); SAPI_API int sapi_register_default_post_reader(void (*default_post_reader)(TSRMLS_D)); SAPI_API int sapi_register_treat_data(void (*treat_data)(int arg, char *str, zval *destArray TSRMLS_DC)); -SAPI_API int sapi_register_input_filter(unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC)); +SAPI_API int sapi_register_input_filter(unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC), unsigned int (*input_filter_init)(TSRMLS_D)); SAPI_API int sapi_flush(TSRMLS_D); SAPI_API struct stat *sapi_get_stat(TSRMLS_D); @@ -266,6 +266,7 @@ struct _sapi_module_struct { char *ini_entries; const zend_function_entry *additional_functions; + unsigned int (*input_filter_init)(TSRMLS_D); }; diff --git a/main/php_content_types.c b/main/php_content_types.c index 28656befce..7c077e1272 100644 --- a/main/php_content_types.c +++ b/main/php_content_types.c @@ -75,7 +75,7 @@ int php_startup_sapi_content_types(TSRMLS_D) { sapi_register_default_post_reader(php_default_post_reader); sapi_register_treat_data(php_default_treat_data); - sapi_register_input_filter(php_default_input_filter); + sapi_register_input_filter(php_default_input_filter, NULL); return SUCCESS; } /* }}} */ -- 2.40.0