From 7861376124e26e837e1037c1f2aa05e7de9b9d6d Mon Sep 17 00:00:00 2001 From: Amin Hassani Date: Fri, 8 Mar 2019 09:58:20 -0800 Subject: Check for upper bounds of nselectors. Currently there is no check for the upper bounds of the nselectors. Hence, a corrupt input can cause a segfault. This issue was discovered by one of our fuzzers. The actual error was: ../bzip2-1.0.6/decompress.c:299:10: runtime error: index 18002 out of bounds for type 'UChar [18002]' Test: mma Change-Id: Ie16067b2101bfdf6d54f6892a717e66f7420e926 --- decompress.c | 1 + 1 file changed, 1 insertion(+) diff --git a/decompress.c b/decompress.c index 311f566..391552d 100644 --- a/decompress.c +++ b/decompress.c @@ -288,6 +288,7 @@ Int32 BZ2_decompress ( DState* s ) if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); if (nSelectors < 1) RETURN(BZ_DATA_ERROR); + if (nSelectors > BZ_MAX_SELECTORS) RETURN(BZ_DATA_ERROR); for (i = 0; i < nSelectors; i++) { j = 0; while (True) { -- cgit v1.2.3