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.