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 | |
parent | 30de3b18a526acc837957865129b7fa6d8ac91d1 (diff) | |
download | glibc-299a95b9f048679f1288512b0a6ab6ca16dd9d7c.zip glibc-299a95b9f048679f1288512b0a6ab6ca16dd9d7c.tar.gz glibc-299a95b9f048679f1288512b0a6ab6ca16dd9d7c.tar.bz2 |
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')
-rw-r--r-- | posix/fnmatch.c | 17 | ||||
-rw-r--r-- | posix/glob.c | 2 |
2 files changed, 15 insertions, 4 deletions
diff --git a/posix/fnmatch.c b/posix/fnmatch.c index 1ddea80..08c1c94 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; diff --git a/posix/glob.c b/posix/glob.c index eea126d..1a00af6 100644 --- a/posix/glob.c +++ b/posix/glob.c @@ -699,7 +699,7 @@ glob_pattern_p (pattern, quote) return 1; case '\\': - if (quote) + if (quote && p[1] != '\0') ++p; break; |