Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Cadhalpun <andreas.cadhalpun@googlemail.com>2015-04-16 22:25:26 +0300
committerMichael Niedermayer <michaelni@gmx.at>2015-04-17 00:33:53 +0300
commita2908d49d1e1373264d4605cbc2e62a3ab53710b (patch)
treedec4890c4745e96961111237e1bf459db98fd89a
parentfc9514bf4dd73c85ee4b7f4dc7ca0fb4fb7ea3e1 (diff)
ac3: validate end in ff_ac3_bit_alloc_calc_mask
This fixes an invalid read if end is 0: band_end = ff_ac3_bin_to_band_tab[end-1] + 1; Depending on what is before the array, this can cause stack smashing, when band_end becomes too large. Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit bc4fee7f2a51635fa3c0f61d1e5164da1efeded3) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/ac3.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/ac3.c b/libavcodec/ac3.c
index 29e132f5d1..8d39bbe83b 100644
--- a/libavcodec/ac3.c
+++ b/libavcodec/ac3.c
@@ -131,6 +131,9 @@ int ff_ac3_bit_alloc_calc_mask(AC3BitAllocParameters *s, int16_t *band_psd,
int band_start, band_end, begin, end1;
int lowcomp, fastleak, slowleak;
+ if (end <= 0)
+ return AVERROR_INVALIDDATA;
+
/* excitation function */
band_start = ff_ac3_bin_to_band_tab[start];
band_end = ff_ac3_bin_to_band_tab[end-1] + 1;