diff options
author | Daniel Stenberg <daniel@haxx.se> | 2010-06-29 00:17:38 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2010-06-29 00:22:11 +0200 |
commit | 89924a897d1cdb76750459a07e6caf460601c822 (patch) | |
tree | b3f468d1bc27ae9a1df4885463d0b64d9880c141 /src | |
parent | bcefe839c7ccbe57dc4f5d390d90e9370293c9fd (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')
-rw-r--r-- | src/urlglob.c | 23 |
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; } |