summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-02-03 03:34:40 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-02-03 03:34:40 +0100
commit982c44d030dbb9eec3ae6522b12838c5f0754070 (patch)
tree2c2a2bb0b9d2a3f4f01bd10f0096ecb21a209e8a
parent83dd4ff69631f8def367920b3353e112b93fcc87 (diff)
downloadbusybox-w32-982c44d030dbb9eec3ae6522b12838c5f0754070.tar.gz
busybox-w32-982c44d030dbb9eec3ae6522b12838c5f0754070.tar.bz2
busybox-w32-982c44d030dbb9eec3ae6522b12838c5f0754070.zip
bzip2: rewrite bit of code which depends on integer overflow
function old new delta sendMTFValues 2093 2070 -23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--archival/libarchive/bz/compress.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/archival/libarchive/bz/compress.c b/archival/libarchive/bz/compress.c
index 377f2f166..271982cf2 100644
--- a/archival/libarchive/bz/compress.c
+++ b/archival/libarchive/bz/compress.c
@@ -297,7 +297,7 @@ void sendMTFValues(EState* s)
297 // 200..599 = 3 297 // 200..599 = 3
298 // 600..1199 = 4 298 // 600..1199 = 4
299 // 1200..2399 = 5 299 // 1200..2399 = 5
300 // else 6 300 // 2400..99999 = 6
301 nGroups = 2; 301 nGroups = 2;
302 nGroups += (s->nMTF >= 200); 302 nGroups += (s->nMTF >= 200);
303 nGroups += (s->nMTF >= 600); 303 nGroups += (s->nMTF >= 600);
@@ -317,12 +317,12 @@ void sendMTFValues(EState* s)
317 unsigned tFreq, aFreq; 317 unsigned tFreq, aFreq;
318 318
319 tFreq = remF / nPart; 319 tFreq = remF / nPart;
320 ge = gs - 1; //underflows on 1st iteration 320 ge = gs;
321 aFreq = 0; 321 aFreq = 0;
322 while (aFreq < tFreq && (int)ge < (int)alphaSize-1) { 322 while (aFreq < tFreq && ge < alphaSize) {
323 ge++; 323 aFreq += s->mtfFreq[ge++];
324 aFreq += s->mtfFreq[ge];
325 } 324 }
325 ge--;
326 326
327 if (ge > gs 327 if (ge > gs
328 && nPart != nGroups && nPart != 1 328 && nPart != nGroups && nPart != 1