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--;

Reply via email to