aboutsummaryrefslogtreecommitdiff
path: root/enc/hash.h
diff options
context:
space:
mode:
authorZoltan Szabadka <szabadka@google.com>2014-01-06 16:01:57 +0100
committerZoltan Szabadka <szabadka@google.com>2014-01-06 16:01:57 +0100
commitd762bc6845dc1a34ece40a0e0ef673cf78112b0b (patch)
tree8036452ce89dbc5de44a879266f22f982d9bb5ff /enc/hash.h
parent1447345cbb87b39ee869673506f17eb968b1f887 (diff)
downloadbrotli-d762bc6845dc1a34ece40a0e0ef673cf78112b0b.zip
brotli-d762bc6845dc1a34ece40a0e0ef673cf78112b0b.tar.gz
brotli-d762bc6845dc1a34ece40a0e0ef673cf78112b0b.tar.bz2
Bug fixes for the brotli encoder and decoder.
Diffstat (limited to 'enc/hash.h')
-rw-r--r--enc/hash.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/enc/hash.h b/enc/hash.h
index b45d71c..cb38e8f 100644
--- a/enc/hash.h
+++ b/enc/hash.h
@@ -205,7 +205,9 @@ class HashLongestMatch {
continue;
}
prev_ix &= ring_buffer_mask;
- if (data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {
+ if (cur_ix_masked + best_len > ring_buffer_mask ||
+ prev_ix + best_len > ring_buffer_mask ||
+ data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {
continue;
}
const size_t len =
@@ -277,7 +279,9 @@ class HashLongestMatch {
break;
}
prev_ix &= ring_buffer_mask;
- if (data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {
+ if (cur_ix_masked + best_len > ring_buffer_mask ||
+ prev_ix + best_len > ring_buffer_mask ||
+ data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {
continue;
}
const size_t len =