On Wed, Jul 22, 2020 at 01:10:38PM -0600, Todd C. Miller wrote: > On Wed, 22 Jul 2020 18:38:42 +0200, Theo Buehler wrote: > > > Likely glob. Many glob implementations were found to suffer from > > complexity issues: https://research.swtch.com/glob > > > > The glob(3) in libc was fixed > > https://github.com/openbsd/src/commit/5c36dd0c22429e7b00ed5df80ed1383807532b5 > > 9 > > but ksh's builtin glog still has the issue. > > At the very least we should collapse consecutive stars. This is a > separate issue from making gmatch() iterative.
Yes. This makes sense and fixes this issue. ok tb > > - todd > > Index: bin/ksh/misc.c > =================================================================== > RCS file: /cvs/src/bin/ksh/misc.c,v > retrieving revision 1.74 > diff -u -p -u -r1.74 misc.c > --- bin/ksh/misc.c 7 Jul 2020 10:33:58 -0000 1.74 > +++ bin/ksh/misc.c 22 Jul 2020 19:08:20 -0000 > @@ -615,6 +615,9 @@ do_gmatch(const unsigned char *s, const > break; > > case '*': > + /* collapse consecutive stars */ > + while (ISMAGIC(p[0]) && p[1] == '*') > + p += 2; > if (p == pe) > return 1; > s--;