keys: Fix freeze when es saves not present
This commit is contained in:
parent
7c6a3b1d3e
commit
b536a98b8d
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2019 shchmue
|
* Copyright (c) 2019-2020 shchmue
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
@ -556,6 +556,7 @@ pkg2_done:
|
||||||
FILINFO fno;
|
FILINFO fno;
|
||||||
FIL fp;
|
FIL fp;
|
||||||
save_ctx_t *save_ctx = NULL;
|
save_ctx_t *save_ctx = NULL;
|
||||||
|
bool save_process_success = false;
|
||||||
|
|
||||||
// sysmodule NCAs only ever have one section (exefs) so 0x600 is sufficient
|
// sysmodule NCAs only ever have one section (exefs) so 0x600 is sufficient
|
||||||
u8 *dec_header = (u8*)malloc(0x600);
|
u8 *dec_header = (u8*)malloc(0x600);
|
||||||
|
@ -791,8 +792,10 @@ get_titlekeys:
|
||||||
save_ctx->file = &fp;
|
save_ctx->file = &fp;
|
||||||
save_ctx->tool_ctx.action = 0;
|
save_ctx->tool_ctx.action = 0;
|
||||||
memcpy(save_ctx->save_mac_key, save_mac_key, 0x10);
|
memcpy(save_ctx->save_mac_key, save_mac_key, 0x10);
|
||||||
if (!save_process(save_ctx)) {
|
save_process_success = save_process(save_ctx);
|
||||||
|
if (!save_process_success) {
|
||||||
EPRINTF("Failed to process e1 save.");
|
EPRINTF("Failed to process e1 save.");
|
||||||
|
goto dismount;
|
||||||
}
|
}
|
||||||
|
|
||||||
char ticket_bin_path[SAVE_FS_LIST_MAX_NAME_LENGTH] = "/ticket.bin";
|
char ticket_bin_path[SAVE_FS_LIST_MAX_NAME_LENGTH] = "/ticket.bin";
|
||||||
|
@ -843,6 +846,7 @@ get_titlekeys:
|
||||||
tui_pbar(save_x, save_y, 100, COLOR_GREEN, 0xFF155500);
|
tui_pbar(save_x, save_y, 100, COLOR_GREEN, 0xFF155500);
|
||||||
f_close(&fp);
|
f_close(&fp);
|
||||||
save_free_contexts(save_ctx);
|
save_free_contexts(save_ctx);
|
||||||
|
save_process_success = false;
|
||||||
memset(save_ctx, 0, sizeof(save_ctx_t));
|
memset(save_ctx, 0, sizeof(save_ctx_t));
|
||||||
memset(&fat_storage, 0, sizeof(allocation_table_storage_ctx_t));
|
memset(&fat_storage, 0, sizeof(allocation_table_storage_ctx_t));
|
||||||
|
|
||||||
|
@ -862,8 +866,10 @@ get_titlekeys:
|
||||||
save_ctx->file = &fp;
|
save_ctx->file = &fp;
|
||||||
save_ctx->tool_ctx.action = 0;
|
save_ctx->tool_ctx.action = 0;
|
||||||
memcpy(save_ctx->save_mac_key, save_mac_key, 0x10);
|
memcpy(save_ctx->save_mac_key, save_mac_key, 0x10);
|
||||||
if (!save_process(save_ctx)) {
|
save_process_success = save_process(save_ctx);
|
||||||
EPRINTF("Failed to process e1 save.");
|
if (!save_process_success) {
|
||||||
|
EPRINTF("Failed to process e2 save.");
|
||||||
|
goto dismount;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!save_hierarchical_file_table_get_file_entry_by_path(&save_ctx->save_filesystem_core.file_table, ticket_list_bin_path, &entry)) {
|
if (!save_hierarchical_file_table_get_file_entry_by_path(&save_ctx->save_filesystem_core.file_table, ticket_list_bin_path, &entry)) {
|
||||||
|
@ -932,8 +938,10 @@ get_titlekeys:
|
||||||
gfx_printf("\n%k Found %d titlekeys.\n", colors[(color_idx++) % 6], _titlekey_count);
|
gfx_printf("\n%k Found %d titlekeys.\n", colors[(color_idx++) % 6], _titlekey_count);
|
||||||
|
|
||||||
dismount:;
|
dismount:;
|
||||||
if (save_ctx) {
|
if (save_process_success) {
|
||||||
save_free_contexts(save_ctx);
|
save_free_contexts(save_ctx);
|
||||||
|
}
|
||||||
|
if (save_ctx) {
|
||||||
free(save_ctx);
|
free(save_ctx);
|
||||||
}
|
}
|
||||||
f_mount(NULL, "emmc:", 1);
|
f_mount(NULL, "emmc:", 1);
|
||||||
|
|
Loading…
Reference in New Issue