]> granicus.if.org Git - php/commitdiff
- Fix sapi_input_filter patch. Returning 1 from the filter handler should
authorDerick Rethans <derick@php.net>
Sat, 29 Nov 2003 15:24:35 +0000 (15:24 +0000)
committerDerick Rethans <derick@php.net>
Sat, 29 Nov 2003 15:24:35 +0000 (15:24 +0000)
  make PHP register the variable, returning 0 shouldn't. The new length of
  the variables being filtered is now returned in the new_val_len argument
  of the function.

README.input_filter
ext/mbstring/mb_gpc.c
main/SAPI.c
main/SAPI.h
main/php_variables.c
main/rfc1867.c

index 60a88ed9c23503843b5f4871321c6788e43e967b..8064655b529c1a710cfe2496a62279f357b38879 100644 (file)
@@ -89,7 +89,7 @@ PHP_MINFO_FUNCTION(my_input_filter)
     php_info_print_table_end();
 }
 
-unsigned int  my_sapi_input_filter(int arg, char *var, char **val, unsigned int val_len)
+unsigned int  my_sapi_input_filter(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len)
 {
     zval new_var;
     zval *array_ptr = NULL;
@@ -137,7 +137,8 @@ unsigned int  my_sapi_input_filter(int arg, char *var, char **val, unsigned int
 
     php_strip_tags(*val, val_len, NULL, NULL, 0);
 
-    return strlen(*val);
+    *new_val_len = strlen(*val);
+       return 1;
 }
 
 PHP_FUNCTION(my_get_raw)
index 4aa122022d8c72cac6fa706d5f97e66f218a695c..80c11841908c86e3e52e5748a83819f82ea87aea 100644 (file)
@@ -204,7 +204,8 @@ int _php_mb_encoding_handler_ex(int data_type, zval *arg, char *res, char *separ
        char *var, *val, *s1, *s2;
        char *strtok_buf = NULL, **val_list = NULL;
        zval *array_ptr = (zval *) arg;
-       int n, num, val_len, *len_list = NULL, *elist, elistsz;
+       int n, num, *len_list = NULL, *elist, elistsz;
+       unsigned int val_len, new_val_len;
        enum mbfl_no_encoding from_encoding, to_encoding;
        mbfl_string string, resvar, resval;
        mbfl_encoding_detector *identd = NULL; 
@@ -342,9 +343,10 @@ int _php_mb_encoding_handler_ex(int data_type, zval *arg, char *res, char *separ
                        val_len = len_list[n];
                }
                n++;
-               val_len = sapi_module.input_filter(data_type, var, &val, val_len TSRMLS_CC);
-               /* add variable to symbol table */
-               php_register_variable_safe(var, val, val_len, array_ptr TSRMLS_CC);
+               if (sapi_module.input_filter(data_type, var, &val, val_len, &new_val_len TSRMLS_CC)) {
+                       /* add variable to symbol table */
+                       php_register_variable_safe(var, val, new_val_len, array_ptr TSRMLS_CC);
+               }
                if (convd != NULL){
                        mbfl_string_clear(&resvar);
                        mbfl_string_clear(&resval);
index 630b5a2b31a632119a7b32721cc9cb90767f7e26..a292c50a574db926cb9996292f7d94aba8974ba4 100644 (file)
@@ -831,7 +831,7 @@ 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 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_module.input_filter = input_filter;
        return SUCCESS;
index 9e34324dc675354dfa8c4b5d34ae7e364bb5decf..8fa1ef8c517f464154c7fd4cecfce39b02a60343 100644 (file)
@@ -181,7 +181,7 @@ SAPI_API int sapi_register_post_entry(sapi_post_entry *post_entry);
 SAPI_API void sapi_unregister_post_entry(sapi_post_entry *post_entry);
 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 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_flush(TSRMLS_D);
 SAPI_API struct stat *sapi_get_stat(TSRMLS_D);
@@ -244,7 +244,7 @@ struct _sapi_module_struct {
        int (*get_target_uid)(uid_t * TSRMLS_DC);
        int (*get_target_gid)(gid_t * TSRMLS_DC);
 
-       unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len TSRMLS_DC);
+       unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC);
        
        void (*ini_defaults)(HashTable *configuration_hash);
        int phpinfo_as_text;
index ae59eced6ca4df50a0201d388757426bf870acc8..2769de18755332d324befa1feb0e0c241a8dff7e 100644 (file)
@@ -207,14 +207,13 @@ SAPI_API SAPI_POST_HANDLER_FUNC(php_std_post_handler)
        while (var) {
                val = strchr(var, '=');
                if (val) { /* have a value */
-                       int val_len;
+                       unsigned int val_len, new_val_len;
 
                        *val++ = '\0';
                        php_url_decode(var, strlen(var));
                        val_len = php_url_decode(val, strlen(val));
-                       val_len = sapi_module.input_filter(PARSE_POST, var, &val, val_len TSRMLS_CC);
-                       if (val_len) {
-                               php_register_variable_safe(var, val, val_len, array_ptr TSRMLS_CC);
+                       if (sapi_module.input_filter(PARSE_POST, var, &val, val_len, &new_val_len TSRMLS_CC)) {
+                               php_register_variable_safe(var, val, new_val_len, array_ptr TSRMLS_CC);
                        }
                }
                var = php_strtok_r(NULL, "&", &strtok_buf);
@@ -305,13 +304,13 @@ SAPI_API SAPI_TREAT_DATA_FUNC(php_default_treat_data)
                val = strchr(var, '=');
                if (val) { /* have a value */
                        int val_len;
+                       unsigned int new_val_len;
 
                        *val++ = '\0';
                        php_url_decode(var, strlen(var));
                        val_len = php_url_decode(val, strlen(val));
-                       val_len = sapi_module.input_filter(arg, var, &val, val_len TSRMLS_CC);
-                       if (val_len) {
-                               php_register_variable_safe(var, val, val_len, array_ptr TSRMLS_CC);
+                       if (sapi_module.input_filter(PARSE_POST, var, &val, val_len, &new_val_len TSRMLS_CC)) {
+                               php_register_variable_safe(var, val, new_val_len, array_ptr TSRMLS_CC);
                        }
                } else {
                        php_url_decode(var, strlen(var));
index fc83952764041d8678115a904ce629ee02d97127..1cfb8864c500eea310108cfcef0fbefccb5edec2 100644 (file)
@@ -881,14 +881,13 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler)
                        if (!filename && param) {
 
                                char *value = multipart_buffer_read_body(mbuff TSRMLS_CC);
-                               int   val_len;
+                               unsigned int new_val_len;
 
                                if (!value) {
                                        value = estrdup("");
                                }
 
-                               val_len = sapi_module.input_filter(PARSE_POST, param, &value, strlen(value) TSRMLS_CC);
-                               if (val_len) {
+                               if (sapi_module.input_filter(PARSE_POST, param, &value, strlen(value), &new_val_len TSRMLS_CC)) {
 #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)
                                        if (php_mb_encoding_translation(TSRMLS_C)) {
                                                php_mb_gpc_stack_variable(param, value, &val_list, &len_list,