From 848d8348ae6a75851a09ac3a8e4588c5fddb84c9 Mon Sep 17 00:00:00 2001 From: bkambach Date: Mon, 13 Jul 2015 17:28:33 -0400 Subject: [PATCH 1/3] Increment option size when adding a new option --- src/dhcpv6.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dhcpv6.cpp b/src/dhcpv6.cpp index eb947b5..587bab9 100644 --- a/src/dhcpv6.cpp +++ b/src/dhcpv6.cpp @@ -82,6 +82,7 @@ DHCPv6::DHCPv6(const uint8_t *buffer, uint32_t total_sz) void DHCPv6::add_option(const option &opt) { options_.push_back(opt); + options_size += opt.data_size() + sizeof(uint16_t) * 2; } const DHCPv6::option *DHCPv6::search_option(OptionTypes id) const { From fe48586eefc40105c3244fb7892fae8b230111e1 Mon Sep 17 00:00:00 2001 From: bkambach Date: Mon, 13 Jul 2015 17:49:29 -0400 Subject: [PATCH 2/3] Remove update of options size in constructor --- src/dhcpv6.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dhcpv6.cpp b/src/dhcpv6.cpp index 587bab9..8adc0e9 100644 --- a/src/dhcpv6.cpp +++ b/src/dhcpv6.cpp @@ -58,7 +58,7 @@ DHCPv6::DHCPv6(const uint8_t *buffer, uint32_t total_sz) buffer += ipaddress_type::address_size * 2; total_sz -= ipaddress_type::address_size * 2; } - options_size = total_sz; + //options_size = total_sz; while(total_sz) { if(total_sz < sizeof(uint16_t) * 2) throw malformed_packet(); From 3b23d68a10798d86db136aa5c8916ddabfeee872 Mon Sep 17 00:00:00 2001 From: bkambach Date: Mon, 13 Jul 2015 17:52:44 -0400 Subject: [PATCH 3/3] Remove code, instead of commenting it out --- src/dhcpv6.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/dhcpv6.cpp b/src/dhcpv6.cpp index 8adc0e9..9352dd0 100644 --- a/src/dhcpv6.cpp +++ b/src/dhcpv6.cpp @@ -58,7 +58,6 @@ DHCPv6::DHCPv6(const uint8_t *buffer, uint32_t total_sz) buffer += ipaddress_type::address_size * 2; total_sz -= ipaddress_type::address_size * 2; } - //options_size = total_sz; while(total_sz) { if(total_sz < sizeof(uint16_t) * 2) throw malformed_packet();