From d18d2fce01f63effaebd7011bab142f2770a016f Mon Sep 17 00:00:00 2001 From: Alper Akcan Date: Mon, 29 May 2017 15:54:19 +0300 Subject: [PATCH] Fix packet length calculation if IP length is 0, due to TSO --- CREDITS | 1 + ChangeLog | 4 ++++ base/network.c | 8 ++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CREDITS b/CREDITS index bb42edc..8753b73 100644 --- a/CREDITS +++ b/CREDITS @@ -15,6 +15,7 @@ Richard Levitte Hugh Mandeville Eric Murray Henrik Nordstrom +Alper Akcan If you think you should be on this list, send me mail at . diff --git a/ChangeLog b/ChangeLog index 16a2dbd..1a2fd52 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon 29 May 2017 03:49:00 PM +03 Alper + * Fix packet length calculation if IP length is + 0 due to TSO. + Wed Aug 21 10:48:45 2002 EKR * Installed Greg Stark's new Win32 patches. diff --git a/base/network.c b/base/network.c index aeb7ae8..f6a0109 100644 --- a/base/network.c +++ b/base/network.c @@ -133,8 +133,12 @@ int network_process_packet(handler,timestamp,data,length) hlen=p.ip->ip_hl * 4; p.data += hlen; - p.len =ntohs(p.ip->ip_len)-hlen; - + p.len = ntohs(p.ip->ip_len); + if (p.len == 0) { + DBG((0,"ip length reported as 0, presumed to be because of 'TCP segmentation offload' (TSO)\n")); + p.len = p._len; + } + p.len -= hlen; switch(p.ip->ip_p){ case IPPROTO_TCP: