libavutil/des.c:294: error: Buffer Overrun L2
  Offset: [2, 17] (⇐ 2 + [0, 15]) Size: 3 by call to `gen_roundkeys`.

libavutil/des.c:287:1: Parameter `d->round_keys[*]`
285. }
286. 
287. int av_des_init(AVDES *d, const uint8_t *key, int key_bits, int decrypt) {
     ^
288.     if (key_bits != 64 && key_bits != 192)
289.         return -1;

libavutil/des.c:294:9: Call
292.     if (d->triple_des) {
293.         gen_roundkeys(d->round_keys[1], AV_RB64(key +  8));
294.         gen_roundkeys(d->round_keys[2], AV_RB64(key + 16));
             ^
295.     }
296.     return 0;

libavutil/des.c:261:10: <Offset trace>
259.     uint64_t CDn = shuffle(key, PC1_shuffle, sizeof(PC1_shuffle));
260.     // generate round keys
261.     for (i = 0; i < 16; i++) {
              ^
262.         CDn = key_shift_left(CDn);
263.         if (i > 1 && i != 8 && i != 15)

libavutil/des.c:261:10: Assignment
  259.     uint64_t CDn = shuffle(key, PC1_shuffle, sizeof(PC1_shuffle));
  260.     // generate round keys
  261.     for (i = 0; i < 16; i++) {
                ^
  262.         CDn = key_shift_left(CDn);
  263.         if (i > 1 && i != 8 && i != 15)

libavutil/des.c:256:1: <Length trace>
254. }
255. 
256. static void gen_roundkeys(uint64_t K[16], uint64_t key) {
     ^
257.     int i;
258.     // discard parity bits from key and shuffle it into C and D parts

libavutil/des.c:256:1: Parameter `*K`
  254. }
  255. 
  256. static void gen_roundkeys(uint64_t K[16], uint64_t key) {
       ^
  257.     int i;
  258.     // discard parity bits from key and shuffle it into C and D parts

libavutil/des.c:265:9: Array access: Offset: [2, 17] (⇐ 2 + [0, 15]) Size: 3 by call to `gen_roundkeys` 
  263.         if (i > 1 && i != 8 && i != 15)
  264.             CDn = key_shift_left(CDn);
  265.         K[i] = shuffle(CDn, PC2_shuffle, sizeof(PC2_shuffle));
               ^
  266.     }
  267. }

static void gen_roundkeys(uint64_t K[16], uint64_t key) {
    int i;
    uint64_t CDn = shuffle(key, PC1_shuffle, sizeof(PC1_shuffle));
    for (i = 0; i < 16; i++) {
        CDn = key_shift_left(CDn);
        if (i > 1 && i != 8 && i != 15)
            CDn = key_shift_left(CDn);
        K[i] = shuffle(CDn, PC2_shuffle, sizeof(PC2_shuffle));
    }
}
['int av_des_init(AVDES *d, const uint8_t *key, int key_bits, int decrypt) {\n    if (key_bits != 64 && key_bits != 192)\n        return -1;\n    d->triple_des = key_bits > 64;\n    gen_roundkeys(d->round_keys[0], AV_RB64(key));\n    if (d->triple_des) {\n        gen_roundkeys(d->round_keys[1], AV_RB64(key +  8));\n        gen_roundkeys(d->round_keys[2], AV_RB64(key + 16));\n    }\n    return 0;\n}', 'static void gen_roundkeys(uint64_t K[16], uint64_t key) {\n    int i;\n    uint64_t CDn = shuffle(key, PC1_shuffle, sizeof(PC1_shuffle));\n    for (i = 0; i < 16; i++) {\n        CDn = key_shift_left(CDn);\n        if (i > 1 && i != 8 && i != 15)\n            CDn = key_shift_left(CDn);\n        K[i] = shuffle(CDn, PC2_shuffle, sizeof(PC2_shuffle));\n    }\n}']