summaryrefslogtreecommitdiffstats
path: root/Modules/arraymodule.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-02-23 18:05:22 (GMT)
committerGuido van Rossum <guido@python.org>1999-02-23 18:05:22 (GMT)
commit3791b0de365237b3bdddcc050858a83b8fd97f99 (patch)
treee807ff3bc40fa12caebef7eec5cc7aac8f49eae8 /Modules/arraymodule.c
parent24f8579ee4f01d1c22eaf26211a690e8b0d53251 (diff)
downloadcpython-3791b0de365237b3bdddcc050858a83b8fd97f99.zip
cpython-3791b0de365237b3bdddcc050858a83b8fd97f99.tar.gz
cpython-3791b0de365237b3bdddcc050858a83b8fd97f99.tar.bz2
Carefully check for overflow when allocating the memory for fromfile
-- someone tried to pass in sys.maxint and got bitten by the bogus calculations.
Diffstat (limited to 'Modules/arraymodule.c')
-rw-r--r--Modules/arraymodule.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 656f5a6..bb0a9ed 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -935,8 +935,15 @@ array_fromfile(self, args)
char *item = self->ob_item;
int itemsize = self->ob_descr->itemsize;
int nread;
- PyMem_RESIZE(item, char, (self->ob_size + n) * itemsize);
+ int newlength;
+ size_t newbytes;
+ /* Be careful here about overflow */
+ if ((newlength = self->ob_size + n) <= 0 ||
+ (newbytes = newlength * itemsize) / itemsize != newlength)
+ goto nomem;
+ PyMem_RESIZE(item, char, newbytes);
if (item == NULL) {
+ nomem:
PyErr_NoMemory();
return NULL;
}
OB]+/ Sr GvWY;.鑞V$C7f9'ўwUlQ39j"%Usln\ Vp]NhFfQ9K&mn]=I.^De$u<0hm'ܼɃ 0(*+b,ɈhED%{W$yE:FmKҊ9( iu]8Уֺr 2:W)n-KKa(i ! 5Rt#p[#мd̗w TY* Iiuc>kk >_%v?g.w:=8yL6d*v\#Kbp=fQ-ը=?YNڨ`*.-9DASʛгϊ?#5i@Ri.oOkډ@)f QVEh(ZcpRH։[-`,,0zm߸tŢi GX3:~ FͱdjF!QI)b;4۞y6gM<a[l.[Qp!qIl{F7ؾ 6G v]€Ӳ&;lL/5?[.FDGqKBE<kz?+3cš3 fD3Fc PaDb;""XM=_䀕WE[W+UY4h~Q^(##|mMo=BrSb'B_d6SWok1ltrs^JLL_@ uI5(#qVQ.k@݈.;TFWw'O>MmB~e%wb!#5xXп@4>( (d1|L$Ū?+m~I 3;SH-!DL!v׺+竗aE#ftJ }_".gZ64E"1 b0@dVHի}׎ F2ҏ~2"$aR̖,=qEggSpӳ;xC$'paԘJF4Ny|c_sAwd;;Jy#&LVw麫W]כ䦟PEϦz x}T- _M AdV~lPy"J& %иyFjaޮ'">MGc@ͯc8úځ@{4Z0;fT2Fcl̗P%Uʁkpؑ!mg ]8R$ 32(7b*I30̨3LMĻC}-ɪlaF 9rUWRv5r)m b lMP#j>C ^nj.6T-k#>ܐ0  QlXpib`øADM4aǍ?h0$``q nj 6:^Yr@έnZh0%&fLHjXnXUf[Pa*H//H[#׍2)h= Z|) 2֫]ݨv']ҫt1| UϚwNyꚡUMF0h#Z0+-Ϯ rL2-6N9s6ߨaBŖ_ćS LhVk[ XQ.˷timyCrnGCNaQ=r=uZ9"8`1XLaul(֧#;Mas3fY&f S*%hq1V6d@aY>p3SC FHF\e0 YDmAJY%CCkXIlM #2@wE-A)d:÷O:%e$76n !s ˎ$.;شlY 4hZjMj6};J(,CE7h1*9 e<0UM#X ùAji2FTӋ)(h7'Ť!#Y9DNh^$+Hb@27\E\GFl.EAv lDYj **]rl ruADsWYeOo]Bo66gxbFdisJ鬩АJZ ݯUbe,RJ͝u!sBEO4z4j/M㙟x@zToCn,$t@8:5SGhftIĬ4 NęݒdD0L|Ȋ1E0Me,b55C2($egԸyveSF(y"8*RJMIy Q6kuAM> 16i .V]fRPtABTxx T/c6€3y ђ렮}aQDL fuAgk)t\Ϲ=^UEY”{c{dN͊Zu:@AIzBW? vqh$S0/3bR.Ha[\_ ԉ^;Hj,}g pW3cDV;UM9[iЉGDSow~ qT+-#MTKlcY2c ekibיqmt`mq$O%aMGySl7noQuP$ep֘iF[_O+0:qd2 ѯnۋhE(uF t`]tj6]ېAaTe c,Jj͇P-&Ƽ!IN:츜26o\Foڹqi9vKBqEwE)pjBֶN魑@w'byv@ hDH1c7 spsDٓ:q&>*Gπe]`y )D@U'xiBFf&O£fpK DYޖ9yM/!1*B k~~YBK] V$F8A $]bBigVɡQ1lm?6VIpH^UuY۽7j$6M`Rnpp#^~4nF/oՐ* >29Xo\Ύ,ihUl) \s Tz:7^2 PCE!(GcK) ^-!gn` .̫l$!9ǁZ DClEa,$g[tUFN+<]$ ;fښ%4z :x+5Nm! FQ,yogkޜY"r.3 }3AtN cs1D%pH=a*`kް:LɋZyTa-.N8z*Sakڷ[Y]Q*gm c"qX<=؈χm}b*$RHbAA-B Xbb$<L$oe-N4,UN= .9i<4vzKv,~V@TIgZU|KK,VfԨs]g$хԈqс9!u!4d<03":&gH㦎 \M[hWl`4\Y7zW!b+i &A dvJyrYuƌEA6ByLyzzO 7xIn5F ٣m1ECOIMc 8t=0QM'[Ly,я7z]!mb&ҀZs B!'0_4^ ;-H&3ddDU ,ϝ)Y-QN[1@rYRq;[p(HE!2v4 pvGh@IRq״"9>QR&'"}BY#@aa@ = #eb_rhb"A"Ҷ'Ԟ.Ȧgp-Gw/ra: 05]g_w{ܦzXh&ƅA_ӰE.Npt2JBJ)::Gq}, hLQ&kEw,s1MJvʭlNIpؐXJKfN#"͕5kT؃6OY8 >[<4L~뾈D&} \w} E֦1ll_xX`~LpM ;zdzNaDAH">1R$  `4 `~Ӫ `S$!FƮ*G ]x xgFiXbH YRq`DuSTN8WK0ڰosA*+hbW{X\OdY~i$hb7aBZ?xFE'r!|%cLp1T,V,X0`i1m>Vk|yj=G>^8H}`Hʎ?W!``N;de,m ?~3)+%M 15W)„