[PATCH 15/13] compat/fnmatch: fix off-by-one character class's length check
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Nov 11, 2012, 10:13 UTC
- Message-ID
- <1352628837-5784-2-git-send-email-pclouds@gmail.com>
- In-Reply-To
- <1352628837-5784-1-git-send-email-pclouds@gmail.com>
Character class "xdigit" is the only one that hits 6 character limit defined by CHAR_CLASS_MAX_LENGTH. All other character classes are 5 character long and therefore never caught by this.
This should make xdigit tests in t3070 pass on Windows.
Reported-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- I tested with Linux (removing the ifdef __LIBC in fnmatch.c) but I think this should get an ACK from someone who actually uses it on Windows.
We may want to tell upstream (who?) about this if they haven't fixed it already.
compat/fnmatch/fnmatch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch.c index 9473aed..0ff1d27 100644 --- a/compat/fnmatch/fnmatch.c +++ b/compat/fnmatch/fnmatch.c @@ -345,7 +345,7 @@ internal_fnmatch (pattern, string, no_leading_period, flags) for (;;) { - if (c1 == CHAR_CLASS_MAX_LENGTH) + if (c1 > CHAR_CLASS_MAX_LENGTH) /* The name is too long and therefore the pattern is ill-formed. */ return FNM_NOMATCH;
-- 1.8.0.rc2.23.g1fb49df