From 9dc3c39a95c0d06abfd5524339060c220ba56fba Mon Sep 17 00:00:00 2001 From: Matthias Konrath Date: Wed, 28 Aug 2019 09:45:11 +0200 Subject: [PATCH] Added additional checks to the from load dictionary returned data points. --- client/cmdhfmf.c | 6 +++--- client/cmdlft55xx.c | 11 ++--------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/client/cmdhfmf.c b/client/cmdhfmf.c index 87fa500a8..66aca7421 100644 --- a/client/cmdhfmf.c +++ b/client/cmdhfmf.c @@ -1585,7 +1585,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t key64 = 0; bool calibrate = true; // Attack key storage variables - uint8_t *keyBlock; + uint8_t *keyBlock = NULL; uint16_t key_cnt = 0; sector_t *e_sector; uint8_t sectors_cnt = MIFARE_1K_MAXSECTOR; @@ -1787,9 +1787,9 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { // Load the dictionary if (strlen(filename) != 0) { int res = loadFileDICTIONARY_safe(filename, &keyBlock, 6, &key_cnt); - if (res != PM3_SUCCESS || key_cnt <= 0) { + if (res != PM3_SUCCESS || key_cnt <= 0 || keyBlock == NULL) { PrintAndLogEx(FAILED, "An error occurred while loading the dictionary! (we will use the default keys now)"); - free(keyBlock); // free the memory, just in case an allocation happened + if (keyBlock != NULL) free(keyBlock); goto useDefaultKeys; } } else { diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index 3802beab9..f256a5ee3 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -2128,17 +2128,10 @@ static int CmdT55xxChkPwds(const char *Cmd) { if (use_pwd_file) { uint16_t keycount = 0; - // TODO, a way of reallocating memory if file was larger - keyBlock = calloc(4 * 200, sizeof(uint8_t)); - if (keyBlock == NULL) { - PrintAndLogEx(ERR, "error, cannot allocate memory "); - return PM3_ESOFT; - } - int res = loadFileDICTIONARY_safe(filename, &keyBlock, 4, &keycount); - if (res || keycount == 0) { + if (res || keycount == 0 || keyBlock == NULL) { PrintAndLogEx(WARNING, "No keys found in file"); - free(keyBlock); + if (keyBlock != NULL) free(keyBlock); return PM3_ESOFT; }