NFC: fix memory corruption in nfc_worker_read_mifare_desfire (#1156)
* NFC: fix memory corruption in nfc_worker_read_mifare_desfire * NFC: if the NFC tag doesn't have apps or files, don't try to save them. * NFC: make-format Co-authored-by: Jack Doan <jackdoan@rivian.com> Co-authored-by: Skorpionm <85568270+Skorpionm@users.noreply.github.com> Co-authored-by: Nikolay Minaylov <nm29719@gmail.com> Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
ce211f9a2b
commit
81aeda86db
@ -262,6 +262,7 @@ static bool nfc_device_save_mifare_df_app(FlipperFormat* file, MifareDesfireAppl
|
|||||||
file, app->key_settings, string_get_cstr(prefix)))
|
file, app->key_settings, string_get_cstr(prefix)))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(!app->file_head) break;
|
||||||
uint32_t n_files = 0;
|
uint32_t n_files = 0;
|
||||||
for(MifareDesfireFile* f = app->file_head; f; f = f->next) {
|
for(MifareDesfireFile* f = app->file_head; f; f = f->next) {
|
||||||
n_files++;
|
n_files++;
|
||||||
@ -477,6 +478,7 @@ static bool nfc_device_save_mifare_df_data(FlipperFormat* file, NfcDevice* dev)
|
|||||||
n_apps++;
|
n_apps++;
|
||||||
}
|
}
|
||||||
if(!flipper_format_write_uint32(file, "Application Count", &n_apps, 1)) break;
|
if(!flipper_format_write_uint32(file, "Application Count", &n_apps, 1)) break;
|
||||||
|
if(n_apps == 0) break;
|
||||||
tmp = malloc(n_apps * 3);
|
tmp = malloc(n_apps * 3);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(MifareDesfireApplication* app = data->app_head; app; app = app->next) {
|
for(MifareDesfireApplication* app = data->app_head; app; app = app->next) {
|
||||||
|
@ -540,6 +540,7 @@ void nfc_worker_read_mifare_desfire(NfcWorker* nfc_worker) {
|
|||||||
FURI_LOG_W(TAG, "Bad DESFire GET_KEY_SETTINGS response");
|
FURI_LOG_W(TAG, "Bad DESFire GET_KEY_SETTINGS response");
|
||||||
free(data->master_key_settings);
|
free(data->master_key_settings);
|
||||||
data->master_key_settings = NULL;
|
data->master_key_settings = NULL;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
MifareDesfireKeyVersion** key_version_head =
|
MifareDesfireKeyVersion** key_version_head =
|
||||||
@ -593,6 +594,7 @@ void nfc_worker_read_mifare_desfire(NfcWorker* nfc_worker) {
|
|||||||
FURI_LOG_W(TAG, "Bad DESFire GET_KEY_SETTINGS response");
|
FURI_LOG_W(TAG, "Bad DESFire GET_KEY_SETTINGS response");
|
||||||
free(app->key_settings);
|
free(app->key_settings);
|
||||||
app->key_settings = NULL;
|
app->key_settings = NULL;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
MifareDesfireKeyVersion** key_version_head = &app->key_settings->key_version_head;
|
MifareDesfireKeyVersion** key_version_head = &app->key_settings->key_version_head;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user