Skip to content

Commit 1d18ddb

Browse files
committed
fix: incorrect maxlen retrieval in GetMessageData (caused buffer overflow)
1 parent 3c08fde commit 1d18ddb

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

reapi/src/natives/natives_hookmessage.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,8 @@ cell AMX_NATIVE_CALL GetMessageData(AMX *amx, cell *params)
260260
return FALSE;
261261

262262
const char *argString = g_activeMessageContext->getParamString(number);
263-
setAmxString(dstAddr, argString ? argString : "", params[arg_maxlen]);
263+
size_t maxlen = *getAmxAddr(amx, params[arg_maxlen]);
264+
setAmxString(dstAddr, argString ? argString : "", maxlen);
264265
return TRUE;
265266
}
266267
case IMessage::ParamType::Angle:
@@ -341,7 +342,8 @@ cell AMX_NATIVE_CALL GetMessageOrigData(AMX *amx, cell *params)
341342
return FALSE;
342343

343344
const char *argString = g_activeMessageContext->getOriginalParamString(number);
344-
setAmxString(dstAddr, argString ? argString : "", params[arg_maxlen]);
345+
size_t maxlen = *getAmxAddr(amx, params[arg_maxlen]);
346+
setAmxString(dstAddr, argString ? argString : "", maxlen);
345347
return TRUE;
346348
}
347349
case IMessage::ParamType::Angle:

0 commit comments

Comments
 (0)