aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBurt P <pburt0@gmail.com>2016-09-08 18:06:54 -0500
committerBurt P <pburt0@gmail.com>2016-09-08 18:13:12 -0500
commit91117fc9f196fe4f1bcbec93e60bfda3f798fe45 (patch)
treed2d3c4bf9ffaa9987e65dc06da11c82cc93de0c0
parent21de33dd83ca0a093ac437d9351d8f494754c3af (diff)
downloadffmpeg-91117fc9f196fe4f1bcbec93e60bfda3f798fe45.tar.gz
af_hdcd: fix bounds check in hdcd_envelope()
From Sebastian Ramacher. https://github.com/bp0/libhdcd/pull/11 Signed-off-by: Burt P <pburt0@gmail.com>
-rw-r--r--libavfilter/af_hdcd.c7
1 files changed, 5 insertions, 2 deletions
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;