[perl #119505] Segfault from bad backreference
authorDavid Mitchell <davem@iabyn.com>
Wed, 16 Oct 2013 12:59:12 +0000 (13:59 +0100)
committerDavid Mitchell <davem@iabyn.com>
Thu, 17 Oct 2013 09:57:35 +0000 (10:57 +0100)
commit0c2990d652e985784f095bba4bc356481a66aa06
tree64cab82a59f1227210631ff65000b84534308458
parent508c1ff603f9bbfcf34bc663c9f028d6acf1f6e9
[perl #119505] Segfault from bad backreference

The code that parses regex backrefs (or ambiguous backref/octal) such as
\123, did a simple atoi(), which could wrap round to negative values on
long digit strings and cause seg faults.

Include a check on the length of the digit string, and if greater than 9
digits, assume it can never be a valid backref (obviating the need for the
atoi() call).

I've also simplified the code a bit, putting most of the \g handling code
into a single block, rather than doing multiple "if (isg) {...}".
regcomp.c
t/re/re_tests