------- You are receiving this mail because: ------- You are on the CC list for the bug.
http://bugs.exim.org/show_bug.cgi?id=1127 Philip Hazel <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Comment #1 from Philip Hazel <[email protected]> 2011-07-28 20:06:30 --- I have committed a patch that fixes this problem. PCRE was treating /(?(R)a+|(?R)b)/ in the same way as /a+|(?R)b/ which is, of course in danger of looping indefinitely. The code is not clever enough to detect the safe case, so I have done two things: (1) The compile-time test for infinite recursion no longer happens when compiling a conditional subpattern. (2) There is now a run time test for infinite recursion, specifically, for recursing into the same subpattern for a second time without advancing the subject pointer. As well as catching real cases in conditionals, this second change also catches mutual recursions such as /((?2))((?1))/ which were not detected before (other than by stack overflow). -- Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email -- ## List details at https://lists.exim.org/mailman/listinfo/pcre-dev
