From a14c2101dd0cc9a71ea990f0af0f153f13ee4cfa Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Sep 2017 06:21:27 +0200 Subject: [PATCH] retroarch_validate_game_options - reduce stack usage --- retroarch.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/retroarch.c b/retroarch.c index 6a077fed91..b369b9a790 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1099,19 +1099,19 @@ static bool retroarch_init_state(void) bool retroarch_validate_game_options(char *s, size_t len, bool mkdir) { - char core_path[PATH_MAX_LENGTH]; - char config_directory[PATH_MAX_LENGTH]; + char *core_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + char *config_directory = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + size_t str_size = PATH_MAX_LENGTH * sizeof(char); const char *core_name = runloop_system.info.library_name; const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME)); if (string_is_empty(core_name) || string_is_empty(game_name)) - return false; + goto error; config_directory[0] = core_path[0] = '\0'; fill_pathname_application_special(config_directory, - sizeof(config_directory), - APPLICATION_SPECIAL_DIRECTORY_CONFIG); + str_size, APPLICATION_SPECIAL_DIRECTORY_CONFIG); /* Concatenate strings into full paths for game_path */ fill_pathname_join_special_ext(s, @@ -1120,12 +1120,19 @@ bool retroarch_validate_game_options(char *s, size_t len, bool mkdir) len); fill_pathname_join(core_path, - config_directory, core_name, sizeof(core_path)); + config_directory, core_name, str_size); if (!path_is_directory(core_path) && mkdir) path_mkdir(core_path); + free(core_path); + free(config_directory); return true; + +error: + free(core_path); + free(config_directory); + return false; } /* Validates CPU features for given processor architecture. @@ -1225,7 +1232,7 @@ bool retroarch_main_init(int argc, char *argv[]) if (verbosity_is_enabled()) { - char str[255]; + char str[128]; str[0] = '\0';