Discard a packet that exceeds the receive buffer
This commit is contained in:
@@ -212,6 +212,11 @@ METHOD(socket_t, receiver, status_t,
|
|||||||
DBG1(DBG_NET, "error reading socket: %s", strerror(errno));
|
DBG1(DBG_NET, "error reading socket: %s", strerror(errno));
|
||||||
return FAILED;
|
return FAILED;
|
||||||
}
|
}
|
||||||
|
if (msg.msg_flags & MSG_TRUNC)
|
||||||
|
{
|
||||||
|
DBG1(DBG_NET, "receive buffer too small, packet discarded");
|
||||||
|
return FAILED;
|
||||||
|
}
|
||||||
DBG3(DBG_NET, "received packet %b", buffer, bytes_read);
|
DBG3(DBG_NET, "received packet %b", buffer, bytes_read);
|
||||||
|
|
||||||
if (bytes_read < MARKER_LEN)
|
if (bytes_read < MARKER_LEN)
|
||||||
|
|||||||
@@ -229,6 +229,11 @@ static packet_t *receive_packet(private_socket_dynamic_socket_t *this,
|
|||||||
DBG1(DBG_NET, "error reading socket: %s", strerror(errno));
|
DBG1(DBG_NET, "error reading socket: %s", strerror(errno));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (msg.msg_flags & MSG_TRUNC)
|
||||||
|
{
|
||||||
|
DBG1(DBG_NET, "receive buffer too small, packet discarded");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
DBG3(DBG_NET, "received packet %b", buffer, len);
|
DBG3(DBG_NET, "received packet %b", buffer, len);
|
||||||
|
|
||||||
if (len < MARKER_LEN)
|
if (len < MARKER_LEN)
|
||||||
|
|||||||
@@ -172,6 +172,11 @@ METHOD(socket_t, receiver, status_t,
|
|||||||
DBG1(DBG_NET, "error reading from IPv4 socket: %s", strerror(errno));
|
DBG1(DBG_NET, "error reading from IPv4 socket: %s", strerror(errno));
|
||||||
return FAILED;
|
return FAILED;
|
||||||
}
|
}
|
||||||
|
if (bytes_read == this->max_packet)
|
||||||
|
{
|
||||||
|
DBG1(DBG_NET, "receive buffer too small, packet discarded");
|
||||||
|
return FAILED;
|
||||||
|
}
|
||||||
DBG3(DBG_NET, "received IPv4 packet %b", buffer, bytes_read);
|
DBG3(DBG_NET, "received IPv4 packet %b", buffer, bytes_read);
|
||||||
|
|
||||||
/* read source/dest from raw IP/UDP header */
|
/* read source/dest from raw IP/UDP header */
|
||||||
|
|||||||
Reference in New Issue
Block a user