[ https://issues.apache.org/jira/browse/TS-4312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15215309#comment-15215309 ]
ASF GitHub Bot commented on TS-4312: ------------------------------------ Github user jpeach commented on a diff in the pull request: https://github.com/apache/trafficserver/pull/541#discussion_r57665721 --- Diff: proxy/hdrs/URL.cc --- @@ -1158,9 +1158,51 @@ url_parse_scheme(HdrHeap *heap, URLImpl *url, const char **start, const char *en return PARSE_ERROR; // no non-whitespace found } +static bool +url_init_non_encoded_char_array(char *non_encoded_char, size_t size) +{ + const char *allowed_char = ":/?#[]@" // gen-delims + "!$&'()*+,;=" // sub-delims + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" // ALPHA + "abcdefghijklmnopqrstuvwxyz" + "0123456789" // DIGIT + "-._~" // other unreserved + "%"; // '%' should also not be encoded + + memset(non_encoded_char, 0, size); + for (size_t i = 0; i < strlen(allowed_char); ++i) { + ink_assert((unsigned char)allowed_char[i] < size); + non_encoded_char[(unsigned char)allowed_char[i]] = 1; + } + + return true; +} + +static char non_encoded_char[256]; +static bool url_init_non_encoded_char_array_done = url_init_non_encoded_char_array(non_encoded_char, sizeof(non_encoded_char)); + +/** + * This method will return TRUE if the uri is strictly compliant with + * RFC 3986 and it will return FALSE if not. + */ +static bool +url_is_strictly_compliant(const char *start, const char *end) +{ + for (const char *i = start; i < end; ++i) { + if (!non_encoded_char[(unsigned char)*i]) { + Debug("http", "Non-RFC compliant character [0x%.2X] found in URL\n", (unsigned char)*i); --- End diff -- ``Debug`` doesn't need a ``\n``. > Adding config to parse urls according to RFC > -------------------------------------------- > > Key: TS-4312 > URL: https://issues.apache.org/jira/browse/TS-4312 > Project: Traffic Server > Issue Type: Bug > Reporter: Shen Zhang > Assignee: Brian Geffon > > Adding a config option "proxy.config.http.strict_uri_parsing" to sends http > status code 400 back to client if the URL includes non-RFC 3986 compliant > character -- This message was sent by Atlassian JIRA (v6.3.4#6332)