From 6ec02d77d640ec2a1a74ef239e14203e8c735b83 Mon Sep 17 00:00:00 2001 From: Ilan Peer Date: Wed, 22 Aug 2018 19:49:08 +0300 Subject: [PATCH] crypto: Reduce the size of sha512_compress() stack frame 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 --- src/crypto/sha512-internal.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/crypto/sha512-internal.c b/src/crypto/sha512-internal.c index 76c4fe750..c0263941c 100644 --- a/src/crypto/sha512-internal.c +++ b/src/crypto/sha512-internal.c @@ -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; }