[FFmpeg-devel] Array bug in aes.c

Rich Felker dalias
Fri Jan 18 04:34:28 CET 2008


On Fri, Jan 18, 2008 at 03:21:16AM +0100, Michael Niedermayer wrote:
> On Thu, Jan 17, 2008 at 02:16:19PM -0800, Mike Melanson wrote:
> > This comes from my blog's comments:
> >   http://multimedia.cx/eggs/up-to-date-gcc/#comment-92872
> > 
> > ================
> > Well, at least one of those warnings is an actual bug:
> > /tmp/fate/source/libavutil/aes.c:133: warning: array subscript is above
> > array bounds
> > 
> > In aes.c:133:
> > if(!enc_multbl[0][sizeof(enc_multbl)/sizeof(enc_multbl[0][0])-1]){
> > 
> 
> > I take it this was meant:
> > if(!enc_multbl[0][sizeof(enc_multbl[0])/sizeof(enc_multbl[0][0])-1]){
> 
> no, this would then be an actual bug
> 
> how does one disable these warnings?

The problem is that gcc is wrongly enforcing array subscript bounds
for each dimension of the array rather than for the array as a whole.

Arguably it would be better anyway (more expressive) to use:

if(!enc_multbl[sizeof(enc_multbl)/sizeof(enc_multbl[0])-1][sizeof(enc_multbl[0])/sizeof(enc_multbl[0][0])-1]){

but both are ugly to read. Using a preprocessor macro for the max
values in each dimension would make the code a lot more legible, IMO.

Rich




More information about the ffmpeg-devel mailing list