[FFmpeg-cvslog] avcodec/mlpdec: check that streamtype matches the codec

Michael Niedermayer git at videolan.org
Mon Dec 16 15:25:32 CET 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Dec 16 15:03:39 2013 +0100| [a8d702859b8bd17978fb5d8cb1d6acc363031e80] | committer: Michael Niedermayer

avcodec/mlpdec: check that streamtype matches the codec

Fixes use of uninitialized memory
Fixes msan_uninit-mem_7f126c8ed1ac_5945_issue1731_nonpublic.mpg
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/mlpdec.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c
index aab8293..88cafc2 100644
--- a/libavcodec/mlpdec.c
+++ b/libavcodec/mlpdec.c
@@ -363,10 +363,22 @@ static int read_major_sync(MLPDecodeContext *m, GetBitContext *gb)
      * substream is Stereo. Subsequent substreams' layouts are indicated in the
      * major sync. */
     if (m->avctx->codec_id == AV_CODEC_ID_MLP) {
+        if (mh.stream_type != 0xbb) {
+            avpriv_request_sample(m->avctx,
+                        "unexpected stream_type %X in MLP",
+                        mh.stream_type);
+            return AVERROR_PATCHWELCOME;
+        }
         if ((substr = (mh.num_substreams > 1)))
             m->substream[0].ch_layout = AV_CH_LAYOUT_STEREO;
         m->substream[substr].ch_layout = mh.channel_layout_mlp;
     } else {
+        if (mh.stream_type != 0xba) {
+            avpriv_request_sample(m->avctx,
+                        "unexpected stream_type %X in !MLP",
+                        mh.stream_type);
+            return AVERROR_PATCHWELCOME;
+        }
         if ((substr = (mh.num_substreams > 1)))
             m->substream[0].ch_layout = AV_CH_LAYOUT_STEREO;
         if (mh.num_substreams > 2)



More information about the ffmpeg-cvslog mailing list