From 6f29a6a1d4728a41ae7e7ad03630933d8e87d72d Mon Sep 17 00:00:00 2001 From: kroosec Date: Fri, 15 Jun 2012 16:08:00 +0000 Subject: [PATCH] Fixed a bug in packet.lua library that caused tcp_data_length to have an incorrect size in IPv6 packets due to IPv4 packet length and IPv6 payload length fields being used the same way to calculate tcp_data_length. --- nselib/packet.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/nselib/packet.lua b/nselib/packet.lua index 91799a662..bd8f244b8 100644 --- a/nselib/packet.lua +++ b/nselib/packet.lua @@ -952,8 +952,11 @@ function Packet:tcp_parse(force_continue) self.tcp_options = self:parse_options(self.tcp_opt_offset, ((self.tcp_hl*4)-20)) self.tcp_data_offset = self.tcp_offset + self.tcp_hl*4 - local plen = self.ip_len or self.ip6_plen - self.tcp_data_length = plen - self.tcp_offset - self.tcp_hl*4 + if self.ip_len then + self.tcp_data_length = self.ip_len - self.tcp_offset - self.tcp_hl*4 + else + self.tcp_data_length = self.ip6_plen - self.tcp_hl*4 + end self:tcp_parse_options() return true end