make sure we don't attempt to read outside of ourselves when deserializing a header for printing.
1.1 --- a/src/common/packet-metadata.cc Mon Aug 11 10:40:31 2008 -0700
1.2 +++ b/src/common/packet-metadata.cc Mon Aug 11 15:18:40 2008 -0700
1.3 @@ -1001,9 +1001,10 @@
1.4 item.type = PacketMetadata::Item::HEADER;
1.5 if (!item.isFragment)
1.6 {
1.7 - ns3::Buffer::Iterator j = m_buffer.Begin ();
1.8 - j.Next (m_offset);
1.9 - item.current = j;
1.10 + ns3::Buffer tmp = m_buffer;
1.11 + tmp.RemoveAtStart (m_offset);
1.12 + tmp.RemoveAtEnd (tmp.GetSize () - item.currentSize);
1.13 + item.current = tmp.Begin ();
1.14 }
1.15 }
1.16 else if (tid.IsChildOf (Trailer::GetTypeId ()))
1.17 @@ -1011,9 +1012,10 @@
1.18 item.type = PacketMetadata::Item::TRAILER;
1.19 if (!item.isFragment)
1.20 {
1.21 - ns3::Buffer::Iterator j = m_buffer.End ();
1.22 - j.Prev (m_buffer.GetSize () - (m_offset + smallItem.size));
1.23 - item.current = j;
1.24 + ns3::Buffer tmp = m_buffer;
1.25 + tmp.RemoveAtEnd (tmp.GetSize () - (m_offset + smallItem.size));
1.26 + tmp.RemoveAtStart (tmp.GetSize () - item.currentSize);
1.27 + item.current = tmp.End ();
1.28 }
1.29 }
1.30 else