diff --git a/configuration.c b/configuration.c index 7ee23acbc9..9e13be11a9 100644 --- a/configuration.c +++ b/configuration.c @@ -5096,12 +5096,12 @@ bool config_save_file(const char *path) snprintf(formatted_number, sizeof(formatted_number), "%u", i + 1); - strlcpy(cfg, "input_device_p", sizeof(cfg)); - strlcat(cfg, formatted_number, sizeof(cfg)); + _len = strlcpy(cfg, "input_device_p", sizeof(cfg)); + strlcpy(cfg + _len, formatted_number, sizeof(cfg) - _len); config_set_int(conf, cfg, settings->uints.input_device[i]); - strlcpy(cfg, "input_player", sizeof(cfg)); - _len = strlcat(cfg, formatted_number, sizeof(cfg)); + _len = strlcpy(cfg, "input_player", sizeof(cfg)); + _len += strlcpy(cfg + _len, formatted_number, sizeof(cfg) - _len); strlcpy(cfg + _len, "_mouse_index", sizeof(cfg) - _len); config_set_int(conf, cfg, settings->uints.input_mouse_index[i]); @@ -5417,8 +5417,8 @@ int8_t config_save_overrides(enum override_type type, void *data, bool remove) RARCH_DBG("[Overrides]: %s = \"%u\"\n", cfg, overrides->uints.input_device[i]); } - strlcpy(cfg, "input_player", sizeof(cfg)); - _len = strlcat(cfg, formatted_number, sizeof(cfg)); + _len = strlcpy(cfg, "input_player", sizeof(cfg)); + _len += strlcpy(cfg + _len, formatted_number, sizeof(cfg) - _len); if (settings->uints.input_mouse_index[i] != overrides->uints.input_mouse_index[i]) diff --git a/core_option_manager.c b/core_option_manager.c index b4923de719..6c3c7c74fc 100644 --- a/core_option_manager.c +++ b/core_option_manager.c @@ -854,12 +854,12 @@ core_option_manager_t *core_option_manager_new_vars( { if (core_option_manager_parse_variable(opt, size, var, config_src)) { + size_t _len = 0; /* If variable is read correctly, add it to * the map */ char address[256]; - - address[0] = '#'; - address[1] = '\0'; + address[ _len] = '#'; + address[++_len] = '\0'; /* Address string is normally: * @@ -869,7 +869,7 @@ core_option_manager_t *core_option_manager_new_vars( * so we could just set the address to * - but for consistency with * 'modern' options, we apply the tag regardless */ - strlcat(address, var->key, sizeof(address)); + strlcpy(address + _len, var->key, sizeof(address) - _len); if (!nested_list_add_item(opt->option_map, address, NULL, (const void*)&opt->opts[size])) diff --git a/database_info.c b/database_info.c index c3fdb308c4..564aeeac1f 100644 --- a/database_info.c +++ b/database_info.c @@ -34,415 +34,415 @@ int database_info_build_query_enum(char *s, size_t len, enum database_query_type type, const char *path) { - size_t pos = 0; + size_t _len = 0; switch (type) { case DATABASE_QUERY_ENTRY: - s[0] = '{'; - s[1] = '\''; - s[2] = 'n'; - s[3] = 'a'; - s[4] = 'm'; - s[5] = 'e'; - s[6] = '\''; - s[7] = ':'; - s[8] = '"'; - s[9] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'n'; + s[++_len] = 'a'; + s[++_len] = 'm'; + s[++_len] = 'e'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_PUBLISHER: - s[0] = '{'; - s[1] = '\''; - s[2] = 'p'; - s[3] = 'u'; - s[4] = 'b'; - s[5] = 'l'; - s[6] = 'i'; - s[7] = 's'; - s[8] = 'h'; - s[9] = 'e'; - s[10] = 'r'; - s[11] = '\''; - s[12] = ':'; - s[13] = '"'; - s[14] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'p'; + s[++_len] = 'u'; + s[++_len] = 'b'; + s[++_len] = 'l'; + s[++_len] = 'i'; + s[++_len] = 's'; + s[++_len] = 'h'; + s[++_len] = 'e'; + s[++_len] = 'r'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_DEVELOPER: - s[0] = '{'; - s[1] = '\''; - s[2] = 'd'; - s[3] = 'e'; - s[4] = 'v'; - s[5] = 'e'; - s[6] = 'l'; - s[7] = 'o'; - s[8] = 'p'; - s[9] = 'e'; - s[10] = 'r'; - s[11] = '\''; - s[12] = ':'; - s[13] = 'g'; - s[14] = 'l'; - s[15] = 'o'; - s[16] = 'b'; - s[17] = '('; - s[18] = '\''; - s[19] = '*'; - s[20] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '*'; - s[pos+1] = '\''; - s[pos+2] = ')'; - s[pos+3] = '}'; - s[pos+4] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'd'; + s[++_len] = 'e'; + s[++_len] = 'v'; + s[++_len] = 'e'; + s[++_len] = 'l'; + s[++_len] = 'o'; + s[++_len] = 'p'; + s[++_len] = 'e'; + s[++_len] = 'r'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = 'g'; + s[++_len] = 'l'; + s[++_len] = 'o'; + s[++_len] = 'b'; + s[++_len] = '('; + s[++_len] = '\''; + s[++_len] = '*'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '*'; + s[++_len] = '\''; + s[++_len] = ')'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_ORIGIN: - s[0] = '{'; - s[1] = '\''; - s[2] = 'o'; - s[3] = 'r'; - s[4] = 'i'; - s[5] = 'g'; - s[6] = 'i'; - s[7] = 'n'; - s[8] = '\''; - s[9] = ':'; - s[10] = '"'; - s[11] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'o'; + s[++_len] = 'r'; + s[++_len] = 'i'; + s[++_len] = 'g'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_FRANCHISE: - s[0] = '{'; - s[1] = '\''; - s[2] = 'f'; - s[3] = 'r'; - s[4] = 'a'; - s[5] = 'n'; - s[6] = 'c'; - s[7] = 'h'; - s[8] = 'i'; - s[9] = 's'; - s[10] = 'e'; - s[11] = '\''; - s[12] = ':'; - s[13] = '"'; - s[14] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'f'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 'n'; + s[++_len] = 'c'; + s[++_len] = 'h'; + s[++_len] = 'i'; + s[++_len] = 's'; + s[++_len] = 'e'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_RATING: - s[0] = '{'; - s[1] = '\''; - s[2] = 'e'; - s[3] = 's'; - s[4] = 'r'; - s[5] = 'b'; - s[6] = '_'; - s[7] = 'r'; - s[8] = 'a'; - s[9] = 't'; - s[10] = 'i'; - s[11] = 'n'; - s[12] = 'g'; - s[13] = '\''; - s[14] = ':'; - s[15] = '"'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'e'; + s[++_len] = 's'; + s[++_len] = 'r'; + s[++_len] = 'b'; + s[++_len] = '_'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 't'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = 'g'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_BBFC_RATING: - s[0] = '{'; - s[1] = '\''; - s[2] = 'b'; - s[3] = 'b'; - s[4] = 'f'; - s[5] = 'c'; - s[6] = '_'; - s[7] = 'r'; - s[8] = 'a'; - s[9] = 't'; - s[10] = 'i'; - s[11] = 'n'; - s[12] = 'g'; - s[13] = '\''; - s[14] = ':'; - s[15] = '"'; - s[16] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'b'; + s[++_len] = 'b'; + s[++_len] = 'f'; + s[++_len] = 'c'; + s[++_len] = '_'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 't'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = 'g'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[++_len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_ELSPA_RATING: - s[0] = '{'; - s[1] = '\''; - s[2] = 'e'; - s[3] = 'l'; - s[4] = 's'; - s[5] = 'p'; - s[6] = 'a'; - s[7] = '_'; - s[8] = 'r'; - s[9] = 'a'; - s[10] = 't'; - s[11] = 'i'; - s[12] = 'n'; - s[13] = 'g'; - s[14] = '\''; - s[15] = ':'; - s[16] = '"'; - s[17] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'e'; + s[++_len] = 'l'; + s[++_len] = 's'; + s[++_len] = 'p'; + s[++_len] = 'a'; + s[++_len] = '_'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 't'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = 'g'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_ESRB_RATING: - s[0] = '{'; - s[1] = '\''; - s[2] = 'e'; - s[3] = 's'; - s[4] = 'r'; - s[5] = 'b'; - s[6] = '_'; - s[7] = 'r'; - s[8] = 'a'; - s[9 ] = 't'; - s[10] = 'i'; - s[11] = 'n'; - s[12] = 'g'; - s[13] = '\''; - s[14] = ':'; - s[15] = '"'; - s[16] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'e'; + s[++_len] = 's'; + s[++_len] = 'r'; + s[++_len] = 'b'; + s[++_len] = '_'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 't'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = 'g'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_PEGI_RATING: - s[0] = '{'; - s[1] = '\''; - s[2] = 'p'; - s[3] = 'e'; - s[4] = 'g'; - s[5] = 'i'; - s[6] = '_'; - s[7] = 'r'; - s[8] = 'a'; - s[9] = 't'; - s[10] = 'i'; - s[11] = 'n'; - s[12] = 'g'; - s[13] = '\''; - s[14] = ':'; - s[15] = '"'; - s[16] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'p'; + s[++_len] = 'e'; + s[++_len] = 'g'; + s[++_len] = 'i'; + s[++_len] = '_'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 't'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = 'g'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_CERO_RATING: - s[0] = '{'; - s[1] = '\''; - s[2] = 'c'; - s[3] = 'e'; - s[4] = 'r'; - s[5] = 'o'; - s[6] = '_'; - s[7] = 'r'; - s[8] = 'a'; - s[9] = 't'; - s[10] = 'i'; - s[11] = 'n'; - s[12] = 'g'; - s[13] = '\''; - s[14] = ':'; - s[15] = '"'; - s[16] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'c'; + s[++_len] = 'e'; + s[++_len] = 'r'; + s[++_len] = 'o'; + s[++_len] = '_'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 't'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = 'g'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_ENHANCEMENT_HW: - s[0] = '{'; - s[1] = '\''; - s[2] = 'e'; - s[3] = 'n'; - s[4] = 'h'; - s[5] = 'a'; - s[6] = 'n'; - s[7] = 'c'; - s[8] = 'e'; - s[9] = 'm'; - s[10] = 'e'; - s[11] = 'n'; - s[12] = 't'; - s[13] = '_'; - s[14] = 'h'; - s[15] = 'w'; - s[16] = '\''; - s[17] = ':'; - s[18] = '"'; - s[19] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'e'; + s[++_len] = 'n'; + s[++_len] = 'h'; + s[++_len] = 'a'; + s[++_len] = 'n'; + s[++_len] = 'c'; + s[++_len] = 'e'; + s[++_len] = 'm'; + s[++_len] = 'e'; + s[++_len] = 'n'; + s[++_len] = 't'; + s[++_len] = '_'; + s[++_len] = 'h'; + s[++_len] = 'w'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_EDGE_MAGAZINE_RATING: - s[0] = '{'; - s[1] = '\''; - s[2] = 'e'; - s[3] = 'd'; - s[4] = 'g'; - s[5] = 'e'; - s[6] = '_'; - s[7] = 'r'; - s[8] = 'a'; - s[9] = 't'; - s[10] = 'i'; - s[11] = 'n'; - s[12] = 'g'; - s[13] = '\''; - s[14] = ':'; - s[15] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '}'; - s[pos+1] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'e'; + s[++_len] = 'd'; + s[++_len] = 'g'; + s[++_len] = 'e'; + s[++_len] = '_'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 't'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = 'g'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_EDGE_MAGAZINE_ISSUE: - s[0] = '{'; - s[1] = '\''; - s[2] = 'e'; - s[3] = 'd'; - s[4] = 'g'; - s[5] = 'e'; - s[6] = '_'; - s[7] = 'i'; - s[8] = 's'; - s[9] = 's'; - s[10] = 'u'; - s[11] = 'e'; - s[12] = '\''; - s[13] = ':'; - s[14] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '}'; - s[pos+1] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'e'; + s[++_len] = 'd'; + s[++_len] = 'g'; + s[++_len] = 'e'; + s[++_len] = '_'; + s[++_len] = 'i'; + s[++_len] = 's'; + s[++_len] = 's'; + s[++_len] = 'u'; + s[++_len] = 'e'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_FAMITSU_MAGAZINE_RATING: - s[0] = '{'; - s[1] = '\''; - s[2] = 'f'; - s[3] = 'a'; - s[4] = 'm'; - s[5] = 'i'; - s[6] = 't'; - s[7] = 's'; - s[8] = 'u'; - s[9] = '_'; - s[10] = 'r'; - s[11] = 'a'; - s[12] = 't'; - s[13] = 'i'; - s[14] = 'n'; - s[15] = 'g'; - s[16] = '\''; - s[17] = ':'; - s[18] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '}'; - s[pos+1] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'f'; + s[++_len] = 'a'; + s[++_len] = 'm'; + s[++_len] = 'i'; + s[++_len] = 't'; + s[++_len] = 's'; + s[++_len] = 'u'; + s[++_len] = '_'; + s[++_len] = 'r'; + s[++_len] = 'a'; + s[++_len] = 't'; + s[++_len] = 'i'; + s[++_len] = 'n'; + s[++_len] = 'g'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_RELEASEDATE_MONTH: - s[0] = '{'; - s[1] = '\''; - s[2] = 'r'; - s[3] = 'e'; - s[4] = 'l'; - s[5] = 'e'; - s[6] = 'a'; - s[7] = 's'; - s[8] = 'e'; - s[9] = 'm'; - s[10] = 'o'; - s[11] = 'n'; - s[12] = 't'; - s[13] = 'h'; - s[14] = '\''; - s[15] = ':'; - s[16] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '}'; - s[pos+1] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'r'; + s[++_len] = 'e'; + s[++_len] = 'l'; + s[++_len] = 'e'; + s[++_len] = 'a'; + s[++_len] = 's'; + s[++_len] = 'e'; + s[++_len] = 'm'; + s[++_len] = 'o'; + s[++_len] = 'n'; + s[++_len] = 't'; + s[++_len] = 'h'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_RELEASEDATE_YEAR: - s[0] = '{'; - s[1] = '\''; - s[2] = 'r'; - s[3] = 'e'; - s[4] = 'l'; - s[5] = 'e'; - s[6] = 'a'; - s[7] = 's'; - s[8] = 'e'; - s[9] = 'y'; - s[10] = 'e'; - s[11] = 'a'; - s[12] = 'r'; - s[13] = '\''; - s[14] = ':'; - s[15] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '}'; - s[pos+1] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'r'; + s[++_len] = 'e'; + s[++_len] = 'l'; + s[++_len] = 'e'; + s[++_len] = 'a'; + s[++_len] = 's'; + s[++_len] = 'e'; + s[++_len] = 'y'; + s[++_len] = 'e'; + s[++_len] = 'a'; + s[++_len] = 'r'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_ENTRY_MAX_USERS: - s[0] = '{'; - s[1] = '\''; - s[2] = 'u'; - s[3] = 's'; - s[4] = 'e'; - s[5] = 'r'; - s[6] = 's'; - s[7] = '\''; - s[8] = ':'; - s[9] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '}'; - s[pos+1] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = 'u'; + s[++_len] = 's'; + s[++_len] = 'e'; + s[++_len] = 'r'; + s[++_len] = 's'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '}'; + s[++_len] = '\0'; break; case DATABASE_QUERY_NONE: - s[0] = '{'; - s[1] = '\''; - s[2] = '\''; - s[3] = ':'; - s[4] = '\''; - s[5] = ':'; - s[6] = '"'; - s[7] = '\0'; - pos = strlcat(s, path, len); - s[pos ] = '"'; - s[pos+1] = '}'; - s[pos+2] = '\0'; + s[ _len] = '{'; + s[++_len] = '\''; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '\''; + s[++_len] = ':'; + s[++_len] = '"'; + s[++_len] = '\0'; + _len += strlcpy(s + _len, path, len - _len); + s[ _len] = '"'; + s[++_len] = '}'; + s[++_len] = '\0'; break; } diff --git a/deps/discord-rpc/src/discord_register_linux.c b/deps/discord-rpc/src/discord_register_linux.c index 1551fb50b6..dbb52a512e 100644 --- a/deps/discord-rpc/src/discord_register_linux.c +++ b/deps/discord-rpc/src/discord_register_linux.c @@ -25,6 +25,7 @@ int get_process_id(void) * Discord client as discord-:// */ void Discord_Register(const char *applicationId, const char *command) { + size_t _len; FILE* fp; int fileLen; char xdgMimeCommand[1024]; @@ -61,21 +62,39 @@ void Discord_Register(const char *applicationId, const char *command) return; } - snprintf(desktopFilename, sizeof(desktopFilename), "/discord-%s.desktop", applicationId); + _len = strlcpy(desktopFilename, + "/discord-", + sizeof(desktopFilename)); + _len += strlcpy(desktopFilename + _len, + applicationId, + sizeof(desktopFilename) - _len); + _len += strlcpy(desktopFilename + _len, + ".desktop", + sizeof(desktopFilename) - _len); - snprintf(desktopFilePath, sizeof(desktopFilePath), "%s/.local", home); + _len = strlcpy(desktopFilePath, + home, + sizeof(desktopFilePath)); + _len += strlcpy(desktopFilePath + _len, + "/.local", + sizeof(desktopFilePath) - _len); if (!path_mkdir(desktopFilePath)) return; - strlcat(desktopFilePath, "/share", sizeof(desktopFilePath)); + _len += strlcpy(desktopFilePath + _len, + "/share", + sizeof(desktopFilePath) - _len); if (!path_mkdir(desktopFilePath)) return; - strlcat(desktopFilePath, "/applications", sizeof(desktopFilePath)); + _len += strlcpy(desktopFilePath + _len, + "/applications", + sizeof(desktopFilePath) - _len); if (!path_mkdir(desktopFilePath)) return; - strlcat(desktopFilePath, desktopFilename, sizeof(desktopFilePath)); + _len += strlcpy(desktopFilePath + _len, + desktopFilename, + sizeof(desktopFilePath) - _len); - fp = fopen(desktopFilePath, "w"); - if (!fp) + if (!(fp = fopen(desktopFilePath, "w"))) return; fwrite(desktopFile, 1, fileLen, fp); @@ -93,6 +112,7 @@ void Discord_Register(const char *applicationId, const char *command) void Discord_RegisterSteamGame(const char *applicationId, const char *steamId) { char command[256]; - snprintf(command, sizeof(command), "xdg-open steam://rungameid/%s", steamId); + size_t _len = strlcpy(command, "xdg-open steam://rungameid/", sizeof(command)); + strlcpy(command + _len, steamId, sizeof(command) - _len); Discord_Register(applicationId, command); } diff --git a/uwp/uwp_main.cpp b/uwp/uwp_main.cpp index 092a4c57f7..06099ec4e5 100644 --- a/uwp/uwp_main.cpp +++ b/uwp/uwp_main.cpp @@ -1092,9 +1092,10 @@ extern "C" { if (split.size >= 2) { - strlcpy(lang_iso + _len, "_", sizeof(lang_iso) - _len); - strlcat(lang_iso, split.elems[split.size >= 3 ? 2 : 1].data, - sizeof(lang_iso)); + _len += strlcpy(lang_iso + _len, "_", sizeof(lang_iso) - _len); + strlcpy(lang_iso + _len, + split.elems[split.size >= 3 ? 2 : 1].data, + sizeof(lang_iso) - _len); } string_list_deinitialize(&split); return retroarch_get_language_from_iso(lang_iso);