summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2020-10-21 23:05:41 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2020-10-30 17:49:51 +0100
commitb848baef0dc42d97a5c1ab975cc8994a265b88ae (patch)
treeef17b53f0402eb5173be8ba972a7d971fb23088d /libavformat
parent3588e2e6b05ba92f0907e9ffe263c2e65d53e346 (diff)
downloadffmpeg-b848baef0dc42d97a5c1ab975cc8994a265b88ae.tar.gz
avformat/vividas: better check of current_sb_entry
This is the simplest fix for the problem, it is possible to instead check this when the variables are set and propagate errors and then fail earlier Fixes: out of array access Fixes: 26490/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-5723367078100992 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/vividas.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavformat/vividas.c b/libavformat/vividas.c
index 6e93d96aef..83d0ed1167 100644
--- a/libavformat/vividas.c
+++ b/libavformat/vividas.c
@@ -673,6 +673,10 @@ static int viv_read_packet(AVFormatContext *s,
if (!pb)
return AVERROR(EIO);
off = avio_tell(pb);
+
+ if (viv->current_sb_entry >= viv->n_sb_entries)
+ return AVERROR_INVALIDDATA;
+
off += viv->sb_entries[viv->current_sb_entry].size;
if (viv->sb_entries[viv->current_sb_entry].flag == 0) {