]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/nonce2key/nonce2key.c
FIX: "hf mf hardnested" when "key found" exting the do-while loop doesn't need to...
[proxmark3-svn] / client / nonce2key / nonce2key.c
index 727f241d7d9c7f53f87cb80ebd19fe355a2b1808..638469a47686ccaf382496329fc5c2bf35ebcc00 100644 (file)
@@ -147,9 +147,11 @@ int nonce2key_ex(uint8_t blockno, uint8_t keytype, uint32_t uid, uint32_t nt, ui
        printf("key_count: %d\n", key_count);
        if ( key_count == 0 ){
                free(state);
        printf("key_count: %d\n", key_count);
        if ( key_count == 0 ){
                free(state);
+               state = NULL;
                return 0;
        }
        
                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;
        // 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 +161,17 @@ 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;
                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);
+       state = NULL;
+       return retval;
 }
 
 // 32 bit recover key from 2 nonces
 }
 
 // 32 bit recover key from 2 nonces
Impressum, Datenschutz