fix harmless invalid read in Perl_re_compile()
authorDavid Mitchell <davem@iabyn.com>
Mon, 24 Jan 2011 17:38:37 +0000 (17:38 +0000)
committerDavid Mitchell <davem@iabyn.com>
Mon, 24 Jan 2011 18:06:32 +0000 (18:06 +0000)
commitf6d9469c36e1347cc755fd32ccc2107cc9521566
tree9eda032e71817e7c98ebed55f73551d8ff55a958
parent010f0c4bf014b5c77fb8fb5e1878d71cad7ddf0b
fix harmless invalid read in Perl_re_compile()

[perl #2460] described a case where electric fence reported an invalid
read. This could be reproduced under valgrind with blead and -e'/x/',
but only on a non-debugging build.

This was because it was checking for certain pairs of nodes (e.g. BOL + END)
and wasn't allowing for EXACT nodes, which have the string at the next
node position when using a naive NEXTOPER(first). In the non-debugging
build, the nodes aren't initialised to zero, and a 1-char EXACT node isn't
long enough to spill into the type field of the "next node".

Fix this by only using NEXTOPER(first) when we know the first node is
kosher.
regcomp.c