From 65b9ea4e760ef2fd6c728222623c227e5f960a45 Mon Sep 17 00:00:00 2001 From: LibretroAdmin Date: Tue, 11 Feb 2025 23:08:55 +0100 Subject: [PATCH] Fix some string appending --- core_option_manager.c | 48 +++++++++++++++----------------- disk_control_interface.c | 12 +++----- libretro-common/file/file_path.c | 8 ++---- menu/drivers/rgui.c | 7 ++--- menu/menu_displaylist.c | 17 ++++++----- tasks/task_content.c | 8 ++---- 6 files changed, 42 insertions(+), 58 deletions(-) diff --git a/core_option_manager.c b/core_option_manager.c index d72fb8b784..66480f9b35 100644 --- a/core_option_manager.c +++ b/core_option_manager.c @@ -439,10 +439,10 @@ struct retro_core_options_v2 *core_option_manager_convert_v2_intl( } /* Set desc and info strings */ - option_v2_cats[i].desc = string_is_empty(local_desc) ? - options_v2_us->categories[i].desc : local_desc; - option_v2_cats[i].info = string_is_empty(local_info) ? - options_v2_us->categories[i].info : local_info; + option_v2_cats[i].desc = string_is_empty(local_desc) + ? options_v2_us->categories[i].desc : local_desc; + option_v2_cats[i].info = string_is_empty(local_info) + ? options_v2_us->categories[i].info : local_info; } @@ -854,12 +854,10 @@ core_option_manager_t *core_option_manager_new_vars( { if (core_option_manager_parse_variable(opt, _len, var, config_src)) { - size_t __len = 0; /* If variable is read correctly, add it to * the map */ char address[256]; - address[ __len] = '#'; - address[++__len] = '\0'; + size_t __len = strlcpy(address, "#", sizeof(address)); /* Address string is normally: * @@ -1043,8 +1041,8 @@ static bool core_option_manager_parse_option( const char *value = option->vals->elems[i].data; uint32_t value_hash = *((uint32_t*)option->vals->elems[i].userdata); - if ((value_hash == entry_value_hash) && - string_is_equal(value, entry->value)) + if ( (value_hash == entry_value_hash) + && string_is_equal(value, entry->value)) { option->index = i; break; @@ -1128,8 +1126,8 @@ core_option_manager_t *core_option_manager_new( if (categorized && option_cats) { for (option_cat = option_cats; - !string_is_empty(option_cat->key) && - !string_is_empty(option_cat->desc); + !string_is_empty(option_cat->key) + && !string_is_empty(option_cat->desc); option_cat++) cats_size++; } @@ -1157,8 +1155,8 @@ core_option_manager_t *core_option_manager_new( /* Parse each category * > Note: 'option_cat->info == NULL' is valid */ for (option_cat = option_cats; - !string_is_empty(option_cat->key) && - !string_is_empty(option_cat->desc); + !string_is_empty(option_cat->key) + && !string_is_empty(option_cat->desc); cats_size++, option_cat++) { opt->cats[cats_size].key = strdup(option_cat->key); @@ -1518,9 +1516,9 @@ bool core_option_manager_get_val_idx(core_option_manager_t *opt, const char *option_val = option->vals->elems[i].data; uint32_t option_val_hash = *((uint32_t*)option->vals->elems[i].userdata); - if ((val_hash == option_val_hash) && - !string_is_empty(option_val) && - string_is_equal(val, option_val)) + if ( (val_hash == option_val_hash) + && !string_is_empty(option_val) + && string_is_equal(val, option_val)) { *val_idx = i; return true; @@ -1724,8 +1722,8 @@ void core_option_manager_set_val(core_option_manager_t *opt, /* Refresh menu (if required) if core option * visibility has changed as a result of modifying * the current option value */ - if (retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) && - refresh_menu) + if ( retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) + && refresh_menu) { struct menu_state *menu_st = menu_state_get_ptr(); menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH @@ -1776,8 +1774,8 @@ void core_option_manager_adjust_val(core_option_manager_t* opt, /* Refresh menu (if required) if core option * visibility has changed as a result of modifying * the current option value */ - if (retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) && - refresh_menu) + if ( retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) + && refresh_menu) { struct menu_state *menu_st = menu_state_get_ptr(); menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH @@ -1822,8 +1820,8 @@ void core_option_manager_set_default(core_option_manager_t *opt, /* Refresh menu (if required) if core option * visibility has changed as a result of modifying * the current option value */ - if (retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) && - refresh_menu) + if ( retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) + && refresh_menu) { struct menu_state *menu_st = menu_state_get_ptr(); menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH @@ -1859,9 +1857,9 @@ void core_option_manager_set_visible(core_option_manager_t *opt, { struct core_option *option = &opt->opts[i]; - if ((key_hash == option->key_hash) && - !string_is_empty(option->key) && - string_is_equal(key, option->key)) + if ( (key_hash == option->key_hash) + && !string_is_empty(option->key) + && string_is_equal(key, option->key)) { option->visible = visible; return; diff --git a/disk_control_interface.c b/disk_control_interface.c index cec617fb94..4305a32795 100644 --- a/disk_control_interface.c +++ b/disk_control_interface.c @@ -623,10 +623,8 @@ bool disk_control_append_image( goto error; /* Display log */ - _len = strlcpy(msg, msg_hash_to_str(MSG_APPENDED_DISK), sizeof(msg)); - msg[ _len] = ':'; - msg[++_len] = ' '; - msg[++_len] = '\0'; + _len = strlcpy(msg, msg_hash_to_str(MSG_APPENDED_DISK), sizeof(msg)); + _len += strlcpy(msg + _len, ": ", sizeof(msg) - _len); _len += strlcpy(msg + _len, image_filename, sizeof(msg) - _len); RARCH_LOG("[Disc]: %s\n", msg); @@ -652,11 +650,9 @@ error: if (!initial_disk_ejected) disk_control_set_eject_state(disk_control, false, false); - _len = strlcpy(msg, + _len = strlcpy(msg, msg_hash_to_str(MSG_FAILED_TO_APPEND_DISK), sizeof(msg)); - msg[ _len] = ':'; - msg[++_len] = ' '; - msg[++_len] = '\0'; + _len += strlcpy(msg + _len, ": ", sizeof(msg) - _len); _len += strlcpy(msg + _len, image_filename, sizeof(msg) - _len); runloop_msg_queue_push(msg, _len, 0, 180, true, NULL, diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index a9a36b84c8..09789fcbb6 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -1006,10 +1006,7 @@ size_t fill_pathname_join_special(char *s, { /* Try to preserve slash type. */ if (last_slash != (s + _len - 1)) - { - s[ _len] = last_slash[0]; - s[++_len] = '\0'; - } + _len += strlcpy(s + _len, &last_slash[0], len - _len); } else { @@ -1388,8 +1385,7 @@ size_t fill_pathname_application_path(char *s, size_t len) if (realpath(s, resolved_bundle_dir_buf)) { size_t _len = strlcpy(s, resolved_bundle_dir_buf, len - 1); - s[ _len] = '/'; - s[++_len] = '\0'; + _len += strlcpy(s + _len, "/", len - _len); rv = _len; } } diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 0e93f3e404..aca35ce307 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -3039,11 +3039,8 @@ static void rgui_update_dynamic_theme_path( { size_t _len = fill_pathname_join_special(rgui->theme_dynamic_path, theme_dir, rgui->menu_title, sizeof(rgui->theme_dynamic_path)); - rgui->theme_dynamic_path[ _len] = '.'; - rgui->theme_dynamic_path[++_len] = 'c'; - rgui->theme_dynamic_path[++_len] = 'f'; - rgui->theme_dynamic_path[++_len] = 'g'; - rgui->theme_dynamic_path[++_len] = '\0'; + _len += strlcpy(rgui->theme_dynamic_path + _len, ".cfg", + sizeof(rgui->theme_dynamic_path) - _len); use_playlist_theme = path_is_valid(rgui->theme_dynamic_path); } diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 216f2a64a2..a43302c8e8 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5888,12 +5888,14 @@ static int menu_displaylist_parse_input_description_list( sizeof(input_description)); if (i >= RARCH_FIRST_CUSTOM_BIND) { - input_description [ _len] = ' '; + _len += strlcpy(input_description + _len, " ", + sizeof(input_description) - _len); if ((i % 2) == 0) - input_description[++_len] = '+'; + _len += strlcpy(input_description + _len, "+", + sizeof(input_description) - _len); else - input_description[++_len] = '-'; - input_description [++_len] = '\0'; + _len += strlcpy(input_description + _len, "-", + sizeof(input_description) - _len); } if (string_is_empty(input_description)) @@ -8152,14 +8154,11 @@ unsigned menu_displaylist_build_list( { /* On/off key strings may be required, * so populate them... */ - on_string [ _len] = '.'; - on_string [++_len] = '\0'; + _len = strlcpy(on_string, ".", sizeof(on_string)); strlcpy(on_string + _len, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON), sizeof(on_string) - _len); - _len = 0; - off_string[ _len] = '.'; - off_string[++_len] = '\0'; + _len = strlcpy(off_string, ".", sizeof(off_string)); strlcpy(off_string + _len, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF), sizeof(off_string) - _len); diff --git a/tasks/task_content.c b/tasks/task_content.c index 7005217f3c..a2d54b48a2 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -866,11 +866,9 @@ static void content_file_get_path( { char info_path[PATH_MAX_LENGTH]; /* Build 'complete' archive file path */ - size_t _len = strlcpy(info_path, - content_path, sizeof(info_path)); - info_path[_len ] = '#'; - info_path[_len+1] = '\0'; - _len += 1; + size_t _len = strlcpy(info_path, content_path, sizeof(info_path)); + _len += strlcpy(info_path + _len, "#", + sizeof(info_path) - _len); strlcpy(info_path + _len, archive_file, sizeof(info_path) - _len); /* Update 'content' string_list */