[FFmpeg-devel] Array bug in aes.c

Michael Niedermayer michaelni
Fri Jan 18 05:08:35 CET 2008


On Thu, Jan 17, 2008 at 10:34:28PM -0500, Rich Felker wrote:
> 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.

why not

if(!(&enc_multbl)[1][0][-1]){

?

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Breaking DRM is a little like attempting to break through a door even
though the window is wide open and the only thing in the house is a bunch
of things you dont want and which you would get tomorrow for free anyway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080118/1b2fade1/attachment.pgp>



More information about the ffmpeg-devel mailing list