aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgenii Kliuchnikov <eustas@google.com>2023-03-15 13:29:35 +0000
committerEvgenii Kliuchnikov <eustas.ru@gmail.com>2023-07-04 07:53:51 +0000
commitf29c44ed38db167be86e734c302b50cdc6b29227 (patch)
tree4b70a14b99b81a47aabf7be966bdba549485b926
parentcb1ced3a258782d67af6914474764d86b5d26e2f (diff)
downloadbrotli-f29c44ed38db167be86e734c302b50cdc6b29227.zip
brotli-f29c44ed38db167be86e734c302b50cdc6b29227.tar.gz
brotli-f29c44ed38db167be86e734c302b50cdc6b29227.tar.bz2
Avoid nullptr with zero offset
PiperOrigin-RevId: 516808122
-rw-r--r--c/dec/bit_reader.h5
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 {