Fix memory corruption when growing pack utf8 buffer
Rafael Garcia-Suarez [Wed, 9 Mar 2005 18:02:13 +0000 (18:02 +0000)]
p4raw-id: //depot/perl@24011

pp_pack.c

index c6e2d4e..6c9b92a 100644 (file)
--- 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';