diff options
Diffstat (limited to 'main/php_variables.c')
-rw-r--r-- | main/php_variables.c | 118 |
1 files changed, 45 insertions, 73 deletions
diff --git a/main/php_variables.c b/main/php_variables.c index 4900dbb859..1c860081b2 100644 --- a/main/php_variables.c +++ b/main/php_variables.c @@ -403,43 +403,28 @@ SAPI_API SAPI_POST_HANDLER_FUNC(php_std_post_handler) while (s < e && (p = memchr(s, '&', (e - s)))) { last_value: if ((val = memchr(s, '=', (p - s)))) { /* have a value */ - if (UG(unicode)) { - UChar *u_var, *u_val; - int u_var_len, u_val_len; - int var_len; - int val_len; - UErrorCode status1 = U_ZERO_ERROR, status2 = U_ZERO_ERROR; - - var = s; - var_len = val - s; - - php_url_decode(var, var_len); - val++; - val_len = php_url_decode(val, (p - val)); - zend_string_to_unicode_ex(input_conv, &u_var, &u_var_len, var, var_len, &status1); - zend_string_to_unicode_ex(input_conv, &u_val, &u_val_len, val, val_len, &status2); - if (U_SUCCESS(status1) && U_SUCCESS(status2)) { - /* UTODO add input filtering */ - php_u_register_variable_safe(u_var, u_val, u_val_len, array_ptr TSRMLS_CC); - } else { - /* UTODO set a user-accessible flag to indicate that conversion failed? */ - } - efree(u_var); - efree(u_val); + UChar *u_var, *u_val; + int u_var_len, u_val_len; + int var_len; + int val_len; + UErrorCode status1 = U_ZERO_ERROR, status2 = U_ZERO_ERROR; + + var = s; + var_len = val - s; + + php_url_decode(var, var_len); + val++; + val_len = php_url_decode(val, (p - val)); + zend_string_to_unicode_ex(input_conv, &u_var, &u_var_len, var, var_len, &status1); + zend_string_to_unicode_ex(input_conv, &u_val, &u_val_len, val, val_len, &status2); + if (U_SUCCESS(status1) && U_SUCCESS(status2)) { + /* UTODO add input filtering */ + php_u_register_variable_safe(u_var, u_val, u_val_len, array_ptr TSRMLS_CC); } else { - unsigned int val_len, new_val_len; - - var = s; - - php_url_decode(var, (val - s)); - val++; - val_len = php_url_decode(val, (p - val)); - val = estrndup(val, val_len); - 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); - } - efree(val); + /* UTODO set a user-accessible flag to indicate that conversion failed? */ } + efree(u_var); + efree(u_val); } s = p + 1; } @@ -565,51 +550,38 @@ SAPI_API SAPI_TREAT_DATA_FUNC(php_default_treat_data) var_len = strlen(var); php_url_decode(var, var_len); - if (UG(unicode)) { - UChar *u_var, *u_val; - int u_var_len, u_val_len; - UErrorCode status = U_ZERO_ERROR; + UChar *u_var, *u_val; + int u_var_len, u_val_len; + UErrorCode status = U_ZERO_ERROR; + + zend_string_to_unicode_ex(input_conv, &u_var, &u_var_len, var, var_len, &status); + if (U_FAILURE(status)) { + /* UTODO set a user-accessible flag to indicate that conversion failed? */ + efree(u_var); + goto next_var; + } - zend_string_to_unicode_ex(input_conv, &u_var, &u_var_len, var, var_len, &status); + if (val) { /* have a value */ + int val_len; + /* unsigned int new_val_len; see below */ + + val_len = php_url_decode(val, strlen(val)); + zend_string_to_unicode_ex(input_conv, &u_val, &u_val_len, val, val_len, &status); if (U_FAILURE(status)) { /* UTODO set a user-accessible flag to indicate that conversion failed? */ efree(u_var); + efree(u_val); goto next_var; } - - if (val) { /* have a value */ - int val_len; - /* unsigned int new_val_len; see below */ - - val_len = php_url_decode(val, strlen(val)); - zend_string_to_unicode_ex(input_conv, &u_val, &u_val_len, val, val_len, &status); - if (U_FAILURE(status)) { - /* UTODO set a user-accessible flag to indicate that conversion failed? */ - efree(u_var); - efree(u_val); - goto next_var; - } - php_u_register_variable_safe(u_var, u_val, u_val_len, array_ptr TSRMLS_CC); - /* UTODO need to make input_filter Unicode aware */ - /* - if (sapi_module.input_filter(arg, var, &val, val_len, &new_val_len TSRMLS_CC)) { - php_register_variable_safe(var, val, new_val_len, array_ptr TSRMLS_CC); - } - */ - efree(u_var); - efree(u_val); - } else { - u_val_len = 0; - u_val = USTR_MAKE(""); - php_u_register_variable_safe(u_var, u_val, u_val_len, array_ptr TSRMLS_CC); - /* - if (sapi_module.input_filter(arg, var, &val, val_len, &new_val_len TSRMLS_CC)) { - php_register_variable_safe(var, val, new_val_len, array_ptr TSRMLS_CC); - } - */ - efree(u_var); - efree(u_val); + php_u_register_variable_safe(u_var, u_val, u_val_len, array_ptr TSRMLS_CC); + /* UTODO need to make input_filter Unicode aware */ + /* + if (sapi_module.input_filter(arg, var, &val, val_len, &new_val_len TSRMLS_CC)) { + php_register_variable_safe(var, val, new_val_len, array_ptr TSRMLS_CC); } + */ + efree(u_var); + efree(u_val); } else { if (val) { /* have a value */ int val_len; |