mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-13 14:39:10 +00:00
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
9f6bf6ea71
commit
44d4931c88
1 changed files with 1 additions and 1 deletions
2
third_party/bzip2/decompress.c
vendored
2
third_party/bzip2/decompress.c
vendored
|
@ -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 > BZ_N_GROUPS) RETURN(BZ_DATA_ERROR);
|
if (nGroups < 2 || nGroups > BZ_N_GROUPS) 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…
Add table
Add a link
Reference in a new issue