mirror of
https://github.com/curl/curl.git
synced 2026-04-14 21:41:41 +03:00
fnmatch: do not match the empty string with a character set
This commit is contained in:
parent
2b50e56343
commit
19abad095c
2 changed files with 5 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue