]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/mpegaudiodecheader.c
mpegvideo_enc: Check AVCodecContext allocation
[ffmpeg] / libavcodec / mpegaudiodecheader.c
index f8fc833124c4e2bd0fc3e546bfebc0464c17447f..8efcbe4dabe9f1d04bc324dcc28541be0c605032 100644 (file)
@@ -24,7 +24,8 @@
  * MPEG Audio header decoder.
  */
 
-//#define DEBUG
+#include "libavutil/common.h"
+
 #include "avcodec.h"
 #include "mpegaudio.h"
 #include "mpegaudiodata.h"
@@ -46,6 +47,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;
@@ -131,7 +134,8 @@ int avpriv_mpa_decode_header(AVCodecContext *avctx, uint32_t head, int *sample_r
         break;
     default:
     case 3:
-        avctx->codec_id = AV_CODEC_ID_MP3;
+        if (avctx->codec_id != AV_CODEC_ID_MP3ADU)
+            avctx->codec_id = AV_CODEC_ID_MP3;
         if (s->lsf)
             *frame_size = 576;
         else