[FFmpeg-cvslog] Check if an mp3 header is using a reserved sample rate.

Justin Ruggles git at videolan.org
Fri Aug 8 13:28:42 CEST 2014


ffmpeg | branch: release/1.1 | Justin Ruggles <justin.ruggles at gmail.com> | Sun Jun 22 13:11:32 2014 -0400| [7997acee0542f6e0bb9ea42ff783f80b70878a2f] | committer: Luca Barbato

Check if an mp3 header is using a reserved sample rate.

Fixes an invalid read past the end of avpriv_mpa_freq_tab.
Fixes divide-by-zero due to sample_rate being set to 0.

Bug-Id: 705

CC:libav-stable at libav.org

Conflicts:
	libavcodec/mpegaudiodecheader.c

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7997acee0542f6e0bb9ea42ff783f80b70878a2f
---

 libavcodec/mpegaudiodecheader.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavcodec/mpegaudiodecheader.c b/libavcodec/mpegaudiodecheader.c
index f8fc833..e789d46 100644
--- a/libavcodec/mpegaudiodecheader.c
+++ b/libavcodec/mpegaudiodecheader.c
@@ -25,6 +25,8 @@
  */
 
 //#define DEBUG
+#include "libavutil/common.h"
+
 #include "avcodec.h"
 #include "mpegaudio.h"
 #include "mpegaudiodata.h"
@@ -46,6 +48,8 @@ int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header)
     s->layer = 4 - ((header >> 17) & 3);
     /* extract frequency */
     sample_rate_index = (header >> 10) & 3;
+    if (sample_rate_index >= FF_ARRAY_ELEMS(avpriv_mpa_freq_tab))
+        sample_rate_index = 0;
     sample_rate = avpriv_mpa_freq_tab[sample_rate_index] >> (s->lsf + mpeg25);
     sample_rate_index += 3 * (s->lsf + mpeg25);
     s->sample_rate_index = sample_rate_index;



More information about the ffmpeg-cvslog mailing list