aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Ross <pross@xvid.org>2021-09-18 19:55:03 +1000
committerPeter Ross <pross@xvid.org>2021-09-28 21:23:26 +1000
commitb007e8968f2072b9e8076d0ab474ad944fc07ade (patch)
tree2c53c9184abec5923e6b24253692e0aa32e6186c
parented6549887a1969636b30295b3da87313b7c46864 (diff)
downloadffmpeg-b007e8968f2072b9e8076d0ab474ad944fc07ade.tar.gz
avcodec/siren: prevent getbitcontext overread
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Peter Ross <pross@xvid.org>
-rw-r--r--libavcodec/siren.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libavcodec/siren.c b/libavcodec/siren.c
index 7f2b467860..27ee356c44 100644
--- a/libavcodec/siren.c
+++ b/libavcodec/siren.c
@@ -608,12 +608,16 @@ static int decode_vector(SirenContext *s, int number_of_regions,
index >>= 1;
- if (error == 0 && get_bits_left(gb) >= 0) {
+ if (error == 0) {
for (j = 0; j < vector_dimension[category]; j++) {
decoded_value = mlt_quant[category][index & ((1 << index_table[category]) - 1)];
index >>= index_table[category];
if (decoded_value) {
+ if (get_bits_left(gb) <= 0) {
+ error = 1;
+ break;
+ }
if (!get_bits1(gb))
decoded_value *= -decoder_standard_deviation[region];
else