From: Johannes Sixt Date: Tue, 20 Nov 2012 07:06:05 GMT Subject: Re: [PATCH 15/13] compat/fnmatch: fix off-by-one character class's length check Message-ID: <50AB2BDD.5030707@viscovery.net> In-Reply-To: <1352628837-5784-2-git-send-email-pclouds@gmail.com> Am 11/11/2012 11:13, schrieb Nguyễn Thái Ngọc Duy: > 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 > Signed-off-by: Nguyễn Thái Ngọc Duy > --- > 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. Works well here on Windows. This does not affect Windows alone, but all platforms that fall back to compat/fnmatch. It's perhaps worth its own topic branch. > 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; > -- Hannes