diff --git a/hook/src/hook_registry.cpp b/hook/src/hook_registry.cpp index 73a68e4..ea4dac3 100644 --- a/hook/src/hook_registry.cpp +++ b/hook/src/hook_registry.cpp @@ -1,5 +1,6 @@ #include "hook_registry.hpp" +#include #include #include #include @@ -35,8 +36,9 @@ int hook_register(const char* name, std::uint32_t subsystem) return -1; // table full } Slot& s = g_slots[count]; - std::strncpy(s.name, name, sizeof(s.name) - 1); - s.name[sizeof(s.name) - 1] = '\0'; + const std::size_t len = std::min(std::strlen(name), sizeof(s.name) - 1); + std::memcpy(s.name, name, len); + s.name[len] = '\0'; s.subsystem.store(subsystem, std::memory_order_relaxed); s.installed.store(0, std::memory_order_relaxed); s.calls.store(0, std::memory_order_relaxed); diff --git a/vk_layer/coop_vk_layer.cpp b/vk_layer/coop_vk_layer.cpp index e7d9a19..2fd6556 100644 --- a/vk_layer/coop_vk_layer.cpp +++ b/vk_layer/coop_vk_layer.cpp @@ -151,8 +151,8 @@ void logvk(const char* fmt, ...) if (GetTempPathW(MAX_PATH, dir) == 0) { return; } - FILE* f = _wfopen((std::wstring(dir) + L"coop_vk_layer.log").c_str(), L"a"); - if (f == nullptr) { + FILE* f = nullptr; + if (_wfopen_s(&f, (std::wstring(dir) + L"coop_vk_layer.log").c_str(), L"a") != 0 || f == nullptr) { return; } va_list ap;