avcodec/exr: Check col/line for integer overflow

Fixes: signed integer overflow: -2272 + -2147483360 cannot be represented in type 'int'
Fixes: 30009/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EXR_fuzzer-5005660322398208

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer 2021-02-01 21:24:50 +01:00
parent c281d84b20
commit 312bcdbfc1
1 changed files with 5 additions and 0 deletions

View File

@ -1214,6 +1214,11 @@ static int decode_block(AVCodecContext *avctx, void *tdata,
return AVERROR_PATCHWELCOME; return AVERROR_PATCHWELCOME;
} }
if (tile_x && s->tile_attr.xSize + (int64_t)FFMAX(s->xmin, 0) >= INT_MAX / tile_x )
return AVERROR_INVALIDDATA;
if (tile_y && s->tile_attr.ySize + (int64_t)FFMAX(s->ymin, 0) >= INT_MAX / tile_y )
return AVERROR_INVALIDDATA;
line = s->ymin + s->tile_attr.ySize * tile_y; line = s->ymin + s->tile_attr.ySize * tile_y;
col = s->tile_attr.xSize * tile_x; col = s->tile_attr.xSize * tile_x;