Change 14419 by jhi@alpha on 2002/01/25 17:25:05

        Subject: [Patch Encode.xs] calculation of need overflows
        From: SADAHIRO Tomoyuki <[EMAIL PROTECTED]>
        Date: Sat, 26 Jan 2002 00:58:50 +0900
        Message-Id: <[EMAIL PROTECTED]>

Affected files ...

.... //depot/perl/ext/Encode/Encode.xs#39 edit

Differences ...

==== //depot/perl/ext/Encode/Encode.xs#39 (text) ====
Index: perl/ext/Encode/Encode.xs
--- perl/ext/Encode/Encode.xs.~1~       Fri Jan 25 10:30:05 2002
+++ perl/ext/Encode/Encode.xs   Fri Jan 25 10:30:05 2002
@@ -409,10 +409,12 @@
       {
        case ENCODE_NOSPACE:
         {
-         STRLEN need = (slen) ? (SvLEN(dst)*SvCUR(src)/slen) : (dlen + UTF8_MAXLEN);
-         if (need <= SvLEN(dst))
-          need += UTF8_MAXLEN;
+         STRLEN need = dlen + UTF8_MAXLEN * 128; /* 128 is too big or small? */
          d = (U8 *) SvGROW(dst, need);
+         if (dlen >= SvLEN(dst))
+          {
+           Perl_croak(aTHX_ "Destination couldn't be grown (the need may be 
+miscalculated).");
+          }
          dlen = SvLEN(dst);
          slen = SvCUR(src);
          break;
End of Patch.

Reply via email to