mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-20 21:33:19 -07:00
add error handling
This commit is contained in:
parent
b2db22b134
commit
941691eb9d
1 changed files with 14 additions and 9 deletions
|
@ -140,9 +140,10 @@ int CmdHFFidoInfo(const char *cmd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
json_t *OpenJson(int paramnum, char *fname, void* argtable[]) {
|
json_t *OpenJson(int paramnum, char *fname, void* argtable[], bool *err) {
|
||||||
json_t *root = NULL;
|
json_t *root = NULL;
|
||||||
json_error_t error;
|
json_error_t error;
|
||||||
|
*err = false;
|
||||||
|
|
||||||
uint8_t jsonname[250] ={0};
|
uint8_t jsonname[250] ={0};
|
||||||
char *cjsonname = (char *)jsonname;
|
char *cjsonname = (char *)jsonname;
|
||||||
|
@ -165,12 +166,14 @@ json_t *OpenJson(int paramnum, char *fname, void* argtable[]) {
|
||||||
root = json_load_file(fname, 0, &error);
|
root = json_load_file(fname, 0, &error);
|
||||||
if (!root) {
|
if (!root) {
|
||||||
PrintAndLog("ERROR: json error on line %d: %s", error.line, error.text);
|
PrintAndLog("ERROR: json error on line %d: %s", error.line, error.text);
|
||||||
|
*err = true;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!json_is_object(root)) {
|
if (!json_is_object(root)) {
|
||||||
PrintAndLog("ERROR: Invalid json format. root must be an object.");
|
PrintAndLog("ERROR: Invalid json format. root must be an object.");
|
||||||
json_decref(root);
|
json_decref(root);
|
||||||
|
*err = true;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,13 +215,14 @@ int CmdHFFidoRegister(const char *cmd) {
|
||||||
bool paramsPlain = arg_get_lit(3);
|
bool paramsPlain = arg_get_lit(3);
|
||||||
|
|
||||||
char fname[250] = {0};
|
char fname[250] = {0};
|
||||||
root = OpenJson(4, fname, argtable);
|
bool err;
|
||||||
|
root = OpenJson(4, fname, argtable, &err);
|
||||||
|
if(err)
|
||||||
|
return 1;
|
||||||
if (root) {
|
if (root) {
|
||||||
size_t jlen;
|
size_t jlen;
|
||||||
JsonLoadBufAsHex(root, "$.ChallengeParam", data, 32, &jlen);
|
JsonLoadBufAsHex(root, "$.ChallengeParam", data, 32, &jlen);
|
||||||
JsonLoadBufAsHex(root, "$.ApplicationParam", &data[32], 32, &jlen);
|
JsonLoadBufAsHex(root, "$.ApplicationParam", &data[32], 32, &jlen);
|
||||||
} else {
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (paramsPlain) {
|
if (paramsPlain) {
|
||||||
|
@ -396,9 +400,12 @@ int CmdHFFidoAuthenticate(const char *cmd) {
|
||||||
controlByte = 0x03;
|
controlByte = 0x03;
|
||||||
if (arg_get_lit(6))
|
if (arg_get_lit(6))
|
||||||
controlByte = 0x07;
|
controlByte = 0x07;
|
||||||
|
|
||||||
char fname[250] = {0};
|
char fname[250] = {0};
|
||||||
root = OpenJson(7, fname, argtable);
|
bool err;
|
||||||
|
root = OpenJson(7, fname, argtable, &err);
|
||||||
|
if(err)
|
||||||
|
return 1;
|
||||||
if (root) {
|
if (root) {
|
||||||
size_t jlen;
|
size_t jlen;
|
||||||
JsonLoadBufAsHex(root, "$.ChallengeParam", data, 32, &jlen);
|
JsonLoadBufAsHex(root, "$.ChallengeParam", data, 32, &jlen);
|
||||||
|
@ -406,9 +413,7 @@ int CmdHFFidoAuthenticate(const char *cmd) {
|
||||||
JsonLoadBufAsHex(root, "$.KeyHandle", &data[65], 512 - 67, &jlen);
|
JsonLoadBufAsHex(root, "$.KeyHandle", &data[65], 512 - 67, &jlen);
|
||||||
keyHandleLen = jlen & 0xff;
|
keyHandleLen = jlen & 0xff;
|
||||||
data[64] = keyHandleLen;
|
data[64] = keyHandleLen;
|
||||||
} else {
|
}
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
CLIGetHexWithReturn(8, hdata, &hdatalen);
|
CLIGetHexWithReturn(8, hdata, &hdatalen);
|
||||||
if (hdatalen > 255) {
|
if (hdatalen > 255) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue