From 91117fc9f196fe4f1bcbec93e60bfda3f798fe45 Mon Sep 17 00:00:00 2001 From: Burt P Date: Thu, 8 Sep 2016 18:06:54 -0500 Subject: af_hdcd: fix bounds check in hdcd_envelope() From Sebastian Ramacher. https://github.com/bp0/libhdcd/pull/11 Signed-off-by: Burt P --- libavfilter/af_hdcd.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'libavfilter/af_hdcd.c') diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c index 96d5a0faf1..40dba3c489 100644 --- a/libavfilter/af_hdcd.c +++ b/libavfilter/af_hdcd.c @@ -1388,15 +1388,18 @@ static int hdcd_analyze(int32_t *samples, int count, int stride, int gain, int t /** apply HDCD decoding parameters to a series of samples */ static int hdcd_envelope(int32_t *samples, int count, int stride, int gain, int target_gain, int extend) { - int i; + static const int max_asample = sizeof(peaktab) / sizeof(peaktab[0]) - 1; int32_t *samples_end = samples + stride * count; + int i; + + av_assert0(PEAK_EXT_LEVEL + max_asample == 0x8000); if (extend) { for (i = 0; i < count; i++) { int32_t sample = samples[i * stride]; int32_t asample = abs(sample) - PEAK_EXT_LEVEL; if (asample >= 0) { - av_assert0(asample < sizeof(peaktab)); + av_assert0(asample <= max_asample); sample = sample >= 0 ? peaktab[asample] : -peaktab[asample]; } else sample <<= 15; -- cgit v1.2.3