From: Rafael Garcia-Suarez Date: Wed, 9 Mar 2005 18:02:13 +0000 (+0000) Subject: Fix memory corruption when growing pack utf8 buffer X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=c0ffc3dc2599584812656dbd75ff30f089c769fe;p=p5sagit%2Fp5-mst-13.2.git Fix memory corruption when growing pack utf8 buffer p4raw-id: //depot/perl@24011 --- diff --git a/pp_pack.c b/pp_pack.c index c6e2d4e..6c9b92a 100644 --- a/pp_pack.c +++ b/pp_pack.c @@ -2917,17 +2917,17 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist ) fromstr = NEXTFROM; auv = SvUV(fromstr); if (utf8) { - char buffer[UTF8_MAXLEN], *end; - end = uvuni_to_utf8_flags(buffer, auv, + char buffer[UTF8_MAXLEN], *endb; + endb = uvuni_to_utf8_flags(buffer, auv, ckWARN(WARN_UTF8) ? 0 : UNICODE_ALLOW_ANY); - if (cur >= end-(end-buffer)*2) { + if (cur >= end-(endb-buffer)*2) { *cur = '\0'; SvCUR(cat) = cur - start; - GROWING(0, cat, start, cur, len+(end-buffer)*2); + GROWING(0, cat, start, cur, len+(endb-buffer)*2); end = start+SvLEN(cat)-UTF8_MAXLEN; } - bytes_to_uni(aTHX_ buffer, end-buffer, &cur); + bytes_to_uni(aTHX_ buffer, endb-buffer, &cur); } else { if (cur >= end) { *cur = '\0';