1
0
mirror of https://github.com/moparisthebest/curl synced 2024-11-17 06:55:02 -05:00

fnmatch: do not match the empty string with a character set

This commit is contained in:
Patrick Monnerat 2018-01-29 13:01:43 +01:00
parent 2b50e56343
commit 19abad095c
2 changed files with 5 additions and 5 deletions

View File

@ -352,6 +352,8 @@ static int loop(const unsigned char *pattern, const unsigned char *string,
unsigned char *pp = p + 1; /* cannot handle with pointer to register */ unsigned char *pp = p + 1; /* cannot handle with pointer to register */
if(setcharset(&pp, charset)) { if(setcharset(&pp, charset)) {
int found = FALSE; int found = FALSE;
if(!*s)
return CURL_FNMATCH_NOMATCH;
if(charset[(unsigned int)*s]) if(charset[(unsigned int)*s])
found = TRUE; found = TRUE;
else if(charset[CURLFNM_ALNUM]) else if(charset[CURLFNM_ALNUM])
@ -380,9 +382,7 @@ static int loop(const unsigned char *pattern, const unsigned char *string,
if(found) { if(found) {
p = pp + 1; p = pp + 1;
if(*s) s++;
/* don't advance if we're matching on an empty string */
s++;
memset(charset, 0, CURLFNM_CHSET_SIZE); memset(charset, 0, CURLFNM_CHSET_SIZE);
} }
else else

View File

@ -97,8 +97,8 @@ static const struct testcase tests[] = {
{ "*[^a].t?t", "a.txt", NOMATCH }, { "*[^a].t?t", "a.txt", NOMATCH },
{ "*[^a].t?t", "ba.txt", NOMATCH }, { "*[^a].t?t", "ba.txt", NOMATCH },
{ "*[^a].t?t", "ab.txt", MATCH }, { "*[^a].t?t", "ab.txt", MATCH },
{ "*[^a]", "", MATCH }, { "*[^a]", "", NOMATCH },
{ "[!ÿ]", "", MATCH }, { "[!ÿ]", "", NOMATCH },
{ "[!?*[]", "?", NOMATCH }, { "[!?*[]", "?", NOMATCH },
{ "[!!]", "!", NOMATCH }, { "[!!]", "!", NOMATCH },
{ "[!!]", "x", MATCH }, { "[!!]", "x", MATCH },