From f0364f7e3191c930008de0736ae00ef28d42bd91 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 25 Oct 2017 23:53:30 +0200 Subject: curl_fnmatch: return error on illegal wildcard pattern ... instead of doing an infinite loop! Added test 1162 to verify. Reported-by: Max Dymond Fixes #2015 Closes #2017 --- lib/curl_fnmatch.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lib/curl_fnmatch.c') diff --git a/lib/curl_fnmatch.c b/lib/curl_fnmatch.c index 631268bc1..5a6f137c8 100644 --- a/lib/curl_fnmatch.c +++ b/lib/curl_fnmatch.c @@ -240,10 +240,10 @@ static int setcharset(unsigned char **p, unsigned char *charset) if(!ISPRINT(c)) return SETCHARSET_FAIL; } - if(c == ']') { + else if(c == ']') { return SETCHARSET_OK; } - if(c == '\\') { + else if(c == '\\') { c = *(++(*p)); if(ISPRINT(c)) { charset[c] = 1; @@ -253,7 +253,7 @@ static int setcharset(unsigned char **p, unsigned char *charset) else return SETCHARSET_FAIL; } - if(c >= rangestart) { + else if(c >= rangestart) { if((ISLOWER(c) && ISLOWER(rangestart)) || (ISDIGIT(c) && ISDIGIT(rangestart)) || (ISUPPER(c) && ISUPPER(rangestart))) { @@ -267,6 +267,8 @@ static int setcharset(unsigned char **p, unsigned char *charset) else return SETCHARSET_FAIL; } + else + return SETCHARSET_FAIL; break; case CURLFNM_SCHS_RIGHTBR: if(c == '[') { -- cgit v1.2.3