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)))
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
        if(!app->file_head) break;
 | 
			
		||||
        uint32_t n_files = 0;
 | 
			
		||||
        for(MifareDesfireFile* f = app->file_head; f; f = f->next) {
 | 
			
		||||
            n_files++;
 | 
			
		||||
@ -477,6 +478,7 @@ static bool nfc_device_save_mifare_df_data(FlipperFormat* file, NfcDevice* dev)
 | 
			
		||||
            n_apps++;
 | 
			
		||||
        }
 | 
			
		||||
        if(!flipper_format_write_uint32(file, "Application Count", &n_apps, 1)) break;
 | 
			
		||||
        if(n_apps == 0) break;
 | 
			
		||||
        tmp = malloc(n_apps * 3);
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        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");
 | 
			
		||||
                free(data->master_key_settings);
 | 
			
		||||
                data->master_key_settings = NULL;
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            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");
 | 
			
		||||
                    free(app->key_settings);
 | 
			
		||||
                    app->key_settings = NULL;
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                MifareDesfireKeyVersion** key_version_head = &app->key_settings->key_version_head;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user