aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil/aes.c
diff options
context:
space:
mode:
authorAlex Converse <alex.converse@gmail.com>2011-11-03 18:13:57 -0700
committerAlex Converse <alex.converse@gmail.com>2011-11-10 10:15:59 -0800
commitc9e5ac3380c8a8cebea222dbb3c3d95a9a93ee17 (patch)
tree09094f2543ef961c35ebf5dff8e3cda20d7c010d /libavutil/aes.c
parent88b2436911ea9d629d0bc380afc6570eecef84bd (diff)
downloadffmpeg-c9e5ac3380c8a8cebea222dbb3c3d95a9a93ee17.tar.gz
aes: Avoid illegal read and don't generate more key than we use.
Diffstat (limited to 'libavutil/aes.c')
-rw-r--r--libavutil/aes.c8
1 files changed, 4 insertions, 4 deletions
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) {