Commit d13ee500 authored by berge's avatar berge
Browse files

Fixed bug in IpDissector (memory corruption in fragment reassembly)

parent 531a9599
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -75,12 +75,10 @@ bool Dispatcher::Dispatch(DispatchInfo & info, ComponentFilter & filter) {
        m_fragments.erase(it);
      }
      else {
	    delete pDissector;
	pDissector = 0;
      }
    }
	if (pDissector && !pDissector->IsPacketValid())
	{
    if (pDissector && !pDissector->IsPacketValid()) {
      delete pDissector;
      pDissector = 0;
      bRes = false;
+48 −48
Original line number Diff line number Diff line
@@ -103,12 +103,12 @@ bool IpDissector::Reassemble(Dissector * pDissector, ProtocolInfo * pProtocolInf
	    // Reassembly !
	    ssize_t nOffset = 0;
	    AllocPayload(nPayloadSize); // payloadSize is valid since last fragment has been received
	    while((m_fragments.find(nOffset) != m_fragments.end()) && (nOffset != nPayloadSize)) 
	    while((nOffset != nPayloadSize) && (m_fragments.find(nOffset) != m_fragments.end())) 
	      {
		SetPayloadAt(m_fragments[nOffset], m_fragmentSizes[nOffset], nOffset);
  	      nOffset += m_fragmentSizes[nOffset];
		// Clean up
		delete m_fragments[nOffset];
		nOffset += m_fragmentSizes[nOffset];
	      }
	    m_fragments.clear();
	    m_fragmentSizes.clear();
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ bool AdapterConfigPort::Map (const PortId& connectedPortId) {
  
    if(string(connectedPortId.GetComponentId().GetType().GetObjectName()) == MTC) {
    // MTC
    //Logger::Instance().LogInfo("MTC.AdapterConfigPort mapped");
    Logger::Instance().LogInfo("MTC.AdapterConfigPort mapped");
    m_mtcPortId = &connectedPortId;
  }
  else {
+13 −13

File changed.

Contains only whitespace changes.