[FFmpeg-cvslog] aes: Avoid illegal read and don't generate more key than we use.

Alex Converse git at videolan.org
Fri Nov 11 02:53:07 CET 2011


ffmpeg | branch: master | Alex Converse <alex.converse at gmail.com> | Thu Nov  3 18:13:57 2011 -0700| [c9e5ac3380c8a8cebea222dbb3c3d95a9a93ee17] | committer: Alex Converse

aes: Avoid illegal read and don't generate more key than we use.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c9e5ac3380c8a8cebea222dbb3c3d95a9a93ee17
---

 libavutil/aes.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavutil/aes.c b/libavutil/aes.c
index ace317f..0301e03 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) {



More information about the ffmpeg-cvslog mailing list