From 0fdae6f5211beabfaa7bc00144569d7ff2a689d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juho=20V=C3=A4h=C3=A4-Herttua?= Date: Thu, 10 Nov 2011 15:50:51 +0200 Subject: [PATCH] Cleanup the AES decryption code a bit --- hairtunes.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/hairtunes.c b/hairtunes.c index 4b54915a..21577820 100644 --- a/hairtunes.c +++ b/hairtunes.c @@ -340,12 +340,10 @@ void alac_decode(short *dest, char *buf, int len) { assert(len<=MAX_PACKET); unsigned char iv[16]; - int i; + int aeslen = len & ~0xf; memcpy(iv, aesiv, sizeof(iv)); - for (i=0; i+16<=len; i += 16) - AES_cbc_encrypt((unsigned char*)buf+i, packet+i, 0x10, &aes, iv, AES_DECRYPT); - if (len & 0xf) - memcpy(packet+i, buf+i, len & 0xf); + AES_cbc_encrypt((unsigned char*)buf, packet, aeslen, &aes, iv, AES_DECRYPT); + memcpy(packet+aeslen, buf+aeslen, len-aeslen); int outsize;