detect wrong numOfBlocks / numOfSectors arguments

This commit is contained in:
Philippe Teuwen 2019-04-28 21:34:05 +02:00
commit 997f5d700e

View file

@ -683,7 +683,7 @@ static uint16_t NumOfBlocks(char card) {
case '4' : case '4' :
return MIFARE_4K_MAXBLOCK; return MIFARE_4K_MAXBLOCK;
default : default :
return MIFARE_1K_MAXBLOCK; return 0;
} }
} }
@ -698,7 +698,7 @@ static uint8_t NumOfSectors(char card) {
case '4' : case '4' :
return MIFARE_4K_MAXSECTOR; return MIFARE_4K_MAXSECTOR;
default : default :
return MIFARE_1K_MAXSECTOR; return 0;
} }
} }
@ -753,6 +753,7 @@ static int CmdHF14AMfDump(const char *Cmd) {
default: default:
if (cmdp == 0) { if (cmdp == 0) {
numSectors = NumOfSectors(param_getchar(Cmd, cmdp)); numSectors = NumOfSectors(param_getchar(Cmd, cmdp));
if (numSectors == 0) return usage_hf14_dump();
cmdp++; cmdp++;
} else { } else {
PrintAndLogEx(WARNING, "Unknown parameter '%c'\n", param_getchar(Cmd, cmdp)); PrintAndLogEx(WARNING, "Unknown parameter '%c'\n", param_getchar(Cmd, cmdp));
@ -961,6 +962,7 @@ static int CmdHF14AMfRestore(const char *Cmd) {
default: default:
if (cmdp == 0) { if (cmdp == 0) {
numSectors = NumOfSectors(param_getchar(Cmd, cmdp)); numSectors = NumOfSectors(param_getchar(Cmd, cmdp));
if (numSectors == 0) return usage_hf14_restore();
cmdp++; cmdp++;
} else { } else {
PrintAndLogEx(WARNING, "Unknown parameter '%c'\n", param_getchar(Cmd, cmdp)); PrintAndLogEx(WARNING, "Unknown parameter '%c'\n", param_getchar(Cmd, cmdp));
@ -1114,6 +1116,7 @@ static int CmdHF14AMfNested(const char *Cmd) {
} }
} else { } else {
SectorsCnt = NumOfSectors(cmdp); SectorsCnt = NumOfSectors(cmdp);
if (SectorsCnt == 0) return usage_hf14_nested();
} }
uint8_t j = 4; uint8_t j = 4;
@ -1816,6 +1819,7 @@ static int CmdHF14AMfChk(const char *Cmd) {
if (param_getchar(Cmd, 0) == '*') { if (param_getchar(Cmd, 0) == '*') {
blockNo = 3; blockNo = 3;
SectorsCnt = NumOfSectors(param_getchar(Cmd + 1, 0)); SectorsCnt = NumOfSectors(param_getchar(Cmd + 1, 0));
if (SectorsCnt == 0) return usage_hf14_chk();
} else { } else {
blockNo = param_get8(Cmd, 0); blockNo = param_get8(Cmd, 0);
} }
@ -2659,7 +2663,12 @@ static int CmdHF14AMfESave(const char *Cmd) {
char c = tolower(param_getchar(Cmd, 0)); char c = tolower(param_getchar(Cmd, 0));
if (c == 'h') return usage_hf14_esave(); if (c == 'h') return usage_hf14_esave();
blocks = NumOfBlocks(c); if (c != 0) {
blocks = NumOfBlocks(c);
if (blocks == 0) return usage_hf14_esave();
} else {
blocks = MIFARE_1K_MAXBLOCK;
}
bytes = blocks * MFBLOCK_SIZE; bytes = blocks * MFBLOCK_SIZE;
dump = calloc(bytes, sizeof(uint8_t)); dump = calloc(bytes, sizeof(uint8_t));
@ -2708,7 +2717,12 @@ static int CmdHF14AMfECFill(const char *Cmd) {
keyType = 1; keyType = 1;
c = tolower(param_getchar(Cmd, 1)); c = tolower(param_getchar(Cmd, 1));
numSectors = NumOfSectors(c); if (c != 0) {
numSectors = NumOfSectors(c);
if (numSectors == 0) return usage_hf14_ecfill();
} else {
numSectors = MIFARE_1K_MAXSECTOR;
}
PrintAndLogEx(NORMAL, "--params: numSectors: %d, keyType: %c\n", numSectors, (keyType == 0) ? 'A' : 'B'); PrintAndLogEx(NORMAL, "--params: numSectors: %d, keyType: %c\n", numSectors, (keyType == 0) ? 'A' : 'B');
UsbCommand cmd = {CMD_MIFARE_EML_CARDLOAD, {numSectors, keyType, 0}, {{0}}}; UsbCommand cmd = {CMD_MIFARE_EML_CARDLOAD, {numSectors, keyType, 0}, {{0}}};
@ -2727,7 +2741,12 @@ static int CmdHF14AMfEKeyPrn(const char *Cmd) {
if (c == 'h') if (c == 'h')
return usage_hf14_ekeyprn(); return usage_hf14_ekeyprn();
numSectors = NumOfSectors(c); if (c != 0) {
numSectors = NumOfSectors(c);
if (numSectors == 0) return usage_hf14_ekeyprn();
} else {
numSectors = MIFARE_1K_MAXSECTOR;
}
PrintAndLogEx(NORMAL, "|---|----------------|----------------|"); PrintAndLogEx(NORMAL, "|---|----------------|----------------|");
PrintAndLogEx(NORMAL, "|sec|key A |key B |"); PrintAndLogEx(NORMAL, "|sec|key A |key B |");