libavutil/aes.c:197: error: Buffer Overrun L2
  Offset: [0, 15] Size: 4.

libavutil/aes.c:196:17: <Offset trace>
194.     }else{
195.         for(i=0; i<(rounds+1)>>1; i++){
196.             for(j=0; j<16; j++)
                     ^
197.                 FFSWAP(int, a->round_key[i].u8[j], a->round_key[rounds-i].u8[j]);
198.         }

libavutil/aes.c:196:17: Assignment
194.     }else{
195.         for(i=0; i<(rounds+1)>>1; i++){
196.             for(j=0; j<16; j++)
                     ^
197.                 FFSWAP(int, a->round_key[i].u8[j], a->round_key[rounds-i].u8[j]);
198.         }

libavutil/aes.c:135:1: <Length trace>
133. 
134. // this is based on the reference AES code by Paulo Barreto and Vincent Rijmen
135. int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) {
     ^
136.     int i, j, t, rconpointer = 0;
137.     uint8_t tk[8][4];

libavutil/aes.c:135:1: Array declaration
133. 
134. // this is based on the reference AES code by Paulo Barreto and Vincent Rijmen
135. int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) {
     ^
136.     int i, j, t, rconpointer = 0;
137.     uint8_t tk[8][4];

libavutil/aes.c:197:17: Array access: Offset: [0, 15] Size: 4
195.         for(i=0; i<(rounds+1)>>1; i++){
196.             for(j=0; j<16; j++)
197.                 FFSWAP(int, a->round_key[i].u8[j], a->round_key[rounds-i].u8[j]);
                     ^
198.         }
199.     }

int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) {
    int i, j, t, rconpointer = 0;
    uint8_t tk[8][4];
    int KC= key_bits>>5;
    int rounds= KC + 6;
    uint8_t  log8[256];
    uint8_t alog8[512];
    if(!enc_multbl[0][sizeof(enc_multbl)/sizeof(enc_multbl[0][0])-1]){
        j=1;
        for(i=0; i<255; i++){
            alog8[i]=
            alog8[i+255]= j;
            log8[j]= i;
            j^= j+j;
            if(j>255) j^= 0x11B;
        }
        for(i=0; i<256; i++){
            j= i ? alog8[255-log8[i]] : 0;
            j ^= (j<<1) ^ (j<<2) ^ (j<<3) ^ (j<<4);
            j = (j ^ (j>>8) ^ 99) & 255;
            inv_sbox[j]= i;
            sbox    [i]= j;
        }
        init_multbl2(dec_multbl[0], (const int[4]){0xe, 0x9, 0xd, 0xb}, log8, alog8, inv_sbox);
        init_multbl2(enc_multbl[0], (const int[4]){0x2, 0x1, 0x1, 0x3}, log8, alog8, sbox);
    }
    if(key_bits!=128 && key_bits!=192 && key_bits!=256)
        return -1;
    a->rounds= rounds;
    memcpy(tk, key, KC*4);
    for(t= 0; t < (rounds+1)*16;) {
        memcpy(a->round_key[0].u8+t, tk, KC*4);
        t+= KC*4;
        for(i = 0; i < 4; i++)
            tk[0][i] ^= sbox[tk[KC-1][(i+1)&3]];
        tk[0][0] ^= rcon[rconpointer++];
        for(j = 1; j < KC; j++){
            if(KC != 8 || j != KC>>1)
                for(i = 0; i < 4; i++) tk[j][i] ^=      tk[j-1][i];
            else
                for(i = 0; i < 4; i++) tk[j][i] ^= sbox[tk[j-1][i]];
        }
    }
    if(decrypt){
        for(i=1; i<rounds; i++){
            av_aes_block tmp[3];
            memcpy(&tmp[2], &a->round_key[i], 16);
            subshift(&tmp[1], 0, sbox);
            mix(tmp, dec_multbl, 1, 3);
            memcpy(&a->round_key[i], &tmp[0], 16);
        }
    }else{
        for(i=0; i<(rounds+1)>>1; i++){
            for(j=0; j<16; j++)
                FFSWAP(int, a->round_key[i].u8[j], a->round_key[rounds-i].u8[j]);
        }
    }
    return 0;
}
['int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) {\n    int i, j, t, rconpointer = 0;\n    uint8_t tk[8][4];\n    int KC= key_bits>>5;\n    int rounds= KC + 6;\n    uint8_t  log8[256];\n    uint8_t alog8[512];\n    if(!enc_multbl[0][sizeof(enc_multbl)/sizeof(enc_multbl[0][0])-1]){\n        j=1;\n        for(i=0; i<255; i++){\n            alog8[i]=\n            alog8[i+255]= j;\n            log8[j]= i;\n            j^= j+j;\n            if(j>255) j^= 0x11B;\n        }\n        for(i=0; i<256; i++){\n            j= i ? alog8[255-log8[i]] : 0;\n            j ^= (j<<1) ^ (j<<2) ^ (j<<3) ^ (j<<4);\n            j = (j ^ (j>>8) ^ 99) & 255;\n            inv_sbox[j]= i;\n            sbox    [i]= j;\n        }\n        init_multbl2(dec_multbl[0], (const int[4]){0xe, 0x9, 0xd, 0xb}, log8, alog8, inv_sbox);\n        init_multbl2(enc_multbl[0], (const int[4]){0x2, 0x1, 0x1, 0x3}, log8, alog8, sbox);\n    }\n    if(key_bits!=128 && key_bits!=192 && key_bits!=256)\n        return -1;\n    a->rounds= rounds;\n    memcpy(tk, key, KC*4);\n    for(t= 0; t < (rounds+1)*16;) {\n        memcpy(a->round_key[0].u8+t, tk, KC*4);\n        t+= KC*4;\n        for(i = 0; i < 4; i++)\n            tk[0][i] ^= sbox[tk[KC-1][(i+1)&3]];\n        tk[0][0] ^= rcon[rconpointer++];\n        for(j = 1; j < KC; j++){\n            if(KC != 8 || j != KC>>1)\n                for(i = 0; i < 4; i++) tk[j][i] ^=      tk[j-1][i];\n            else\n                for(i = 0; i < 4; i++) tk[j][i] ^= sbox[tk[j-1][i]];\n        }\n    }\n    if(decrypt){\n        for(i=1; i<rounds; i++){\n            av_aes_block tmp[3];\n            memcpy(&tmp[2], &a->round_key[i], 16);\n            subshift(&tmp[1], 0, sbox);\n            mix(tmp, dec_multbl, 1, 3);\n            memcpy(&a->round_key[i], &tmp[0], 16);\n        }\n    }else{\n        for(i=0; i<(rounds+1)>>1; i++){\n            for(j=0; j<16; j++)\n                FFSWAP(int, a->round_key[i].u8[j], a->round_key[rounds-i].u8[j]);\n        }\n    }\n    return 0;\n}']