diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index ef4f845adb..5970f72bf0 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -2988,19 +2988,24 @@ bool video_shader_apply_shader( /* Display message */ const char *msg_shader = msg_hash_to_str(MSG_SHADER); size_t _len = strlcpy(msg, msg_shader, sizeof(msg)); - msg[_len ] = ':'; - msg[_len+1] = ' '; - msg[_len+2] = '\0'; + msg[ _len] = ':'; + msg[++_len] = ' '; if (preset_file) { - msg[_len+2] = '"'; - msg[_len+3] = '\0'; - _len = strlcat(msg, preset_file, sizeof(msg)); - msg[_len ] = '"'; - msg[_len+1] = '\0'; + msg[++_len] = '"'; + msg[++_len] = '\0'; + _len += strlcpy(msg + _len, + preset_file, sizeof(msg) - _len); + msg[ _len] = '"'; + msg[++_len] = '\0'; } else - strlcat(msg, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NONE), sizeof(msg)); + { + msg[++_len] = '\0'; + _len += strlcpy(msg + _len, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NONE), + sizeof(msg) - _len); + } #ifdef HAVE_GFX_WIDGETS if (dispwidget_get_ptr()->active) diff --git a/input/input_driver.c b/input/input_driver.c index a1bbad2751..38ab914e92 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -3075,29 +3075,33 @@ void input_config_get_bind_string_joykey( } else { - const char *na_str = - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE); - size_t len = snprintf(buf, size, "%sHat #%u ", prefix, + size_t len = strlcpy(buf, prefix, size); + len += snprintf(buf + len, size - len, "Hat #%u ", (unsigned)GET_HAT(bind->joykey)); switch (GET_HAT_DIR(bind->joykey)) { case HAT_UP_MASK: - snprintf(buf + len, size - len, "up (%s)", na_str); + len += strlcpy(buf + len, "up (", size - len); break; case HAT_DOWN_MASK: - snprintf(buf + len, size - len, "down (%s)", na_str); + len += strlcpy(buf + len, "down (", size - len); break; case HAT_LEFT_MASK: - snprintf(buf + len, size - len, "left (%s)", na_str); + len += strlcpy(buf + len, "left (", size - len); break; case HAT_RIGHT_MASK: - snprintf(buf + len, size - len, "right (%s)", na_str); + len += strlcpy(buf + len, "right (", size - len); break; default: - snprintf(buf + len, size - len, "? (%s)", na_str); + len += strlcpy(buf + len, "? (", size - len); break; } + len += strlcpy(buf + len, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), + size - len); + buf[ len] = ')'; + buf[++len] = '\0'; } } else diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 90eb61bef3..d99baef02c 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1761,9 +1761,11 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) /* CPU Cores */ { unsigned cores = cpu_features_get_core_amount(); - snprintf(entry, sizeof(entry), "%s: %u", + size_t _len = strlcpy(entry, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CPU_CORES), - cores); + sizeof(entry)); + snprintf(entry + _len, sizeof(entry) - _len, + ": %u", cores); if (menu_entries_append(list, entry, "", MENU_ENUM_LABEL_CPU_CORES, MENU_SETTINGS_CORE_INFO_NONE, 0, 0, NULL)) @@ -1895,8 +1897,9 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) entry[ _len] = ':'; entry[++_len] = ' '; entry[++_len] = '\0'; - _len += snprintf(entry + _len, sizeof(entry) - _len, - "%s (v%d.%d)", os_ver, major, minor); + _len += strlcpy (entry + _len, os_ver, sizeof(entry) - _len); + _len += snprintf(entry + _len, sizeof(entry) - _len, + " (v%d.%d)", major, minor); if (menu_entries_append(list, entry, "", MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0, NULL)) @@ -1921,10 +1924,10 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) uint64_t memory_used = memory_total - frontend_driver_get_free_memory(); if (memory_used != 0 && memory_total != 0) { - snprintf(entry, sizeof(entry), "%s: %" PRIu64 "/%" PRIu64 " MB", - msg_hash_to_str(MSG_MEMORY), - BYTES_TO_MB(memory_used), - BYTES_TO_MB(memory_total)); + _len = strlcpy(entry, + msg_hash_to_str(MSG_MEMORY), sizeof(entry)); + snprintf(entry + _len, sizeof(entry) - _len, ": %" PRIu64 "/%" PRIu64 " MB", + BYTES_TO_MB(memory_used), BYTES_TO_MB(memory_total)); if (menu_entries_append(list, entry, "", MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, @@ -1944,8 +1947,9 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) /* N/A */ if (state == FRONTEND_POWERSTATE_NONE) - snprintf(tmp, sizeof(tmp), "%s", - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE)); + strlcpy(tmp, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), + sizeof(tmp)); /* n% (No Source) */ else if (state == FRONTEND_POWERSTATE_NO_SOURCE) snprintf(tmp, sizeof(tmp), "%d%% (%s)", percent, @@ -1964,8 +1968,11 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING)); /* Power Source */ - _len = snprintf(entry, sizeof(entry), "%s: ", - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE)); + _len = strlcpy(entry, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE), + sizeof(entry)); + entry[ _len] = ':'; + entry[++_len] = ' '; + entry[++_len] = '\0'; strlcpy(entry + _len, tmp, sizeof(entry) - _len); if (menu_entries_append(list, entry, "", MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, @@ -2002,9 +2009,10 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) metrics.type = DISPLAY_METRIC_MM_WIDTH; if (video_context_driver_get_metrics(&metrics)) { - snprintf(entry, sizeof(entry), "%s: %.2f", + _len = strlcpy(entry, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH), - val); + sizeof(entry)); + snprintf(entry + _len, sizeof(entry) - _len, ": %.2f", val); if (menu_entries_append(list, entry, "", MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0, NULL)) @@ -2015,9 +2023,10 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) metrics.type = DISPLAY_METRIC_MM_HEIGHT; if (video_context_driver_get_metrics(&metrics)) { - snprintf(entry, sizeof(entry), "%s: %.2f", + _len = strlcpy(entry, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT), - val); + sizeof(entry)); + snprintf(entry + _len, sizeof(entry) - _len, ": %.2f", val); if (menu_entries_append(list, entry, "", MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0, NULL)) @@ -2028,9 +2037,10 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list) metrics.type = DISPLAY_METRIC_DPI; if (video_context_driver_get_metrics(&metrics)) { - snprintf(entry, sizeof(entry), "%s: %.2f", + _len = strlcpy(entry, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI), - val); + sizeof(entry)); + snprintf(entry + _len, sizeof(entry) - _len, ": %.2f", val); if (menu_entries_append(list, entry, "", MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0, NULL)) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 61182e19d5..a983dc2b8c 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4830,6 +4830,7 @@ static void setting_get_string_representation_uint_video_monitor_index(rarch_set static void setting_get_string_representation_uint_custom_viewport_width(rarch_setting_t *setting, char *s, size_t len) { + size_t _len; struct retro_game_geometry *geom = NULL; video_driver_state_t *video_st = video_state_get_ptr(); struct retro_system_av_info *av_info = &video_st->av_info; @@ -4838,23 +4839,21 @@ static void setting_get_string_representation_uint_custom_viewport_width(rarch_s return; geom = (struct retro_game_geometry*)&av_info->geometry; + _len = snprintf(s, len, "%u", + *setting->value.target.unsigned_integer); if (!(rotation % 2) && (*setting->value.target.unsigned_integer % geom->base_width == 0)) - snprintf(s, len, "%u (%ux)", - *setting->value.target.unsigned_integer, + snprintf(s + _len, len - _len, " (%ux)", *setting->value.target.unsigned_integer / geom->base_width); else if ((rotation % 2) && (*setting->value.target.unsigned_integer % geom->base_height == 0)) - snprintf(s, len, "%u (%ux)", - *setting->value.target.unsigned_integer, + snprintf(s + _len, len - _len, " (%ux)", *setting->value.target.unsigned_integer / geom->base_height); - else - snprintf(s, len, "%u", - *setting->value.target.unsigned_integer); } static void setting_get_string_representation_uint_custom_viewport_height(rarch_setting_t *setting, char *s, size_t len) { + size_t _len; struct retro_game_geometry *geom = NULL; video_driver_state_t *video_st = video_state_get_ptr(); struct retro_system_av_info *av_info = &video_st->av_info; @@ -4863,18 +4862,15 @@ static void setting_get_string_representation_uint_custom_viewport_height(rarch_ return; geom = (struct retro_game_geometry*)&av_info->geometry; + _len = snprintf(s, len, "%u", + *setting->value.target.unsigned_integer); if (!(rotation % 2) && (*setting->value.target.unsigned_integer % geom->base_height == 0)) - snprintf(s, len, "%u (%ux)", - *setting->value.target.unsigned_integer, + snprintf(s + _len, len - _len, " (%ux)", *setting->value.target.unsigned_integer / geom->base_height); else if ((rotation % 2) && (*setting->value.target.unsigned_integer % geom->base_width == 0)) - snprintf(s, len, "%u (%ux)", - *setting->value.target.unsigned_integer, + snprintf(s + _len, len - _len, " (%ux)", *setting->value.target.unsigned_integer / geom->base_width); - else - snprintf(s, len, "%u", - *setting->value.target.unsigned_integer); } #ifdef HAVE_WASAPI @@ -7766,10 +7762,12 @@ static void get_string_representation_input_mouse_index( if (!string_is_empty(device_name)) strlcpy(s, device_name, len); else if (map > 0) - snprintf(s, len, - "%s (#%u)", + { + size_t _len = strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), - map + 1); + len); + snprintf(s + _len, len - _len, " (#%u)", map + 1); + } else strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DONT_CARE), len); } @@ -8954,10 +8952,8 @@ static bool setting_append_list_input_player_options( static char split_joycon[MAX_USERS][64]; static char label_split_joycon[MAX_USERS][64]; #endif - - tmp_string[0] = '\0'; - - snprintf(tmp_string, sizeof(tmp_string), "input_player%u", user + 1); + size_t _len = strlcpy(tmp_string, "input_player", sizeof(tmp_string)); + snprintf(tmp_string + _len, sizeof(tmp_string) - _len, "%u", user + 1); snprintf(analog_to_digital[user], sizeof(analog_to_digital[user]), msg_hash_to_str(MENU_ENUM_LABEL_INPUT_PLAYER_ANALOG_DPAD_MODE), user + 1); @@ -14831,8 +14827,8 @@ static bool setting_append_list( static char binds_list[MAX_USERS][255]; static char binds_label[MAX_USERS][255]; unsigned user_value = user + 1; - - snprintf(binds_list[user], sizeof(binds_list[user]), "%d_input_binds_list", user_value); + size_t _len = snprintf(binds_list[user], sizeof(binds_list[user]), "%d", user_value); + strlcpy(binds_list[user] + _len, "_input_binds_list", sizeof(binds_list[user]) - _len); snprintf(binds_label[user], sizeof(binds_label[user]), val_input_user_binds, user_value); @@ -21524,9 +21520,8 @@ static bool setting_append_list( for (user = 0; user < max_users; user++) { char s1[64], s2[64]; - - snprintf(s1, sizeof(s1), "%s_user_p%d", - lbl_network_remote_enable, user + 1); + size_t _len = strlcpy(s1, lbl_network_remote_enable, sizeof(s1)); + snprintf(s1 + _len, sizeof(s1) - _len, "_user_p%d", user + 1); snprintf(s2, sizeof(s2), val_network_remote_enable, user + 1); CONFIG_BOOL_ALT(