From 0ea55365b91c250012ac8a80be5f0ebacd4fd55d Mon Sep 17 00:00:00 2001 From: Peter Ross Date: Sun, 14 Oct 2012 21:50:09 +1100 Subject: [PATCH] ansi: by design nb_args may exceed the size of the args array, so guard accordingly Signed-off-by: Michael Niedermayer --- libavcodec/ansi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/ansi.c b/libavcodec/ansi.c index 6bfd08ce3e..d84b395301 100644 --- a/libavcodec/ansi.c +++ b/libavcodec/ansi.c @@ -299,7 +299,7 @@ static int execute_code(AVCodecContext * avctx, int c) s->attributes |= 1 << (m - 1); } else if (m >= 30 && m <= 37) { s->fg = ansi_to_cga[m - 30]; - } else if (m == 38 && i + 2 < s->nb_args && s->args[i + 1] == 5 && s->args[i + 2] < 256) { + } else if (m == 38 && i + 2 < FFMIN(s->nb_args, MAX_NB_ARGS) && s->args[i + 1] == 5 && s->args[i + 2] < 256) { int index = s->args[i + 2]; s->fg = index < 16 ? ansi_to_cga[index] : index; i += 2; @@ -307,7 +307,7 @@ static int execute_code(AVCodecContext * avctx, int c) s->fg = ansi_to_cga[DEFAULT_FG_COLOR]; } else if (m >= 40 && m <= 47) { s->bg = ansi_to_cga[m - 40]; - } else if (m == 48 && i + 2 < s->nb_args && s->args[i + 1] == 5 && s->args[i + 2] < 256) { + } else if (m == 48 && i + 2 < FFMIN(s->nb_args, MAX_NB_ARGS) && s->args[i + 1] == 5 && s->args[i + 2] < 256) { int index = s->args[i + 2]; s->bg = index < 16 ? ansi_to_cga[index] : index; i += 2;