]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
crypto: Reduce the size of sha512_compress() stack frame
authorIlan Peer <ilan.peer@intel.com>
Wed, 22 Aug 2018 16:49:08 +0000 (19:49 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 2 Jan 2019 14:31:19 +0000 (16:31 +0200)
The function sha512_compress() has a local variable that consumes 640
bytes. This is very heavy for embedded devices that have limited stack
resources. Handle this by replacing the static allocation with a dynamic
one.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
src/crypto/sha512-internal.c

index 76c4fe750b65f977be953c08206b684c485e7b62..c0263941c123c3b0358c6c17b693ac59f0fa46e3 100644 (file)
@@ -109,9 +109,14 @@ static const u64 K[80] = {
 /* compress 1024-bits */
 static int sha512_compress(struct sha512_state *md, unsigned char *buf)
 {
-       u64 S[8], W[80], t0, t1;
+       u64 S[8], t0, t1;
+       u64 *W;
        int i;
 
+       W = os_malloc(80 * sizeof(u64));
+       if (!W)
+               return -1;
+
        /* copy state into S */
        for (i = 0; i < 8; i++) {
                S[i] = md->state[i];
@@ -146,6 +151,7 @@ static int sha512_compress(struct sha512_state *md, unsigned char *buf)
                md->state[i] = md->state[i] + S[i];
        }
 
+       os_free(W);
        return 0;
 }