[FL-3856] Don't crash on reading weird cards (#3717)

* Don't crash on reading weird cards
* mf plus: fix incorrect read fail event handler

Co-authored-by: gornekich <n.gorbadey@gmail.com>
This commit is contained in:
Astra 2024-06-17 22:18:53 +09:00 committed by GitHub
parent bda6d4f75a
commit ecd324dd1c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 3 deletions

View file

@ -41,8 +41,7 @@ static NfcCommand nfc_scene_read_poller_callback_mf_plus(NfcGenericEvent event,
view_dispatcher_send_custom_event(instance->view_dispatcher, NfcCustomEventPollerSuccess);
command = NfcCommandStop;
} else if(mf_plus_event->type == MfPlusPollerEventTypeReadFailed) {
view_dispatcher_send_custom_event(instance->view_dispatcher, NfcCustomEventPollerFailure);
command = NfcCommandStop;
command = NfcCommandReset;
}
return command;

View file

@ -4,13 +4,15 @@
MF_PLUS_FFF_PICC_PREFIX " " \
"Version"
#define MF_PLUS_T1_TK_VALUE_LEN 7
#define MF_PLUS_FFF_SECURITY_LEVEL_KEY "Security Level"
#define MF_PLUS_FFF_CARD_TYPE_KEY "Card Type"
#define MF_PLUS_FFF_MEMORY_SIZE_KEY "Memory Size"
#define TAG "MfPlus"
const uint8_t mf_plus_ats_t1_tk_values[][7] = {
const uint8_t mf_plus_ats_t1_tk_values[][MF_PLUS_T1_TK_VALUE_LEN] = {
{0xC1, 0x05, 0x2F, 0x2F, 0x00, 0x35, 0xC7}, // Mifare Plus S
{0xC1, 0x05, 0x2F, 0x2F, 0x01, 0xBC, 0xD6}, // Mifare Plus X
{0xC1, 0x05, 0x2F, 0x2F, 0x00, 0xF6, 0xD1}, // Mifare Plus SE
@ -97,6 +99,10 @@ MfPlusError
MfPlusError error = MfPlusErrorProtocol;
if(simple_array_get_count(iso4_data->ats_data.t1_tk) != MF_PLUS_T1_TK_VALUE_LEN) {
return MfPlusErrorProtocol;
}
switch(iso4_data->iso14443_3a_data->sak) {
case 0x08:
if(memcmp(