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