From b2b8abdc5187d0b3cbc2490b486c28d3e4f9ed57 Mon Sep 17 00:00:00 2001 From: BlackMark Date: Sun, 12 Jul 2026 12:04:28 +0200 Subject: [PATCH] Silence the last two C4996 warnings in our code hook_registry.cpp still used strncpy for the hook-name copy (the same class the log-ring fix addressed) -- replace with a bounded memcpy. coop_vk_layer.cpp's debug logger used _wfopen -- switch to _wfopen_s. Both were the only remaining C4996s in our own code. --- hook/src/hook_registry.cpp | 6 ++++-- vk_layer/coop_vk_layer.cpp | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) 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;