Code

src/utils_cgi.c: Import a list of reserved characters from RFC 3986.
authorFlorian Forster <ff@octo.it>
Wed, 28 Jul 2010 16:17:09 +0000 (18:17 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Wed, 28 Jul 2010 16:17:09 +0000 (18:17 +0200)
src/utils_cgi.c

index 785191422c9e449a2d85995581a53675dbf3f26a..475e14e4361427c394b946cce756dc13c35dd8ce 100644 (file)
@@ -433,10 +433,16 @@ char *uri_escape_copy (char *dest, const char *src, size_t n) /* {{{ */
     }
     else if ((((unsigned char) src[in]) < 32)
         || (src[in] == ' ')
-        || (src[in] == '&')
-        || (src[in] == ';')
-        || (src[in] == '?')
-        || (src[in] == '/')
+        /* RFC 3986, gen-delims */
+        || (src[in] == ':') || (src[in] == '/') || (src[in] == '?')
+        || (src[in] == '#') || (src[in] == '[') || (src[in] == ']')
+        || (src[in] == '@')
+        /* RFC 3986, sub-delims */
+        || (src[in] == '!') || (src[in] == '$') || (src[in] == '&')
+        || (src[in] == '(') || (src[in] == ')') || (src[in] == '*')
+        || (src[in] == '+') || (src[in] == ',') || (src[in] == ';')
+        || (src[in] == '=') || (src[in] == '\'')
+        /* 8-bit data */
         || (((unsigned char) src[in]) >= 128))
     {
       char esc[4];