MifareFesFireGetInformation(): warningw when tag answer is too short

This commit is contained in:
DidierA 2023-03-03 17:33:38 +01:00
commit fc4e912fc1

View file

@ -182,6 +182,12 @@ void MifareDesfireGetInformation(void) {
return;
}
if (len < sizeof(payload.versionHW)+1) {
Dbprintf("Tag answer to MFDES_GET_VERSION was too short: data in Hardware Information is probably invalid.");
print_result("Answer", resp, len);
memset(resp+len, 0xFF, sizeof(payload.versionHW)+1 - len); // clear remaining bytes
}
memcpy(payload.versionHW, resp + 1, sizeof(payload.versionHW));
// ADDITION_FRAME 1
@ -194,6 +200,13 @@ void MifareDesfireGetInformation(void) {
switch_off();
return;
}
if (len < sizeof(payload.versionSW)+1) {
Dbprintf("Tag answer to MFDES_ADDITIONAL_FRAME 1 was too short: data in Software Information is probably invalid.");
print_result("Answer", resp, len);
memset(resp+len, 0xFF, sizeof(payload.versionSW)+1 - len); // clear remaining bytes
}
memcpy(payload.versionSW, resp + 1, sizeof(payload.versionSW));
// ADDITION_FRAME 2
@ -206,6 +219,12 @@ void MifareDesfireGetInformation(void) {
return;
}
if (len < sizeof(payload.details)+1) {
Dbprintf("Tag answer to MFDES_ADDITIONAL_FRAME 2 was too short: data in Batch number and Production date is probably invalid");
print_result("Answer", resp, len);
memset(resp+len, 0xFF, sizeof(payload.details)+1 - len); // clear remaining bytes
}
memcpy(payload.details, resp + 1, sizeof(payload.details));
LED_B_ON();