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
diff --git a/server/gen_test_char.c b/server/gen_test_char.c
index d5b8d3f..c0d0903 100644
--- a/server/gen_test_char.c
+++ b/server/gen_test_char.c
@@ -115,8 +115,13 @@
             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;
         }