From 60945cc7023ed9b94235f3f43341a607eec4fb5c Mon Sep 17 00:00:00 2001 From: divverent Date: Tue, 25 Oct 2011 11:14:32 +0000 Subject: [PATCH] HMAC: remove static vars git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11473 d7cf8633-e32d-0410-b094-e92efae38249 --- hmac.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/hmac.c b/hmac.c index af0d1196..a422c699 100644 --- a/hmac.c +++ b/hmac.c @@ -8,10 +8,10 @@ qboolean hmac( const unsigned char *key, int k ) { - static unsigned char hashbuf[32]; - static unsigned char k_xor_ipad[128]; - static unsigned char k_xor_opad[128]; - static unsigned char catbuf[65600]; // 65535 bytes max quake packet size + 64 for the hash + unsigned char hashbuf[32]; + unsigned char k_xor_ipad[128]; + unsigned char k_xor_opad[128]; + unsigned char *catbuf; int i; if(sizeof(hashbuf) < (size_t) hlen) @@ -20,10 +20,8 @@ qboolean hmac( return false; if(sizeof(k_xor_ipad) < (size_t) hlen) return false; - if(sizeof(catbuf) < (size_t) hblock + (size_t) hlen) - return false; - if(sizeof(catbuf) < (size_t) hblock + (size_t) n) - return false; + + catbuf = Mem_Alloc(tempmempool, (size_t) hblock + max((size_t) hlen, (size_t) n)); if(k > hblock) { @@ -56,5 +54,8 @@ qboolean hmac( memcpy(catbuf, k_xor_opad, hblock); memcpy(catbuf + hblock, hashbuf, hlen); hfunc(out, catbuf, hblock + hlen); + + Mem_Free(catbuf); + return true; } -- 2.39.2