]> git.sesse.net Git - ffmpeg/commitdiff
af_hdcd: fix bounds check in hdcd_envelope()
authorBurt P <pburt0@gmail.com>
Thu, 8 Sep 2016 23:06:54 +0000 (18:06 -0500)
committerBurt P <pburt0@gmail.com>
Thu, 8 Sep 2016 23:13:12 +0000 (18:13 -0500)
From Sebastian Ramacher.
https://github.com/bp0/libhdcd/pull/11

Signed-off-by: Burt P <pburt0@gmail.com>
libavfilter/af_hdcd.c

index 96d5a0faf1451f01a45686eb4f23e40300084b5e..40dba3c489a6c8d63c532ecab05bfd5c32d40b01 100644 (file)
@@ -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;