diff options
author | Roland McGrath <roland@gnu.org> | 1996-04-03 16:31:49 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1996-04-03 16:31:49 +0000 |
commit | 299a95b9f048679f1288512b0a6ab6ca16dd9d7c (patch) | |
tree | 4788a62ee8f131887e5817e8daa3339084dbe764 /posix/fnmatch.c | |
parent | 30de3b18a526acc837957865129b7fa6d8ac91d1 (diff) | |
download | glibc-299a95b9f048679f1288512b0a6ab6ca16dd9d7c.tar.gz |
Tue Apr 2 21:27:01 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* 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.
Diffstat (limited to 'posix/fnmatch.c')
-rw-r--r-- | posix/fnmatch.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/posix/fnmatch.c b/posix/fnmatch.c index 1ddea80961..08c1c9448e 100644 --- a/posix/fnmatch.c +++ b/posix/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; |