diff --git a/gfx/drivers/d3d10.c b/gfx/drivers/d3d10.c index ea557a2084..474c71294b 100644 --- a/gfx/drivers/d3d10.c +++ b/gfx/drivers/d3d10.c @@ -393,20 +393,17 @@ static bool d3d10_gfx_set_shader(void* data, #endif static const char vs_ext[] = ".vs.hlsl"; static const char ps_ext[] = ".ps.hlsl"; - char vs_path[PATH_MAX_LENGTH]; - char ps_path[PATH_MAX_LENGTH]; + char vs_path[PATH_MAX_LENGTH] = {0}; + char ps_path[PATH_MAX_LENGTH] = {0}; const char* slang_path = d3d10->shader_preset->pass[i].source.path; const char* vs_src = d3d10->shader_preset->pass[i].source.string.vertex; const char* ps_src = d3d10->shader_preset->pass[i].source.string.fragment; int base_len = strlen(slang_path) - strlen(".slang"); - if (base_len <= 0) - base_len = strlen(slang_path); - - strncpy(vs_path, slang_path, base_len); - strncpy(ps_path, slang_path, base_len); - strncpy(vs_path + base_len, vs_ext, sizeof(vs_ext)); - strncpy(ps_path + base_len, ps_ext, sizeof(ps_ext)); + strlcpy(vs_path, slang_path, sizeof(vs_path)); + strlcpy(ps_path, slang_path, sizeof(ps_path)); + strlcat(vs_path, vs_ext, sizeof(vs_path)); + strlcat(ps_path, ps_ext, sizeof(ps_path)); if (!d3d10_init_shader( d3d10->device, vs_src, 0, vs_path, "main", NULL, NULL, desc, countof(desc), diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index 3a96048a38..66cdaf990c 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -407,20 +407,16 @@ static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const #endif static const char vs_ext[] = ".vs.hlsl"; static const char ps_ext[] = ".ps.hlsl"; - char vs_path[PATH_MAX_LENGTH]; - char ps_path[PATH_MAX_LENGTH]; + char vs_path[PATH_MAX_LENGTH] = {0}; + char ps_path[PATH_MAX_LENGTH] = {0}; const char* slang_path = d3d11->shader_preset->pass[i].source.path; const char* vs_src = d3d11->shader_preset->pass[i].source.string.vertex; const char* ps_src = d3d11->shader_preset->pass[i].source.string.fragment; - int base_len = strlen(slang_path) - strlen(".slang"); - if (base_len <= 0) - base_len = strlen(slang_path); - - strncpy(vs_path, slang_path, base_len); - strncpy(ps_path, slang_path, base_len); - strncpy(vs_path + base_len, vs_ext, sizeof(vs_ext)); - strncpy(ps_path + base_len, ps_ext, sizeof(ps_ext)); + strlcpy(vs_path, slang_path, sizeof(vs_path)); + strlcpy(ps_path, slang_path, sizeof(ps_path)); + strlcat(vs_path, vs_ext, sizeof(vs_path)); + strlcat(ps_path, ps_ext, sizeof(ps_path)); if (!d3d11_init_shader( d3d11->device, vs_src, 0, vs_path, "main", NULL, NULL, desc, countof(desc), diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index 4f7e884c0c..b64fa654f2 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -420,20 +420,17 @@ static bool d3d12_gfx_set_shader(void* data, enum rarch_shader_type type, const #endif static const char vs_ext[] = ".vs.hlsl"; static const char ps_ext[] = ".ps.hlsl"; - char vs_path[PATH_MAX_LENGTH]; - char ps_path[PATH_MAX_LENGTH]; + char vs_path[PATH_MAX_LENGTH] = {0}; + char ps_path[PATH_MAX_LENGTH] = {0}; const char* slang_path = d3d12->shader_preset->pass[i].source.path; const char* vs_src = d3d12->shader_preset->pass[i].source.string.vertex; const char* ps_src = d3d12->shader_preset->pass[i].source.string.fragment; int base_len = strlen(slang_path) - strlen(".slang"); - if (base_len <= 0) - base_len = strlen(slang_path); - - strncpy(vs_path, slang_path, base_len); - strncpy(ps_path, slang_path, base_len); - strncpy(vs_path + base_len, vs_ext, sizeof(vs_ext)); - strncpy(ps_path + base_len, ps_ext, sizeof(ps_ext)); + strlcpy(vs_path, slang_path, sizeof(vs_path)); + strlcpy(ps_path, slang_path, sizeof(ps_path)); + strlcat(vs_path, vs_ext, sizeof(vs_path)); + strlcat(ps_path, ps_ext, sizeof(ps_path)); if (!d3d_compile(vs_src, 0, vs_path, "main", "vs_5_0", &vs_code)) save_hlsl = true;