Compiling ffmpeg I'v got this message:
libavcodec/atrac3plus.c:1784:46: warning: array subscript is below array bounds 
[-Warray-bounds]

It's because compiler discards its suggestion about "ctx->num_quant_units" (1<=num_quant_units<=32) when 
"ctx" passed to "decode_quant_wordlen(gb, ctx, num_channels, avctx)" and anything can happen to fields of 
"ctx".

Warning disappears if we place accessing to "trac3p_qu_to_subband[ctx->num_quant_units - 
1]" before calling "decode_quant_wordlen(gb, ctx, num_channels, avctx)". Patch is in 
attachment.

See also ticket #4343 (there patch is wrong!)
From 42f85eb3325f18ad46796d76da2760300a308a7e Mon Sep 17 00:00:00 2001
From: Ilya Gordeev <mirr...@rambler.ru>
Date: Thu, 23 Apr 2015 01:45:03 +0500
Subject: [PATCH] avformat/atrac3plus: fix compilation warning

Signed-off-by: Ilya Gordeev <mirr...@rambler.ru>
---
 libavcodec/atrac3plus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/atrac3plus.c b/libavcodec/atrac3plus.c
index f998a7f..32350ac 100644
--- a/libavcodec/atrac3plus.c
+++ b/libavcodec/atrac3plus.c
@@ -1775,13 +1775,13 @@ int ff_atrac3p_decode_channel_unit(GetBitContext *gb, Atrac3pChanUnitCtx *ctx,
         return AVERROR_INVALIDDATA;
     }
 
+    ctx->num_subbands = atrac3p_qu_to_subband[ctx->num_quant_units - 1] + 1;
     ctx->mute_flag = get_bits1(gb);
 
     /* decode various sound parameters */
     if ((ret = decode_quant_wordlen(gb, ctx, num_channels, avctx)) < 0)
         return ret;
 
-    ctx->num_subbands       = atrac3p_qu_to_subband[ctx->num_quant_units - 1] + 1;
     ctx->num_coded_subbands = ctx->used_quant_units
                               ? atrac3p_qu_to_subband[ctx->used_quant_units - 1] + 1
                               : 0;
-- 
2.3.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to