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;
}