aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-12-18 18:57:27 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-12-18 19:10:46 +0100
commite2324b5b371c613faed33be52b6908da540557d1 (patch)
treedccb7fd85ecb9d98bf1465b15cdfec71987083e5
parentbb97f243baa05aff35c1a1bbc6921b95a0378f5c (diff)
downloadffmpeg-e2324b5b371c613faed33be52b6908da540557d1.tar.gz
avcodec/indeo3: ensure offsets are non negative
Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit 368642361f3a589d7b0c23ea327d988edb434e3f) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/indeo3.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c
index cafed5172b..9fde0fdf6c 100644
--- a/libavcodec/indeo3.c
+++ b/libavcodec/indeo3.c
@@ -982,7 +982,8 @@ static int decode_frame_headers(Indeo3DecodeContext *ctx, AVCodecContext *avctx,
ctx->y_data_size = ends[0] - starts[0];
ctx->v_data_size = ends[1] - starts[1];
ctx->u_data_size = ends[2] - starts[2];
- if (FFMAX3(y_offset, v_offset, u_offset) >= ctx->data_size - 16 ||
+ if (FFMIN3(y_offset, v_offset, u_offset) < 0 ||
+ FFMAX3(y_offset, v_offset, u_offset) >= ctx->data_size - 16 ||
FFMIN3(y_offset, v_offset, u_offset) < gb.buffer - bs_hdr + 16 ||
FFMIN3(ctx->y_data_size, ctx->v_data_size, ctx->u_data_size) <= 0) {
av_log(avctx, AV_LOG_ERROR, "One of the y/u/v offsets is invalid\n");