From 551bbc6b3aaa1c7adfc513a31e9abee13aeb36d5 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Wed, 28 Jul 2010 18:17:09 +0200 Subject: [PATCH] src/utils_cgi.c: Import a list of reserved characters from RFC 3986. --- src/utils_cgi.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/utils_cgi.c b/src/utils_cgi.c index 7851914..475e14e 100644 --- a/src/utils_cgi.c +++ b/src/utils_cgi.c @@ -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]; -- 2.11.0