diff --git a/glob/ChangeLog b/glob/ChangeLog index 5d6cc497..49e23fd6 100644 --- a/glob/ChangeLog +++ b/glob/ChangeLog @@ -1,3 +1,10 @@ +Tue Apr 2 21:27:01 1996 Andreas Schwab + + * posix/glob.c (glob_pattern_p): Avoid scanning past eos if + the pattern ends with a backslash and quoting is enabled. + * posix/fnmatch.c (fnmatch): Likewise; return FNM_NOMATCH for such + patterns. + Thu Mar 14 06:01:07 1996 Roland McGrath * posix/glob.c (glob): In GLOB_BRACE brace expansion, fix buffer size diff --git a/glob/fnmatch.c b/glob/fnmatch.c index 1ddea809..08c1c944 100644 --- a/glob/fnmatch.c +++ b/glob/fnmatch.c @@ -78,6 +78,9 @@ fnmatch (pattern, string, flags) if (!(flags & FNM_NOESCAPE)) { c = *p++; + if (c == '\0') + /* Trailing \ loses. */ + return FNM_NOMATCH; c = FOLD (c); } if (FOLD (*n) != c) @@ -129,7 +132,11 @@ fnmatch (pattern, string, flags) register char cstart = c, cend = c; if (!(flags & FNM_NOESCAPE) && c == '\\') - cstart = cend = *p++; + { + if (*p == '\0') + return FNM_NOMATCH; + cstart = cend = *p++; + } cstart = cend = FOLD (cstart); @@ -176,8 +183,12 @@ fnmatch (pattern, string, flags) c = *p++; if (!(flags & FNM_NOESCAPE) && c == '\\') - /* XXX 1003.2d11 is unclear if this is right. */ - ++p; + { + if (*p == '\0') + return FNM_NOMATCH; + /* XXX 1003.2d11 is unclear if this is right. */ + ++p; + } } if (not) return FNM_NOMATCH; diff --git a/glob/glob.c b/glob/glob.c index eea126d8..1a00af6f 100644 --- a/glob/glob.c +++ b/glob/glob.c @@ -699,7 +699,7 @@ glob_pattern_p (pattern, quote) return 1; case '\\': - if (quote) + if (quote && p[1] != '\0') ++p; break;