diff options
author | Evgenii Kliuchnikov <eustas@google.com> | 2023-03-15 13:29:35 +0000 |
---|---|---|
committer | Evgenii Kliuchnikov <eustas.ru@gmail.com> | 2023-07-04 07:53:51 +0000 |
commit | f29c44ed38db167be86e734c302b50cdc6b29227 (patch) | |
tree | 4b70a14b99b81a47aabf7be966bdba549485b926 /c | |
parent | cb1ced3a258782d67af6914474764d86b5d26e2f (diff) | |
download | brotli-f29c44ed38db167be86e734c302b50cdc6b29227.zip brotli-f29c44ed38db167be86e734c302b50cdc6b29227.tar.gz brotli-f29c44ed38db167be86e734c302b50cdc6b29227.tar.bz2 |
Avoid nullptr with zero offset
PiperOrigin-RevId: 516808122
Diffstat (limited to 'c')
-rw-r--r-- | c/dec/bit_reader.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/c/dec/bit_reader.h b/c/dec/bit_reader.h index b3fddea..3d1024b 100644 --- a/c/dec/bit_reader.h +++ b/c/dec/bit_reader.h @@ -84,7 +84,7 @@ static BROTLI_INLINE void BrotliBitReaderSaveState( static BROTLI_INLINE void BrotliBitReaderSetInput( BrotliBitReader* const br, const uint8_t* next_in, size_t avail_in) { br->next_in = next_in; - br->last_in = next_in + avail_in; + br->last_in = (avail_in == 0) ? next_in : (next_in + avail_in); if (avail_in + 1 > BROTLI_FAST_INPUT_SLACK) { br->guard_in = next_in + (avail_in + 1 - BROTLI_FAST_INPUT_SLACK); } else { @@ -251,7 +251,8 @@ static BROTLI_INLINE void BrotliDropBits( static BROTLI_INLINE void BrotliBitReaderUnload(BrotliBitReader* br) { brotli_reg_t unused_bytes = BrotliGetAvailableBits(br) >> 3; brotli_reg_t unused_bits = unused_bytes << 3; - br->next_in -= unused_bytes; + br->next_in = + (unused_bytes == 0) ? br->next_in : (br->next_in - unused_bytes); if (unused_bits == sizeof(br->val_) << 3) { br->val_ = 0; } else { |