mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-22 12:24:19 +00:00
check for I2NP message buffer boudary
This commit is contained in:
parent
8baab2de37
commit
5cd557ef9d
@ -65,8 +65,13 @@ namespace i2p
|
|||||||
I2NPMessage * CreateI2NPMessage (I2NPMessageType msgType, const uint8_t * buf, int len, uint32_t replyMsgID)
|
I2NPMessage * CreateI2NPMessage (I2NPMessageType msgType, const uint8_t * buf, int len, uint32_t replyMsgID)
|
||||||
{
|
{
|
||||||
I2NPMessage * msg = NewI2NPMessage (len);
|
I2NPMessage * msg = NewI2NPMessage (len);
|
||||||
memcpy (msg->GetPayload (), buf, len);
|
if (msg->len + len < msg->maxLen)
|
||||||
msg->len += len;
|
{
|
||||||
|
memcpy (msg->GetPayload (), buf, len);
|
||||||
|
msg->len += len;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LogPrint (eLogError, "I2NP message length ", len, " exceeds max length");
|
||||||
FillI2NPMessageHeader (msg, msgType, replyMsgID);
|
FillI2NPMessageHeader (msg, msgType, replyMsgID);
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
@ -74,9 +79,14 @@ namespace i2p
|
|||||||
I2NPMessage * CreateI2NPMessage (const uint8_t * buf, int len, std::shared_ptr<i2p::tunnel::InboundTunnel> from)
|
I2NPMessage * CreateI2NPMessage (const uint8_t * buf, int len, std::shared_ptr<i2p::tunnel::InboundTunnel> from)
|
||||||
{
|
{
|
||||||
I2NPMessage * msg = NewI2NPMessage ();
|
I2NPMessage * msg = NewI2NPMessage ();
|
||||||
memcpy (msg->GetBuffer (), buf, len);
|
if (msg->offset + len < msg->maxLen)
|
||||||
msg->len = msg->offset + len;
|
{
|
||||||
msg->from = from;
|
memcpy (msg->GetBuffer (), buf, len);
|
||||||
|
msg->len = msg->offset + len;
|
||||||
|
msg->from = from;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LogPrint (eLogError, "I2NP message length ", len, " exceeds max length");
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user