From b770cfd51c9fea5fb88caa30681c9db19d020f43 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 19:22:17 +0200 Subject: [PATCH] le24toh is uint32_t --- client/src/cmdhfmfdes.c | 22 ++++++++++++---------- common/commonutil.c | 2 +- common/commonutil.h | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index c8bf75424..a39bd85c0 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -1482,8 +1482,8 @@ static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type) */ if (data->fileno > 0x1F) return PM3_EINVARG; - int datatowrite = le24toh(data->length); - int offset = le24toh(data->offset); + uint32_t datatowrite = le24toh(data->length); + uint32_t offset = le24toh(data->offset); int datasize; int pos = 0; int recvlen = 0; @@ -1496,7 +1496,8 @@ static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type) apdu.data = tmp; if (type == MFDES_RECORD_FILE) apdu.INS = MFDES_WRITE_RECORD; - while (datatowrite > 0) { + while (datatowrite) { + if (datatowrite > 52) datasize = 52; else @@ -2319,7 +2320,8 @@ static int CmdHF14ADesReadData(const char *Cmd) { memcpy(ft.length, filesize, 3); ft.fileno = _fileno[0]; - int bytestoread = le24toh(filesize); + uint32_t bytestoread = le24toh(filesize); + bytestoread &= 0xFFFFFF; if (bytestoread == 0) bytestoread = 0xFFFFFF; @@ -2332,8 +2334,8 @@ static int CmdHF14ADesReadData(const char *Cmd) { PrintAndLogEx(SUCCESS, "Successfully read data from file %d:", ft.fileno); PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); - int len = le24toh(ft.length); - for (int i = 0; i < len; i += 16) { + uint32_t len = le24toh(ft.length); + for (uint32_t i = 0; i < len; i += 16) { PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", i, i, sprint_hex(&ft.data[i], len > 16 ? 16 : len), sprint_ascii(&ft.data[i], len > 16 ? 16 : len)); } } else { @@ -3246,8 +3248,8 @@ static int CmdHF14ADesDump(const char *Cmd) { if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); - int len = le24toh(fdata.length); - for (int n = 0; n < len; n += 16) { + uint32_t len = le24toh(fdata.length); + for (uint32_t n = 0; n < len; n += 16) { PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", n, n, sprint_hex(&fdata.data[n], len > 16 ? 16 : len), sprint_ascii(&fdata.data[n], len > 16 ? 16 : len)); } } else { @@ -3299,8 +3301,8 @@ static int CmdHF14ADesDump(const char *Cmd) { if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); - int len = le24toh(fdata.length); - for (int n = 0; n < len; n += 16) { + uint32_t len = le24toh(fdata.length); + for (uint32_t n = 0; n < len; n += 16) { PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", n, n, sprint_hex(&fdata.data[n], len > 16 ? 16 : len), sprint_ascii(&fdata.data[n], len > 16 ? 16 : len)); } } else { diff --git a/common/commonutil.c b/common/commonutil.c index 3ff2b4eb4..f831d744d 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -83,7 +83,7 @@ void lsl(uint8_t *data, size_t len) { data[len - 1] <<= 1; } -int32_t le24toh(uint8_t data[3]) { +uint32_t le24toh(uint8_t data[3]) { return (data[2] << 16) | (data[1] << 8) | data[0]; } diff --git a/common/commonutil.h b/common/commonutil.h index a22486fff..0f3dc0065 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -50,7 +50,7 @@ uint64_t bytes_to_num(uint8_t *src, size_t len); void rol(uint8_t *data, const size_t len); void lsl(uint8_t *data, size_t len); -int32_t le24toh(uint8_t data[3]); +uint32_t le24toh(uint8_t data[3]); void htole24(uint32_t val, uint8_t data[3]); #endif