String stack size cleanups

This commit is contained in:
twinaphex 2020-08-19 06:53:09 +02:00
parent a85368f21f
commit dc3dc574d8
5 changed files with 59 additions and 74 deletions

View File

@ -1847,13 +1847,20 @@ static int generic_action_ok(const char *path,
case ACTION_OK_SET_DIRECTORY: case ACTION_OK_SET_DIRECTORY:
flush_char = msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST); flush_char = msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST);
#ifdef HAVE_COCOATOUCH #ifdef HAVE_COCOATOUCH
// For iOS, set the path using realpath because the path name /* For iOS, set the path using realpath because the
// can start with /private and this ensures the path starts with it. * path name can start with /private and this ensures
// This will allow the path to be properly substituted when fill_pathname_expand_special * the path starts with it.
// is called. *
char real_action_path[PATH_MAX_LENGTH] = {0}; * This will allow the path to be properly substituted
realpath(action_path, real_action_path); * when fill_pathname_expand_special
strlcpy(action_path, real_action_path, sizeof(action_path)); * is called.
*/
{
char real_action_path[PATH_MAX_LENGTH];
real_action_path[0] = '\0';
realpath(action_path, real_action_path);
strlcpy(action_path, real_action_path, sizeof(action_path));
}
#endif #endif
ret = set_path_generic(menu->filebrowser_label, action_path); ret = set_path_generic(menu->filebrowser_label, action_path);
break; break;
@ -3228,7 +3235,8 @@ static int action_ok_path_manual_scan_directory(const char *path,
* can start with /private and this ensures the path starts with it. * can start with /private and this ensures the path starts with it.
* This will allow the path to be properly substituted when * This will allow the path to be properly substituted when
* fill_pathname_expand_special() is called. */ * fill_pathname_expand_special() is called. */
char real_content_dir[PATH_MAX_LENGTH] = {0}; char real_content_dir[PATH_MAX_LENGTH];
real_content_dir[0] = '\0';
realpath(content_dir, real_content_dir); realpath(content_dir, real_content_dir);
strlcpy(content_dir, real_content_dir, sizeof(content_dir)); strlcpy(content_dir, real_content_dir, sizeof(content_dir));
} }
@ -3350,8 +3358,10 @@ static int action_ok_set_switch_cpu_profile(const char *path,
static int action_ok_set_switch_gpu_profile(const char *path, static int action_ok_set_switch_gpu_profile(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
char *profile_name = SWITCH_GPU_PROFILES[entry_idx]; char command[PATH_MAX_LENGTH];
char command[PATH_MAX_LENGTH] = {0}; char *profile_name = SWITCH_GPU_PROFILES[entry_idx];
command[0] = '\0';
snprintf(command, sizeof(command), snprintf(command, sizeof(command),
"gpu-profile set '%s'", "gpu-profile set '%s'",
@ -4238,13 +4248,10 @@ void cb_generic_download(retro_task_t *task,
dir_path = LAKKA_UPDATE_DIR; dir_path = LAKKA_UPDATE_DIR;
break; break;
case MENU_ENUM_LABEL_CB_DISCORD_AVATAR: case MENU_ENUM_LABEL_CB_DISCORD_AVATAR:
{ fill_pathname_application_special(buf, sizeof(buf),
fill_pathname_application_special(buf, APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_DISCORD_AVATARS);
PATH_MAX_LENGTH * sizeof(char),
APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_DISCORD_AVATARS);
dir_path = buf; dir_path = buf;
break; break;
}
default: default:
RARCH_WARN("Unknown transfer type '%s' bailing out.\n", RARCH_WARN("Unknown transfer type '%s' bailing out.\n",
msg_hash_to_str(transf->enum_idx)); msg_hash_to_str(transf->enum_idx));
@ -4655,12 +4662,12 @@ static int action_ok_add_to_favorites(const char *path,
char core_name[PATH_MAX_LENGTH]; char core_name[PATH_MAX_LENGTH];
content_label[0] = '\0'; content_label[0] = '\0';
core_path[0] = '\0'; core_path[0] = '\0';
core_name[0] = '\0'; core_name[0] = '\0';
/* Create string list container for playlist parameters */ /* Create string list container for playlist parameters */
attr.i = 0; attr.i = 0;
str_list = string_list_new(); str_list = string_list_new();
if (!str_list) if (!str_list)
return 0; return 0;
@ -6328,6 +6335,7 @@ static int action_ok_disk_cycle_tray_status(const char *path,
static int action_ok_disk_image_append(const char *path, static int action_ok_disk_image_append(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
char image_path[PATH_MAX_LENGTH];
rarch_system_info_t *sys_info = runloop_get_system_info(); rarch_system_info_t *sys_info = runloop_get_system_info();
menu_handle_t *menu = menu_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr();
const char *menu_path = NULL; const char *menu_path = NULL;
@ -6337,9 +6345,8 @@ static int action_ok_disk_image_append(const char *path,
bool audio_enable_menu_ok = settings->bools.audio_enable_menu_ok; bool audio_enable_menu_ok = settings->bools.audio_enable_menu_ok;
#endif #endif
bool menu_insert_disk_resume = settings->bools.menu_insert_disk_resume; bool menu_insert_disk_resume = settings->bools.menu_insert_disk_resume;
char image_path[PATH_MAX_LENGTH];
image_path[0] = '\0'; image_path[0] = '\0';
if (!menu) if (!menu)
return menu_cbs_exit(); return menu_cbs_exit();

View File

@ -892,7 +892,7 @@ static void stripes_update_thumbnail_path(void *data, unsigned i, char pos)
{ {
menu_entry_t entry; menu_entry_t entry;
unsigned entry_type = 0; unsigned entry_type = 0;
char new_path[PATH_MAX_LENGTH] = {0}; char new_path[PATH_MAX_LENGTH];
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
stripes_handle_t *stripes = (stripes_handle_t*)data; stripes_handle_t *stripes = (stripes_handle_t*)data;
playlist_t *playlist = NULL; playlist_t *playlist = NULL;
@ -901,6 +901,8 @@ static void stripes_update_thumbnail_path(void *data, unsigned i, char pos)
if (!stripes || string_is_empty(dir_thumbnails)) if (!stripes || string_is_empty(dir_thumbnails))
goto end; goto end;
new_path[0] = '\0';
menu_entry_init(&entry); menu_entry_init(&entry);
menu_entry_get(&entry, 0, i, NULL, true); menu_entry_get(&entry, 0, i, NULL, true);
@ -2387,7 +2389,9 @@ static int stripes_draw_item(
if (entry_type == FILE_TYPE_CONTENTLIST_ENTRY) if (entry_type == FILE_TYPE_CONTENTLIST_ENTRY)
{ {
char entry_path[PATH_MAX_LENGTH] = {0}; char entry_path[PATH_MAX_LENGTH];
entry_path[0] = '\0';
strlcpy(entry_path, entry->path, sizeof(entry_path)); strlcpy(entry_path, entry->path, sizeof(entry_path));
fill_short_pathname_representation(entry_path, entry_path, fill_short_pathname_representation(entry_path, entry_path,
@ -3727,28 +3731,21 @@ static void stripes_context_reset_textures(
static void stripes_context_reset_background(const char *iconpath) static void stripes_context_reset_background(const char *iconpath)
{ {
char *path = NULL; char path[PATH_MAX_LENGTH];
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
const char *path_menu_wp = settings->paths.path_menu_wallpaper; const char *path_menu_wp = settings->paths.path_menu_wallpaper;
if (!string_is_empty(path_menu_wp)) path[0] = '\0';
path = strdup(path_menu_wp);
else if (!string_is_empty(iconpath))
{
path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
path[0] = '\0';
fill_pathname_join(path, iconpath, "bg.png", if (!string_is_empty(path_menu_wp))
PATH_MAX_LENGTH * sizeof(char)); strlcpy(path, path_menu_wp, sizeof(path));
} else if (!string_is_empty(iconpath))
fill_pathname_join(path, iconpath, "bg.png", sizeof(path));
if (path_is_valid(path)) if (path_is_valid(path))
task_push_image_load(path, task_push_image_load(path,
video_driver_supports_rgba(), 0, video_driver_supports_rgba(), 0,
menu_display_handle_wallpaper_upload, NULL); menu_display_handle_wallpaper_upload, NULL);
if (path)
free(path);
} }
static void stripes_context_reset(void *data, bool is_threaded) static void stripes_context_reset(void *data, bool is_threaded)
@ -3757,9 +3754,9 @@ static void stripes_context_reset(void *data, bool is_threaded)
if (stripes) if (stripes)
{ {
char bg_file_path[PATH_MAX_LENGTH] = {0}; char iconpath [PATH_MAX_LENGTH];
char *iconpath = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); char bg_file_path[PATH_MAX_LENGTH];
iconpath[0] = '\0'; iconpath[0] = bg_file_path[0] = '\0';
fill_pathname_application_special(bg_file_path, fill_pathname_application_special(bg_file_path,
sizeof(bg_file_path), APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_BG); sizeof(bg_file_path), APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_BG);
@ -3771,8 +3768,7 @@ static void stripes_context_reset(void *data, bool is_threaded)
stripes->bg_file_path = strdup(bg_file_path); stripes->bg_file_path = strdup(bg_file_path);
} }
fill_pathname_application_special(iconpath, fill_pathname_application_special(iconpath, sizeof(iconpath),
PATH_MAX_LENGTH * sizeof(char),
APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_ICONS); APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_ICONS);
stripes_layout(stripes); stripes_layout(stripes);
@ -3793,8 +3789,6 @@ static void stripes_context_reset(void *data, bool is_threaded)
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF))) msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)))
stripes_update_thumbnail_image(stripes); stripes_update_thumbnail_image(stripes);
stripes_update_savestate_thumbnail_image(stripes); stripes_update_savestate_thumbnail_image(stripes);
free(iconpath);
} }
video_driver_monitor_reset(); video_driver_monitor_reset();
} }

View File

@ -2211,10 +2211,9 @@ static void xmb_context_reset_horizontal_list(
if (!path_is_valid(content_texturepath)) if (!path_is_valid(content_texturepath))
{ {
strlcat(iconpath, "default", PATH_MAX_LENGTH * sizeof(char)); strlcat(iconpath, "default", sizeof(iconpath));
fill_pathname_join_delim(content_texturepath, iconpath, fill_pathname_join_delim(content_texturepath, iconpath,
"content.png", '-', "content.png", '-', sizeof(content_texturepath));
PATH_MAX_LENGTH * sizeof(char));
} }
if (image_texture_load(&ti, content_texturepath)) if (image_texture_load(&ti, content_texturepath))
@ -3098,7 +3097,8 @@ static int xmb_draw_item(
if (entry_type == FILE_TYPE_CONTENTLIST_ENTRY) if (entry_type == FILE_TYPE_CONTENTLIST_ENTRY)
{ {
char entry_path[PATH_MAX_LENGTH] = {0}; char entry_path[PATH_MAX_LENGTH];
entry_path[0] = '\0';
strlcpy(entry_path, entry.path, sizeof(entry_path)); strlcpy(entry_path, entry.path, sizeof(entry_path));
fill_short_pathname_representation(entry_path, entry_path, fill_short_pathname_representation(entry_path, entry_path,
@ -6030,8 +6030,7 @@ static void xmb_context_reset_background(const char *iconpath)
char path[PATH_MAX_LENGTH]; char path[PATH_MAX_LENGTH];
path[0] = '\0'; path[0] = '\0';
fill_pathname_join(path, iconpath, "bg.png", fill_pathname_join(path, iconpath, "bg.png", sizeof(path));
PATH_MAX_LENGTH * sizeof(char));
if (path_is_valid(path)) if (path_is_valid(path))
task_push_image_load(path, task_push_image_load(path,
video_driver_supports_rgba(), 0, video_driver_supports_rgba(), 0,
@ -6049,8 +6048,8 @@ static void xmb_context_reset_internal(xmb_handle_t *xmb,
bool is_threaded, bool reinit_textures) bool is_threaded, bool reinit_textures)
{ {
char iconpath[PATH_MAX_LENGTH]; char iconpath[PATH_MAX_LENGTH];
char bg_file_path[PATH_MAX_LENGTH] = {0}; char bg_file_path[PATH_MAX_LENGTH];
iconpath[0] = '\0'; iconpath[0] = bg_file_path[0] = '\0';
fill_pathname_application_special(bg_file_path, fill_pathname_application_special(bg_file_path,
sizeof(bg_file_path), APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_BG); sizeof(bg_file_path), APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_BG);

View File

@ -1582,17 +1582,15 @@ static int create_string_list_rdb_entry_string(
file_list_t *list) file_list_t *list)
{ {
union string_list_elem_attr attr; union string_list_elem_attr attr;
char *tmp = NULL; char tmp[PATH_MAX_LENGTH];
char *output_label = NULL; char *output_label = NULL;
int str_len = 0; int str_len = 0;
struct string_list *str_list = string_list_new(); struct string_list *str_list = string_list_new();
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
if (!str_list) if (!str_list)
return -1; return -1;
attr.i = 0; attr.i = 0;
tmp = (char*)malloc(path_size);
tmp[0] = '\0'; tmp[0] = '\0';
str_len += strlen(label) + 1; str_len += strlen(label) + 1;
@ -1609,7 +1607,6 @@ static int create_string_list_rdb_entry_string(
if (!output_label) if (!output_label)
{ {
string_list_free(str_list); string_list_free(str_list);
free(tmp);
return -1; return -1;
} }
@ -1617,13 +1614,12 @@ static int create_string_list_rdb_entry_string(
string_list_free(str_list); string_list_free(str_list);
fill_pathname_join_concat_noext(tmp, desc, ": ", fill_pathname_join_concat_noext(tmp, desc, ": ",
actual_string, path_size); actual_string, sizeof(tmp));
menu_entries_append_enum(list, tmp, output_label, menu_entries_append_enum(list, tmp, output_label,
enum_idx, enum_idx,
0, 0, 0); 0, 0, 0);
free(output_label); free(output_label);
free(tmp);
return 0; return 0;
} }

View File

@ -14651,9 +14651,8 @@ static void command_event_load_auto_state(
global_t *global, global_t *global,
struct rarch_state *p_rarch) struct rarch_state *p_rarch)
{ {
char savestate_name_auto[PATH_MAX_LENGTH];
bool ret = false; bool ret = false;
char *savestate_name_auto = NULL;
size_t savestate_name_auto_size = PATH_MAX_LENGTH * sizeof(char);
bool savestate_auto_load = settings->bools.savestate_auto_load; bool savestate_auto_load = settings->bools.savestate_auto_load;
if (!global || !savestate_auto_load) if (!global || !savestate_auto_load)
@ -14667,17 +14666,13 @@ static void command_event_load_auto_state(
return; return;
#endif #endif
savestate_name_auto = (char*)calloc(PATH_MAX_LENGTH, savestate_name_auto[0] = '\0';
sizeof(*savestate_name_auto));
fill_pathname_noext(savestate_name_auto, global->name.savestate, fill_pathname_noext(savestate_name_auto, global->name.savestate,
".auto", savestate_name_auto_size); ".auto", sizeof(savestate_name_auto));
if (!path_is_valid(savestate_name_auto)) if (!path_is_valid(savestate_name_auto))
{
free(savestate_name_auto);
return; return;
}
ret = content_load_state(savestate_name_auto, false, true); ret = content_load_state(savestate_name_auto, false, true);
@ -14687,8 +14682,6 @@ static void command_event_load_auto_state(
msg_hash_to_str(MSG_AUTOLOADING_SAVESTATE_FROM), msg_hash_to_str(MSG_AUTOLOADING_SAVESTATE_FROM),
savestate_name_auto, ret ? "succeeded" : "failed" savestate_name_auto, ret ? "succeeded" : "failed"
); );
free(savestate_name_auto);
} }
static void command_event_set_savestate_auto_index( static void command_event_set_savestate_auto_index(
@ -15054,9 +15047,7 @@ static bool command_event_save_auto_state(
struct rarch_state *p_rarch) struct rarch_state *p_rarch)
{ {
bool ret = false; bool ret = false;
char *savestate_name_auto = NULL; char savestate_name_auto[PATH_MAX_LENGTH];
size_t
savestate_name_auto_size = PATH_MAX_LENGTH * sizeof(char);
bool savestate_auto_save = settings->bools.savestate_auto_save; bool savestate_auto_save = settings->bools.savestate_auto_save;
const enum rarch_core_type const enum rarch_core_type
current_core_type = p_rarch->current_core_type; current_core_type = p_rarch->current_core_type;
@ -15074,11 +15065,10 @@ static bool command_event_save_auto_state(
return false; return false;
#endif #endif
savestate_name_auto = (char*) savestate_name_auto[0] = '\0';
calloc(PATH_MAX_LENGTH, sizeof(*savestate_name_auto));
fill_pathname_noext(savestate_name_auto, global->name.savestate, fill_pathname_noext(savestate_name_auto, global->name.savestate,
".auto", savestate_name_auto_size); ".auto", sizeof(savestate_name_auto));
ret = content_save_state((const char*)savestate_name_auto, true, true); ret = content_save_state((const char*)savestate_name_auto, true, true);
RARCH_LOG("%s \"%s\" %s.\n", RARCH_LOG("%s \"%s\" %s.\n",
@ -15086,7 +15076,6 @@ static bool command_event_save_auto_state(
savestate_name_auto, ret ? savestate_name_auto, ret ?
"succeeded" : "failed"); "succeeded" : "failed");
free(savestate_name_auto);
return true; return true;
} }