diff --git a/libavutil/tests/des.c b/libavutil/tests/des.c index ed04fad519..309be29473 100644 --- a/libavutil/tests/des.c +++ b/libavutil/tests/des.c @@ -67,19 +67,22 @@ static int run_test(int cbc, int decrypt) } } +union word_byte { + uint64_t word; + uint8_t byte[8]; +}; + int main(void) { AVDES d; int i; - uint64_t key[3]; - uint64_t data; - uint64_t ct; + union word_byte key[3], data, ct; uint64_t roundkeys[16]; srand(av_gettime()); - key[0] = AV_RB64(test_key); - data = AV_RB64(plain); - gen_roundkeys(roundkeys, key[0]); - if (des_encdec(data, roundkeys, 0) != AV_RB64(crypt)) { + key[0].word = AV_RB64(test_key); + data.word = AV_RB64(plain); + gen_roundkeys(roundkeys, key[0].word); + if (des_encdec(data.word, roundkeys, 0) != AV_RB64(crypt)) { printf("Test 1 failed\n"); return 1; } @@ -94,15 +97,15 @@ int main(void) return 1; } for (i = 0; i < 1000; i++) { - key[0] = rand64(); - key[1] = rand64(); - key[2] = rand64(); - data = rand64(); - av_des_init(&d, (uint8_t *) key, 192, 0); - av_des_crypt(&d, (uint8_t *) &ct, (uint8_t *) &data, 1, NULL, 0); - av_des_init(&d, (uint8_t *) key, 192, 1); - av_des_crypt(&d, (uint8_t *) &ct, (uint8_t *) &ct, 1, NULL, 1); - if (ct != data) { + key[0].word = rand64(); + key[1].word = rand64(); + key[2].word = rand64(); + data.word = rand64(); + av_des_init(&d, key[0].byte, 192, 0); + av_des_crypt(&d, ct.byte, data.byte, 1, NULL, 0); + av_des_init(&d, key[0].byte, 192, 1); + av_des_crypt(&d, ct.byte, ct.byte, 1, NULL, 1); + if (ct.word != data.word) { printf("Test 2 failed\n"); return 1; }