From 5e14319d2c993ef4530ee2de36ad849abe17ec1c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 29 Oct 2016 22:12:38 +0200 Subject: [PATCH] FIX: several calls to nonce2key/nonce2key_ex has problems with not clearing up memory pointers laying around. Still exists problem which needs to be dealt with. --- client/nonce2key/nonce2key.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/client/nonce2key/nonce2key.c b/client/nonce2key/nonce2key.c index 727f241d..85332900 100644 --- a/client/nonce2key/nonce2key.c +++ b/client/nonce2key/nonce2key.c @@ -150,6 +150,7 @@ int nonce2key_ex(uint8_t blockno, uint8_t keytype, uint32_t uid, uint32_t nt, ui return 0; } + uint8_t retval = 1; // Validate all key candidates with testing each of them with mfCheckKeys uint8_t keyBlock[6] = {0,0,0,0,0,0}; uint64_t key64; @@ -159,13 +160,16 @@ int nonce2key_ex(uint8_t blockno, uint8_t keytype, uint32_t uid, uint32_t nt, ui key64 = 0; if (!mfCheckKeys(blockno, keytype, false, 1, keyBlock, &key64)) { *key = key64; - free(last_keylist); - last_keylist = NULL; - free(state); - return 0; + retval = 0; + goto out; } - } - return 1; + } + +out: + free(last_keylist); + last_keylist = NULL; + free(state); + return retval; } // 32 bit recover key from 2 nonces -- 2.39.2