Make sure nSelectors is not out of range
nSelectors is used in a loop from 0 to nSelectors to access selectorMtf which is UChar selectorMtf[BZ_MAX_SELECTORS]; so if nSelectors is bigger than BZ_MAX_SELECTORS it'll do an invalid memory access Fixes out of bounds access discovered while fuzzying karchive
This commit is contained in:
parent
5381b4f2f8
commit
74de1e2e6f
@ -287,7 +287,7 @@ Int32 BZ2_decompress ( DState* s )
|
|||||||
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
|
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
|
||||||
if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
|
if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
|
||||||
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
|
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
|
||||||
if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
|
if (nSelectors < 1 || nSelectors > BZ_MAX_SELECTORS) RETURN(BZ_DATA_ERROR);
|
||||||
for (i = 0; i < nSelectors; i++) {
|
for (i = 0; i < nSelectors; i++) {
|
||||||
j = 0;
|
j = 0;
|
||||||
while (True) {
|
while (True) {
|
||||||
|
Loading…
Reference in New Issue
Block a user