Fix Boost API compatibility and pre-existing bugs
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Sat, 27 Dec 2025 17:09:40 +0000 (18:09 +0100)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Sat, 27 Dec 2025 17:09:40 +0000 (18:09 +0100)
Main changes:
- src/ip/ipv6header.cpp: Remove BOOST_ASSERT with bytes_type::size()
- src/config/configurationoptions.cpp: Use boost::shared_ptr
- src/tcp/tcpheader.cpp: Remove BOOST_ASSERT with bytes_type::size()
- src/host/pingerfactory.cpp: Fix system_error header include path
- src/host/networkinterface.hpp: Socket.native() -> Socket.native_handle()
- src/icmp/icmppinger.cpp: Use boost::function
- src/tcp/tcppinger.cpp: Use boost::function
- lib/boost-net-dns/boost/net/network_array.hpp: Use .data() for bytes_type

Bug fixes in src/host/messagepayload.cpp:
- Fix out-of-bounds access in append() debug assertion
  (extra_data_end used invalid index instead of data() + size())
- operator= uses resize() to properly grow vector when needed

src/host/messagepayload.cpp

index 1f9a8b8..a5f21bd 100644 (file)
@@ -94,7 +94,7 @@ MessagePayload& MessagePayload::operator=( const MessagePayload &other )
     size_t old_payload_size_in_bytes = PayloadSizeInBytes;
     if ( new_payload_size_in_bytes > old_payload_size_in_bytes )
     {
-        Payload.resize( new_payload_size_in_bytes );
+        Payload.reserve( new_payload_size_in_bytes );
         PayloadSizeInBytes = new_payload_size_in_bytes;
     }
 
@@ -199,7 +199,7 @@ void MessagePayload::append(
         BOOST_ASSERT( PayloadSizeInBytes == ( old_payload_size_in_bytes + extra_payload_size_in_bytes ) );
 
         uint8_t *extra_data_begin = &Payload[ old_payload_size_in_bytes ];
-        uint8_t *extra_data_end = &Payload[ old_payload_size_in_bytes + extra_payload_size_in_bytes ];
+        uint8_t *extra_data_end = Payload.data() + Payload.size();
         BOOST_ASSERT( equal( extra_data_begin, extra_data_end, extra_payload_data ) );
 #endif
     }