From 261a4baa00a749f77b0e120c29ce27a1b3695868 Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Fri, 29 Jul 2016 15:35:56 +0000 Subject: [PATCH] Correct T_HTTP_TOKEN_STOP per RFC2068 (2.2) - RFC7230 (3.2.6), which has always defined 'token' as CHAR or VCHAR - visible USASCII only. NUL char is also a stop, end of parsing. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1754538 13f79535-47bb-0310-9956-ffa450edef68 --- server/gen_test_char.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/gen_test_char.c b/server/gen_test_char.c index d5b8d3f345..c0d0903d69 100644 --- a/server/gen_test_char.c +++ b/server/gen_test_char.c @@ -115,8 +115,13 @@ int main(int argc, char *argv[]) flags |= T_ESCAPE_URLENCODED; } - /* these are the "tspecials" (RFC2068) or "separators" (RFC2616) */ - if (c && (apr_iscntrl(c) || strchr(" \t()<>@,;:\\\"/[]?={}", c))) { + /* Stop for any non-'token' character, including ctrls, obs-text, + * and "tspecials" (RFC2068) a.k.a. "separators" (RFC2616) + * XXX: With luck, isascii behaves sensibly on EBCDIC platforms + * and insists on chars that correspond to ASCII equivilants + */ + if (apr_iscntrl(c) || strchr(" \t()<>@,;:\\\"/[]?={}", c)) + || !apr_isascii(c)) { flags |= T_HTTP_TOKEN_STOP; } -- 2.40.0