Browse Source

check message length

pull/1499/head
orignal 5 years ago
parent
commit
744e893dce
  1. 12
      libi2pd_client/I2CP.cpp
  2. 3
      libi2pd_client/I2CP.h

12
libi2pd_client/I2CP.cpp

@ -246,8 +246,16 @@ namespace client
m_PayloadLen = bufbe32toh (m_Header + I2CP_HEADER_LENGTH_OFFSET); m_PayloadLen = bufbe32toh (m_Header + I2CP_HEADER_LENGTH_OFFSET);
if (m_PayloadLen > 0) if (m_PayloadLen > 0)
{ {
m_Payload = new uint8_t[m_PayloadLen]; if (m_PayloadLen <= I2CP_MAX_MESSAGE_LENGTH)
ReceivePayload (); {
m_Payload = new uint8_t[m_PayloadLen];
ReceivePayload ();
}
else
{
LogPrint (eLogError, "I2CP: Unexpected payload length ", m_PayloadLen);
Terminate ();
}
} }
else // no following payload else // no following payload
{ {

3
libi2pd_client/I2CP.h

@ -24,7 +24,8 @@ namespace client
{ {
const uint8_t I2CP_PROTOCOL_BYTE = 0x2A; const uint8_t I2CP_PROTOCOL_BYTE = 0x2A;
const size_t I2CP_SESSION_BUFFER_SIZE = 4096; const size_t I2CP_SESSION_BUFFER_SIZE = 4096;
const size_t I2CP_MAX_MESSAGE_LENGTH = 65535;
const size_t I2CP_HEADER_LENGTH_OFFSET = 0; const size_t I2CP_HEADER_LENGTH_OFFSET = 0;
const size_t I2CP_HEADER_TYPE_OFFSET = I2CP_HEADER_LENGTH_OFFSET + 4; const size_t I2CP_HEADER_TYPE_OFFSET = I2CP_HEADER_LENGTH_OFFSET + 4;
const size_t I2CP_HEADER_SIZE = I2CP_HEADER_TYPE_OFFSET + 1; const size_t I2CP_HEADER_SIZE = I2CP_HEADER_TYPE_OFFSET + 1;

Loading…
Cancel
Save