diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-12-16 15:03:39 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-12-16 15:04:49 +0100 |
commit | a8d702859b8bd17978fb5d8cb1d6acc363031e80 (patch) | |
tree | 2b6dd52083155bef82456ad6132cafb66e63707b | |
parent | e2742d6ad69595fd2af36adf0883e37701307f52 (diff) | |
download | ffmpeg-a8d702859b8bd17978fb5d8cb1d6acc363031e80.tar.gz |
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@gmx.at>
-rw-r--r-- | libavcodec/mlpdec.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index aab82939ab..88cafc2fcf 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) |