You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/04/05 03:19:25 UTC
[jira] [Commented] (TS-4312) Adding config to parse urls according
to RFC
[ https://issues.apache.org/jira/browse/TS-4312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15225467#comment-15225467 ]
ASF GitHub Bot commented on TS-4312:
------------------------------------
Github user shenzhang920 commented on a diff in the pull request:
https://github.com/apache/trafficserver/pull/541#discussion_r58474731
--- 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));
--- End diff --
Hardcoding would look like as below, it is error prone. Should I change it?
static const char non_encoded_char[256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // ! # $ % & ' ( ) * + , - . /
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, // 0-9 : ; = ?
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // @ A-O
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, // P-Z [ ] _
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // a-o
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0 // p-z ~
// values of indices from 128 to 255 are all 0
};
> 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
> Fix For: 6.2.0
>
>
> 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)