aboutsummaryrefslogtreecommitdiff
path: root/src/urlglob.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-06-29 00:17:38 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-06-29 00:22:11 +0200
commit89924a897d1cdb76750459a07e6caf460601c822 (patch)
treeb3f468d1bc27ae9a1df4885463d0b64d9880c141 /src/urlglob.c
parentbcefe839c7ccbe57dc4f5d390d90e9370293c9fd (diff)
glob: backslash escaping bug
curl didn't properly handle escaping characters in a URL with the use of backslash. It did an attempt, but that failed as reported in bug 3022551. The described example was using the URL "http://example.com?{AB,C\,D}". I've now removed the special-handling of letters following the backslash and I also removed the bad extra check that triggered this particular bug. Bug: http://curl.haxx.se/bug/view.cgi?id=3022551 Reported by: Jon Sargeant
Diffstat (limited to 'src/urlglob.c')
-rw-r--r--src/urlglob.c23
1 files changed, 2 insertions, 21 deletions
diff --git a/src/urlglob.c b/src/urlglob.c
index 5f8fb2868..8435b250d 100644
--- a/src/urlglob.c
+++ b/src/urlglob.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -75,8 +75,6 @@ static GlobCode glob_set(URLGlob *glob, char *pattern,
++glob->size;
while (!done) {
- bool skip;
-
switch (*pattern) {
case '\0': /* URL ended while set was still open */
snprintf(glob->errormsg, sizeof(glob->errormsg),
@@ -127,24 +125,7 @@ static GlobCode glob_set(URLGlob *glob, char *pattern,
return GLOB_ERROR;
case '\\': /* escaped character, skip '\' */
- switch(pattern[1]) {
- case '[':
- case ']':
- case '{':
- case '}':
- case ',':
- skip = TRUE;
- break;
- default:
- skip = FALSE;
- break;
- }
- if(skip) {
- if (*(buf+1) == '\0') { /* but no escaping of '\0'! */
- snprintf(glob->errormsg, sizeof(glob->errormsg),
- "illegal pattern at pos %zu\n", pos);
- return GLOB_ERROR;
- }
+ if(pattern[1]) {
++pattern;
++pos;
}