From 48a28fa575512b468d1705cfe268b4b6d041ad3a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 Mar 2019 22:05:36 +0100 Subject: [PATCH] fix: mem leaks --- client/cmddata.c | 6 ++---- client/cmdlfhitag.c | 4 ++-- client/cmdsmartcard.c | 6 ++++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/client/cmddata.c b/client/cmddata.c index aa44611ed..072e8a73e 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -1865,11 +1865,9 @@ int Cmdhex2bin(const char *Cmd) { else continue; - //Uses printf instead of PrintAndLog since the latter - // adds linebreaks to each printout - this way was more convenient since we don't have to - // allocate a string and write to that first... + //Uses printf instead of PrintAndLog since the latter adds linebreaks to each printout for (int i = 0 ; i < 4 ; ++i) - PrintAndLogEx(NORMAL, "%d", (x >> (3 - i)) & 1); + printf("%d", (x >> (3 - i)) & 1); } PrintAndLogEx(NORMAL, "\n"); return 0; diff --git a/client/cmdlfhitag.c b/client/cmdlfhitag.c index 5a7d58307..c0d24c0bb 100644 --- a/client/cmdlfhitag.c +++ b/client/cmdlfhitag.c @@ -351,7 +351,7 @@ static void printHitagConfiguration(uint8_t config) { char bits[9]; char *bs = bits; for (uint8_t i = 0 ; i < 8 ; i++) { - snprintf(bs, sizeof(bits), "%d", (config >> (7 - i)) & 1); + snprintf(bs, sizeof(bits) - i, "%1d", (config >> (7 - i)) & 1); bs++; } @@ -359,7 +359,7 @@ static void printHitagConfiguration(uint8_t config) { PrintAndLogEx(INFO, "------------------------------------"); //configuration byte - PrintAndLogEx(SUCCESS, "Config byte : %02X - %s", config, bits); + PrintAndLogEx(SUCCESS, "Config byte : 0x%02X [ %s ]", config, bits); // encoding strcat(msg, "Encoding : "); diff --git a/client/cmdsmartcard.c b/client/cmdsmartcard.c index 8d00fa128..125475080 100644 --- a/client/cmdsmartcard.c +++ b/client/cmdsmartcard.c @@ -667,6 +667,7 @@ int CmdSmartUpgrade(const char *Cmd) { f = fopen(sha512filename, "rb"); if (!f) { PrintAndLogEx(FAILED, "SHA-512 file not found or locked."); + free(dump); return 1; } @@ -678,12 +679,14 @@ int CmdSmartUpgrade(const char *Cmd) { if (fsize < 0) { PrintAndLogEx(FAILED, "Could not determine size of SHA-512 file"); fclose(f); + free(dump); return 1; } if (fsize < 128) { PrintAndLogEx(FAILED, "SHA-512 file too short"); fclose(f); + free(dump); return 1; } @@ -697,17 +700,20 @@ int CmdSmartUpgrade(const char *Cmd) { uint8_t hash1[64]; if (bytes_read != 128 || param_gethex(hashstring, 0, hash1, 128)) { PrintAndLogEx(FAILED, "Couldn't read SHA-512 file"); + free(dump); return 1; } uint8_t hash2[64]; if (sha512hash(dump, firmware_size, hash2)) { PrintAndLogEx(FAILED, "Couldn't calculate SHA-512 of firmware"); + free(dump); return 1; } if (memcmp(hash1, hash2, 64)) { PrintAndLogEx(FAILED, "Couldn't verify integrity of firmware file " _RED_("(wrong SHA-512 hash)")); + free(dump); return 1; }