diff --git a/src/Sessions.cc b/src/Sessions.cc index 5a7ad25b2e..c4431cece2 100644 --- a/src/Sessions.cc +++ b/src/Sessions.cc @@ -681,19 +681,23 @@ bool NetSessions::WantConnection(uint16_t src_port, uint16_t dst_port, void NetSessions::Weird(const char* name, const Packet* pkt, const char* addl) { + const char* weird_name = name; + if ( pkt ) + { pkt->dump_packet = true; - const char* weird_name; - if ( pkt->encap && pkt->encap->LastType() != BifEnum::Tunnel::NONE ) - weird_name = util::fmt("%s_in_tunnel", name); - else - weird_name = name; + if ( pkt->encap && pkt->encap->LastType() != BifEnum::Tunnel::NONE ) + weird_name = util::fmt("%s_in_tunnel", name); - if ( pkt->ip_hdr ) - reporter->Weird(pkt->ip_hdr->SrcAddr(), pkt->ip_hdr->DstAddr(), weird_name, addl); - else - reporter->Weird(weird_name, addl); + if ( pkt->ip_hdr ) + { + reporter->Weird(pkt->ip_hdr->SrcAddr(), pkt->ip_hdr->DstAddr(), weird_name, addl); + return; + } + } + + reporter->Weird(weird_name, addl); } void NetSessions::Weird(const char* name, const IP_Hdr* ip, const char* addl) diff --git a/src/packet_analysis/protocol/ip/IP.cc b/src/packet_analysis/protocol/ip/IP.cc index 4a0048f641..aff4f5606d 100644 --- a/src/packet_analysis/protocol/ip/IP.cc +++ b/src/packet_analysis/protocol/ip/IP.cc @@ -26,6 +26,7 @@ IPAnalyzer::IPAnalyzer() IPAnalyzer::~IPAnalyzer() { + delete discarder; } bool IPAnalyzer::AnalyzePacket(size_t len, const uint8_t* data, Packet* packet)