From 30da01763dbb52cc18db56c54245e39eb5b29fa0 Mon Sep 17 00:00:00 2001 From: Nicholas Hastings Date: Mon, 31 Mar 2025 17:21:54 -0400 Subject: [PATCH] Fix ClientPrefs pointer string formatting (#2307) * Fix pointer to string marshaling in ClientPrefs for x64 * Fix other cases where pointers were formatted with %x * Fix warnings in ClientPrefs IsAuthIdConnected --- core/logic/DebugReporter.cpp | 2 +- core/logic/smn_core.cpp | 4 ++-- core/smn_entities.cpp | 2 +- extensions/clientprefs/cookie.cpp | 2 +- extensions/clientprefs/menus.cpp | 6 +++--- extensions/clientprefs/natives.cpp | 7 +++---- extensions/sdktools/vcaller.cpp | 2 +- 7 files changed, 12 insertions(+), 13 deletions(-) diff --git a/core/logic/DebugReporter.cpp b/core/logic/DebugReporter.cpp index 4d733b5f1..d8e58199e 100644 --- a/core/logic/DebugReporter.cpp +++ b/core/logic/DebugReporter.cpp @@ -129,7 +129,7 @@ void DebugReport::GenerateCodeError(IPluginContext *pContext, uint32_t code_addr { g_Logger.LogError("[SM] Unable to call function \"%s\" due to above error(s).", name); } else { - g_Logger.LogError("[SM] Unable to call function (name unknown, address \"%x\").", code_addr); + g_Logger.LogError("[SM] Unable to call function (name unknown, address \"%p\").", code_addr); } } diff --git a/core/logic/smn_core.cpp b/core/logic/smn_core.cpp index 51f02f2dd..67bf66c89 100644 --- a/core/logic/smn_core.cpp +++ b/core/logic/smn_core.cpp @@ -875,7 +875,7 @@ static cell_t LoadFromAddress(IPluginContext *pContext, const cell_t *params) } else if (reinterpret_cast(addr) < VALID_MINIMUM_MEMORY_ADDRESS) { - return pContext->ThrowNativeError("Invalid address 0x%x is pointing to reserved memory.", addr); + return pContext->ThrowNativeError("Invalid address %p is pointing to reserved memory.", addr); } NumberType size = static_cast(params[2]); @@ -907,7 +907,7 @@ static cell_t StoreToAddress(IPluginContext *pContext, const cell_t *params) } else if (reinterpret_cast(addr) < VALID_MINIMUM_MEMORY_ADDRESS) { - return pContext->ThrowNativeError("Invalid address 0x%x is pointing to reserved memory.", addr); + return pContext->ThrowNativeError("Invalid address %p is pointing to reserved memory.", addr); } cell_t data = params[2]; diff --git a/core/smn_entities.cpp b/core/smn_entities.cpp index 073545ace..c23f9b911 100644 --- a/core/smn_entities.cpp +++ b/core/smn_entities.cpp @@ -736,7 +736,7 @@ static cell_t LoadEntityFromHandleAddress(IPluginContext *pContext, const cell_t } else if (reinterpret_cast(addr) < VALID_MINIMUM_MEMORY_ADDRESS) { - return pContext->ThrowNativeError("Invalid address 0x%x is pointing to reserved memory.", addr); + return pContext->ThrowNativeError("Invalid address %p is pointing to reserved memory.", addr); } CBaseHandle &hndl = *reinterpret_cast(addr); diff --git a/extensions/clientprefs/cookie.cpp b/extensions/clientprefs/cookie.cpp index 6c04fef52..e922c64e7 100644 --- a/extensions/clientprefs/cookie.cpp +++ b/extensions/clientprefs/cookie.cpp @@ -344,7 +344,7 @@ void CookieManager::OnPluginDestroyed(IPlugin *plugin) if (strcmp(draw.display, name) == 0) { - data = (AutoMenuData *)strtoul(info, NULL, 16); + data = (AutoMenuData *)strtoull(info, nullptr, 16); if (data->handler->forward != NULL) { diff --git a/extensions/clientprefs/menus.cpp b/extensions/clientprefs/menus.cpp index 571781892..2022178e0 100644 --- a/extensions/clientprefs/menus.cpp +++ b/extensions/clientprefs/menus.cpp @@ -40,7 +40,7 @@ void ClientMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int i const char *info = menu->GetItemInfo(item, &draw); - AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16); + AutoMenuData *data = (AutoMenuData *)strtoull(info, nullptr, 16); if (data->handler->forward != NULL) { @@ -94,7 +94,7 @@ unsigned int ClientMenuHandler::OnMenuDisplayItem(IBaseMenu *menu, const char *info = menu->GetItemInfo(item, &draw); - AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16); + AutoMenuData *data = (AutoMenuData *)strtoull(info, nullptr, 16); if (data->handler->forward != NULL) { @@ -123,7 +123,7 @@ void AutoMenuHandler::OnMenuSelect(SourceMod::IBaseMenu *menu, int client, unsig const char *info = menu->GetItemInfo(item, &draw); - AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16); + AutoMenuData *data = (AutoMenuData *)strtoull(info, nullptr, 16); g_CookieManager.SetCookieValue(data->pCookie, client, settings[data->type][item]); diff --git a/extensions/clientprefs/natives.cpp b/extensions/clientprefs/natives.cpp index fc4e47053..29ad7e3f2 100644 --- a/extensions/clientprefs/natives.cpp +++ b/extensions/clientprefs/natives.cpp @@ -83,10 +83,9 @@ cell_t FindClientPrefCookie(IPluginContext *pContext, const cell_t *params) NULL); } -size_t IsAuthIdConnected(char *authID) +int IsAuthIdConnected(char *authID) { IGamePlayer *player; - const char *authString; for (int playerIndex = playerhelpers->GetMaxClients()+1; --playerIndex > 0;) { @@ -347,7 +346,7 @@ cell_t AddSettingsMenuItem(IPluginContext *pContext, const cell_t *params) AutoMenuData *data = new AutoMenuData; data->datavalue = params[2]; data->handler = pItem; - g_pSM->Format(info, sizeof(info), "%x", data); + g_pSM->Format(info, sizeof(info), "%" PRIxPTR, reinterpret_cast(data)); ItemDrawInfo draw(display, 0); @@ -419,7 +418,7 @@ cell_t AddSettingsPrefabMenuItem(IPluginContext *pContext, const cell_t *params) data->pCookie = pCookie; data->type = (CookieMenu)params[2]; data->handler = pItem; - g_pSM->Format(info, sizeof(info), "%x", data); + g_pSM->Format(info, sizeof(info), "%" PRIxPTR, reinterpret_cast(data)); g_CookieManager.clientMenu->AppendItem(info, draw); diff --git a/extensions/sdktools/vcaller.cpp b/extensions/sdktools/vcaller.cpp index 326563d98..7236edf18 100644 --- a/extensions/sdktools/vcaller.cpp +++ b/extensions/sdktools/vcaller.cpp @@ -406,7 +406,7 @@ static cell_t SDKCall(IPluginContext *pContext, const cell_t *params) else if (reinterpret_cast(thisptr) < VALID_MINIMUM_MEMORY_ADDRESS) { vc->stk_put(ptr); - return pContext->ThrowNativeError("Invalid ThisPtr address 0x%x is pointing to reserved memory.", thisptr); + return pContext->ThrowNativeError("Invalid ThisPtr address %p is pointing to reserved memory.", thisptr); } *(void **)ptr = thisptr;