Introduce fatal_error

This commit is contained in:
TuxSH
2018-05-20 16:18:48 +02:00
parent add03d5774
commit f45bc83bc4
14 changed files with 104 additions and 137 deletions

View File

@@ -47,8 +47,7 @@ ini1_header_t *stratosphere_get_ini1(uint32_t target_firmware) {
g_stratosphere_ini1 = (ini1_header_t *)malloc(size);
if (g_stratosphere_ini1 != NULL) {
printf("Error: stratosphere_get_ini1: out of memory!\n");
generic_panic();
fatal_error("stratosphere_get_ini1: out of memory!\n");
}
g_stratosphere_ini1->magic = MAGIC_INI1;
@@ -87,24 +86,21 @@ ini1_header_t *stratosphere_merge_inis(ini1_header_t **inis, size_t num_inis) {
/* Validate all ini headers. */
for (size_t i = 0; i < num_inis; i++) {
if (inis[i] == NULL || inis[i]->magic != MAGIC_INI1 || inis[i]->num_processes > INI1_MAX_KIPS) {
printf("Error: INI1s[%d] section appears to not contain an INI1!\n", i);
generic_panic();
fatal_error("INI1s[%d] section appears to not contain an INI1!\n", i);
} else {
total_num_processes += inis[i]->num_processes;
}
}
if (total_num_processes > INI1_MAX_KIPS) {
printf("Error: The resulting INI1 would have too many KIPs!\n");
generic_panic();
fatal_error("The resulting INI1 would have too many KIPs!\n");
}
uint64_t process_list[INI1_MAX_KIPS] = {0};
ini1_header_t *merged = (ini1_header_t *)malloc(PACKAGE2_SIZE_MAX); /* because of SD file overrides */
if (merged == NULL) {
printf("Error: stratosphere_merge_inis: out of memory!\n");
generic_panic();
fatal_error("stratosphere_merge_inis: out of memory!\n");
}
merged->magic = MAGIC_INI1;
@@ -121,8 +117,7 @@ ini1_header_t *stratosphere_merge_inis(ini1_header_t **inis, size_t num_inis) {
for (size_t p = 0; p < (size_t)inis[i]->num_processes; p++) {
kip1_header_t *current_kip = (kip1_header_t *)(inis[i]->kip_data + offset);
if (current_kip->magic != MAGIC_KIP1) {
printf("Error: INI1s[%zu][%zu] appears not to be a KIP1!\n", i, p);
generic_panic();
fatal_error("INI1s[%zu][%zu] appears not to be a KIP1!\n", i, p);
}
bool already_loaded = false;
@@ -144,11 +139,9 @@ ini1_header_t *stratosphere_merge_inis(ini1_header_t **inis, size_t num_inis) {
if (read_size != 0) {
kip1_header_t *sd_kip = (kip1_header_t *)(current_dst_kip);
if (read_size < sizeof(kip1_header_t) || sd_kip->magic != MAGIC_KIP1) {
printf("Error: %s is not a KIP1?\n", sd_path);
generic_panic();
fatal_error("%s is not a KIP1?\n", sd_path);
} else if (sd_kip->title_id != current_kip->title_id) {
printf("Error: %s has wrong Title ID!\n", sd_path);
generic_panic();
fatal_error("%s has wrong Title ID!\n", sd_path);
}
size_t expected_sd_kip_size = kip1_get_size_from_header(sd_kip);
if (expected_sd_kip_size != read_size) {
@@ -161,8 +154,7 @@ ini1_header_t *stratosphere_merge_inis(ini1_header_t **inis, size_t num_inis) {
} else {
size_t current_kip_size = kip1_get_size_from_header(current_kip);
if (current_kip_size > remaining_size) {
printf("Error: Not enough space for all the KIP1s!\n");
generic_panic();
fatal_error("Not enough space for all the KIP1s!\n");
}
memcpy(current_dst_kip, current_kip, current_kip_size);
remaining_size -= current_kip_size;