make sure we don't attempt to read outside of ourselves when deserializing a header for printing.
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon Aug 11 15:18:40 2008 -0700 (18 months ago)
changeset 3542076ae3766f27
parent 3541 4b8ef7da0ac3
child 3543 1548d7e3604f
make sure we don't attempt to read outside of ourselves when deserializing a header for printing.
src/common/packet-metadata.cc
     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