aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--RELEASE-NOTES2
-rw-r--r--src/urlglob.c23
2 files changed, 4 insertions, 21 deletions
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 30fcb466a..05e02c9a8 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -20,6 +20,7 @@ This release includes the following bugfixes:
o ftp-wildcard: avoid tight loop when used without any pattern
o multi_socket: re-use of same socket without notifying app
o ftp wildcard: FTP LIST parser FIX
+ o urlglobbing backslash escaping bug
This release includes the following known bugs:
@@ -29,6 +30,7 @@ This release would not have looked like this without help, code, reports and
advice from friends like these:
Dan Fandrich, Kamil Dudka, Krister Johansen, Pavel Raiskup,
+ Jon Sargeant
Thanks! (and sorry if I forgot to mention someone)
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;
}