From: Daniel Stenberg Date: Wed, 6 Mar 2002 22:52:00 +0000 (+0000) Subject: Kevin Roth nicely saved us from this backslash-removing problem! X-Git-Tag: upstream/7.37.1~15671 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4441df90c1d160827f657e6c11a48b8e71e3f49a;p=platform%2Fupstream%2Fcurl.git Kevin Roth nicely saved us from this backslash-removing problem! --- diff --git a/src/urlglob.c b/src/urlglob.c index 48108c8..4ab3258 100644 --- a/src/urlglob.c +++ b/src/urlglob.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 2001, Daniel Stenberg, , et al. + * Copyright (C) 2002, Daniel Stenberg, , et al. * * In order to be useful for every potential user, curl and libcurl are * dual-licensed under the MPL and the MIT/X-derivate licenses. @@ -222,15 +222,19 @@ GlobCode glob_word(URLGlob *glob, char *pattern, int pos, int *amount) *amount = 1; /* default is one single string */ while (*pattern != '\0' && *pattern != '{' && *pattern != '[') { - if (*pattern == '}' || *pattern == ']') { + if (*pattern == '}' || *pattern == ']') return GLOB_ERROR; - } - if (*pattern == '\\') { /* escape character, skip '\' */ + + /* only allow \ to escape known "special letters" */ + if (*pattern == '\\' && + (*(pattern+1) == '{' || *(pattern+1) == '[' || + *(pattern+1) == '}' || *(pattern+1) == ']') ) { + + /* escape character, skip '\' */ ++pattern; ++pos; - if (*pattern == '\0') { /* but no escaping of '\0'! */ + if (*pattern == '\0') /* but no escaping of '\0'! */ return GLOB_ERROR; - } } *buf++ = *pattern++; /* copy character to literal */ ++pos;