summaryrefslogtreecommitdiff
path: root/libavformat/mov.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-12-23 18:09:58 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-12-25 14:55:28 +0100
commit2a5fb0b13e218e6864825f8ff4ea7c6be21fb50b (patch)
tree0c17ffecb7f3ae27ed97fc6ea60c15fbd6eed92e /libavformat/mov.c
parent0d944ee34349805b29f9c91b15c8009d16df01ab (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.c6
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;
}