[PATCH 1/3] sed: Fix infinite loop on some false multi-byte matches

Stanislav Brabec sbrabec@suse.cz
Wed Feb 15 19:54:00 GMT 2012


Paolo Bonzini wrote:
> On 02/15/2012 05:29 PM, Stanislav Brabec wrote:
> > int
> > main (void)
> > {
> >   struct re_pattern_buffer r;
> >   struct re_registers s;
> >   int e, rc = 0;
> >   if (setlocale (LC_CTYPE, "ja_JP.EUC-JP") == NULL)
> >     {
> >       puts ("setlocale failed");
> >       return 1;
> >     }
> >   memset (&r, 0, sizeof (r));
> >   memset (&s, 0, sizeof (s));
> >   re_set_syntax (RE_SYNTAX_POSIX_BASIC | RE_NO_POSIX_BACKTRACKING);
> 
> One difference is that sed sets RE_NO_SUB here.

ltrace of sed in the sed testcase shows 0x1050246, which matches
RE_SYNTAX_POSIX_BASIC | RE_NO_POSIX_BACKTRACKING

I did not see RE_NO_SUB (0x2000000) set there.

> I didn't try to run the program with the change, thouhg.

I just tested it. It still does not reproduce the problem.

-- 
Best Regards / S pozdravem,

Stanislav Brabec
software developer
---------------------------------------------------------------------
SUSE LINUX, s. r. o.                          e-mail: sbrabec@suse.cz
Lihovarská 1060/12                            tel: +49 911 7405384547
190 00 Praha 9                                  fax: +420 284 028 951
Czech Republic                                    http://www.suse.cz/



More information about the Libc-alpha mailing list