Message ID | 1534956548-8088-7-git-send-email-andrei.otcheretianski@intel.com |
---|---|
State | Accepted |
Headers | show |
Series | crypto: Reduce the size of sha512_compress() stack frame | expand |
On Wed, Aug 22, 2018 at 07:49:08PM +0300, Andrei Otcheretianski wrote: > 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. Thanks, applied.
diff --git a/src/crypto/sha512-internal.c b/src/crypto/sha512-internal.c index 76c4fe7..c026394 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; }