You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by co...@apache.org on 2017/05/27 21:12:39 UTC
svn commit: r1796453 - in /httpd/httpd/branches/2.4.x: CHANGES server/util.c
Author: covener
Date: Sat May 27 21:12:39 2017
New Revision: 1796453
URL: http://svn.apache.org/viewvc?rev=1796453&view=rev
Log:
revert r1796447, this should be RTC.
Modified:
httpd/httpd/branches/2.4.x/CHANGES
httpd/httpd/branches/2.4.x/server/util.c
Modified: httpd/httpd/branches/2.4.x/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/CHANGES?rev=1796453&r1=1796452&r2=1796453&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.4.x/CHANGES [utf-8] Sat May 27 21:12:39 2017
@@ -5,9 +5,6 @@ Changes with Apache 2.4.26
*) core: EBCDIC fixes for interim responses with additional headers.
[Eric Covener]
- *) core: ap_parse_form_data() URL-decoding doesn't work on EBCDIC
- platforms. PR61124. [Hank Ibell <hwibell gmail.com>]
-
*) Evaluate nested If/ElseIf/Else configuration blocks.
[Luca Toscano, Jacob Champion]
Modified: httpd/httpd/branches/2.4.x/server/util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/server/util.c?rev=1796453&r1=1796452&r2=1796453&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/server/util.c (original)
+++ httpd/httpd/branches/2.4.x/server/util.c Sat May 27 21:12:39 2017
@@ -2666,7 +2666,8 @@ AP_DECLARE(int) ap_parse_form_data(reque
ap_form_pair_t *pair = NULL;
apr_array_header_t *pairs = apr_array_make(r->pool, 4, sizeof(ap_form_pair_t));
- char escaped_char[2];
+ char hi = 0;
+ char low = 0;
*ptr = pairs;
@@ -2733,13 +2734,30 @@ AP_DECLARE(int) ap_parse_form_data(reque
continue;
}
if (FORM_PERCENTA == percent) {
- escaped_char[0] = c;
+ if (c >= 'a') {
+ hi = c - 'a' + 10;
+ }
+ else if (c >= 'A') {
+ hi = c - 'A' + 10;
+ }
+ else if (c >= '0') {
+ hi = c - '0';
+ }
+ hi = hi << 4;
percent = FORM_PERCENTB;
continue;
}
if (FORM_PERCENTB == percent) {
- escaped_char[1] = c;
- c = x2c(escaped_char);
+ if (c >= 'a') {
+ low = c - 'a' + 10;
+ }
+ else if (c >= 'A') {
+ low = c - 'A' + 10;
+ }
+ else if (c >= '0') {
+ low = c - '0';
+ }
+ c = low | hi;
percent = FORM_NORMAL;
}
switch (state) {