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 <ilan.peer@intel.com>
master
Ilan Peer 6 years ago committed by Jouni Malinen
parent d6e7d4dede
commit 6ec02d77d6

@ -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;
}

Loading…
Cancel
Save