diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-12-23 18:09:58 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-12-25 14:55:28 +0100 |
commit | 2a5fb0b13e218e6864825f8ff4ea7c6be21fb50b (patch) | |
tree | 0c17ffecb7f3ae27ed97fc6ea60c15fbd6eed92e /libavformat/mov.c | |
parent | 0d944ee34349805b29f9c91b15c8009d16df01ab (diff) |
avformat/mov: check avio_read return in mov_read_dvc1()
Fixes use of uninitialized memory
Fixes: msan_uninit-mem_7f46d5199ee1_9456_vc1-wmapro.ism
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/mov.c')
-rw-r--r-- | libavformat/mov.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c index 18bdd6adca..9049a3c251 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1133,6 +1133,7 @@ static int mov_read_dvc1(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; uint8_t profile_level; + int ret; if (c->fc->nb_streams < 1) return 0; @@ -1149,7 +1150,10 @@ static int mov_read_dvc1(MOVContext *c, AVIOContext *pb, MOVAtom atom) if (ff_alloc_extradata(st->codec, atom.size - 7)) return AVERROR(ENOMEM); avio_seek(pb, 6, SEEK_CUR); - avio_read(pb, st->codec->extradata, st->codec->extradata_size); + ret = avio_read(pb, st->codec->extradata, st->codec->extradata_size); + if (ret != st->codec->extradata_size) + return ret < 0 ? ret : AVERROR_INVALIDDATA; + return 0; } |