From 3d41595ed490b305ee3c2c99dbadf4aae1c88bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moise=CC=81s=20Guimara=CC=83es?= Date: Fri, 29 May 2015 12:02:06 -0300 Subject: [PATCH] internal.c: refactoring TimingPadVerify to reduce stack usage: --- variable dummy replaced with ssl object (~250 bytes saved) internal.c: refactoring VerifyMac to reduce stack usage: --- variable dummy replaced with ssl object (~250 bytes saved) --- src/internal.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/internal.c b/src/internal.c index d69cc114b..d31ba9fcf 100644 --- a/src/internal.c +++ b/src/internal.c @@ -6062,11 +6062,10 @@ static int TimingPadVerify(WOLFSSL* ssl, const byte* input, int padLen, int t, int pLen, int content) { byte verify[MAX_DIGEST_SIZE]; - byte dummy[MAX_PAD_SIZE]; + byte dmy[sizeof(WOLFSSL) >= MAX_PAD_SIZE ? 1 : MAX_PAD_SIZE] = {0}; + byte* dummy = sizeof(dmy) < MAX_PAD_SIZE ? (byte*) ssl : dmy; int ret = 0; - XMEMSET(dummy, 1, sizeof(dummy)); - if ( (t + padLen + 1) > pLen) { WOLFSSL_MSG("Plain Len not long enough for pad/mac"); PadCheck(dummy, (byte)padLen, MAX_PAD_SIZE); @@ -6300,9 +6299,8 @@ static INLINE int VerifyMac(WOLFSSL* ssl, const byte* input, word32 msgSz, else { /* sslv3, some implementations have bad padding, but don't * allow bad read */ int badPadLen = 0; - byte dummy[MAX_PAD_SIZE]; - - XMEMSET(dummy, 1, sizeof(dummy)); + byte dmy[sizeof(WOLFSSL) >= MAX_PAD_SIZE ? 1 : MAX_PAD_SIZE] = {0}; + byte* dummy = sizeof(dmy) < MAX_PAD_SIZE ? (byte*) ssl : dmy; if (pad > (msgSz - digestSz - 1)) { WOLFSSL_MSG("Plain Len not long enough for pad/mac");