Merge pull request #269 from LiquidFenrir/patch-2

fix dumping official body and bgm, and double free
This commit is contained in:
Dylan G
2022-06-03 20:46:14 +01:00
committed by GitHub

View File

@@ -505,6 +505,7 @@ Result dump_all_themes(void)
res = AMAPP_ListDLCContentInfos(&readcount, MEDIATYPE_SD, titleId, count, 0, contentInfos); res = AMAPP_ListDLCContentInfos(&readcount, MEDIATYPE_SD, titleId, count, 0, contentInfos);
if(R_FAILED(res)) if(R_FAILED(res))
{ {
free(contentInfos);
break; break;
} }
@@ -551,6 +552,8 @@ Result dump_all_themes(void)
FILE* fh = fopen(contentinfoarchive_path, "rb"); FILE* fh = fopen(contentinfoarchive_path, "rb");
if(fh != NULL)
{
for(u32 i = 0; i < readcount; ++i) for(u32 i = 0; i < readcount; ++i)
{ {
if(i == 0) continue; if(i == 0) continue;
@@ -571,11 +574,6 @@ Result dump_all_themes(void)
if(R_FAILED(res)) if(R_FAILED(res))
{ {
DEBUG("theme open romfs error: %08lx\n", res); DEBUG("theme open romfs error: %08lx\n", res);
fclose(fh);
free(contentInfos);
romfsUnmount("meta");
FSUSER_CloseArchive(ncch_archive);
free(contentInfos);
break; break;
} }
@@ -602,7 +600,7 @@ Result dump_all_themes(void)
{ {
fseek(theme_file, 0, SEEK_END); fseek(theme_file, 0, SEEK_END);
long theme_size = ftell(theme_file); long theme_size = ftell(theme_file);
fseek(theme_file, 0, SEEK_CUR); fseek(theme_file, 0, SEEK_SET);
char* theme_data = malloc(theme_size); char* theme_data = malloc(theme_size);
fread(theme_data, 1, theme_size, theme_file); fread(theme_data, 1, theme_size, theme_file);
fclose(theme_file); fclose(theme_file);
@@ -619,7 +617,7 @@ Result dump_all_themes(void)
{ {
fseek(bgm_file, 0, SEEK_END); fseek(bgm_file, 0, SEEK_END);
long bgm_size = ftell(bgm_file); long bgm_size = ftell(bgm_file);
fseek(bgm_file, 0, SEEK_CUR); fseek(bgm_file, 0, SEEK_SET);
char* bgm_data = malloc(bgm_size); char* bgm_data = malloc(bgm_size);
fread(bgm_data, 1, bgm_size, bgm_file); fread(bgm_data, 1, bgm_size, bgm_file);
fclose(bgm_file); fclose(bgm_file);
@@ -646,6 +644,7 @@ Result dump_all_themes(void)
fclose(fh); fclose(fh);
fh = NULL; fh = NULL;
}
free(contentInfos); free(contentInfos);
contentInfos = NULL; contentInfos = NULL;