aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack <66967891+ASpoonPlaysGames@users.noreply.github.com>2024-08-25 21:49:45 +0100
committerGitHub <noreply@github.com>2024-08-25 22:49:45 +0200
commit3e2d4035ada7a91e0ecffd0fde050cf47fce0427 (patch)
tree6f0f81f80a9dfcf35c3d0ab33f959b7cf7992b26
parent5aae42126a062f1d184aff1c8217ef50259ccc53 (diff)
downloadNorthstarLauncher-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.cpp22
-rw-r--r--primedev/core/hooks.h2
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;