...
|
...
|
@@ -317,6 +317,8 @@ int upx_inflate2b(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
317
|
317
|
while (1) {
|
318
|
318
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
319
|
319
|
return -1;
|
|
320
|
+ if (backbytes >= (INT_MAX / 2) + oob)
|
|
321
|
+ return -1;
|
320
|
322
|
backbytes = backbytes*2+oob;
|
321
|
323
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
322
|
324
|
return -1;
|
...
|
...
|
@@ -392,6 +394,8 @@ int upx_inflate2d(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
392
|
392
|
while (1) {
|
393
|
393
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
394
|
394
|
return -1;
|
|
395
|
+ if (backbytes >= (INT_MAX / 2) + oob)
|
|
396
|
+ return -1;
|
395
|
397
|
backbytes = backbytes*2+oob;
|
396
|
398
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
397
|
399
|
return -1;
|
...
|
...
|
@@ -400,6 +404,8 @@ int upx_inflate2d(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
400
|
400
|
backbytes--;
|
401
|
401
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
402
|
402
|
return -1;
|
|
403
|
+ if (backbytes >= (INT_MAX / 2) + oob)
|
|
404
|
+ return -1;
|
403
|
405
|
backbytes=backbytes*2+oob;
|
404
|
406
|
}
|
405
|
407
|
|
...
|
...
|
@@ -473,6 +479,8 @@ int upx_inflate2e(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
473
|
473
|
for(;;) {
|
474
|
474
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
475
|
475
|
return -1;
|
|
476
|
+ if (backbytes >= (INT_MAX / 2) + oob)
|
|
477
|
+ return -1;
|
476
|
478
|
backbytes = backbytes*2+oob;
|
477
|
479
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
478
|
480
|
return -1;
|
...
|
...
|
@@ -481,6 +489,8 @@ int upx_inflate2e(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
481
|
481
|
backbytes--;
|
482
|
482
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
483
|
483
|
return -1;
|
|
484
|
+ if (backbytes >= (INT_MAX / 2) + oob)
|
|
485
|
+ return -1;
|
484
|
486
|
backbytes=backbytes*2+oob;
|
485
|
487
|
}
|
486
|
488
|
|