[PATCH] Fix stack pointer corruption in pp_concat() with 'use encoding'
Niko Tyni
ntyni at debian.org
Thu Oct 28 20:52:17 UTC 2010
sv_utf8_upgrade_nomg() may reallocate the stack via sv_recode_to_utf8()
if 'use encoding' is in effect, causing stack pointer corruption.
---
pp_hot.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/pp_hot.c b/pp_hot.c
index fd270e9..f4d79dc 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -275,6 +275,8 @@ PP(pp_concat)
rbyte = !DO_UTF8(right);
}
if (lbyte != rbyte) {
+ /* sv_utf8_upgrade_nomg() may reallocate the stack */
+ PUTBACK;
if (lbyte)
sv_utf8_upgrade_nomg(TARG);
else {
@@ -283,6 +285,7 @@ PP(pp_concat)
sv_utf8_upgrade_nomg(right);
rpv = SvPV_nomg_const(right, rlen);
}
+ SPAGAIN;
}
sv_catpvn_nomg(TARG, rpv, rlen);
--
1.7.2.3
--bp/iNruPH9dso1Pn--
More information about the Perl-maintainers
mailing list