From 1bb9d9e7258c915b3db1ed60722a6d93b3b3875e Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Thu, 17 Nov 2022 18:55:38 +0900 Subject: [PATCH 2/3] fix(BRACKMATCH): match immature bracket expression with literal [ --- lib/glob/sm_loop.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c index f4d8d1f2..2c15cae1 100644 --- a/lib/glob/sm_loop.c +++ b/lib/glob/sm_loop.c @@ -571,7 +571,7 @@ BRACKMATCH (p, test, flags) if (!(flags & FNM_NOESCAPE) && c == L('\\')) { if (ISBRACKETEOF (*p)) - return (CHAR *)0; + return ((test == L('[')) ? savep : (CHAR *)0); cstart = cend = *p++; } @@ -601,7 +601,7 @@ BRACKMATCH (p, test, flags) if (!(flags & FNM_NOESCAPE) && cend == L('\\')) cend = *p++; if (ISBRACKETEOF (cend)) - return (CHAR *)0; + return ((test == L('[')) ? savep : (CHAR *)0); if (cend == L('[') && *p == L('.')) { p = PARSE_COLLSYM (p, &pc); @@ -683,7 +683,7 @@ matched: else if (!(flags & FNM_NOESCAPE) && c == L('\\')) { if (ISBRACKETEOF (*p)) - return (CHAR *)0; + return ((test == L('[')) ? savep : (CHAR *)0); /* XXX 1003.2d11 is unclear if this is right. */ ++p; } -- 2.37.2