fix #532. looks at length of parameters.

This commit is contained in:
merlokk 2017-12-28 13:29:30 +02:00
parent 0f112d6f19
commit 55b700a0ac

View file

@ -987,6 +987,7 @@ int CmdHF14AMfChk(const char *Cmd)
int i, res; int i, res;
int keycnt = 0; int keycnt = 0;
char ctmp = 0x00; char ctmp = 0x00;
int clen = 0;
char ctmp3[3] = {0x00}; char ctmp3[3] = {0x00};
uint8_t blockNo = 0; uint8_t blockNo = 0;
uint8_t SectorsCnt = 0; uint8_t SectorsCnt = 0;
@ -1015,32 +1016,36 @@ int CmdHF14AMfChk(const char *Cmd)
blockNo = param_get8(Cmd, 0); blockNo = param_get8(Cmd, 0);
ctmp = param_getchar(Cmd, 1); ctmp = param_getchar(Cmd, 1);
switch (ctmp) { clen = param_getlength(Cmd, 1);
case 'a': case 'A': if (clen == 1) {
keyType = 0; switch (ctmp) {
break; case 'a': case 'A':
case 'b': case 'B': keyType = 0;
keyType = 1; break;
break; case 'b': case 'B':
case '?': keyType = 1;
keyType = 2; break;
break; case '?':
default: keyType = 2;
PrintAndLog("Key type must be A , B or ?"); break;
free(keyBlock); default:
return 1; PrintAndLog("Key type must be A , B or ?");
}; free(keyBlock);
return 1;
};
}
// transfer to emulator & create dump file // transfer to emulator & create dump file
ctmp = param_getchar(Cmd, 2); ctmp = param_getchar(Cmd, 2);
if (ctmp == 't' || ctmp == 'T') transferToEml = 1; clen = param_getlength(Cmd, 2);
if (ctmp == 'd' || ctmp == 'D') createDumpFile = 1; if (clen == 1 && (ctmp == 't' || ctmp == 'T')) transferToEml = 1;
if (clen == 1 && (ctmp == 'd' || ctmp == 'D')) createDumpFile = 1;
param3InUse = transferToEml | createDumpFile; param3InUse = transferToEml | createDumpFile;
timeout14a = 500; // fast by default timeout14a = 500; // fast by default
// double parameters - ts, ds // double parameters - ts, ds
int clen = param_getlength(Cmd, 2); clen = param_getlength(Cmd, 2);
if (clen == 2 || clen == 3){ if (clen == 2 || clen == 3){
param_getstr(Cmd, 2, ctmp3, sizeof(ctmp3)); param_getstr(Cmd, 2, ctmp3, sizeof(ctmp3));
ctmp = ctmp3[1]; ctmp = ctmp3[1];