From c9e5ac3380c8a8cebea222dbb3c3d95a9a93ee17 Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Thu, 3 Nov 2011 18:13:57 -0700 Subject: aes: Avoid illegal read and don't generate more key than we use. --- libavutil/aes.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libavutil/aes.c') diff --git a/libavutil/aes.c b/libavutil/aes.c index ace317f38a..0301e0395c 100644 --- a/libavutil/aes.c +++ b/libavutil/aes.c @@ -222,11 +222,9 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) a->rounds = rounds; memcpy(tk, key, KC * 4); + memcpy(a->round_key[0].u8, key, KC * 4); - for (t = 0; t < (rounds + 1) * 16;) { - memcpy(a->round_key[0].u8 + t, tk, KC * 4); - t += KC * 4; - + for (t = KC * 4; t < (rounds + 1) * 16; t += KC * 4) { for (i = 0; i < 4; i++) tk[0][i] ^= sbox[tk[KC - 1][(i + 1) & 3]]; tk[0][0] ^= rcon[rconpointer++]; @@ -239,6 +237,8 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) for (i = 0; i < 4; i++) tk[j][i] ^= sbox[tk[j - 1][i]]; } + + memcpy(a->round_key[0].u8 + t, tk, KC * 4); } if (decrypt) { -- cgit v1.2.3