Sorry but your list does not like hushmail attachments

Sammy Nolz




--- rfc1867.c.unpatched 2002-01-01 02:02:11.000000000 +0100
+++ rfc1867.c   2002-01-01 02:04:55.000000000 +0100
@@ -230,6 +230,13 @@
        }
 }
 
+static void safe_php_register_binary_variable(char *var, char *strval,
 int strlen, zval *track_vars_array, zend_bool override_protection TSRMLS_DC)
+{
+       if (override_protection || !is_protected_variable(var TSRMLS_CC)) {
+               php_register_variable_safe(var, strval, strlen, track_vars_array 
TSRMLS_CC);
+       }
+}
+
 
 static void register_http_post_files_variable(char *strvar, char *val,
 zval *http_post_files, zend_bool override_protection TSRMLS_DC)
 {
@@ -761,7 +768,7 @@
 
 SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler)
 {
-       char *boundary, *s=NULL, *boundary_end = NULL, *start_arr=NULL, 
*array_index=NULL;
+       char *boundary, *s=NULL, *boundary_end = NULL, *start_arr=NULL, *end_arr=NULL,
 *array_index=NULL;
        char *temp_filename=NULL, *lbuf=NULL, *abuf=NULL;
        int boundary_len=0, total_bytes=0, cancel_upload=0, is_arr_upload=0,
 array_len=0;
        int max_file_size=0, skip_upload=0, anonindex=0, is_anonymous;
@@ -883,23 +890,24 @@
                        /* Normal form variable, safe to read all data into memory */
                        if (!filename && param) {
 
-                               char *value = multipart_buffer_read_body(mbuff 
TSRMLS_CC);
+                               int length = 0;
+                               char *value = multipart_buffer_read_body(mbuff, 
&length TSRMLS_CC);
                                unsigned int new_val_len; /* Dummy variable */
 
                                if (!value) {
                                        value = estrdup("");
                                }
 
-                               if (sapi_module.input_filter(PARSE_POST, param, 
&value, strlen(value),
 &new_val_len TSRMLS_CC)) {
+                               if (sapi_module.input_filter(PARSE_POST, param, 
&value, length,
&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,

                                                                                       
           &num_vars, &num_vars_max TSRMLS_CC);
                                        } else {
-                                               safe_php_register_variable(param, 
value, array_ptr, 0 TSRMLS_CC);
+                                               
safe_php_register_binary_variable(param, value, new_val_len, array_ptr,
 0 TSRMLS_CC);
                                        }
 #else
-                                       safe_php_register_variable(param, value, 
array_ptr, 0 TSRMLS_CC);
+                                       safe_php_register_binary_variable(param, 
value, new_val_len, array_ptr,
 0 TSRMLS_CC);
 #endif
                                }
                                if (!strcasecmp(param, "MAX_FILE_SIZE")) {
@@ -1000,9 +1008,14 @@
 
                        /* is_arr_upload is true when name of file upload field
                         * ends in [.*]
-                        * start_arr is set to point to 1st [
+                        * start_arr is set to point to 1st [ and
+                        * end_arr is set to point to last ]
                         */
-                       is_arr_upload = (start_arr = strchr(param,'[')) && 
(param[strlen(param)-
1] == ']');
+                       is_arr_upload = (end_arr = strrchr(param, ']')) && (start_arr 
= strchr(param,
'[')) && (end_arr > start_arr);
+                       /* cut away garbage after ] */
+                       if (is_arr_upload && end_arr) {
+                               end_arr[1] = '\0';
+                       }
                        /* handle unterminated [ */
                        if (!is_arr_upload && start_arr) {
                                *start_arr = '_';
@@ -1014,6 +1027,8 @@
                                        efree(array_index);
                                }
                                array_index = estrndup(start_arr+1, array_len-2);   
+                               start_arr = NULL;
+                               end_arr = NULL;
                        }
                        
                        /* Add $foo_name */




Concerned about your privacy? Follow this link to get
FREE encrypted email: https://www.hushmail.com/?l=2

Free, ultra-private instant messaging with Hush Messenger
https://www.hushmail.com/services.php?subloc=messenger&l=434

Promote security and make money with the Hushmail Affiliate Program: 
https://www.hushmail.com/about.php?subloc=affiliate&l=427

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to