|
|
@@ -380,6 +380,8 @@ static int fic_decode_frame(AVCodecContext *avctx, void *data, |
|
|
slice_h = FFALIGN(avctx->height - ctx->slice_h * (nslices - 1), 16); |
|
|
slice_h = FFALIGN(avctx->height - ctx->slice_h * (nslices - 1), 16); |
|
|
} else { |
|
|
} else { |
|
|
slice_size = AV_RB32(src + tsize + FIC_HEADER_SIZE + slice * 4 + 4); |
|
|
slice_size = AV_RB32(src + tsize + FIC_HEADER_SIZE + slice * 4 + 4); |
|
|
|
|
|
if (slice_size < slice_off) |
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (slice_size < slice_off || slice_size > msize) |
|
|
if (slice_size < slice_off || slice_size > msize) |
|
|
|