Commit 19abad09 authored by Patrick Monnerat's avatar Patrick Monnerat
Browse files

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

parent 2b50e563
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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,8 +382,6 @@ 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++;
            memset(charset, 0, CURLFNM_CHSET_SIZE);
          }
+2 −2
Original line number Diff line number Diff line
@@ -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 },