1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04: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 */
if(setcharset(&pp, charset)) {
int found = FALSE;
if(!*s)
return CURL_FNMATCH_NOMATCH;
if(charset[(unsigned int)*s])
found = TRUE;
else if(charset[CURLFNM_ALNUM])
@ -380,9 +382,7 @@ static int loop(const unsigned char *pattern, const unsigned char *string,
if(found) {
p = pp + 1;
if(*s)
/* don't advance if we're matching on an empty string */
s++;
s++;
memset(charset, 0, CURLFNM_CHSET_SIZE);
}
else

View File

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