rasmus          Thu Feb 20 17:21:49 2003 EDT

  Modified files:              
    /php4       README.input_filter 
    /php4/ext/mbstring  mb_gpc.c 
    /php4/main  SAPI.c SAPI.h php_variables.c rfc1867.c 
  Log:
  An input filter might not simply strip stuff, it might also turn things
  into entities or use some other mechanism which causes the filtered data
  to be longer than the original data.  Ergo, pass in the address of the
  buffer instead so the filter is free to reallocate it.
  
  
Index: php4/README.input_filter
diff -u php4/README.input_filter:1.1 php4/README.input_filter:1.2
--- php4/README.input_filter:1.1        Wed Feb 19 14:41:06 2003
+++ php4/README.input_filter    Thu Feb 20 17:21:46 2003
@@ -85,18 +85,18 @@
 {
     php_info_print_table_start();
     php_info_print_table_row( 2, "My Input Filter Support", "enabled" );
-    php_info_print_table_row( 2, "Revision", "$Revision: 1.1 $");
+    php_info_print_table_row( 2, "Revision", "$Revision: 1.2 $");
     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)
 {
     zval new_var;
     zval *array_ptr = NULL;
     char *raw_var;
     int var_len;
 
-    assert(val != NULL);
+    assert(*val != NULL);
 
     switch(arg) {
         case PARSE_GET:
@@ -125,7 +125,7 @@
             break;
     }
     Z_STRLEN(new_var) = val_len;
-    Z_STRVAL(new_var) = estrndup(val, val_len);
+    Z_STRVAL(new_var) = estrndup(*val, val_len);
     Z_TYPE(new_var) = IS_STRING;
 
     var_len = strlen(var);
@@ -135,9 +135,9 @@
 
     php_register_variable_ex(raw_var, &new_var, array_ptr TSRMLS_DC);
 
-    php_strip_tags(val, val_len, NULL, NULL, 0);
+    php_strip_tags(*val, val_len, NULL, NULL, 0);
 
-    return strlen(val);
+    return strlen(*val);
 }
 
 PHP_FUNCTION(my_get_raw)
Index: php4/ext/mbstring/mb_gpc.c
diff -u php4/ext/mbstring/mb_gpc.c:1.5 php4/ext/mbstring/mb_gpc.c:1.6
--- php4/ext/mbstring/mb_gpc.c:1.5      Wed Feb 19 15:56:47 2003
+++ php4/ext/mbstring/mb_gpc.c  Thu Feb 20 17:21:48 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: mb_gpc.c,v 1.5 2003/02/19 20:56:47 rasmus Exp $ */
+/* $Id: mb_gpc.c,v 1.6 2003/02/20 22:21:48 rasmus Exp $ */
 
 /* {{{ includes */
 #ifdef HAVE_CONFIG_H
@@ -342,7 +342,7 @@
                        val_len = len_list[n];
                }
                n++;
-               val_len = sapi_module.input_filter(data_type, var, val, val_len 
TSRMLS_CC);
+               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 (convd != NULL){
Index: php4/main/SAPI.c
diff -u php4/main/SAPI.c:1.172 php4/main/SAPI.c:1.173
--- php4/main/SAPI.c:1.172      Wed Feb 19 14:41:07 2003
+++ php4/main/SAPI.c    Thu Feb 20 17:21:48 2003
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: SAPI.c,v 1.172 2003/02/19 19:41:07 rasmus Exp $ */
+/* $Id: SAPI.c,v 1.173 2003/02/20 22:21:48 rasmus Exp $ */
 
 #include <ctype.h>
 #include <sys/stat.h>
@@ -823,7 +823,7 @@
        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 TSRMLS_DC))
 {
        sapi_module.input_filter = input_filter;
        return SUCCESS;
Index: php4/main/SAPI.h
diff -u php4/main/SAPI.h:1.99 php4/main/SAPI.h:1.100
--- php4/main/SAPI.h:1.99       Wed Feb 19 14:41:07 2003
+++ php4/main/SAPI.h    Thu Feb 20 17:21:48 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: SAPI.h,v 1.99 2003/02/19 19:41:07 rasmus Exp $ */
+/* $Id: SAPI.h,v 1.100 2003/02/20 22:21:48 rasmus Exp $ */
 
 #ifndef SAPI_H
 #define SAPI_H
@@ -178,7 +178,7 @@
 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 TSRMLS_DC));
 
 SAPI_API int sapi_flush(TSRMLS_D);
 SAPI_API struct stat *sapi_get_stat(TSRMLS_D);
@@ -240,7 +240,7 @@
        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 TSRMLS_DC);
 };
 
 
@@ -269,7 +269,7 @@
 #define SAPI_POST_HANDLER_FUNC(post_handler) void post_handler(char 
*content_type_dup, void *arg TSRMLS_DC)
 
 #define SAPI_TREAT_DATA_FUNC(treat_data) void treat_data(int arg, char *str, zval* 
destArray TSRMLS_DC)
-#define SAPI_INPUT_FILTER_FUNC(input_filter) unsigned int input_filter(int arg, char 
*var, char *val, unsigned int val_len TSRMLS_DC)
+#define SAPI_INPUT_FILTER_FUNC(input_filter) unsigned int input_filter(int arg, char 
+*var, char **val, unsigned int val_len TSRMLS_DC)
 
 SAPI_API SAPI_POST_READER_FUNC(sapi_read_standard_form_data);
 SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader);
Index: php4/main/php_variables.c
diff -u php4/main/php_variables.c:1.50 php4/main/php_variables.c:1.51
--- php4/main/php_variables.c:1.50      Wed Feb 19 14:41:08 2003
+++ php4/main/php_variables.c   Thu Feb 20 17:21:48 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_variables.c,v 1.50 2003/02/19 19:41:08 rasmus Exp $ */
+/* $Id: php_variables.c,v 1.51 2003/02/20 22:21:48 rasmus Exp $ */
 
 #include <stdio.h>
 #include "php.h"
@@ -226,7 +226,7 @@
                        *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);
+                       val_len = sapi_module.input_filter(PARSE_POST, var, &val, 
+val_len TSRMLS_CC);
                        php_register_variable_safe(var, val, val_len, array_ptr 
TSRMLS_CC);
                }
                var = php_strtok_r(NULL, "&", &strtok_buf);
@@ -321,7 +321,7 @@
                        *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);
+                       val_len = sapi_module.input_filter(arg, var, &val, val_len 
+TSRMLS_CC);
                        php_register_variable_safe(var, val, val_len, array_ptr 
TSRMLS_CC);
                } else {
                        php_url_decode(var, strlen(var));
Index: php4/main/rfc1867.c
diff -u php4/main/rfc1867.c:1.133 php4/main/rfc1867.c:1.134
--- php4/main/rfc1867.c:1.133   Wed Feb 19 14:41:09 2003
+++ php4/main/rfc1867.c Thu Feb 20 17:21:49 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: rfc1867.c,v 1.133 2003/02/19 19:41:09 rasmus Exp $ */
+/* $Id: rfc1867.c,v 1.134 2003/02/20 22:21:49 rasmus Exp $ */
 
 /*
  *  This product includes software developed by the Apache Group
@@ -805,7 +805,7 @@
                                        value = estrdup("");
                                }
 
-                               sapi_module.input_filter(PARSE_POST, param, value, 
strlen(value) TSRMLS_CC);
+                               sapi_module.input_filter(PARSE_POST, param, &value, 
+strlen(value) TSRMLS_CC);
                                safe_php_register_variable(param, value, array_ptr, 0 
TSRMLS_CC);
                                if (!strcmp(param, "MAX_FILE_SIZE")) {
                                        max_file_size = atol(value);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to