summaryrefslogtreecommitdiff
path: root/libavcodec/scpr.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2017-05-11 15:29:31 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2017-05-11 15:51:08 +0200
commit7ac5067146613997bb38442cb022d7f41321a706 (patch)
tree6b06c18fc7d8041c943345236cfb1fb64e399374 /libavcodec/scpr.c
parent8a69f2602fea04b7ebae2db16f2581e8ff5ee0cd (diff)
downloadffmpeg-7ac5067146613997bb38442cb022d7f41321a706.tar.gz
avcodec/scpr: Check y in first line loop in decompress_i()
Fixes: out of array access Fixes: 1478/clusterfuzz-testcase-minimized-5285486908145664 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/scpr.c')
-rw-r--r--libavcodec/scpr.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/scpr.c b/libavcodec/scpr.c
index ba1f65f2e9..b87c047ab6 100644
--- a/libavcodec/scpr.c
+++ b/libavcodec/scpr.c
@@ -331,6 +331,9 @@ static int decompress_i(AVCodecContext *avctx, uint32_t *dst, int linesize)
clr = (b << 16) + (g << 8) + r;
k += run;
while (run-- > 0) {
+ if (y >= avctx->height)
+ return AVERROR_INVALIDDATA;
+
dst[y * linesize + x] = clr;
lx = x;
ly = y;