summaryrefslogtreecommitdiff
path: root/lib/glob.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/glob.c')
-rw-r--r--lib/glob.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/glob.c b/lib/glob.c
index 0ba3ea86b546..aa57900d2062 100644
--- a/lib/glob.c
+++ b/lib/glob.c
@@ -45,7 +45,7 @@ bool __pure glob_match(char const *pat, char const *str)
* (no exception for /), it can be easily proved that there's
* never a need to backtrack multiple levels.
*/
- char const *back_pat = NULL, *back_str = back_str;
+ char const *back_pat = NULL, *back_str;
/*
* Loop over each token (character or class) in pat, matching
@@ -68,6 +68,8 @@ bool __pure glob_match(char const *pat, char const *str)
back_str = --str; /* Allow zero-length match */
break;
case '[': { /* Character class */
+ if (c == '\0') /* No possible match */
+ return false;
bool match = false, inverted = (*pat == '!');
char const *class = pat + inverted;
unsigned char a = *class++;
@@ -102,7 +104,7 @@ bool __pure glob_match(char const *pat, char const *str)
break;
case '\\':
d = *pat++;
- /*FALLTHROUGH*/
+ fallthrough;
default: /* Literal character */
literal:
if (c == d) {