...
|
...
|
@@ -317,8 +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 + oob > INT32_MAX / 2)
|
321
|
|
- return -1;
|
|
320
|
+ if (((int64_t) backbytes + oob ) > INT32_MAX / 2)
|
|
321
|
+ return -1;
|
322
|
322
|
backbytes = backbytes*2+oob;
|
323
|
323
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
324
|
324
|
return -1;
|
...
|
...
|
@@ -402,8 +402,8 @@ int upx_inflate2d(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
402
|
402
|
while (1) {
|
403
|
403
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
404
|
404
|
return -1;
|
405
|
|
- if (backbytes + oob > INT32_MAX / 2)
|
406
|
|
- return -1;
|
|
405
|
+ if (((int64_t) backbytes + oob ) > INT32_MAX / 2)
|
|
406
|
+ return -1;
|
407
|
407
|
backbytes = backbytes*2+oob;
|
408
|
408
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
409
|
409
|
return -1;
|
...
|
...
|
@@ -412,6 +412,8 @@ int upx_inflate2d(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
412
|
412
|
backbytes--;
|
413
|
413
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
414
|
414
|
return -1;
|
|
415
|
+ if (((int64_t) backbytes + oob ) > INT32_MAX / 2)
|
|
416
|
+ return -1;
|
415
|
417
|
backbytes=backbytes*2+oob;
|
416
|
418
|
}
|
417
|
419
|
|
...
|
...
|
@@ -493,8 +495,8 @@ int upx_inflate2e(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
493
|
493
|
for(;;) {
|
494
|
494
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
495
|
495
|
return -1;
|
496
|
|
- if (backbytes + oob > INT32_MAX / 2)
|
497
|
|
- return -1;
|
|
496
|
+ if (((int64_t) backbytes + oob ) > INT32_MAX / 2)
|
|
497
|
+ return -1;
|
498
|
498
|
backbytes = backbytes*2+oob;
|
499
|
499
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
500
|
500
|
return -1;
|
...
|
...
|
@@ -503,6 +505,8 @@ int upx_inflate2e(const char *src, uint32_t ssize, char *dst, uint32_t *dsize, u
|
503
|
503
|
backbytes--;
|
504
|
504
|
if ( (oob = doubleebx(src, &myebx, &scur, ssize)) == -1 )
|
505
|
505
|
return -1;
|
|
506
|
+ if (((int64_t) backbytes + oob ) > INT32_MAX / 2)
|
|
507
|
+ return -1;
|
506
|
508
|
backbytes=backbytes*2+oob;
|
507
|
509
|
}
|
508
|
510
|
|