diff --git a/libretro-common/net/net_http.c b/libretro-common/net/net_http.c index 8eab42eb00..a1c6627e91 100644 --- a/libretro-common/net/net_http.c +++ b/libretro-common/net/net_http.c @@ -301,30 +301,32 @@ struct http_connection_t *net_http_connection_new(const char *url, uri = strchr(conn->scan, (char) '/'); - if (strchr(conn->scan, (char) ':') != NULL) + if (strchr(conn->scan, (char) ':')) { - url_dup = strdup(conn->scan); - domain_port = strtok(url_dup, ":"); - domain_port2 = strtok(NULL, ":"); - url_port = domain_port2; - if (strchr(domain_port2, (char) '/') != NULL) - url_port = strtok(domain_port2, "/"); + size_t copied; + url_dup = strdup(conn->scan); + domain_port = strtok(url_dup, ":"); + domain_port2 = strtok(NULL, ":"); + url_port = domain_port2; + if (strchr(domain_port2, (char) '/')) + url_port = strtok(domain_port2, "/"); - if (url_port != NULL) + if (url_port) conn->port = atoi(url_port); - strlcpy(new_domain, domain_port, sizeof(new_domain)); - + copied = strlcpy(new_domain, domain_port, sizeof(new_domain)); free(url_dup); - if (uri != NULL) + if (uri) { - if (strchr(uri, (char) '/') == NULL) + if (!strchr(uri, (char) '/')) strlcat(new_domain, uri, sizeof(new_domain)); else { - strlcat(new_domain, "/", sizeof(new_domain)); - strlcat(new_domain, strchr(uri, (char) '/')+sizeof(char), sizeof(new_domain)); + new_domain[copied] = '/'; + new_domain[copied+1] = '\0'; + strlcat(new_domain, strchr(uri, (char)'/') + sizeof(char), + sizeof(new_domain)); } strlcpy(conn->scan, new_domain, strlen(conn->scan) + 1); } diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 72476f8f2b..c09e10df8d 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -368,6 +368,7 @@ static int action_get_title_group_settings(const char *path, const char *label, { char elem0[255]; char elem1[255]; + size_t copied; struct string_list *list_label = string_split(label, "|"); elem0[0] = elem1[0] = '\0'; @@ -383,11 +384,14 @@ static int action_get_title_group_settings(const char *path, const char *label, string_list_free(list_label); } - strlcpy(s, elem0, len); + copied = strlcpy(s, elem0, len); if (!string_is_empty(elem1)) { - strlcat(s, " - ", len); + s[copied] = ' '; + s[copied+1] = '-'; + s[copied+2] = ' '; + s[copied+3] = '\0'; strlcat(s, elem1, len); } } diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index f47f7cbd4a..6062c42744 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -625,7 +625,8 @@ static unsigned menu_displaylist_parse_system_info(menu_displaylist_info_t *info if (frontend->get_powerstate) { - int seconds = 0, percent = 0; + size_t copied = 0; + int seconds = 0, percent = 0; enum frontend_powerstate state = frontend->get_powerstate(&seconds, &percent); @@ -637,42 +638,55 @@ static unsigned menu_displaylist_parse_system_info(menu_displaylist_info_t *info switch (state) { case FRONTEND_POWERSTATE_NONE: - strlcat(tmp2, " ", sizeof(tmp2)); + tmp2[copied] = ' '; + tmp2[copied+1] = '\0'; strlcat(tmp2, msg_hash_to_str( MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), sizeof(tmp2)); break; case FRONTEND_POWERSTATE_NO_SOURCE: - strlcat(tmp2, " (", sizeof(tmp2)); - strlcat(tmp2, + tmp2[copied] = ' '; + tmp2[copied+1] = '('; + tmp2[copied+2] = '\0'; + copied = strlcat(tmp2, msg_hash_to_str( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE), sizeof(tmp2)); - strlcat(tmp2, ")", sizeof(tmp2)); + tmp2[copied] = ')'; + tmp2[copied+1] = '\0'; break; case FRONTEND_POWERSTATE_CHARGING: - strlcat(tmp2, " (", sizeof(tmp2)); - strlcat(tmp2, + tmp2[copied] = ' '; + tmp2[copied+1] = '('; + tmp2[copied+2] = '\0'; + copied = strlcat(tmp2, msg_hash_to_str( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING), sizeof(tmp2)); - strlcat(tmp2, ")", sizeof(tmp2)); + tmp2[copied] = ')'; + tmp2[copied+1] = '\0'; break; case FRONTEND_POWERSTATE_CHARGED: - strlcat(tmp2, " (", sizeof(tmp2)); - strlcat(tmp2, + tmp2[copied] = ' '; + tmp2[copied+1] = '('; + tmp2[copied+2] = '\0'; + copied = strlcat(tmp2, msg_hash_to_str( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED), sizeof(tmp2)); - strlcat(tmp2, ")", sizeof(tmp2)); + tmp2[copied] = ')'; + tmp2[copied+1] = '\0'; break; case FRONTEND_POWERSTATE_ON_POWER_SOURCE: - strlcat(tmp2, " (", sizeof(tmp2)); - strlcat(tmp2, + tmp2[copied] = ' '; + tmp2[copied+1] = '('; + tmp2[copied+2] = '\0'; + copied = strlcat(tmp2, msg_hash_to_str( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING), sizeof(tmp2)); - strlcat(tmp2, ")", sizeof(tmp2)); + tmp2[copied] = ')'; + tmp2[copied+1] = '\0'; break; } diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 2bdd24d9cf..40b74a84fc 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -3904,9 +3904,13 @@ void menu_subsystem_populate(const struct retro_subsystem_info* subsystem, menu_ for (j = 0; j < content_get_subsystem_rom_id(); j++) { - strlcat(rom_buff, path_basename(content_get_subsystem_rom(j)), sizeof(rom_buff)); + size_t copied = strlcat(rom_buff, + path_basename(content_get_subsystem_rom(j)), sizeof(rom_buff)); if (j != content_get_subsystem_rom_id() - 1) - strlcat(rom_buff, "|", sizeof(rom_buff)); + { + rom_buff[copied] = '|'; + rom_buff[copied+1] = '\0'; + } } if (!string_is_empty(rom_buff)) diff --git a/tasks/task_pl_thumbnail_download.c b/tasks/task_pl_thumbnail_download.c index 2b35f62b3f..cb3a893049 100644 --- a/tasks/task_pl_thumbnail_download.c +++ b/tasks/task_pl_thumbnail_download.c @@ -81,6 +81,7 @@ static bool get_thumbnail_paths( char *path, size_t path_size, char *url, size_t url_size) { + size_t copied; const char *system = NULL; const char *db_name = NULL; const char *img_name = NULL; @@ -143,12 +144,15 @@ static bool get_thumbnail_paths( return false; /* Generate remote path */ - strlcpy(raw_url, file_path_str(FILE_PATH_CORE_THUMBNAILS_URL), sizeof(raw_url)); - strlcat(raw_url, "/", sizeof(raw_url)); - strlcat(raw_url, system_name, sizeof(raw_url)); - strlcat(raw_url, "/", sizeof(raw_url)); - strlcat(raw_url, sub_dir, sizeof(raw_url)); - strlcat(raw_url, "/", sizeof(raw_url)); + copied = strlcpy(raw_url, file_path_str(FILE_PATH_CORE_THUMBNAILS_URL), sizeof(raw_url)); + raw_url[copied] = '/'; + raw_url[copied+1] = '\0'; + copied = strlcat(raw_url, system_name, sizeof(raw_url)); + raw_url[copied] = '/'; + raw_url[copied+1] = '\0'; + copied = strlcat(raw_url, sub_dir, sizeof(raw_url)); + raw_url[copied] = '/'; + raw_url[copied+1] = '\0'; strlcat(raw_url, img_name, sizeof(raw_url)); if (string_is_empty(raw_url))