[FFmpeg-devel] [PATCH] aes: fix array index out of bounds warnings
Måns Rullgård
mans
Sat Jun 26 10:12:52 CEST 2010
Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
> On Sat, Jun 26, 2010 at 12:54:21AM +0100, Mans Rullgard wrote:
>> ---
>> libavutil/aes.c | 4 ++--
>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavutil/aes.c b/libavutil/aes.c
>> index d3a271c..763f856 100644
>> --- a/libavutil/aes.c
>> +++ b/libavutil/aes.c
>> @@ -130,7 +130,7 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) {
>> uint8_t log8[256];
>> uint8_t alog8[512];
>>
>> - if(!enc_multbl[0][sizeof(enc_multbl)/sizeof(enc_multbl[0][0])-1]){
>> + if(!enc_multbl[FF_ARRAY_ELEMS(enc_multbl)-1][FF_ARRAY_ELEMS(enc_multbl[0])-1]){
>> j=1;
>> for(i=0; i<255; i++){
>> alog8[i]=
>> @@ -184,7 +184,7 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) {
>> }else{
>> for(i=0; i<(rounds+1)>>1; i++){
>> for(j=0; j<16; j++)
>> - FFSWAP(int, a->round_key[i][0][j], a->round_key[rounds-i][0][j]);
>> + FFSWAP(int, a->round_key[i][j>>2][j&3], a->round_key[rounds-i][j>>2][j&3]);
>
> If the compilers were any good this would be the same,
The existing code has UNDEFINED BEHAVIOUR from indexing outside an
array. Talk about same has no meaning.
> but last time this was checked IIRC produced quite a lot slower
> code.
And that matters in an init function? I also can't find anyone ever
claiming to have actually checked it. All I do find is Michael
vehemently rejecting the notion of the out-of-array indexing being a
bug.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list