From c591a4d3cc85343933f242a8aad5993a1dfeaf04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Gallou=C3=ABt?= Date: Wed, 4 Jan 2017 14:15:18 +0000 Subject: [PATCH] Drop too large packets --- src/main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index b45f81f..534780d 100644 --- a/src/main.c +++ b/src/main.c @@ -385,10 +385,11 @@ main(int argc, char **argv) if (FD_ISSET(tun_fd, &rfds)) { size_t size = 0; - while (sizeof(buf) - size > gt.mtu) { + while (sizeof(buf) - size >= gt.mtu) { const ssize_t r = tun_read(tun_fd, &buf[size], sizeof(buf) - size); - if (r <= 0) + + if (r <= 0 || r > gt.mtu) break; struct ip_common ic;