From 177f65c7c0d131244eacef0915d567e2f73ed587 Mon Sep 17 00:00:00 2001 From: Kenzzer Date: Sun, 2 Mar 2025 13:49:08 +0100 Subject: [PATCH] Don't OOB arguments --- extensions/dhooks/dynhooks_sourcepawn.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/dhooks/dynhooks_sourcepawn.cpp b/extensions/dhooks/dynhooks_sourcepawn.cpp index 927f3d66c8..0f7ca8f266 100644 --- a/extensions/dhooks/dynhooks_sourcepawn.cpp +++ b/extensions/dhooks/dynhooks_sourcepawn.cpp @@ -689,7 +689,7 @@ void CDynamicHooksSourcePawn::UpdateParamsFromStruct(HookParamsStruct *params) // Values of arguments stored in registers are saved after the stack arguments. size_t registerOffset = stackSize; size_t offset; - for (size_t i = 0; i < numArgs; i++) + for (size_t i = firstArg; i < numArgs; i++) { size_t size = argTypes[i].size; // Only have to copy something if the plugin changed this parameter. @@ -699,7 +699,7 @@ void CDynamicHooksSourcePawn::UpdateParamsFromStruct(HookParamsStruct *params) offset = argTypes[i].custom_register == None ? stackOffset : registerOffset; void *paramAddr = (void *)((intptr_t)params->newParams + offset); - void *stackAddr = callingConvention->GetArgumentPtr(i + firstArg, m_pDetour->m_pRegisters); + void *stackAddr = callingConvention->GetArgumentPtr(i, m_pDetour->m_pRegisters); memcpy(stackAddr, paramAddr, size); }