Commit 2c635fab authored by Michael Niedermayer's avatar Michael Niedermayer

avformat/isom: check avio_read() result

Fixes use of uninitialized memory
Fixes: msan_uninit-mem_7f7aa4151661_4885_dmbts3.ts
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent b797a00f
...@@ -438,6 +438,7 @@ static const AVCodecTag mp4_audio_types[] = { ...@@ -438,6 +438,7 @@ static const AVCodecTag mp4_audio_types[] = {
int ff_mp4_read_dec_config_descr(AVFormatContext *fc, AVStream *st, AVIOContext *pb) int ff_mp4_read_dec_config_descr(AVFormatContext *fc, AVStream *st, AVIOContext *pb)
{ {
int len, tag; int len, tag;
int ret;
int object_type_id = avio_r8(pb); int object_type_id = avio_r8(pb);
avio_r8(pb); /* stream type */ avio_r8(pb); /* stream type */
avio_rb24(pb); /* buffer size db */ avio_rb24(pb); /* buffer size db */
...@@ -459,7 +460,8 @@ int ff_mp4_read_dec_config_descr(AVFormatContext *fc, AVStream *st, AVIOContext ...@@ -459,7 +460,8 @@ int ff_mp4_read_dec_config_descr(AVFormatContext *fc, AVStream *st, AVIOContext
av_free(st->codec->extradata); av_free(st->codec->extradata);
if (ff_alloc_extradata(st->codec, len)) if (ff_alloc_extradata(st->codec, len))
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
avio_read(pb, st->codec->extradata, len); if ((ret = avio_read(pb, st->codec->extradata, len)) != len)
return ret < 0 ? ret : AVERROR_INVALIDDATA;
if (st->codec->codec_id == AV_CODEC_ID_AAC) { if (st->codec->codec_id == AV_CODEC_ID_AAC) {
MPEG4AudioConfig cfg = {0}; MPEG4AudioConfig cfg = {0};
avpriv_mpeg4audio_get_config(&cfg, st->codec->extradata, avpriv_mpeg4audio_get_config(&cfg, st->codec->extradata,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment