From 1296fc474507a78f2fa0d7b35ecfd48f8341ed2e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 19 Sep 2020 23:28:01 +0200 Subject: [PATCH] use strlcpy_literal for string literal copies --- database_info.c | 2 +- frontend/frontend_driver.c | 54 +++++++++++----------- gfx/drivers_shader/glslang_util_cxx.cpp | 2 +- libretro-common/include/string/stdstring.h | 2 + libretro-db/query.c | 20 ++++---- retroarch.c | 53 +++++++++++---------- 6 files changed, 67 insertions(+), 66 deletions(-) diff --git a/database_info.c b/database_info.c index 6f9fe9366c..e2a189f661 100644 --- a/database_info.c +++ b/database_info.c @@ -37,7 +37,7 @@ int database_info_build_query_enum(char *s, size_t len, bool add_quotes = true; bool add_glob = false; - strlcpy(s, "{'", len); + strcpy_literal(s, "{'"); switch (type) { diff --git a/frontend/frontend_driver.c b/frontend/frontend_driver.c index 1082686205..e99e5b0c32 100644 --- a/frontend/frontend_driver.c +++ b/frontend/frontend_driver.c @@ -172,56 +172,56 @@ bool frontend_driver_get_core_extension(char *s, size_t len) #ifdef HAVE_DYNAMIC #ifdef _WIN32 - strlcpy(s, "dll", len); + strcpy_literal(s, "dll"); return true; #elif defined(__APPLE__) || defined(__MACH__) - strlcpy(s, "dylib", len); + strcpy_literal(s, "dylib"); return true; #else - strlcpy(s, "so", len); + strcpy_literal(s, "so"); return true; #endif #else #if defined(__CELLOS_LV2__) - strlcpy(s, "self|bin", len); + strcpy_literal(s, "self|bin"); return true; #elif defined(PSP) - strlcpy(s, "pbp", len); + strcpy_literal(s, "pbp"); return true; #elif defined(VITA) - strlcpy(s, "self|bin", len); + strcpy_literal(s, "self|bin"); return true; #elif defined(PS2) - strlcpy(s, "elf", len); + strcpy_literal(s, "elf"); return true; #elif defined(_XBOX1) - strlcpy(s, "xbe", len); + strcpy_literal(s, "xbe"); return true; #elif defined(_XBOX360) - strlcpy(s, "xex", len); + strcpy_literal(s, "xex"); return true; #elif defined(GEKKO) - strlcpy(s, "dol", len); + strcpy_literal(s, "dol"); return true; #elif defined(HW_WUP) - strlcpy(s, "rpx|elf", len); + strcpy_literal(s, "rpx|elf"); return true; #elif defined(__linux__) - strlcpy(s, "elf", len); + strcpy_literal(s, "elf"); return true; #elif defined(HAVE_LIBNX) - strlcpy(s, "nro", len); + strcpy_literal(s, "nro"); return true; #elif defined(DJGPP) - strlcpy(s, "exe", len); + strcpy_literal(s, "exe"); return true; #elif defined(_3DS) if (envIsHomebrew()) - strlcpy(s, "3dsx", len); + strcpy_literal(s, "3dsx"); else - strlcpy(s, "cia", len); + strcpy_literal(s, "cia"); return true; #else return false; @@ -237,37 +237,37 @@ bool frontend_driver_get_salamander_basename(char *s, size_t len) #else #if defined(__CELLOS_LV2__) - strlcpy(s, "EBOOT.BIN", len); + strcpy_literal(s, "EBOOT.BIN"); return true; #elif defined(PSP) - strlcpy(s, "EBOOT.PBP", len); + strcpy_literal(s, "EBOOT.PBP"); return true; #elif defined(VITA) - strlcpy(s, "eboot.bin", len); + strcpy_literal(s, "eboot.bin"); return true; #elif defined(PS2) - strlcpy(s, "eboot.elf", len); + strcpy_literal(s, "eboot.elf"); return true; #elif defined(_XBOX1) - strlcpy(s, "default.xbe", len); + strcpy_literal(s, "default.xbe"); return true; #elif defined(_XBOX360) - strlcpy(s, "default.xex", len); + strcpy_literal(s, "default.xex"); return true; #elif defined(HW_RVL) - strlcpy(s, "boot.dol", len); + strcpy_literal(s, "boot.dol"); return true; #elif defined(HW_WUP) - strlcpy(s, "retroarch.rpx", len); + strcpy_literal(s, "retroarch.rpx"); return true; #elif defined(_3DS) - strlcpy(s, "retroarch.core", len); + strcpy_literal(s, "retroarch.core"); return true; #elif defined(DJGPP) - strlcpy(s, "retrodos.exe", len); + strcpy_literal(s, "retrodos.exe"); return true; #elif defined(SWITCH) - strlcpy(s, "retroarch_switch.nro", len); + strcpy_literal(s, "retroarch_switch.nro"); return true; #else return false; diff --git a/gfx/drivers_shader/glslang_util_cxx.cpp b/gfx/drivers_shader/glslang_util_cxx.cpp index 7a4bd7f61f..d655f633e1 100644 --- a/gfx/drivers_shader/glslang_util_cxx.cpp +++ b/gfx/drivers_shader/glslang_util_cxx.cpp @@ -67,7 +67,7 @@ static std::string build_stage_source( expected[0] = '\0'; - strlcpy(expected, "#pragma stage ", sizeof(expected)); + strcpy_literal(expected, "#pragma stage "); strlcat(expected, stage, sizeof(expected)); active = string_is_equal(expected, line); diff --git a/libretro-common/include/string/stdstring.h b/libretro-common/include/string/stdstring.h index 0942a337b4..b76a8a4e54 100644 --- a/libretro-common/include/string/stdstring.h +++ b/libretro-common/include/string/stdstring.h @@ -35,6 +35,8 @@ RETRO_BEGIN_DECLS +#define strcpy_literal(a, b) strcpy(a, b) + static INLINE bool string_is_empty(const char *data) { return !data || (*data == '\0'); diff --git a/libretro-db/query.c b/libretro-db/query.c index 44e4404f31..90eeea7663 100644 --- a/libretro-db/query.c +++ b/libretro-db/query.c @@ -290,7 +290,7 @@ static void query_raise_unknown_function( if (len < (_len - n - 3)) strncpy(s + n, name, len); - strlcpy(s + n + len, "'", _len); + strcpy_literal(s + n + len, "'"); *error = s; } @@ -452,7 +452,7 @@ static struct buffer query_parse_string( if (!value->val.string.buff) { - strlcpy(s, "Out of memory", len); + strcpy_literal(s, "Out of memory"); *error = s; } else if (is_binstr) @@ -692,8 +692,8 @@ static struct buffer query_parse_method_call( { if (argi >= QUERY_MAX_ARGS) { - strlcpy(s, - "Too many arguments in function call.", len); + strcpy_literal(s, + "Too many arguments in function call."); *error = s; goto clean; } @@ -725,7 +725,7 @@ static struct buffer query_parse_method_call( if (!invocation->argv) { - strlcpy(s, "Out of memory", len); + strcpy_literal(s, "Out of memory"); *error = s; goto clean; } @@ -817,8 +817,8 @@ static struct buffer query_parse_table( { if (argi >= QUERY_MAX_ARGS) { - strlcpy(s, - "Too many arguments in function call.", len); + strcpy_literal(s, + "Too many arguments in function call."); *error = s; goto clean; } @@ -866,8 +866,8 @@ static struct buffer query_parse_table( if (argi >= QUERY_MAX_ARGS) { - strlcpy(s, - "Too many arguments in function call.", len); + strcpy_literal(s, + "Too many arguments in function call."); *error = s; goto clean; } @@ -900,7 +900,7 @@ static struct buffer query_parse_table( if (!invocation->argv) { - strlcpy(s, "Out of memory", len); + strcpy_literal(s, "Out of memory"); *error = s; goto clean; } diff --git a/retroarch.c b/retroarch.c index b7df94c546..bb60adccd0 100644 --- a/retroarch.c +++ b/retroarch.c @@ -5525,27 +5525,27 @@ int menu_entries_get_core_title(char *s, size_t len) : msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE); const char *core_version = (system && system->library_version) ? system->library_version : ""; #if _MSC_VER == 1200 - strlcpy(s, PACKAGE_VERSION " msvc6" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc6" " - "); #elif _MSC_VER == 1300 - strlcpy(s, PACKAGE_VERSION " msvc2002" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2002" " - "); #elif _MSC_VER == 1310 - strlcpy(s, PACKAGE_VERSION " msvc2003" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2003" " - "); #elif _MSC_VER == 1400 - strlcpy(s, PACKAGE_VERSION " msvc2005" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2005" " - "); #elif _MSC_VER == 1500 - strlcpy(s, PACKAGE_VERSION " msvc2008" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2008" " - "); #elif _MSC_VER == 1600 - strlcpy(s, PACKAGE_VERSION " msvc2010" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2010" " - "); #elif _MSC_VER == 1700 - strlcpy(s, PACKAGE_VERSION " msvc2012" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2012" " - "); #elif _MSC_VER == 1800 - strlcpy(s, PACKAGE_VERSION " msvc2013" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2013" " - "); #elif _MSC_VER == 1900 - strlcpy(s, PACKAGE_VERSION " msvc2015" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2015" " - "); #elif _MSC_VER >= 1910 && _MSC_VER < 2000 - strlcpy(s, PACKAGE_VERSION " msvc2017" " - ", len); + strcpy_literal(s, PACKAGE_VERSION " msvc2017" " - "); #else - strlcpy(s, PACKAGE_VERSION " - ", len); + strcpy_literal(s, PACKAGE_VERSION " - "); #endif strlcat(s, core_name, len); if (!string_is_empty(core_version)) @@ -9165,7 +9165,7 @@ static void discord_init( strlcat(command, args, sizeof(command)); } #else - strlcpy(command, "sh -c ", sizeof(command)); + strcpy_literal(command, "sh -c "); strlcat(command, args, sizeof(command)); #endif RARCH_LOG("[DISCORD]: Registering startup command: %s\n", command); @@ -11489,7 +11489,7 @@ static bool path_init_subsystem(struct rarch_state *p_rarch) path[0] = ext[0] = '\0'; - strlcpy(ext, ".", sizeof(ext)); + strcpy_literal(ext, "."); strlcat(ext, mem->extension, sizeof(ext)); strlcpy(savename, p_rarch->subsystem_fullpaths->elems[i].data, @@ -12781,7 +12781,7 @@ static bool command_get_status(const char* arg) content_get_status(&contentless, &is_inited); if (!is_inited) - strlcpy(reply, "GET_STATUS CONTENTLESS", sizeof(reply)); + strcpy_literal(reply, "GET_STATUS CONTENTLESS"); else { /* add some content info */ @@ -15403,7 +15403,7 @@ static bool command_event_save_config( msg_hash_to_str(MSG_SAVED_NEW_CONFIG_TO), config_path); - strlcpy(log, "[config] ", sizeof(log)); + strcpy_literal(log, "[config] "); strlcat(log, s, sizeof(log)); RARCH_LOG("%s\n", log); return true; @@ -15415,7 +15415,7 @@ static bool command_event_save_config( msg_hash_to_str(MSG_FAILED_SAVING_CONFIG_TO), str); - strlcpy(log, "[config] ", sizeof(log)); + strcpy_literal(log, "[config] "); strlcat(log, s, sizeof(log)); RARCH_ERR("%s\n", log); } @@ -15545,8 +15545,7 @@ static void command_event_save_current_config( { case OVERRIDE_NONE: if (path_is_empty(RARCH_PATH_CONFIG)) - strlcpy(msg, "[config] Config directory not set, cannot save configuration.", - sizeof(msg)); + strcpy_literal(msg, "[config] Config directory not set, cannot save configuration."); else command_event_save_config(path_get(RARCH_PATH_CONFIG), msg, sizeof(msg)); break; @@ -41046,32 +41045,32 @@ const void *frontend_driver_get_cpu_architecture_str( switch (arch) { case FRONTEND_ARCH_X86: - strlcpy(architecture, "x86", size); + strcpy_literal(architecture, "x86"); break; case FRONTEND_ARCH_X86_64: - strlcpy(architecture, "x64", size); + strcpy_literal(architecture, "x64"); break; case FRONTEND_ARCH_PPC: - strlcpy(architecture, "PPC", size); + strcpy_literal(architecture, "PPC"); break; case FRONTEND_ARCH_ARM: - strlcpy(architecture, "ARM", size); + strcpy_literal(architecture, "ARM"); break; case FRONTEND_ARCH_ARMV7: - strlcpy(architecture, "ARMv7", size); + strcpy_literal(architecture, "ARMv7"); break; case FRONTEND_ARCH_ARMV8: - strlcpy(architecture, "ARMv8", size); + strcpy_literal(architecture, "ARMv8"); break; case FRONTEND_ARCH_MIPS: - strlcpy(architecture, "MIPS", size); + strcpy_literal(architecture, "MIPS"); break; case FRONTEND_ARCH_TILE: - strlcpy(architecture, "Tilera", size); + strcpy_literal(architecture, "Tilera"); break; case FRONTEND_ARCH_NONE: default: - strlcpy(architecture, "N/A", size); + strcpy_literal(architecture, "N/A"); break; }