diff options
author | Jack <66967891+ASpoonPlaysGames@users.noreply.github.com> | 2024-08-25 21:49:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-25 22:49:45 +0200 |
commit | 3e2d4035ada7a91e0ecffd0fde050cf47fce0427 (patch) | |
tree | 6f0f81f80a9dfcf35c3d0ab33f959b7cf7992b26 | |
parent | 5aae42126a062f1d184aff1c8217ef50259ccc53 (diff) | |
download | NorthstarLauncher-3e2d4035ada7a91e0ecffd0fde050cf47fce0427.tar.gz NorthstarLauncher-3e2d4035ada7a91e0ecffd0fde050cf47fce0427.zip |
Fix manual hooks storing their name badly (#774)v1.27.3-rc4v1.27.3-rc3
Fix manual hooks storing their name wrong and move to just using std::string since it's much more convenient and this isn't C
-rw-r--r-- | primedev/core/hooks.cpp | 22 | ||||
-rw-r--r-- | primedev/core/hooks.h | 2 |
2 files changed, 7 insertions, 17 deletions
diff --git a/primedev/core/hooks.cpp b/primedev/core/hooks.cpp index 5026f837..d8fad409 100644 --- a/primedev/core/hooks.cpp +++ b/primedev/core/hooks.cpp @@ -85,19 +85,9 @@ void __fileAutohook::DispatchForModule(const char* pModuleName) hook->Dispatch(); } -ManualHook::ManualHook(const char* funcName, LPVOID func) : pHookFunc(func), ppOrigFunc(nullptr) -{ - const size_t iFuncNameStrlen = strlen(funcName); - pFuncName = new char[iFuncNameStrlen]; - memcpy(pFuncName, funcName, iFuncNameStrlen); -} +ManualHook::ManualHook(const char* funcName, LPVOID func) : svFuncName(funcName), pHookFunc(func), ppOrigFunc(nullptr) {} -ManualHook::ManualHook(const char* funcName, LPVOID* orig, LPVOID func) : pHookFunc(func), ppOrigFunc(orig) -{ - const size_t iFuncNameStrlen = strlen(funcName); - pFuncName = new char[iFuncNameStrlen]; - memcpy(pFuncName, funcName, iFuncNameStrlen); -} +ManualHook::ManualHook(const char* funcName, LPVOID* orig, LPVOID func) : svFuncName(funcName), pHookFunc(func), ppOrigFunc(orig) {} bool ManualHook::Dispatch(LPVOID addr, LPVOID* orig) { @@ -105,19 +95,19 @@ bool ManualHook::Dispatch(LPVOID addr, LPVOID* orig) ppOrigFunc = orig; if (!addr) - spdlog::error("Address for hook {} is invalid", pFuncName); + spdlog::error("Address for hook {} is invalid", svFuncName); else if (MH_CreateHook(addr, pHookFunc, ppOrigFunc) == MH_OK) { if (MH_EnableHook(addr) == MH_OK) { - spdlog::info("Enabling hook {}", pFuncName); + spdlog::info("Enabling hook {}", svFuncName); return true; } else - spdlog::error("MH_EnableHook failed for function {}", pFuncName); + spdlog::error("MH_EnableHook failed for function {}", svFuncName); } else - spdlog::error("MH_CreateHook failed for function {}", pFuncName); + spdlog::error("MH_CreateHook failed for function {}", svFuncName); return false; } diff --git a/primedev/core/hooks.h b/primedev/core/hooks.h index 2a2180da..023b7411 100644 --- a/primedev/core/hooks.h +++ b/primedev/core/hooks.h @@ -278,7 +278,7 @@ public: class ManualHook { public: - char* pFuncName; + std::string svFuncName; LPVOID pHookFunc; LPVOID* ppOrigFunc; |