From aea735ef63b809d5c50e058f164cea362fe3893c Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 11 Aug 2010 10:51:40 +0200 Subject: Discard a packet that exceeds the receive buffer --- src/libcharon/plugins/socket_raw/socket_raw_socket.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/libcharon/plugins/socket_raw/socket_raw_socket.c') diff --git a/src/libcharon/plugins/socket_raw/socket_raw_socket.c b/src/libcharon/plugins/socket_raw/socket_raw_socket.c index 604a9d977..6cbab846b 100644 --- a/src/libcharon/plugins/socket_raw/socket_raw_socket.c +++ b/src/libcharon/plugins/socket_raw/socket_raw_socket.c @@ -172,6 +172,11 @@ METHOD(socket_t, receiver, status_t, DBG1(DBG_NET, "error reading from IPv4 socket: %s", strerror(errno)); 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); /* read source/dest from raw IP/UDP header */ -- cgit v1.2.3