From: Mike Stepanek (mstepane) Date: Tue, 30 Oct 2018 14:13:45 +0000 (-0400) Subject: Merge pull request #1384 in SNORT/snort3 from perf_hackathon to master X-Git-Tag: 3.0.0-249~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d5347aad498d5a621897d75395ff63ec3321053;p=thirdparty%2Fsnort3.git Merge pull request #1384 in SNORT/snort3 from perf_hackathon to master Squashed commit of the following: commit ec468c4887a072918feb9ada409d538d607ae4cf Author: Masud Hasan Date: Wed Aug 29 22:48:21 2018 -0400 snort: Code refactoring - replacing push_back/insert by emplace_back/emplace, keeping reputation_id in flow instead of flow_data, and appid code improvements --- diff --git a/src/codecs/ip/cd_auth.cc b/src/codecs/ip/cd_auth.cc index ac0ca99ff..bad9ec28c 100644 --- a/src/codecs/ip/cd_auth.cc +++ b/src/codecs/ip/cd_auth.cc @@ -77,7 +77,7 @@ constexpr uint8_t MIN_AUTH_LEN = 16; // this is in minimum number of bytes ... } // anonymous namespace void AuthCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::AUTH); } +{ v.emplace_back(ProtocolId::AUTH); } bool AuthCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) { diff --git a/src/codecs/ip/cd_bad_proto.cc b/src/codecs/ip/cd_bad_proto.cc index 731ebd434..e395cea72 100644 --- a/src/codecs/ip/cd_bad_proto.cc +++ b/src/codecs/ip/cd_bad_proto.cc @@ -43,10 +43,10 @@ public: void BadProtocalCodec::get_protocol_ids(std::vector& proto_ids) { - proto_ids.push_back(ProtocolId::SWIPE); - proto_ids.push_back(ProtocolId::MOBILITY); - proto_ids.push_back(ProtocolId::SUN_ND); - proto_ids.push_back(ProtocolId::PIM); + proto_ids.emplace_back(ProtocolId::SWIPE); + proto_ids.emplace_back(ProtocolId::MOBILITY); + proto_ids.emplace_back(ProtocolId::SUN_ND); + proto_ids.emplace_back(ProtocolId::PIM); } bool BadProtocalCodec::decode(const RawData&, CodecData& codec, DecodeData&) diff --git a/src/codecs/ip/cd_dst_opts.cc b/src/codecs/ip/cd_dst_opts.cc index 6719e3a90..2211451a1 100644 --- a/src/codecs/ip/cd_dst_opts.cc +++ b/src/codecs/ip/cd_dst_opts.cc @@ -88,7 +88,7 @@ bool Ipv6DSTOptsCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) } void Ipv6DSTOptsCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::DSTOPTS); } +{ v.emplace_back(ProtocolId::DSTOPTS); } //------------------------------------------------------------------------- // api diff --git a/src/codecs/ip/cd_esp.cc b/src/codecs/ip/cd_esp.cc index f7f862d79..408d07497 100644 --- a/src/codecs/ip/cd_esp.cc +++ b/src/codecs/ip/cd_esp.cc @@ -82,7 +82,7 @@ constexpr uint32_t ESP_TRAILER_LEN = 2; } // anonymous namespace void EspCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ESP); } +{ v.emplace_back(ProtocolId::ESP); } /* * Attempt to decode Encapsulated Security Payload. diff --git a/src/codecs/ip/cd_frag.cc b/src/codecs/ip/cd_frag.cc index db9c79708..39b1d207b 100644 --- a/src/codecs/ip/cd_frag.cc +++ b/src/codecs/ip/cd_frag.cc @@ -128,7 +128,7 @@ bool Ipv6FragCodec::decode(const RawData& raw, CodecData& codec, DecodeData& sno } void Ipv6FragCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::FRAGMENT); } +{ v.emplace_back(ProtocolId::FRAGMENT); } void Ipv6FragCodec::log(TextLog* const text_log, const uint8_t* raw_pkt, const uint16_t /*lyr_len*/) diff --git a/src/codecs/ip/cd_gre.cc b/src/codecs/ip/cd_gre.cc index dfb383261..c7d04b039 100644 --- a/src/codecs/ip/cd_gre.cc +++ b/src/codecs/ip/cd_gre.cc @@ -89,7 +89,7 @@ static const uint32_t GRE_V1_ACK_LEN = 4; } // anonymous namespace void GreCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::GRE); } +{ v.emplace_back(ProtocolId::GRE); } /* * see RFCs 1701, 2784 and 2637 diff --git a/src/codecs/ip/cd_hop_opts.cc b/src/codecs/ip/cd_hop_opts.cc index 7c8537fb8..b0f42bc78 100644 --- a/src/codecs/ip/cd_hop_opts.cc +++ b/src/codecs/ip/cd_hop_opts.cc @@ -92,7 +92,7 @@ bool Ipv6HopOptsCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) void Ipv6HopOptsCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::HOPOPTS); + v.emplace_back(ProtocolId::HOPOPTS); } //------------------------------------------------------------------------- diff --git a/src/codecs/ip/cd_icmp4.cc b/src/codecs/ip/cd_icmp4.cc index 188854b0d..3d299a8a1 100644 --- a/src/codecs/ip/cd_icmp4.cc +++ b/src/codecs/ip/cd_icmp4.cc @@ -120,7 +120,7 @@ private: } // namespace void Icmp4Codec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ICMPV4); } +{ v.emplace_back(ProtocolId::ICMPV4); } bool Icmp4Codec::decode(const RawData& raw, CodecData& codec,DecodeData& snort) { diff --git a/src/codecs/ip/cd_icmp6.cc b/src/codecs/ip/cd_icmp6.cc index 8b8995690..0330c2774 100644 --- a/src/codecs/ip/cd_icmp6.cc +++ b/src/codecs/ip/cd_icmp6.cc @@ -107,7 +107,7 @@ public: } // anonymous namespace void Icmp6Codec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ICMPV6); } +{ v.emplace_back(ProtocolId::ICMPV6); } bool Icmp6Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) { diff --git a/src/codecs/ip/cd_igmp.cc b/src/codecs/ip/cd_igmp.cc index 8973073f4..179454160 100644 --- a/src/codecs/ip/cd_igmp.cc +++ b/src/codecs/ip/cd_igmp.cc @@ -85,7 +85,7 @@ bool IgmpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) void IgmpCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::IGMP); + v.emplace_back(ProtocolId::IGMP); } //------------------------------------------------------------------------- diff --git a/src/codecs/ip/cd_ipv4.cc b/src/codecs/ip/cd_ipv4.cc index a904ff57d..3817fd624 100644 --- a/src/codecs/ip/cd_ipv4.cc +++ b/src/codecs/ip/cd_ipv4.cc @@ -127,13 +127,13 @@ private: void Ipv4Codec::get_data_link_type(std::vector& v) { - v.push_back(DLT_IPV4); + v.emplace_back(DLT_IPV4); } void Ipv4Codec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::ETHERTYPE_IPV4); - v.push_back(ProtocolId::IPIP); + v.emplace_back(ProtocolId::ETHERTYPE_IPV4); + v.emplace_back(ProtocolId::IPIP); } bool Ipv4Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) diff --git a/src/codecs/ip/cd_ipv6.cc b/src/codecs/ip/cd_ipv6.cc index ac3cbc944..d05cd5557 100644 --- a/src/codecs/ip/cd_ipv6.cc +++ b/src/codecs/ip/cd_ipv6.cc @@ -115,13 +115,13 @@ private: void Ipv6Codec::get_data_link_type(std::vector& v) { - v.push_back(DLT_IPV6); + v.emplace_back(DLT_IPV6); } void Ipv6Codec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::ETHERTYPE_IPV6); - v.push_back(ProtocolId::IPV6); + v.emplace_back(ProtocolId::ETHERTYPE_IPV6); + v.emplace_back(ProtocolId::IPV6); } bool Ipv6Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) diff --git a/src/codecs/ip/cd_mobility.cc b/src/codecs/ip/cd_mobility.cc index d45da388c..9e7fe8194 100644 --- a/src/codecs/ip/cd_mobility.cc +++ b/src/codecs/ip/cd_mobility.cc @@ -54,7 +54,7 @@ struct MobileIPV6Header // RFC 6275 void MobilityCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::MOBILITY_IPV6); + v.emplace_back(ProtocolId::MOBILITY_IPV6); } bool MobilityCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) diff --git a/src/codecs/ip/cd_no_next.cc b/src/codecs/ip/cd_no_next.cc index 209d5632b..448c0e6e9 100644 --- a/src/codecs/ip/cd_no_next.cc +++ b/src/codecs/ip/cd_no_next.cc @@ -68,7 +68,7 @@ bool Ipv6NoNextCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) } void Ipv6NoNextCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::NONEXT); } +{ v.emplace_back(ProtocolId::NONEXT); } //------------------------------------------------------------------------- // api diff --git a/src/codecs/ip/cd_pgm.cc b/src/codecs/ip/cd_pgm.cc index add4c93f3..7d0ae0b6e 100644 --- a/src/codecs/ip/cd_pgm.cc +++ b/src/codecs/ip/cd_pgm.cc @@ -151,7 +151,7 @@ bool PgmCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) void PgmCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::PGM); + v.emplace_back(ProtocolId::PGM); } //------------------------------------------------------------------------- diff --git a/src/codecs/ip/cd_routing.cc b/src/codecs/ip/cd_routing.cc index b298ad016..7d11aa190 100644 --- a/src/codecs/ip/cd_routing.cc +++ b/src/codecs/ip/cd_routing.cc @@ -68,7 +68,7 @@ struct IP6Route0 } // namespace void Ipv6RoutingCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ROUTING); } +{ v.emplace_back(ProtocolId::ROUTING); } bool Ipv6RoutingCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/ip/cd_tcp.cc b/src/codecs/ip/cd_tcp.cc index 56238f6fe..edfee619c 100644 --- a/src/codecs/ip/cd_tcp.cc +++ b/src/codecs/ip/cd_tcp.cc @@ -141,7 +141,7 @@ static sfip_var_t* SynToMulticastDstIp = nullptr; void TcpCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::TCP); + v.emplace_back(ProtocolId::TCP); } bool TcpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) diff --git a/src/codecs/ip/cd_udp.cc b/src/codecs/ip/cd_udp.cc index 13988bd20..3351a0fca 100644 --- a/src/codecs/ip/cd_udp.cc +++ b/src/codecs/ip/cd_udp.cc @@ -154,7 +154,7 @@ private: void UdpCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::UDP); + v.emplace_back(ProtocolId::UDP); } bool UdpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) diff --git a/src/codecs/link/cd_arp.cc b/src/codecs/link/cd_arp.cc index 60eb3d1b1..c2ae6b666 100644 --- a/src/codecs/link/cd_arp.cc +++ b/src/codecs/link/cd_arp.cc @@ -60,8 +60,8 @@ public: void ArpCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::ETHERTYPE_ARP); - v.push_back(ProtocolId::ETHERTYPE_REVARP); + v.emplace_back(ProtocolId::ETHERTYPE_ARP); + v.emplace_back(ProtocolId::ETHERTYPE_REVARP); } bool ArpCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) diff --git a/src/codecs/link/cd_ciscometadata.cc b/src/codecs/link/cd_ciscometadata.cc index 31b14f42e..efa63ec97 100644 --- a/src/codecs/link/cd_ciscometadata.cc +++ b/src/codecs/link/cd_ciscometadata.cc @@ -76,7 +76,7 @@ constexpr uint16_t CISCO_META_OPT_TYPE_MASK = 0x1FFF; //mask opt_len_type to get } // namespace void CiscoMetaDataCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ETHERTYPE_CISCO_META); } +{ v.emplace_back(ProtocolId::ETHERTYPE_CISCO_META); } bool CiscoMetaDataCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/link/cd_erspan2.cc b/src/codecs/link/cd_erspan2.cc index 897459538..3d45cb37e 100644 --- a/src/codecs/link/cd_erspan2.cc +++ b/src/codecs/link/cd_erspan2.cc @@ -69,7 +69,7 @@ struct ERSpanType2Hdr } // namespace void Erspan2Codec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ETHERTYPE_ERSPAN_TYPE2); } +{ v.emplace_back(ProtocolId::ETHERTYPE_ERSPAN_TYPE2); } bool Erspan2Codec::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/link/cd_erspan3.cc b/src/codecs/link/cd_erspan3.cc index b7813d84f..df89439bc 100644 --- a/src/codecs/link/cd_erspan3.cc +++ b/src/codecs/link/cd_erspan3.cc @@ -72,7 +72,7 @@ struct ERSpanType3Hdr } // anonymous namespace void Erspan3Codec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ETHERTYPE_ERSPAN_TYPE3); } +{ v.emplace_back(ProtocolId::ETHERTYPE_ERSPAN_TYPE3); } bool Erspan3Codec::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/link/cd_fabricpath.cc b/src/codecs/link/cd_fabricpath.cc index 321e06fa7..3bee1615b 100644 --- a/src/codecs/link/cd_fabricpath.cc +++ b/src/codecs/link/cd_fabricpath.cc @@ -70,7 +70,7 @@ constexpr uint8_t FABRICPATH_HEADER_LEN = 16; } // anonymous namespace void FabricPathCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ETHERTYPE_FPATH); } +{ v.emplace_back(ProtocolId::ETHERTYPE_FPATH); } bool FabricPathCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/link/cd_mpls.cc b/src/codecs/link/cd_mpls.cc index 77b15397e..13ae1ca21 100644 --- a/src/codecs/link/cd_mpls.cc +++ b/src/codecs/link/cd_mpls.cc @@ -143,9 +143,9 @@ constexpr int MPLS_PAYLOADTYPE_ERROR = -1; void MplsCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::ETHERTYPE_MPLS_UNICAST); - v.push_back(ProtocolId::ETHERTYPE_MPLS_MULTICAST); - v.push_back(ProtocolId::MPLS_IP); + v.emplace_back(ProtocolId::ETHERTYPE_MPLS_UNICAST); + v.emplace_back(ProtocolId::ETHERTYPE_MPLS_MULTICAST); + v.emplace_back(ProtocolId::MPLS_IP); } bool MplsCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) diff --git a/src/codecs/link/cd_ppp_encap.cc b/src/codecs/link/cd_ppp_encap.cc index 85f24256e..9488a78a2 100644 --- a/src/codecs/link/cd_ppp_encap.cc +++ b/src/codecs/link/cd_ppp_encap.cc @@ -48,7 +48,7 @@ static const uint16_t PPP_IPX = 0x002b; /* Novell IPX Protocol */ } // namespace void PppEncap::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ETHERTYPE_PPP); } +{ v.emplace_back(ProtocolId::ETHERTYPE_PPP); } bool PppEncap::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/link/cd_pppoe.cc b/src/codecs/link/cd_pppoe.cc index e43e2119a..0baacb0cc 100644 --- a/src/codecs/link/cd_pppoe.cc +++ b/src/codecs/link/cd_pppoe.cc @@ -150,7 +150,7 @@ public: PPPoEDiscCodec() : PPPoECodec(CD_PPPOEPKT_DISC_NAME, PppoepktType::DISCOVERY) { } void get_protocol_ids(std::vector& v) override - { v.push_back(ProtocolId::ETHERTYPE_PPPOE_DISC); } + { v.emplace_back(ProtocolId::ETHERTYPE_PPPOE_DISC); } }; class PPPoESessCodec : public PPPoECodec @@ -159,7 +159,7 @@ public: PPPoESessCodec() : PPPoECodec(CD_PPPOEPKT_SESS_NAME, PppoepktType::SESSION) { } void get_protocol_ids(std::vector& v) override - { v.push_back(ProtocolId::ETHERTYPE_PPPOE_SESS); } + { v.emplace_back(ProtocolId::ETHERTYPE_PPPOE_SESS); } }; } // namespace diff --git a/src/codecs/link/cd_trans_bridge.cc b/src/codecs/link/cd_trans_bridge.cc index 8da054f09..d7cb3cc04 100644 --- a/src/codecs/link/cd_trans_bridge.cc +++ b/src/codecs/link/cd_trans_bridge.cc @@ -43,7 +43,7 @@ public: } // anonymous namespace void TransbridgeCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ETHERTYPE_TRANS_ETHER_BRIDGING); } +{ v.emplace_back(ProtocolId::ETHERTYPE_TRANS_ETHER_BRIDGING); } bool TransbridgeCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/link/cd_vlan.cc b/src/codecs/link/cd_vlan.cc index 1f9302c0a..c4ab01918 100644 --- a/src/codecs/link/cd_vlan.cc +++ b/src/codecs/link/cd_vlan.cc @@ -63,10 +63,10 @@ constexpr unsigned int ETHERNET_MAX_LEN_ENCAP = 1518; /* 802.3 (+LLC) or ethe void VlanCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::ETHERTYPE_8021Q); - v.push_back(ProtocolId::ETHERTYPE_8021AD); - v.push_back(ProtocolId::ETHERTYPE_QINQ_NS1); - v.push_back(ProtocolId::ETHERTYPE_QINQ_NS2); + v.emplace_back(ProtocolId::ETHERTYPE_8021Q); + v.emplace_back(ProtocolId::ETHERTYPE_8021AD); + v.emplace_back(ProtocolId::ETHERTYPE_QINQ_NS1); + v.emplace_back(ProtocolId::ETHERTYPE_QINQ_NS2); } bool VlanCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) diff --git a/src/codecs/misc/cd_default.cc b/src/codecs/misc/cd_default.cc index 78c7c333e..8f46b1a85 100644 --- a/src/codecs/misc/cd_default.cc +++ b/src/codecs/misc/cd_default.cc @@ -36,7 +36,7 @@ public: DefaultCodec() : Codec(CD_DEFAULT_NAME) { } void get_protocol_ids(std::vector& v) override - { v.push_back(ProtocolId::FINISHED_DECODE); } + { v.emplace_back(ProtocolId::FINISHED_DECODE); } bool decode(const RawData&, CodecData&, DecodeData&) override { return false; } diff --git a/src/codecs/misc/cd_gtp.cc b/src/codecs/misc/cd_gtp.cc index a5434dc7b..5bf7100e5 100644 --- a/src/codecs/misc/cd_gtp.cc +++ b/src/codecs/misc/cd_gtp.cc @@ -81,7 +81,7 @@ static const uint32_t GTP_V1_HEADER_LEN = 12; void GtpCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::GTP); + v.emplace_back(ProtocolId::GTP); } bool GtpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& dd) diff --git a/src/codecs/misc/cd_icmp4_ip.cc b/src/codecs/misc/cd_icmp4_ip.cc index a99afaa76..2e9169333 100644 --- a/src/codecs/misc/cd_icmp4_ip.cc +++ b/src/codecs/misc/cd_icmp4_ip.cc @@ -49,7 +49,7 @@ public: } // namespace void Icmp4IpCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::IP_EMBEDDED_IN_ICMP4); } +{ v.emplace_back(ProtocolId::IP_EMBEDDED_IN_ICMP4); } bool Icmp4IpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) { diff --git a/src/codecs/misc/cd_icmp6_ip.cc b/src/codecs/misc/cd_icmp6_ip.cc index d55e344d8..5ee47f46c 100644 --- a/src/codecs/misc/cd_icmp6_ip.cc +++ b/src/codecs/misc/cd_icmp6_ip.cc @@ -49,7 +49,7 @@ public: } // namespace void Icmp6IpCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::IP_EMBEDDED_IN_ICMP6); } +{ v.emplace_back(ProtocolId::IP_EMBEDDED_IN_ICMP6); } bool Icmp6IpCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/misc/cd_llc.cc b/src/codecs/misc/cd_llc.cc index 03216e57e..0e4cbfb94 100644 --- a/src/codecs/misc/cd_llc.cc +++ b/src/codecs/misc/cd_llc.cc @@ -95,7 +95,7 @@ struct EthLlcOther } // namespace void LlcCodec::get_protocol_ids(std::vector& v) -{ v.push_back(ProtocolId::ETHERNET_LLC); } +{ v.emplace_back(ProtocolId::ETHERNET_LLC); } bool LlcCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) { diff --git a/src/codecs/misc/cd_teredo.cc b/src/codecs/misc/cd_teredo.cc index 7dac5b27e..d1d9a5820 100644 --- a/src/codecs/misc/cd_teredo.cc +++ b/src/codecs/misc/cd_teredo.cc @@ -46,7 +46,7 @@ public: void TeredoCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::TEREDO); + v.emplace_back(ProtocolId::TEREDO); } bool TeredoCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort) diff --git a/src/codecs/misc/cd_user.cc b/src/codecs/misc/cd_user.cc index 52efbf34f..b19744d8f 100644 --- a/src/codecs/misc/cd_user.cc +++ b/src/codecs/misc/cd_user.cc @@ -44,7 +44,7 @@ public: void UserCodec::get_data_link_type(std::vector& v) { - v.push_back(DLT_USER); + v.emplace_back(DLT_USER); } static void set_ip(const DAQ_UsrHdr_t* pci, CodecData& codec, DecodeData& snort) diff --git a/src/codecs/root/cd_eth.cc b/src/codecs/root/cd_eth.cc index a489e78b1..5a6e8d1a8 100644 --- a/src/codecs/root/cd_eth.cc +++ b/src/codecs/root/cd_eth.cc @@ -73,13 +73,13 @@ public: void EthCodec::get_data_link_type(std::vector& v) { - v.push_back(DLT_PPP_ETHER); - v.push_back(DLT_EN10MB); + v.emplace_back(DLT_PPP_ETHER); + v.emplace_back(DLT_EN10MB); } void EthCodec::get_protocol_ids(std::vector& v) { - v.push_back(ProtocolId::ETHERNET_802_3); + v.emplace_back(ProtocolId::ETHERNET_802_3); } bool EthCodec::decode(const RawData& raw, CodecData& codec, DecodeData&) diff --git a/src/codecs/root/cd_raw.cc b/src/codecs/root/cd_raw.cc index e26d27a25..7c6567d0b 100644 --- a/src/codecs/root/cd_raw.cc +++ b/src/codecs/root/cd_raw.cc @@ -59,7 +59,7 @@ bool RawCodec::decode(const RawData& raw, CodecData& data, DecodeData&) void RawCodec::get_data_link_type(std::vector& v) { - v.push_back(DLT_RAW); + v.emplace_back(DLT_RAW); } //------------------------------------------------------------------------- diff --git a/src/connectors/file_connector/file_connector_module.cc b/src/connectors/file_connector/file_connector_module.cc index 0ed1d09d6..df32877dc 100644 --- a/src/connectors/file_connector/file_connector_module.cc +++ b/src/connectors/file_connector/file_connector_module.cc @@ -135,7 +135,7 @@ bool FileConnectorModule::end(const char*, int idx, SnortConfig*) { if (idx != 0) { - config_set->push_back(config); + config_set->emplace_back(config); config = nullptr; } diff --git a/src/connectors/tcp_connector/tcp_connector_module.cc b/src/connectors/tcp_connector/tcp_connector_module.cc index 2f68b375b..20355ae9c 100644 --- a/src/connectors/tcp_connector/tcp_connector_module.cc +++ b/src/connectors/tcp_connector/tcp_connector_module.cc @@ -130,7 +130,7 @@ bool TcpConnectorModule::end(const char*, int idx, SnortConfig*) { if (idx != 0) { - config_set->push_back(config); + config_set->emplace_back(config); config = nullptr; } diff --git a/src/control/idle_processing.cc b/src/control/idle_processing.cc index f872a5555..c529428e1 100644 --- a/src/control/idle_processing.cc +++ b/src/control/idle_processing.cc @@ -37,7 +37,7 @@ static std::vector s_idle_handlers; void IdleProcessing::register_handler(IdleHook f) -{ s_idle_handlers.push_back(f); } +{ s_idle_handlers.emplace_back(f); } void IdleProcessing::execute() { diff --git a/src/detection/context_switcher.cc b/src/detection/context_switcher.cc index d9bd750de..088027324 100644 --- a/src/detection/context_switcher.cc +++ b/src/detection/context_switcher.cc @@ -60,7 +60,7 @@ ContextSwitcher::~ContextSwitcher() void ContextSwitcher::push(IpsContext* c) { c->set_slot(idle.size() + 1); - idle.push_back(c); + idle.emplace_back(c); } IpsContext* ContextSwitcher::pop() @@ -79,7 +79,7 @@ void ContextSwitcher::start() assert(!idle.empty()); trace_logf(detection, TRACE_DETECTION_ENGINE, "(wire) %" PRIu64 " cs::start %u (i=%zu, b=%zu)\n", get_packet_number(), idle.back()->get_slot(), idle.size(), busy.size()); - busy.push_back(idle.back()); + busy.emplace_back(idle.back()); idle.pop_back(); } @@ -88,7 +88,7 @@ void ContextSwitcher::stop() assert(busy.size() == 1); trace_logf(detection, TRACE_DETECTION_ENGINE, "(wire) %" PRIu64 " cs::stop %u (i=%zu, b=%zu)\n", get_packet_number(), busy.back()->get_slot(), idle.size(), busy.size()); - idle.push_back(busy.back()); + idle.emplace_back(busy.back()); busy.pop_back(); } @@ -103,7 +103,7 @@ void ContextSwitcher::abort() trace_logf(detection, TRACE_DETECTION_ENGINE, "%" PRIu64 " cs::abort hold", hold[i]->packet_number); - idle.push_back(hold[i]); + idle.emplace_back(hold[i]); hold[i] = nullptr; } } @@ -112,7 +112,7 @@ void ContextSwitcher::abort() trace_logf(detection, TRACE_DETECTION_ENGINE, "%" PRIu64 " cs::abort busy", busy[0]->packet_number); - idle.push_back(busy.back()); + idle.emplace_back(busy.back()); busy.pop_back(); } } @@ -122,7 +122,7 @@ IpsContext* ContextSwitcher::interrupt() assert(!idle.empty()); trace_logf(detection, TRACE_DETECTION_ENGINE, "%" PRIu64 " cs::interrupt %u (i=%zu, b=%zu)\n", idle.back()->packet_number, idle.back()->get_slot(), idle.size(), busy.size()); - busy.push_back(idle.back()); + busy.emplace_back(idle.back()); idle.pop_back(); return busy.back(); } @@ -136,7 +136,7 @@ IpsContext* ContextSwitcher::complete() c->packet_number, busy.back()->get_slot(), idle.size(), busy.size()); c->clear_context_data(); - idle.push_back(c); + idle.emplace_back(c); busy.pop_back(); return busy.empty() ? nullptr : busy.back(); } @@ -161,7 +161,7 @@ void ContextSwitcher::resume(unsigned slot) assert(slot <= hold.capacity()); trace_logf(detection, TRACE_DETECTION_ENGINE, "%" PRIu64 " cs::resume %u (i=%zu, b=%zu)\n", hold[slot]->packet_number, slot, idle.size(), busy.size()); - busy.push_back(hold[slot]); + busy.emplace_back(hold[slot]); hold[slot] = nullptr; } diff --git a/src/detection/detection_engine.cc b/src/detection/detection_engine.cc index 377be8da6..6fc1fdf2f 100644 --- a/src/detection/detection_engine.cc +++ b/src/detection/detection_engine.cc @@ -223,7 +223,7 @@ void DetectionEngine::add_replacement(const std::string& s, unsigned off) r.data = s; r.offset = off; - Snort::get_switcher()->get_context()->rpl.push_back(r); + Snort::get_switcher()->get_context()->rpl.emplace_back(r); } bool DetectionEngine::get_replacement(std::string& s, unsigned& off) diff --git a/src/detection/fp_utils.cc b/src/detection/fp_utils.cc index 9e18408b1..9df8a2972 100644 --- a/src/detection/fp_utils.cc +++ b/src/detection/fp_utils.cc @@ -329,9 +329,9 @@ PatternMatchVector get_fp_content( // Add alternate pattern PatternMatchData* alt_pmd = ofl->ips_opt->get_alternate_pattern(); if (alt_pmd) - pmds.push_back(alt_pmd); + pmds.emplace_back(alt_pmd); // Add main pattern last - pmds.push_back(best.pmd); + pmds.emplace_back(best.pmd); } } diff --git a/src/detection/ips_context.h b/src/detection/ips_context.h index 6d518168b..f898598fe 100644 --- a/src/detection/ips_context.h +++ b/src/detection/ips_context.h @@ -86,7 +86,7 @@ public: { NONE, NON_CONTENT, CONTENT }; void register_post_callback(Callback callback) - { post_callbacks.push_back(callback); } + { post_callbacks.emplace_back(callback); } void clear_callbacks() { post_callbacks.clear(); } diff --git a/src/detection/regex_offload.cc b/src/detection/regex_offload.cc index d29d4d37f..cf81b111f 100644 --- a/src/detection/regex_offload.cc +++ b/src/detection/regex_offload.cc @@ -63,7 +63,7 @@ RegexOffload::RegexOffload(unsigned max) { RegexRequest* req = new RegexRequest; req->thread = new std::thread(worker, req); - idle.push_back(req); + idle.emplace_back(req); } } @@ -132,7 +132,7 @@ void RegexOffload::put(unsigned id, snort::Packet* p) RegexRequest* req = idle.front(); idle.pop_front(); // FIXIT-H use splice to move instead - busy.push_back(req); + busy.emplace_back(req); std::unique_lock lock(req->mutex); @@ -157,7 +157,7 @@ bool RegexOffload::get(unsigned& id) req->packet = nullptr; busy.pop_front(); // FIXIT-H use splice to move instead - idle.push_back(req); + idle.emplace_back(req); return true; } diff --git a/src/detection/sfrim.cc b/src/detection/sfrim.cc index 111d0d1be..d4936c32d 100644 --- a/src/detection/sfrim.cc +++ b/src/detection/sfrim.cc @@ -65,7 +65,7 @@ int RuleIndexMapAdd(rule_index_map_t* rim, unsigned gid, unsigned sid) rule_number_t rn(gid, sid); int index = rim->map.size(); - rim->map.push_back(rn); + rim->map.emplace_back(rn); //printf("RuleIndexMapping: index=%d gid=%u sid=%u\n",index,gid,sid); return index; diff --git a/src/file_api/file_identifier.cc b/src/file_api/file_identifier.cc index 3e3e56817..84497ae98 100644 --- a/src/file_api/file_identifier.cc +++ b/src/file_api/file_identifier.cc @@ -91,7 +91,7 @@ void* FileIdentifier::calloc_mem(size_t size) void* ret = snort_calloc(size); memory_used += size; /*For memory management*/ - id_memory_blocks.push_back(ret); + id_memory_blocks.emplace_back(ret); return ret; } @@ -412,7 +412,7 @@ TEST_CASE ("FileIdRulePDF", "[FileMagic]") FileMagicRule rule; rule.type = "pdf"; - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); rule.id = 1; FileIdentifier rc; @@ -436,7 +436,7 @@ TEST_CASE ("FileIdRuleUnknow", "[FileMagic]") FileMagicRule rule; rule.type = "pdf"; - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); rule.id = 1; FileIdentifier rc; @@ -461,7 +461,7 @@ TEST_CASE ("FileIdRuleEXE", "[FileMagic]") FileMagicRule rule; rule.type = "exe"; - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); rule.id = 1; FileIdentifier rc; @@ -473,7 +473,7 @@ TEST_CASE ("FileIdRuleEXE", "[FileMagic]") rule.clear(); rule.type = "exe"; - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); rule.id = 3; rc.insert_file_rule(rule); @@ -494,7 +494,7 @@ TEST_CASE ("FileIdRulePDFEXE", "[FileMagic]") FileMagicRule rule; rule.type = "exe"; - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); rule.id = 1; FileIdentifier rc; @@ -506,7 +506,7 @@ TEST_CASE ("FileIdRulePDFEXE", "[FileMagic]") rule.clear(); rule.type = "exe"; - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); rule.id = 3; rc.insert_file_rule(rule); @@ -528,7 +528,7 @@ TEST_CASE ("FileIdRuleFirst", "[FileMagic]") FileMagicRule rule; rule.type = "exe"; - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); rule.id = 1; FileIdentifier rc; @@ -540,7 +540,7 @@ TEST_CASE ("FileIdRuleFirst", "[FileMagic]") rule.clear(); rule.type = "exe"; - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); rule.id = 3; rc.insert_file_rule(rule); diff --git a/src/file_api/file_module.cc b/src/file_api/file_module.cc index ef53357af..b608b17e0 100644 --- a/src/file_api/file_module.cc +++ b/src/file_api/file_module.cc @@ -310,7 +310,7 @@ bool FileIdModule::set(const char*, Value& v, SnortConfig*) std::string tmpstr; while(std::getline(stream, tmpstr, ',')) { - rule.groups.push_back(tmpstr); + rule.groups.emplace_back(tmpstr); } } @@ -392,7 +392,7 @@ bool FileIdModule::end(const char* fqn, int idx, SnortConfig*) else if ( !strcmp(fqn, "file_id.file_rules.magic") ) { fc->process_file_magic(magic); - rule.file_magics.push_back(magic); + rule.file_magics.emplace_back(magic); } else if ( !strcmp(fqn, "file_id.file_policy") ) { diff --git a/src/file_api/file_policy.cc b/src/file_api/file_policy.cc index e072455d9..e1b672022 100644 --- a/src/file_api/file_policy.cc +++ b/src/file_api/file_policy.cc @@ -66,7 +66,7 @@ void FilePolicy::set_file_capture(bool enabled) void FilePolicy::insert_file_rule(FileRule& rule) { - file_rules.push_back(rule); + file_rules.emplace_back(rule); if (!rule.when.sha256.empty()) { diff --git a/src/flow/expect_cache.cc b/src/flow/expect_cache.cc index a4f87cf45..c4fc2af61 100644 --- a/src/flow/expect_cache.cc +++ b/src/flow/expect_cache.cc @@ -434,7 +434,7 @@ int ExpectCache::add_flow(const Packet *ctrlPkt, if (new_expect_flow) { // chain all expected flows created by this packet - packet_expect_flows->push_back(last); + packet_expect_flows->emplace_back(last); ExpectEvent event(ctrlPkt, last, fd); DataBus::publish(EXPECT_EVENT_TYPE_EARLY_SESSION_CREATE_KEY, event, ctrlPkt->flow); diff --git a/src/flow/flow.h b/src/flow/flow.h index bfdc24f79..6b90c3d56 100644 --- a/src/flow/flow.h +++ b/src/flow/flow.h @@ -341,6 +341,7 @@ public: // FIXIT-M privatize if possible unsigned inspection_policy_id; unsigned ips_policy_id; unsigned network_policy_id; + unsigned reputation_id; uint16_t client_port; uint16_t server_port; diff --git a/src/flow/flow_control.cc b/src/flow/flow_control.cc index b661e6fe2..c8eada88f 100644 --- a/src/flow/flow_control.cc +++ b/src/flow/flow_control.cc @@ -331,7 +331,7 @@ void FlowControl::init_proto( con.cache->push(con.mem + i); con.get_ssn = get_ssn; - types.push_back(type); + types.emplace_back(type); } // FIXIT-P apply more filtering logic here, eg require_3whs diff --git a/src/framework/data_bus.cc b/src/framework/data_bus.cc index 79c39c562..7793e9f3b 100644 --- a/src/framework/data_bus.cc +++ b/src/framework/data_bus.cc @@ -136,7 +136,7 @@ void DataBus::publish(const char* key, void* user, int type, const uint8_t* data void DataBus::_subscribe(const char* key, DataHandler* h) { DataList& v = map[key]; - v.push_back(h); + v.emplace_back(h); } void DataBus::_unsubscribe(const char* key, DataHandler* h) diff --git a/src/framework/parameter.cc b/src/framework/parameter.cc index 5e0d1a378..ccdc02e7b 100644 --- a/src/framework/parameter.cc +++ b/src/framework/parameter.cc @@ -228,7 +228,7 @@ static unsigned split(const string& txt, vector& strs) while ( pos != string::npos ) { if ( last != pos ) - strs.push_back(txt.substr(last, pos - last)); + strs.emplace_back(txt.substr(last, pos - last)); last = txt.find_first_not_of(delim, pos + 1); pos = txt.find_first_of(delim, last); @@ -236,7 +236,7 @@ static unsigned split(const string& txt, vector& strs) // add the last one if ( last != string::npos ) - strs.push_back(txt.substr(last, min(pos, txt.size()) - last)); + strs.emplace_back(txt.substr(last, min(pos, txt.size()) - last)); return strs.size(); } diff --git a/src/hash/lru_cache_shared.h b/src/hash/lru_cache_shared.h index 3d5131368..c7625e51f 100644 --- a/src/hash/lru_cache_shared.h +++ b/src/hash/lru_cache_shared.h @@ -295,7 +295,7 @@ std::vector > LruCacheShared::get_all_data for (auto& entry : list ) { - vec.push_back(entry); + vec.emplace_back(entry); } return vec; diff --git a/src/ips_options/ips_service.cc b/src/ips_options/ips_service.cc index 3224c0ea8..6abf72a29 100644 --- a/src/ips_options/ips_service.cc +++ b/src/ips_options/ips_service.cc @@ -86,7 +86,7 @@ bool ServiceModule::set(const char*, Value& v, SnortConfig*) return true; } } - services.push_back(svc); + services.emplace_back(svc); return true; } diff --git a/src/loggers/alert_csv.cc b/src/loggers/alert_csv.cc index 9e9df913d..dca96e18f 100644 --- a/src/loggers/alert_csv.cc +++ b/src/loggers/alert_csv.cc @@ -512,7 +512,7 @@ bool CsvModule::set(const char*, Value& v, SnortConfig*) fields.clear(); while ( v.get_next_token(tok) ) - fields.push_back(csv_func[Parameter::index(csv_range, tok.c_str())]); + fields.emplace_back(csv_func[Parameter::index(csv_range, tok.c_str())]); } else if ( v.is("limit") ) @@ -540,7 +540,7 @@ bool CsvModule::begin(const char*, int, SnortConfig*) v.set_first_token(); while ( v.get_next_token(tok) ) - fields.push_back(csv_func[Parameter::index(csv_range, tok.c_str())]); + fields.emplace_back(csv_func[Parameter::index(csv_range, tok.c_str())]); } return true; } diff --git a/src/loggers/alert_fast.cc b/src/loggers/alert_fast.cc index 9a20c6da2..2f44b76b6 100644 --- a/src/loggers/alert_fast.cc +++ b/src/loggers/alert_fast.cc @@ -142,7 +142,7 @@ static void load_buf_ids( { unsigned id = ins->get_buf_id(key); assert(id); - ids.push_back(id); + ids.emplace_back(id); } } diff --git a/src/loggers/alert_json.cc b/src/loggers/alert_json.cc index 2fc8a1525..20b15a50a 100644 --- a/src/loggers/alert_json.cc +++ b/src/loggers/alert_json.cc @@ -676,7 +676,7 @@ bool JsonModule::set(const char*, Value& v, SnortConfig*) fields.clear(); while ( v.get_next_token(tok) ) - fields.push_back(json_func[Parameter::index(json_range, tok.c_str())]); + fields.emplace_back(json_func[Parameter::index(json_range, tok.c_str())]); } else if ( v.is("limit") ) @@ -704,7 +704,7 @@ bool JsonModule::begin(const char*, int, SnortConfig*) v.set_first_token(); while ( v.get_next_token(tok) ) - fields.push_back(json_func[Parameter::index(json_range, tok.c_str())]); + fields.emplace_back(json_func[Parameter::index(json_range, tok.c_str())]); } return true; } diff --git a/src/loggers/alert_sf_socket.cc b/src/loggers/alert_sf_socket.cc index 5e2046cbd..0d17fe7ce 100644 --- a/src/loggers/alert_sf_socket.cc +++ b/src/loggers/alert_sf_socket.cc @@ -132,7 +132,7 @@ bool SfSocketModule::begin(const char*, int, SnortConfig*) bool SfSocketModule::end(const char* fqn, int, SnortConfig*) { if ( !strcmp(fqn, "alert_sfsocket.rules") ) - rulez.push_back(rule); + rulez.emplace_back(rule); return true; } diff --git a/src/main/control_mgmt.cc b/src/main/control_mgmt.cc index 62a90eb0c..32c6b82e2 100644 --- a/src/main/control_mgmt.cc +++ b/src/main/control_mgmt.cc @@ -47,7 +47,7 @@ static std::vector controls; void ControlMgmt::add_control(int fd, bool local) { - controls.push_back(new ControlConn(fd, local)); + controls.emplace_back(new ControlConn(fd, local)); } bool ControlMgmt::find_control(int fd, std::vector::iterator& control) diff --git a/src/main/policy.cc b/src/main/policy.cc index c4036fe85..36103c911 100644 --- a/src/main/policy.cc +++ b/src/main/policy.cc @@ -187,10 +187,10 @@ void PolicyMap::clone(PolicyMap *other_map) { if ( i == 0 ) { - inspection_policy.push_back(new InspectionPolicy(other_map->inspection_policy[i])); + inspection_policy.emplace_back(new InspectionPolicy(other_map->inspection_policy[i])); } else - inspection_policy.push_back(other_map->inspection_policy[i]); + inspection_policy.emplace_back(other_map->inspection_policy[i]); } shell_map = other_map->shell_map; @@ -218,8 +218,8 @@ void PolicyMap::clone(PolicyMap *other_map) unsigned PolicyMap::add_inspection_shell(Shell* sh) { unsigned idx = inspection_policy.size(); - shells.push_back(sh); - inspection_policy.push_back(new InspectionPolicy(idx)); + shells.emplace_back(sh); + inspection_policy.emplace_back(new InspectionPolicy(idx)); shell_map[sh] = std::make_shared(inspection_policy.back(), nullptr, nullptr); return idx; @@ -228,8 +228,8 @@ unsigned PolicyMap::add_inspection_shell(Shell* sh) unsigned PolicyMap::add_ips_shell(Shell* sh) { unsigned idx = ips_policy.size(); - shells.push_back(sh); - ips_policy.push_back(new IpsPolicy(idx)); + shells.emplace_back(sh); + ips_policy.emplace_back(new IpsPolicy(idx)); shell_map[sh] = std::make_shared(nullptr, ips_policy.back(), nullptr); return idx; } @@ -237,18 +237,18 @@ unsigned PolicyMap::add_ips_shell(Shell* sh) unsigned PolicyMap::add_network_shell(Shell* sh) { unsigned idx = network_policy.size(); - shells.push_back(sh); - network_policy.push_back(new NetworkPolicy(idx)); + shells.emplace_back(sh); + network_policy.emplace_back(new NetworkPolicy(idx)); shell_map[sh] = std::make_shared(nullptr, nullptr, network_policy.back()); return idx; } std::shared_ptr PolicyMap::add_shell(Shell* sh) { - shells.push_back(sh); - inspection_policy.push_back(new InspectionPolicy(inspection_policy.size())); - ips_policy.push_back(new IpsPolicy(ips_policy.size())); - network_policy.push_back(new NetworkPolicy(network_policy.size())); + shells.emplace_back(sh); + inspection_policy.emplace_back(new InspectionPolicy(inspection_policy.size())); + ips_policy.emplace_back(new IpsPolicy(ips_policy.size())); + network_policy.emplace_back(new NetworkPolicy(network_policy.size())); return shell_map[sh] = std::make_shared(inspection_policy.back(), ips_policy.back(), network_policy.back()); diff --git a/src/main/snort_config.cc b/src/main/snort_config.cc index f80d320c1..158627d60 100644 --- a/src/main/snort_config.cc +++ b/src/main/snort_config.cc @@ -961,7 +961,7 @@ void SnortConfig::set_tweaks(const char* t) void SnortConfig::add_script_path(const char* path) { if (path) - script_paths.push_back(path); + script_paths.emplace_back(path); } void SnortConfig::set_alert_mode(const char* val) @@ -1035,7 +1035,7 @@ bool SnortConfig::tunnel_bypass_enabled(uint8_t proto) SO_PUBLIC int SnortConfig::request_scratch(ScScratchFunc setup, ScScratchFunc cleanup) { - scratch_handlers.push_back(std::make_pair(setup, cleanup)); + scratch_handlers.emplace_back(std::make_pair(setup, cleanup)); // We return an index that the caller uses to reference their per thread // scratch space diff --git a/src/managers/action_manager.cc b/src/managers/action_manager.cc index 162511104..4bd79a52a 100644 --- a/src/managers/action_manager.cc +++ b/src/managers/action_manager.cc @@ -59,7 +59,7 @@ void ActionManager::add_plugin(const ActionApi* api) if ( api->pinit ) api->pinit(); - s_actors.push_back(a); + s_actors.emplace_back(a); } void ActionManager::release_plugins() diff --git a/src/managers/codec_manager.cc b/src/managers/codec_manager.cc index 9845e1f6e..6e61463be 100644 --- a/src/managers/codec_manager.cc +++ b/src/managers/codec_manager.cc @@ -100,7 +100,7 @@ void CodecManager::add_plugin(const CodecApi* api) wrap.api = api; wrap.init = false; - s_codecs.push_back(wrap); + s_codecs.emplace_back(wrap); } void CodecManager::release_plugins() diff --git a/src/managers/connector_manager.cc b/src/managers/connector_manager.cc index 1525e0e3c..bc4b268d0 100644 --- a/src/managers/connector_manager.cc +++ b/src/managers/connector_manager.cc @@ -124,8 +124,7 @@ void ConnectorManager::thread_init() assert(conn.second->thread_connectors.count(tid) == 0); Connector* connector = sc.api->tinit(conn.second->config); - std::pair element (tid, std::move(connector)); - conn.second->thread_connectors.insert(element); + conn.second->thread_connectors.emplace(tid, std::move(connector)); } } } @@ -168,10 +167,9 @@ void ConnectorManager::instantiate(const ConnectorApi* api, Module* mod, SnortCo { ConnectorElem* connector_elem = new ConnectorElem; connector_elem->config = &*cfg; - std::pair element (cfg->connector_name, std::move(connector_elem)); - c.connectors.insert(element); + c.connectors.emplace(cfg->connector_name, std::move(connector_elem)); } - s_connector_commons.push_back(c); + s_connector_commons.emplace_back(c); } diff --git a/src/managers/event_manager.cc b/src/managers/event_manager.cc index 1b289faf1..80da3aeec 100644 --- a/src/managers/event_manager.cc +++ b/src/managers/event_manager.cc @@ -70,7 +70,7 @@ void EventManager::add_plugin(const LogApi* api) { // can't assert - alert_sf_socket operates differently //assert(api->flags & (OUTPUT_TYPE_FLAG__ALERT | OUTPUT_TYPE_FLAG__LOG)); - s_outputs.push_back(new Output(api)); + s_outputs.emplace_back(new Output(api)); } void EventManager::release_plugins() @@ -144,7 +144,7 @@ void EventManager::add_output(OutputSet** ofn, Logger* eh) if ( !*ofn ) *ofn = new OutputSet; - (*ofn)->outputs.push_back(eh); + (*ofn)->outputs.emplace_back(eh); } void EventManager::copy_outputs(OutputSet* dst, OutputSet* src) @@ -173,7 +173,7 @@ void EventManager::instantiate( assert(p->handler); p->handler->set_api(p->api); - s_loggers.outputs.push_back(p->handler); + s_loggers.outputs.emplace_back(p->handler); } // command line outputs @@ -198,7 +198,7 @@ void EventManager::instantiate( if ( p->handler ) { // configured by conf - s_loggers.outputs.push_back(p->handler); + s_loggers.outputs.emplace_back(p->handler); return; } Module* mod = ModuleManager::get_default_module(name, sc); diff --git a/src/managers/inspector_manager.cc b/src/managers/inspector_manager.cc index 3051cb206..3c0178a14 100644 --- a/src/managers/inspector_manager.cc +++ b/src/managers/inspector_manager.cc @@ -289,7 +289,7 @@ void FrameworkPolicy::vectorize(SnortConfig* sc) void InspectorManager::add_plugin(const InspectApi* api) { PHGlobal* g = new PHGlobal(*api); - s_handlers.push_back(g); + s_handlers.emplace_back(g); } static const InspectApi* get_plugin(const char* keyword) @@ -440,7 +440,7 @@ static PHInstance* get_new( else p->set_reloaded(RELOAD_TYPE_NEW); } - fp->ilist.push_back(p); + fp->ilist.emplace_back(p); return p; } @@ -468,9 +468,9 @@ void InspectorManager::delete_policy(InspectionPolicy* pi, bool cloned) continue; if ( p->handler->get_api()->type == IT_PASSIVE ) - s_trash2.push_back(p->handler); + s_trash2.emplace_back(p->handler); else - s_trash.push_back(p->handler); + s_trash.emplace_back(p->handler); delete p; } @@ -606,7 +606,7 @@ static PHClass* get_class(const char* keyword, FrameworkConfig* fc) p->initialized = true; } PHClass* ppc = new PHClass(p->api); - fc->clist.push_back(ppc); + fc->clist.emplace_back(ppc); return ppc; } return nullptr; diff --git a/src/managers/ips_manager.cc b/src/managers/ips_manager.cc index d90a17dd2..cd7261100 100644 --- a/src/managers/ips_manager.cc +++ b/src/managers/ips_manager.cc @@ -59,7 +59,7 @@ static const Parameter* current_params = nullptr; void IpsManager::add_plugin(const IpsApi* api) { - s_options.push_back(new Option(api)); + s_options.emplace_back(new Option(api)); } void IpsManager::release_plugins() diff --git a/src/managers/module_manager.cc b/src/managers/module_manager.cc index b1612377a..1e25eb6e5 100644 --- a/src/managers/module_manager.cc +++ b/src/managers/module_manager.cc @@ -889,7 +889,7 @@ void ModuleManager::term() void ModuleManager::add_module(Module* m, const BaseApi* b) { ModHook* mh = new ModHook(m, b); - s_modules.push_back(mh); + s_modules.emplace_back(mh); Profiler::register_module(m); @@ -926,7 +926,7 @@ list ModuleManager::get_all_modules() list ret; for ( auto& m : s_modules ) - ret.push_back(m->mod); + ret.emplace_back(m->mod); return ret; } diff --git a/src/managers/mpse_manager.cc b/src/managers/mpse_manager.cc index c2c1d16a7..57a880158 100644 --- a/src/managers/mpse_manager.cc +++ b/src/managers/mpse_manager.cc @@ -45,7 +45,7 @@ static EngineList s_engines; void MpseManager::add_plugin(const MpseApi* api) { - s_engines.push_back(api); + s_engines.emplace_back(api); } void MpseManager::release_plugins() diff --git a/src/managers/script_manager.cc b/src/managers/script_manager.cc index 650ae947f..3bb58aa20 100644 --- a/src/managers/script_manager.cc +++ b/src/managers/script_manager.cc @@ -220,10 +220,10 @@ static void load_script(const char* f) } if ( type == IpsLuaApi::type ) - lua_api.push_back(new IpsLuaApi(name, chunk, ver)); + lua_api.emplace_back(new IpsLuaApi(name, chunk, ver)); else if ( type == LogLuaApi::type ) - lua_api.push_back(new LogLuaApi(name, chunk, ver)); + lua_api.emplace_back(new LogLuaApi(name, chunk, ver)); #ifdef PIGLET else if ( type == "piglet" ) @@ -286,9 +286,9 @@ const BaseApi** ScriptManager::get_plugins() base_api.clear(); for ( auto p : lua_api ) - base_api.push_back(p->get_base()); + base_api.emplace_back(p->get_base()); - base_api.push_back(nullptr); + base_api.emplace_back(nullptr); return (const BaseApi**)&base_api[0]; } diff --git a/src/managers/so_manager.cc b/src/managers/so_manager.cc index bf4c90cf1..b4e96512d 100644 --- a/src/managers/so_manager.cc +++ b/src/managers/so_manager.cc @@ -45,7 +45,7 @@ static list s_rules; void SoManager::add_plugin(const SoApi* api) { - s_rules.push_back(api); + s_rules.emplace_back(api); } void SoManager::release_plugins() diff --git a/src/network_inspectors/appid/app_forecast.cc b/src/network_inspectors/appid/app_forecast.cc index 7fa4fbe8b..8b0ba4f8e 100644 --- a/src/network_inspectors/appid/app_forecast.cc +++ b/src/network_inspectors/appid/app_forecast.cc @@ -66,7 +66,7 @@ void add_af_indicator(AppId indicator, AppId forecast, AppId target) AFElement val; val.forecast = forecast; val.target = target; - if (false == AF_indicators.insert({indicator, val}).second) + if (false == AF_indicators.emplace(indicator, val).second) ErrorMessage("LuaDetectorApi:Failed to add AFElement for appId %d", indicator); } diff --git a/src/network_inspectors/appid/app_forecast.h b/src/network_inspectors/appid/app_forecast.h index 2232f59d4..b9adb04b5 100644 --- a/src/network_inspectors/appid/app_forecast.h +++ b/src/network_inspectors/appid/app_forecast.h @@ -55,8 +55,7 @@ class AFActKey { const snort::SfIp* src = dir ? p->ptrs.ip_api.get_dst() : p->ptrs.ip_api.get_src(); - for (int i = 0; i < 4; i++) - master_key.ip[i] = src->get_ip6_ptr()[i]; + memcpy(master_key.ip, src->get_ip6_ptr(), sizeof(master_key.ip)); master_key.forecast = forecast; } diff --git a/src/network_inspectors/appid/appid_discovery.cc b/src/network_inspectors/appid/appid_discovery.cc index 7fe94da7a..370a2aafe 100644 --- a/src/network_inspectors/appid/appid_discovery.cc +++ b/src/network_inspectors/appid/appid_discovery.cc @@ -115,7 +115,7 @@ void AppIdDiscovery::add_pattern_data(AppIdDetector* detector, SearchTool* st, i uint8_t* const pattern, unsigned size, unsigned nocase) { AppIdPatternMatchNode* pd = new AppIdPatternMatchNode(detector, position, size); - pattern_data.push_back(pd); + pattern_data.emplace_back(pd); st->add((const char*)pattern, size, pd, nocase); } @@ -629,7 +629,7 @@ static void lookup_appid_by_host_port(AppIdSession& asd, Packet* p, IpProtocol p asd.service_disco_state = APPID_DISCO_STATE_FINISHED; asd.client_disco_state = APPID_DISCO_STATE_FINISHED; asd.set_session_flags(APPID_SESSION_SERVICE_DETECTED); -#ifdef ENABLE_THIRD_PARTY_APPID +#ifdef ENABLE_APPID_THIRD_PARTY if (asd.tpsession) asd.tpsession->reset(); #endif @@ -783,7 +783,7 @@ bool AppIdDiscovery::do_pre_discovery(Packet* p, AppIdSession** p_asd, AppIdInsp if ((p->packet_flags & PKT_STREAM_ORDER_BAD) || (p->dsize && !(p->packet_flags & (PKT_STREAM_ORDER_OK | PKT_REBUILT_STREAM)))) { - asd->set_session_flags(APPID_SESSION_OOO); + asd->set_session_flags(APPID_SESSION_OOO | APPID_SESSION_OOO_CHECK_TP); if (appidDebug->is_active()) LogMessage("AppIdDbg %s Packet out-of-order, %s%sflow\n", appidDebug->get_debug_session(), @@ -984,9 +984,6 @@ void AppIdDiscovery::do_post_discovery(Packet* p, AppIdSession& asd, #endif } - asd.set_application_ids(service_id, asd.pick_client_app_id(), payload_id, - asd.pick_misc_app_id(), change_bits); - // Set the field that the Firewall queries to see if we have a search engine if (asd.search_support_type == UNKNOWN_SEARCH_ENGINE && payload_id > APP_ID_NONE) { @@ -1015,22 +1012,39 @@ void AppIdDiscovery::do_post_discovery(Packet* p, AppIdSession& asd, if ( service_id != APP_ID_NONE ) { - if ( payload_id != APP_ID_NONE && payload_id != asd.past_indicator) + if ( payload_id != asd.past_indicator and payload_id != APP_ID_NONE) { asd.past_indicator = payload_id; check_session_for_AF_indicator(p, direction, (AppId)payload_id); } - if (asd.payload.get_id() == APP_ID_NONE && asd.past_forecast != service_id && - asd.past_forecast != APP_ID_UNKNOWN) + if ( asd.past_forecast != service_id and asd.past_forecast != APP_ID_UNKNOWN and + asd.payload.get_id() == APP_ID_NONE ) { asd.past_forecast = check_session_for_AF_forecast(asd, p, direction, (AppId)service_id); - asd.set_application_ids(service_id, asd.pick_client_app_id(), - asd.pick_payload_app_id(), asd.pick_misc_app_id(), change_bits); + if (asd.past_forecast != APP_ID_UNKNOWN) + payload_id = asd.pick_payload_app_id(); } } +#ifdef ENABLE_APPID_THIRD_PARTY + if (asd.get_session_flags(APPID_SESSION_OOO_CHECK_TP) and asd.tpsession and + (asd.scan_flags & SCAN_HOST_PORT_FLAG) and (service_id or payload_id)) + { + asd.clear_session_flags(APPID_SESSION_OOO_CHECK_TP); // don't repeat this block + if (!asd.is_tp_appid_done()) + { + asd.tpsession->set_state(TP_STATE_TERMINATED); + if (appidDebug->is_active()) + LogMessage("AppIdDbg %s Stopped 3rd party detection\n", + appidDebug->get_debug_session()); + } + } +#endif + + asd.set_application_ids(service_id, asd.pick_client_app_id(), payload_id, + asd.pick_misc_app_id(), change_bits); publish_appid_event(change_bits, p->flow); } diff --git a/src/network_inspectors/appid/appid_http_event_handler.cc b/src/network_inspectors/appid/appid_http_event_handler.cc index 5a1d59583..78e20bf31 100644 --- a/src/network_inspectors/appid/appid_http_event_handler.cc +++ b/src/network_inspectors/appid/appid_http_event_handler.cc @@ -128,6 +128,7 @@ void HttpEventHandler::handle(DataEvent& event, Flow* flow) } hsession->process_http_packet(direction, change_bits); + if (asd->service.get_id() == APP_ID_HTTP) { asd->set_application_ids(asd->pick_service_app_id(), asd->pick_client_app_id(), diff --git a/src/network_inspectors/appid/appid_peg_counts.cc b/src/network_inspectors/appid/appid_peg_counts.cc index d7f9fe1b5..a30097dd8 100644 --- a/src/network_inspectors/appid/appid_peg_counts.cc +++ b/src/network_inspectors/appid/appid_peg_counts.cc @@ -58,7 +58,7 @@ void AppIdPegCounts::add_app_peg_info(std::string app_name, AppId app_id) std::replace(app_name.begin(), app_name.end(), ' ', '_'); appid_detector_pegs_idx[app_id] = appid_detectors_info.size(); - appid_detectors_info.push_back({ app_name }); + appid_detectors_info.emplace_back(app_name); } void AppIdPegCounts::sum_stats() diff --git a/src/network_inspectors/appid/appid_session.cc b/src/network_inspectors/appid/appid_session.cc index 72ae4bb73..194c857d1 100644 --- a/src/network_inspectors/appid/appid_session.cc +++ b/src/network_inspectors/appid/appid_session.cc @@ -660,8 +660,8 @@ void AppIdSession::stop_rna_service_inspection(Packet* p, AppidSessionDirection service_disco_state = APPID_DISCO_STATE_FINISHED; - if ( (is_tp_appid_available() or get_session_flags(APPID_SESSION_NO_TPI) ) - and payload.get_id() == APP_ID_NONE ) + if ( payload.get_id() == APP_ID_NONE and + ( is_tp_appid_available() or get_session_flags(APPID_SESSION_NO_TPI) ) ) payload.set_id(APP_ID_UNKNOWN); set_session_flags(APPID_SESSION_SERVICE_DETECTED); @@ -719,7 +719,7 @@ AppId AppIdSession::pick_only_service_app_id() if (service.get_id() > APP_ID_NONE && !deferred) return service.get_id(); - if (is_tp_appid_available() && tp_app_id > APP_ID_NONE) + if (tp_app_id > APP_ID_NONE and is_tp_appid_available()) return tp_app_id; else if (deferred) return service.get_id(); @@ -912,8 +912,7 @@ bool AppIdSession::is_tp_appid_done() const bool AppIdSession::is_tp_processing_done() const { #ifdef ENABLE_APPID_THIRD_PARTY - if ( TPLibHandler::have_tp() && - !get_session_flags(APPID_SESSION_NO_TPI) && + if (!get_session_flags(APPID_SESSION_NO_TPI) && (!is_tp_appid_done() || get_session_flags(APPID_SESSION_APP_REINSPECT | APPID_SESSION_APP_REINSPECT_SSL))) return false; @@ -927,12 +926,10 @@ bool AppIdSession::is_tp_appid_available() const #ifdef ENABLE_APPID_THIRD_PARTY if ( TPLibHandler::have_tp() ) { - unsigned state; + if (!tpsession) + return false; - if (tpsession) - state = tpsession->get_state(); - else - state = TP_STATE_INIT; + unsigned state = tpsession->get_state(); return (state == TP_STATE_CLASSIFIED || state == TP_STATE_TERMINATED || state == TP_STATE_MONITORING); diff --git a/src/network_inspectors/appid/appid_session_api.h b/src/network_inspectors/appid/appid_session_api.h index da8638996..bbc009c6a 100644 --- a/src/network_inspectors/appid/appid_session_api.h +++ b/src/network_inspectors/appid/appid_session_api.h @@ -85,6 +85,7 @@ namespace snort #define APPID_SESSION_NO_TPI (1ULL << 38) #define APPID_SESSION_IGNORE_FLOW (1ULL << 39) #define APPID_SESSION_IGNORE_FLOW_IDED (1ULL << 40) +#define APPID_SESSION_OOO_CHECK_TP (1ULL << 41) #define APPID_SESSION_IGNORE_ID_FLAGS \ (APPID_SESSION_IGNORE_FLOW | \ APPID_SESSION_NOT_A_SERVICE | \ diff --git a/src/network_inspectors/appid/appid_utils/network_set.cc b/src/network_inspectors/appid/appid_utils/network_set.cc index 8a0d3b947..e4234a05b 100644 --- a/src/network_inspectors/appid/appid_utils/network_set.cc +++ b/src/network_inspectors/appid/appid_utils/network_set.cc @@ -110,7 +110,7 @@ int NetworkSetManager::add_network_range_ex(NetworkSet* network_set, uint32_t ra } sflist_add_tail(&network_set->networks, (void*)network); - if (network_set->ids.insert(network->info.id).second == false) + if (network_set->ids.emplace(network->info.id).second == false) { ErrorMessage("NetworkSet: Failed to add id %u\n", network->info.id); return -1; @@ -168,7 +168,7 @@ int NetworkSetManager::add_network_range6(NetworkSet* network_set, NSIPv6Addr* r } sflist_add_tail(&network_set->networks6, (void*)network); - if (network_set->ids6.insert(network->info.id).second == false) + if (network_set->ids6.emplace(network->info.id).second == false) { ErrorMessage("NetworkSet: Failed to add IPv6 id %u\n", network->info.id); return -1; diff --git a/src/network_inspectors/appid/client_plugins/client_discovery.cc b/src/network_inspectors/appid/client_plugins/client_discovery.cc index b63c31a2a..0a8474812 100644 --- a/src/network_inspectors/appid/client_plugins/client_discovery.cc +++ b/src/network_inspectors/appid/client_plugins/client_discovery.cc @@ -366,10 +366,9 @@ bool ClientDiscovery::do_client_discovery(AppIdSession& asd, Packet* p, { if ( p->flow->get_session_flags() & SSNFLAG_MIDSTREAM ) asd.client_disco_state = APPID_DISCO_STATE_FINISHED; - else if ( asd.is_tp_appid_available() - && ( tp_app_id > APP_ID_NONE && tp_app_id < SF_APPID_MAX ) ) + else if ( tp_app_id > APP_ID_NONE and asd.is_tp_appid_available() ) { - //tp has positively identified appId, Dig deeper only if sourcefire + // Third party has positively identified appId; Dig deeper only if our // detector identifies additional information entry = asd.app_info_mgr->get_app_info_entry(tp_app_id); if ( entry && entry->client_detector @@ -393,12 +392,12 @@ bool ClientDiscovery::do_client_discovery(AppIdSession& asd, Packet* p, } //stop rna inspection as soon as tp has classified a valid AppId - if ( ( asd.client_disco_state == APPID_DISCO_STATE_STATEFUL || - asd.client_disco_state == APPID_DISCO_STATE_DIRECT) && - asd.client_disco_state == prevRnaClientState && - !asd.get_session_flags(APPID_SESSION_NO_TPI) && - asd.is_tp_appid_available() && - tp_app_id > APP_ID_NONE && tp_app_id < SF_APPID_MAX) + if ( tp_app_id > APP_ID_NONE and + ( asd.client_disco_state == APPID_DISCO_STATE_STATEFUL or + asd.client_disco_state == APPID_DISCO_STATE_DIRECT ) and + asd.client_disco_state == prevRnaClientState and + !asd.get_session_flags(APPID_SESSION_NO_TPI) and + asd.is_tp_appid_available() ) { entry = asd.app_info_mgr->get_app_info_entry(tp_app_id); if ( !( entry && entry->client_detector diff --git a/src/network_inspectors/appid/detector_plugins/http_url_patterns.cc b/src/network_inspectors/appid/detector_plugins/http_url_patterns.cc index fd9e1db93..e739cb2fe 100644 --- a/src/network_inspectors/appid/detector_plugins/http_url_patterns.cc +++ b/src/network_inspectors/appid/detector_plugins/http_url_patterns.cc @@ -404,15 +404,15 @@ void HttpPatternMatchers::insert_http_pattern(enum httpPatternType pType, switch (pType) { case HTTP_PAYLOAD: - host_payload_patterns.push_back(pattern); + host_payload_patterns.emplace_back(pattern); break; case HTTP_URL: - url_patterns.push_back(pattern); + url_patterns.emplace_back(pattern); break; case HTTP_USER_AGENT: - client_agent_patterns.push_back(pattern); + client_agent_patterns.emplace_back(pattern); break; } } @@ -464,17 +464,17 @@ void HttpPatternMatchers::remove_http_patterns_for_id(AppId id) void HttpPatternMatchers::insert_content_type_pattern(DetectorHTTPPattern& pattern) { - content_type_patterns.push_back(pattern); + content_type_patterns.emplace_back(pattern); } void HttpPatternMatchers::insert_url_pattern(DetectorAppUrlPattern* pattern) { - app_url_patterns.push_back(pattern); + app_url_patterns.emplace_back(pattern); } void HttpPatternMatchers::insert_rtmp_url_pattern(DetectorAppUrlPattern* pattern) { - rtmp_url_patterns.push_back(pattern); + rtmp_url_patterns.emplace_back(pattern); } void HttpPatternMatchers::insert_app_url_pattern(DetectorAppUrlPattern* pattern) @@ -488,7 +488,7 @@ int HttpPatternMatchers::add_mlmp_pattern(tMlmpTree* matcher, DetectorHTTPPatter HostUrlDetectorPattern* detector = new HostUrlDetectorPattern(pattern.pattern, pattern.pattern_size); - host_url_patterns.push_back(detector); + host_url_patterns.emplace_back(detector); detector->payload_id = pattern.payload_id; detector->service_id = pattern.service_id; @@ -516,7 +516,7 @@ int HttpPatternMatchers::add_mlmp_pattern(tMlmpTree* matcher, DetectorAppUrlPatt HostUrlDetectorPattern* detector = new HostUrlDetectorPattern(pattern.patterns.host.pattern, pattern.patterns.host.patternSize); - host_url_patterns.push_back(detector); + host_url_patterns.emplace_back(detector); if (pattern.patterns.path.pattern) { @@ -589,7 +589,8 @@ static int chp_pattern_match(void* id, void*, int match_end_pos, void* data, voi ChpMatchDescriptor* cmd = (ChpMatchDescriptor*)data; CHPAction* target = (CHPAction*)id; - cmd->chp_matches[cmd->cur_ptype].push_back({ target, match_end_pos - target->psize }); + cmd->chp_matches[cmd->cur_ptype].emplace_back( MatchedCHPAction{ target, + match_end_pos - target->psize } ); return 0; } @@ -602,8 +603,8 @@ static inline void chp_add_candidate_to_tally(CHPMatchTally& match_tally, CHPApp return; } - match_tally.push_back({ chpapp, chpapp->key_pattern_length_sum, - chpapp->key_pattern_count - 1 }); + match_tally.emplace_back( CHPMatchCandidate{ chpapp, chpapp->key_pattern_length_sum, + chpapp->key_pattern_count - 1 } ); } // In addition to creating the linked list of matching actions this function will diff --git a/src/network_inspectors/appid/detector_plugins/test/http_url_patterns_test.cc b/src/network_inspectors/appid/detector_plugins/test/http_url_patterns_test.cc index df74118e6..e9f1f506a 100644 --- a/src/network_inspectors/appid/detector_plugins/test/http_url_patterns_test.cc +++ b/src/network_inspectors/appid/detector_plugins/test/http_url_patterns_test.cc @@ -125,7 +125,7 @@ TEST(http_url_patterns_tests, chp_add_candidate_to_tally) chc.chpapp = &chpapp; chc.key_pattern_countdown = 1; chc.key_pattern_length_sum = 0; - match_tally.push_back(chc); + match_tally.emplace_back(chc); chp_add_candidate_to_tally(match_tally, &chpapp); CHECK_EQUAL(match_tally[0].key_pattern_countdown, 0); } @@ -262,7 +262,7 @@ TEST(http_url_patterns_tests, scan_chp_defer) chpa.appIdInstance = APP_ID_NONE; chpa.action = DEFER_TO_SIMPLE_DETECT; mchp.mpattern = &chpa; - cmd.chp_matches[RSP_BODY_FID].push_back(mchp); + cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp); cmd.cur_ptype = RSP_BODY_FID; mod_config.safe_search_enabled = false; CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const @@ -278,7 +278,7 @@ TEST(http_url_patterns_tests, scan_chp_alt_appid) chpa.appIdInstance = APP_ID_NONE; chpa.action = ALTERNATE_APPID; mchp.mpattern = &chpa; - cmd.chp_matches[RSP_BODY_FID].push_back(mchp); + cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp); cmd.cur_ptype = RSP_BODY_FID; mod_config.safe_search_enabled = false; CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const @@ -298,7 +298,7 @@ TEST(http_url_patterns_tests, scan_chp_extract_user) mchp.start_match_pos = 0; cmd.cur_ptype = RSP_BODY_FID; mod_config.safe_search_enabled = false; - cmd.chp_matches[RSP_BODY_FID].push_back(mchp); + cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp); cmd.buffer[RSP_BODY_FID] = (const char*)"userid\n\rpassword"; cmd.length[RSP_BODY_FID] = strlen(cmd.buffer[RSP_BODY_FID]); CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const @@ -320,7 +320,7 @@ TEST(http_url_patterns_tests, scan_chp_rewrite_field) chpa.psize = 1; mchp.mpattern = &chpa; mchp.start_match_pos = 0; - cmd.chp_matches[RSP_BODY_FID].push_back(mchp); + cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp); cmd.buffer[RSP_BODY_FID] = my_chp_data; cmd.length[RSP_BODY_FID] = strlen(cmd.buffer[RSP_BODY_FID]); CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const @@ -342,7 +342,7 @@ TEST(http_url_patterns_tests, scan_chp_insert_without_action) chpa.psize = 1; mchp.mpattern = &chpa; mchp.start_match_pos = 0; - cmd.chp_matches[RSP_BODY_FID].push_back(mchp); + cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp); cmd.buffer[RSP_BODY_FID] = my_chp_data; cmd.length[RSP_BODY_FID] = strlen(cmd.buffer[RSP_BODY_FID]); CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const @@ -364,7 +364,7 @@ TEST(http_url_patterns_tests, scan_chp_insert_with_action) chpa.psize = 1; mchp.mpattern = &chpa; mchp.start_match_pos = 0; - cmd.chp_matches[RSP_BODY_FID].push_back(mchp); + cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp); cmd.buffer[RSP_BODY_FID] = my_chp_data; cmd.length[RSP_BODY_FID] = strlen(cmd.buffer[RSP_BODY_FID]); CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const @@ -382,7 +382,7 @@ TEST(http_url_patterns_tests, scan_chp_hold_and_default) chpa.appIdInstance = APP_ID_NONE; chpa.action = HOLD_FLOW; mchp.mpattern = &chpa; - cmd.chp_matches[RSP_BODY_FID].push_back(mchp); + cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp); cmd.cur_ptype = RSP_BODY_FID; mod_config.safe_search_enabled = false; chpa.psize = 1; @@ -399,7 +399,7 @@ TEST(http_url_patterns_tests, scan_chp_hold_and_default) chpa.appIdInstance = APP_ID_NONE; chpa.action = FUTURE_APPID_SESSION_SIP; mchp.mpattern = &chpa; - cmd.chp_matches[RSP_BODY_FID].push_back(mchp); + cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp); CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const AppIdModuleConfig*)&mod_config) == APP_ID_NONE); CHECK_EQUAL(true, test_find_all_done); diff --git a/src/network_inspectors/appid/ips_appid_option.cc b/src/network_inspectors/appid/ips_appid_option.cc index 6687d1d04..9caa0d174 100644 --- a/src/network_inspectors/appid/ips_appid_option.cc +++ b/src/network_inspectors/appid/ips_appid_option.cc @@ -200,7 +200,7 @@ bool AppIdOptionModule::set(const char*, Value& v, SnortConfig*) char *lcase_tok = AppInfoManager::strdup_to_lower(tok.c_str()); string app_name(lcase_tok); - appid_table.insert(app_name); + appid_table.emplace(app_name); snort_free(lcase_tok); } diff --git a/src/network_inspectors/appid/length_app_cache.cc b/src/network_inspectors/appid/length_app_cache.cc index 8a759dd8e..57f9cedc0 100644 --- a/src/network_inspectors/appid/length_app_cache.cc +++ b/src/network_inspectors/appid/length_app_cache.cc @@ -58,6 +58,6 @@ AppId find_length_app_cache(const LengthKey& key) bool add_length_app_cache(const LengthKey& key, AppId val) { - return (length_cache->insert(std::make_pair(key, val))).second == true; + return (length_cache->emplace(key, val)).second == true; } diff --git a/src/network_inspectors/appid/lua_detector_api.cc b/src/network_inspectors/appid/lua_detector_api.cc index 40817036c..540eb2a45 100644 --- a/src/network_inspectors/appid/lua_detector_api.cc +++ b/src/network_inspectors/appid/lua_detector_api.cc @@ -437,13 +437,13 @@ static int service_get_service_name(lua_State* L) } /**Is this a customer defined detector. Lua detectors can call this function to verify if the detector - * was created by Sourcefire or not. + * was created by odp or not. * Callback could be used either at init or during packet processing * * @param Lua_State* - Lua state variable. * @param detector/stack - detector object * @return int - Number of elements on stack, which is always 1. - * @return integer/stack - -1 if failed, 0 if sourcefire created, 1 otherwise. + * @return integer/stack - -1 if failed, 0 if odp created, 1 otherwise. */ static int service_is_custom_detector(lua_State* L) { @@ -1208,7 +1208,7 @@ static int create_chp_application(AppId appIdInstance, unsigned app_type_flags, new_app->app_type_flags = app_type_flags; new_app->num_matches = num_matches; - if (CHP_glossary->insert(std::make_pair(appIdInstance, new_app)).second == false) + if (CHP_glossary->emplace(appIdInstance, new_app).second == false) { ErrorMessage("LuaDetectorApi:Failed to add CHP for appId %d, instance %d", CHP_APPIDINSTANCE_TO_ID(appIdInstance), CHP_APPIDINSTANCE_TO_INSTANCE(appIdInstance)); diff --git a/src/network_inspectors/appid/service_plugins/service_discovery.cc b/src/network_inspectors/appid/service_plugins/service_discovery.cc index ae86d265f..264fd87af 100644 --- a/src/network_inspectors/appid/service_plugins/service_discovery.cc +++ b/src/network_inspectors/appid/service_plugins/service_discovery.cc @@ -174,12 +174,12 @@ void ServiceDiscovery::initialize() for ( auto kv : tcp_detectors ) { kv.second->initialize(); - service_detector_list.push_back(kv.second); + service_detector_list.emplace_back(kv.second); } for ( auto kv : udp_detectors ) { kv.second->initialize(); - service_detector_list.push_back(kv.second); + service_detector_list.emplace_back(kv.second); } #ifdef APPID_DEEP_PERF_PROFILING @@ -204,14 +204,14 @@ int ServiceDiscovery::add_service_port(AppIdDetector* detector, const ServiceDet if (pp.port == 21 && !ftp_service) ftp_service = service; - tcp_services[ pp.port ].push_back(service); + tcp_services[ pp.port ].emplace_back(service); } else if (pp.proto == IpProtocol::UDP) { if (!pp.reversed_validation) - udp_services[ pp.port ].push_back(service); + udp_services[ pp.port ].emplace_back(service); else - udp_reversed_services[ pp.port ].push_back(service); + udp_reversed_services[ pp.port ].emplace_back(service); } else { @@ -289,7 +289,7 @@ void ServiceDiscovery::match_by_pattern(AppIdSession& asd, const Packet* pkt, Ip std::vector smOrderedList; for (ServiceMatch* sm = match_list; sm; sm = sm->next) - smOrderedList.push_back(sm); + smOrderedList.emplace_back(sm); if (!smOrderedList.empty() ) { @@ -299,7 +299,7 @@ void ServiceDiscovery::match_by_pattern(AppIdSession& asd, const Packet* pkt, Ip if ( std::find(asd.service_candidates.begin(), asd.service_candidates.end(), sm->service) == asd.service_candidates.end() ) { - asd.service_candidates.push_back(sm->service); + asd.service_candidates.emplace_back(sm->service); } snort_free(sm); } @@ -396,7 +396,7 @@ void ServiceDiscovery::get_next_service(const Packet* p, const AppidSessionDirec proto, p->ptrs.sp, asd.is_decrypted()); std::unordered_map>::iterator urs_iterator; if ( rsds && rsds->get_service() ) - asd.service_candidates.push_back(rsds->get_service()); + asd.service_candidates.emplace_back(rsds->get_service()); else if ( ( urs_iterator = udp_reversed_services.find(p->ptrs.sp) ) != udp_reversed_services.end() and !urs_iterator->second.empty() ) { @@ -623,46 +623,40 @@ bool ServiceDiscovery::do_service_discovery(AppIdSession& asd, Packet* p, asd.set_session_flags(APPID_SESSION_SERVICE_DETECTED); asd.service_disco_state = APPID_DISCO_STATE_FINISHED; - if ( (asd.is_tp_appid_available() || - asd.get_session_flags(APPID_SESSION_NO_TPI)) - && asd.payload.get_id() == APP_ID_NONE ) + if (asd.payload.get_id() == APP_ID_NONE and + (asd.is_tp_appid_available() or asd.get_session_flags(APPID_SESSION_NO_TPI))) asd.payload.set_id(APP_ID_UNKNOWN); } } - else if (asd.is_tp_appid_available()) + else if (tp_app_id > APP_ID_NONE and asd.is_tp_appid_available()) { - if (tp_app_id > APP_ID_NONE) + // Third party has positively identified appId; Dig deeper only if our + // detector identifies additional information or flow is UDP reversed. + AppInfoTableEntry* entry = asd.app_info_mgr->get_app_info_entry(tp_app_id); + if ( entry && entry->service_detector && + ( ( entry->flags & APPINFO_FLAG_SERVICE_ADDITIONAL ) || + ( ( entry->flags & APPINFO_FLAG_SERVICE_UDP_REVERSED ) && + asd.protocol == IpProtocol::UDP && + asd.get_session_flags(APPID_SESSION_INITIATOR_MONITORED | + APPID_SESSION_RESPONDER_MONITORED) ) ) ) { - //tp has positively identified appId, Dig deeper only if sourcefire - // detector identifies additional information or flow is UDP reversed. - AppInfoTableEntry* entry = asd.app_info_mgr->get_app_info_entry(tp_app_id); - if ( entry && entry->service_detector && - ( ( entry->flags & APPINFO_FLAG_SERVICE_ADDITIONAL ) || - ( ( entry->flags & APPINFO_FLAG_SERVICE_UDP_REVERSED ) && - asd.protocol == IpProtocol::UDP && - asd.get_session_flags(APPID_SESSION_INITIATOR_MONITORED | - APPID_SESSION_RESPONDER_MONITORED) ) ) ) - { - asd.free_flow_data_by_mask(APPID_SESSION_DATA_SERVICE_MODSTATE_BIT); - asd.service_detector = entry->service_detector; - asd.service_disco_state = APPID_DISCO_STATE_STATEFUL; - } - else - asd.stop_rna_service_inspection(p, direction); + asd.free_flow_data_by_mask(APPID_SESSION_DATA_SERVICE_MODSTATE_BIT); + asd.service_detector = entry->service_detector; + asd.service_disco_state = APPID_DISCO_STATE_STATEFUL; } else - asd.service_disco_state = APPID_DISCO_STATE_STATEFUL; + asd.stop_rna_service_inspection(p, direction); } else asd.service_disco_state = APPID_DISCO_STATE_STATEFUL; } //stop rna inspection as soon as tp has classified a valid AppId later in the session - if ( asd.service_disco_state == APPID_DISCO_STATE_STATEFUL && - prevRnaServiceState == APPID_DISCO_STATE_STATEFUL && - !asd.get_session_flags(APPID_SESSION_NO_TPI) && - asd.is_tp_appid_available() && - tp_app_id > APP_ID_NONE && tp_app_id < SF_APPID_MAX) + if ( tp_app_id > APP_ID_NONE and + asd.service_disco_state == APPID_DISCO_STATE_STATEFUL and + prevRnaServiceState == APPID_DISCO_STATE_STATEFUL and + !asd.get_session_flags(APPID_SESSION_NO_TPI) and + asd.is_tp_appid_available() ) { AppInfoTableEntry* entry = asd.app_info_mgr->get_app_info_entry(tp_app_id); if ( entry && entry->service_detector && @@ -714,9 +708,9 @@ bool ServiceDiscovery::do_service_discovery(AppIdSession& asd, Packet* p, APPID_SESSION_CONTINUE) == APPID_SESSION_SERVICE_DETECTED) { asd.service_disco_state = APPID_DISCO_STATE_FINISHED; - if ( (asd.is_tp_appid_available() || - asd.get_session_flags(APPID_SESSION_NO_TPI)) && - asd.payload.get_id() == APP_ID_NONE ) + if ( asd.payload.get_id() == APP_ID_NONE and + ( asd.is_tp_appid_available() or + asd.get_session_flags(APPID_SESSION_NO_TPI) ) ) { asd.payload.set_id(APP_ID_UNKNOWN); } diff --git a/src/network_inspectors/appid/test/tp_mock.cc b/src/network_inspectors/appid/test/tp_mock.cc index 7e13eaa31..41aee4ba3 100644 --- a/src/network_inspectors/appid/test/tp_mock.cc +++ b/src/network_inspectors/appid/test/tp_mock.cc @@ -78,8 +78,8 @@ class ThirdPartyAppIDSessionImpl : public ThirdPartyAppIDSession public: bool reset() { return 1; } - bool process(const snort::Packet&, AppidSessionDirection, vector&, - ThirdPartyAppIDAttributeData&) { return 1; } + TPState process(const snort::Packet&, AppidSessionDirection, vector&, + ThirdPartyAppIDAttributeData&) { return TP_STATE_INIT; } int disable_flags(uint32_t) { return 0; } TPState get_state() { return state; } diff --git a/src/network_inspectors/appid/tp_appid_module_api.h b/src/network_inspectors/appid/tp_appid_module_api.h index 8b7eb41fb..bf3c70d31 100644 --- a/src/network_inspectors/appid/tp_appid_module_api.h +++ b/src/network_inspectors/appid/tp_appid_module_api.h @@ -50,8 +50,8 @@ public: void getXffFields() { xff_fields.clear(); - xff_fields.push_back(HTTP_XFF_FIELD_X_FORWARDED_FOR); - xff_fields.push_back(HTTP_XFF_FIELD_TRUE_CLIENT_IP); + xff_fields.emplace_back(HTTP_XFF_FIELD_X_FORWARDED_FOR); + xff_fields.emplace_back(HTTP_XFF_FIELD_TRUE_CLIENT_IP); } }; diff --git a/src/network_inspectors/appid/tp_appid_session_api.h b/src/network_inspectors/appid/tp_appid_session_api.h index 9b1e3cc14..95bc72cf2 100644 --- a/src/network_inspectors/appid/tp_appid_session_api.h +++ b/src/network_inspectors/appid/tp_appid_session_api.h @@ -43,7 +43,7 @@ public: virtual ~ThirdPartyAppIDSession() { } virtual bool reset() = 0; // just reset state - virtual bool process(const snort::Packet&, + virtual TPState process(const snort::Packet&, AppidSessionDirection direction, std::vector& proto_list, ThirdPartyAppIDAttributeData& attribute_data) = 0; diff --git a/src/network_inspectors/appid/tp_appid_utils.cc b/src/network_inspectors/appid/tp_appid_utils.cc index 24dbda0e0..5846eb682 100644 --- a/src/network_inspectors/appid/tp_appid_utils.cc +++ b/src/network_inspectors/appid/tp_appid_utils.cc @@ -80,22 +80,18 @@ void tp_appid_profiler_init() } #endif -// std::vector does not have a convenient find() function. -// There is a generic std::find() in , but this might be faster. -template -static bool contains(const vector& vec, const ValType_t& val) +static inline bool contains(const vector& vec, const AppId val) { - const Type_t* v=&vec[0], * vend=v+vec.size(); - while (vdsize && !asd.get_session_flags(APPID_SESSION_NO_TPI) && - asd.get_session_flags(APPID_SESSION_HTTP_SESSION) && asd.is_tp_appid_done(); + return asd.get_session_flags(APPID_SESSION_HTTP_SESSION) and + !asd.get_session_flags(APPID_SESSION_NO_TPI) and asd.is_tp_appid_done() and p->dsize; } static inline int check_ssl_appid_for_reinspect(AppId app_id) @@ -701,7 +697,7 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol, FatalError("Could not allocate asd.tpsession data"); } // debug output of packet content - asd.tpsession->process(*p, direction, + TPState current_tp_state = asd.tpsession->process(*p, direction, tp_proto_list, tp_attribute_data); tp_app_id = asd.tpsession->get_appid(tp_confidence); @@ -713,8 +709,13 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol, if (asd.get_session_flags(APPID_SESSION_APP_REINSPECT_SSL)) asd.clear_session_flags(APPID_SESSION_APP_REINSPECT_SSL); - if (asd.tpsession->get_state() == TP_STATE_CLASSIFIED) + if (current_tp_state == TP_STATE_CLASSIFIED) asd.clear_session_flags(APPID_SESSION_APP_REINSPECT); + else if (current_tp_state == TP_STATE_MONITORING) + { + asd.tpsession->disable_flags(TP_SESSION_FLAG_ATTRIBUTE | + TP_SESSION_FLAG_TUNNELING | TP_SESSION_FLAG_FUTUREFLOW); + } if (appidDebug->is_active()) { @@ -738,7 +739,7 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol, } // if the third-party appId must be treated as a client, do it now unsigned app_info_flags = asd.app_info_mgr->get_app_info_flags(tp_app_id, - APPINFO_FLAG_TP_CLIENT | APPINFO_FLAG_IGNORE); + APPINFO_FLAG_TP_CLIENT | APPINFO_FLAG_IGNORE | APPINFO_FLAG_SSL_SQUELCH); if ( app_info_flags & APPINFO_FLAG_TP_CLIENT ) asd.client.set_id(tp_app_id); @@ -746,7 +747,8 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol, process_third_party_results(asd, tp_confidence, tp_proto_list, tp_attribute_data, change_bits); - if (asd.get_session_flags(APPID_SESSION_SSL_SESSION) && + if ((app_info_flags & APPINFO_FLAG_SSL_SQUELCH) and + asd.get_session_flags(APPID_SESSION_SSL_SESSION) and !(asd.scan_flags & SCAN_SSL_HOST_FLAG)) { setSSLSquelch(p, 1, tp_app_id, asd.get_inspector()); @@ -765,26 +767,19 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol, else tp_app_id = APP_ID_NONE; } + if (tp_app_id == APP_ID_SSL && + (Stream::get_snort_protocol_id(p->flow) == snortId_for_ftp_data)) + { + // If we see SSL on an FTP data channel set tpAppId back + // to APP_ID_NONE so the FTP preprocessor picks up the flow. + tp_app_id = APP_ID_NONE; + } } else { tp_app_id = APP_ID_NONE; } - if (asd.tpsession and asd.tpsession->get_state() == TP_STATE_MONITORING) - { - asd.tpsession->disable_flags(TP_SESSION_FLAG_ATTRIBUTE | - TP_SESSION_FLAG_TUNNELING | TP_SESSION_FLAG_FUTUREFLOW); - } - - if (tp_app_id == APP_ID_SSL && - (Stream::get_snort_protocol_id(p->flow) == snortId_for_ftp_data)) - { - // If we see SSL on an FTP data channel set tpAppId back - // to APP_ID_NONE so the FTP preprocessor picks up the flow. - tp_app_id = APP_ID_NONE; - } - if ( tp_app_id > APP_ID_NONE && (!asd.get_session_flags(APPID_SESSION_APP_REINSPECT) || asd.payload.get_id() > APP_ID_NONE) ) @@ -815,14 +810,14 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol, if (asd.payload.get_id() == APP_ID_HTTP_SSL_TUNNEL) snort_app_id = APP_ID_SSL; - if (asd.is_tp_appid_available() && asd.get_tp_app_id() == - APP_ID_HTTP - && !asd.get_session_flags(APPID_SESSION_APP_REINSPECT)) + if (asd.get_tp_app_id() == APP_ID_HTTP and + !asd.get_session_flags(APPID_SESSION_APP_REINSPECT) and + asd.is_tp_appid_available()) { asd.client_disco_state = APPID_DISCO_STATE_FINISHED; + asd.service_disco_state = APPID_DISCO_STATE_FINISHED; asd.set_session_flags(APPID_SESSION_CLIENT_DETECTED | APPID_SESSION_SERVICE_DETECTED); - asd.client_disco_state = APPID_DISCO_STATE_FINISHED; asd.clear_session_flags(APPID_SESSION_CONTINUE); if (direction == APP_ID_FROM_INITIATOR) { diff --git a/src/network_inspectors/arp_spoof/arp_module.cc b/src/network_inspectors/arp_spoof/arp_module.cc index bf5b27352..481a43498 100644 --- a/src/network_inspectors/arp_spoof/arp_module.cc +++ b/src/network_inspectors/arp_spoof/arp_module.cc @@ -127,7 +127,7 @@ bool ArpSpoofModule::begin(const char*, int, SnortConfig*) bool ArpSpoofModule::end(const char*, int idx, SnortConfig*) { if ( idx ) - config->ipmel.push_back(host); + config->ipmel.emplace_back(host); else config->check_overwrite = !config->ipmel.empty(); diff --git a/src/network_inspectors/binder/bind_module.cc b/src/network_inspectors/binder/bind_module.cc index 3e174c7b3..115fff16e 100644 --- a/src/network_inspectors/binder/bind_module.cc +++ b/src/network_inspectors/binder/bind_module.cc @@ -344,7 +344,7 @@ bool BinderModule::end(const char* fqn, int idx, SnortConfig* sc) if ( work->use.name.empty() ) work->use.name = work->use.type; - bindings.push_back(work); + bindings.emplace_back(work); work = nullptr; } return true; @@ -356,7 +356,7 @@ void BinderModule::add(const char* svc, const char* type) b->when.svc = svc; b->use.type = type; b->use.name = type; - bindings.push_back(b); + bindings.emplace_back(b); } void BinderModule::add(unsigned proto, const char* type) @@ -365,7 +365,7 @@ void BinderModule::add(unsigned proto, const char* type) b->when.protos = proto; b->use.type = type; b->use.name = type; - bindings.push_back(b); + bindings.emplace_back(b); } vector& BinderModule::get_data() diff --git a/src/network_inspectors/binder/binder.cc b/src/network_inspectors/binder/binder.cc index 8d0b603e3..d57e2936c 100644 --- a/src/network_inspectors/binder/binder.cc +++ b/src/network_inspectors/binder/binder.cc @@ -578,7 +578,7 @@ public: void eval(Packet*) override { } void add(Binding* b) - { bindings.push_back(b); } + { bindings.emplace_back(b); } void handle_flow_setup(Packet*); void handle_flow_service_change(Flow*); diff --git a/src/network_inspectors/normalize/norm_module.cc b/src/network_inspectors/normalize/norm_module.cc index 4e923e241..e6f7f67e1 100644 --- a/src/network_inspectors/normalize/norm_module.cc +++ b/src/network_inspectors/normalize/norm_module.cc @@ -388,16 +388,16 @@ void NormalizeModule::add_test_peg(const PegInfo& norm) const std::string* test_name = new std::string("test_"); test_name->append(norm.name); - test_text.push_back(test_name); + test_text.emplace_back(test_name); test.name = test_text.back()->c_str(); std::string* test_info = new std::string("test "); test_info->append(norm.help); - test_text.push_back(test_info); + test_text.emplace_back(test_info); test.help = test_text.back()->c_str(); test.type = norm.type; - test_pegs.push_back(test); + test_pegs.emplace_back(test); } const PegInfo* NormalizeModule::get_pegs() const @@ -411,7 +411,7 @@ const PegInfo* NormalizeModule::get_pegs() const while ( p->name ) { add_test_peg(*p); - test_pegs.push_back(*p); + test_pegs.emplace_back(*p); p++; } @@ -421,11 +421,11 @@ const PegInfo* NormalizeModule::get_pegs() const while ( p->name ) { add_test_peg(*p); - test_pegs.push_back(*p); + test_pegs.emplace_back(*p); p++; } - test_pegs.push_back(*p); + test_pegs.emplace_back(*p); return &test_pegs[0]; } diff --git a/src/network_inspectors/packet_capture/packet_capture.cc b/src/network_inspectors/packet_capture/packet_capture.cc index ac7c644fa..31ca03a9c 100644 --- a/src/network_inspectors/packet_capture/packet_capture.cc +++ b/src/network_inspectors/packet_capture/packet_capture.cc @@ -307,7 +307,7 @@ public: protected: void write_packet(Packet* p) override { - pcap.push_back(p); + pcap.emplace_back(p); write_packet_called = true; } diff --git a/src/network_inspectors/packet_tracer/packet_tracer.cc b/src/network_inspectors/packet_tracer/packet_tracer.cc index af5a3b5cd..74248b76a 100644 --- a/src/network_inspectors/packet_tracer/packet_tracer.cc +++ b/src/network_inspectors/packet_tracer/packet_tracer.cc @@ -198,7 +198,7 @@ PacketTracer::TracerMute PacketTracer::get_mute() if ( s_pkt_trace == nullptr ) return global_mutes.val - 1; - s_pkt_trace->mutes.push_back(false); + s_pkt_trace->mutes.emplace_back(false); return s_pkt_trace->mutes.size() - 1; } diff --git a/src/network_inspectors/perf_monitor/base_tracker.cc b/src/network_inspectors/perf_monitor/base_tracker.cc index fa43edc7c..f04471287 100644 --- a/src/network_inspectors/perf_monitor/base_tracker.cc +++ b/src/network_inspectors/perf_monitor/base_tracker.cc @@ -120,7 +120,7 @@ TEST_CASE("module stats", "[BaseTracker]") ModuleConfig mod_cfg; mod_cfg.ptr = &mod; mod_cfg.pegs = {0, 2, 4}; - config.modules.push_back(mod_cfg); + config.modules.emplace_back(mod_cfg); MockBaseTracker tracker(&config); MockFormatter *formatter = (MockFormatter*)tracker.output; diff --git a/src/network_inspectors/perf_monitor/csv_formatter.cc b/src/network_inspectors/perf_monitor/csv_formatter.cc index 0072cb573..0bfb9d339 100644 --- a/src/network_inspectors/perf_monitor/csv_formatter.cc +++ b/src/network_inspectors/perf_monitor/csv_formatter.cc @@ -131,9 +131,9 @@ TEST_CASE("csv output", "[CSVFormatter]") f.finalize_fields(); f.init_output(fh); - kvp.push_back(50); - kvp.push_back(60); - kvp.push_back(70); + kvp.emplace_back(50); + kvp.emplace_back(60); + kvp.emplace_back(70); f.write(fh, (time_t)1234567890); diff --git a/src/network_inspectors/perf_monitor/fbs_formatter.cc b/src/network_inspectors/perf_monitor/fbs_formatter.cc index 6da259918..b0defc60d 100644 --- a/src/network_inspectors/perf_monitor/fbs_formatter.cc +++ b/src/network_inspectors/perf_monitor/fbs_formatter.cc @@ -52,8 +52,8 @@ static string lowercase(string s) void FbsFormatter::register_field(const std::string& name, PegCount* value) { - non_offset_names.push_back(name); - non_offset_values.push_back(value); + non_offset_names.emplace_back(name); + non_offset_values.emplace_back(value); } void FbsFormatter::register_field(const std::string& name, const char* value) @@ -61,9 +61,9 @@ void FbsFormatter::register_field(const std::string& name, const char* value) FormatterValue fv; fv.s = value; - offset_names.push_back(name); - offset_types.push_back(FT_STRING); - offset_values.push_back(fv); + offset_names.emplace_back(name); + offset_types.emplace_back(FT_STRING); + offset_values.emplace_back(fv); } void FbsFormatter::register_field(const std::string& name, std::vector* value) @@ -71,9 +71,9 @@ void FbsFormatter::register_field(const std::string& name, std::vector FormatterValue fv; fv.ipc = value; - offset_names.push_back(name); - offset_types.push_back(FT_IDX_PEG_COUNT); - offset_values.push_back(fv); + offset_names.emplace_back(name); + offset_types.emplace_back(FT_IDX_PEG_COUNT); + offset_values.emplace_back(fv); } //Apply order to fields so that leaf nodes are created first in one pass @@ -159,26 +159,26 @@ void FbsFormatter::finalize_fields() auto reflection_schema = reflection::GetSchema(schema_builder.GetBufferPointer()); auto root_fields = reflection_schema->root_table()->fields(); - vtable_offsets.push_back(vector()); + vtable_offsets.emplace_back(vector()); for( unsigned i = 0; i < section_names.size(); i++ ) { - vtable_offsets.push_back(vector()); + vtable_offsets.emplace_back(vector()); auto module_field = root_fields->LookupByKey(lowercase(section_names[i]).c_str()); - vtable_offsets[0].push_back(module_field->offset()); + vtable_offsets[0].emplace_back(module_field->offset()); auto module_table = reflection_schema->objects()->Get(module_field->type()->index()); for( unsigned j = 0; j < field_names[i].size(); j++ ) { auto field = module_table->fields()->LookupByKey(lowercase(field_names[i][j]).c_str()); - vtable_offsets[i + 1].push_back(field->offset()); + vtable_offsets[i + 1].emplace_back(field->offset()); if( types[i][j] == FT_IDX_PEG_COUNT ) { auto field_name = lowercase(field_names[i][j]) + "_map"; field = module_table->fields()->LookupByKey(field_name.c_str()); - vtable_offsets[i + 1].push_back(field->offset()); + vtable_offsets[i + 1].emplace_back(field->offset()); } } } @@ -241,8 +241,8 @@ void FbsFormatter::write(FILE* fh, time_t timestamp) if( ipc[k] ) { nz_found = true; - map.push_back(k); - mapped_ipc.push_back(ipc[k]); + map.emplace_back(k); + mapped_ipc.emplace_back(ipc[k]); if( map.size() > nz_break_even ) break; diff --git a/src/network_inspectors/perf_monitor/json_formatter.cc b/src/network_inspectors/perf_monitor/json_formatter.cc index 224cb6171..755e5166d 100644 --- a/src/network_inspectors/perf_monitor/json_formatter.cc +++ b/src/network_inspectors/perf_monitor/json_formatter.cc @@ -164,9 +164,9 @@ TEST_CASE("json output", "[JSONFormatter]") f.finalize_fields(); f.init_output(fh); - kvp.push_back(50); - kvp.push_back(0); - kvp.push_back(70); + kvp.emplace_back(50); + kvp.emplace_back(0); + kvp.emplace_back(70); f.write(fh, (time_t)1234567890); diff --git a/src/network_inspectors/perf_monitor/perf_formatter.cc b/src/network_inspectors/perf_monitor/perf_formatter.cc index 0f5a43c78..a1d0445d9 100644 --- a/src/network_inspectors/perf_monitor/perf_formatter.cc +++ b/src/network_inspectors/perf_monitor/perf_formatter.cc @@ -28,11 +28,11 @@ using namespace std; void PerfFormatter::register_section(const string& name) { - types.push_back(vector()); - values.push_back(vector()); + types.emplace_back(vector()); + values.emplace_back(vector()); - section_names.push_back(name); - field_names.push_back(vector()); + section_names.emplace_back(name); + field_names.emplace_back(vector()); last_section++; } @@ -42,10 +42,10 @@ void PerfFormatter::register_field(const string& name, PegCount* val) FormatterValue fv; fv.pc = val; - values[last_section].push_back(fv); - types[last_section].push_back(FT_PEG_COUNT); + values[last_section].emplace_back(fv); + types[last_section].emplace_back(FT_PEG_COUNT); - field_names[last_section].push_back(name); + field_names[last_section].emplace_back(name); } void PerfFormatter::register_field(const string& name, const char* val) @@ -53,10 +53,10 @@ void PerfFormatter::register_field(const string& name, const char* val) FormatterValue fv; fv.s = val; - values[last_section].push_back(fv); - types[last_section].push_back(FT_STRING); + values[last_section].emplace_back(fv); + types[last_section].emplace_back(FT_STRING); - field_names[last_section].push_back(name); + field_names[last_section].emplace_back(name); } void PerfFormatter::register_field(const string& name, vector* val) @@ -64,9 +64,9 @@ void PerfFormatter::register_field(const string& name, vector* val) FormatterValue fv; fv.ipc = val; - values[last_section].push_back(fv); - types[last_section].push_back(FT_IDX_PEG_COUNT); + values[last_section].emplace_back(fv); + types[last_section].emplace_back(FT_IDX_PEG_COUNT); - field_names[last_section].push_back(name); + field_names[last_section].emplace_back(name); } diff --git a/src/network_inspectors/perf_monitor/perf_formatter.h b/src/network_inspectors/perf_monitor/perf_formatter.h index 54c560ef8..1f8453361 100644 --- a/src/network_inspectors/perf_monitor/perf_formatter.h +++ b/src/network_inspectors/perf_monitor/perf_formatter.h @@ -115,9 +115,7 @@ public: { for( unsigned i = 0; i < values.size(); i++ ) for( unsigned j = 0; j < values[i].size(); j++ ) - public_values.insert(std::pair( - section_names[i] + "." + field_names[i][j], - values[i][j])); + public_values.emplace(section_names[i] + "." + field_names[i][j], values[i][j]); } }; #endif diff --git a/src/network_inspectors/perf_monitor/perf_module.cc b/src/network_inspectors/perf_monitor/perf_module.cc index 710c6afb9..74f9915b0 100644 --- a/src/network_inspectors/perf_monitor/perf_module.cc +++ b/src/network_inspectors/perf_monitor/perf_module.cc @@ -196,7 +196,7 @@ bool PerfMonModule::begin(const char* fqn, int idx, SnortConfig*) config = new PerfConfig; } if ( idx != 0 && strcmp(fqn, "perf_monitor.modules") == 0 ) - config->modules.push_back(ModuleConfig()); + config->modules.emplace_back(ModuleConfig()); return true; } @@ -258,7 +258,7 @@ bool ModuleConfig::resolve() if ( peg_names.empty() ) { for ( unsigned i = 0; peg_info[i].name != nullptr; i++ ) - pegs.push_back(i); + pegs.emplace_back(i); } else { @@ -269,7 +269,7 @@ bool ModuleConfig::resolve() if ( peg_ittr != peg_names.end() ) { peg_ittr->second = true; - pegs.push_back(i); + pegs.emplace_back(i); } } @@ -296,7 +296,7 @@ bool PerfConfig::resolve() { ModuleConfig cfg; cfg.set_name(mod->get_name()); - modules.push_back(cfg); + modules.emplace_back(cfg); } } @@ -306,7 +306,7 @@ bool PerfConfig::resolve() return false; if ( mod.ptr->counts_need_prep() ) - mods_to_prep.push_back(mod.ptr); + mods_to_prep.emplace_back(mod.ptr); } return true; diff --git a/src/network_inspectors/perf_monitor/perf_monitor.cc b/src/network_inspectors/perf_monitor/perf_monitor.cc index 89dde481e..5fa927419 100644 --- a/src/network_inspectors/perf_monitor/perf_monitor.cc +++ b/src/network_inspectors/perf_monitor/perf_monitor.cc @@ -237,19 +237,19 @@ void PerfMonitor::tinit() trackers = new std::vector(); if (config->perf_flags & PERF_BASE) - trackers->push_back(new BaseTracker(config)); + trackers->emplace_back(new BaseTracker(config)); if (config->perf_flags & PERF_FLOW) - trackers->push_back(new FlowTracker(config)); + trackers->emplace_back(new FlowTracker(config)); if (config->perf_flags & PERF_FLOWIP) { flow_ip_tracker = new FlowIPTracker(config); - trackers->push_back(flow_ip_tracker); + trackers->emplace_back(flow_ip_tracker); } if (config->perf_flags & PERF_CPU ) - trackers->push_back(new CPUTracker(config)); + trackers->emplace_back(new CPUTracker(config)); for (unsigned i = 0; i < trackers->size(); i++) { diff --git a/src/network_inspectors/perf_monitor/text_formatter.cc b/src/network_inspectors/perf_monitor/text_formatter.cc index 697dccab4..92788d5e4 100644 --- a/src/network_inspectors/perf_monitor/text_formatter.cc +++ b/src/network_inspectors/perf_monitor/text_formatter.cc @@ -130,9 +130,9 @@ TEST_CASE("text output", "[TextFormatter]") f.finalize_fields(); f.init_output(fh); - kvp.push_back(50); - kvp.push_back(0); - kvp.push_back(70); + kvp.emplace_back(50); + kvp.emplace_back(0); + kvp.emplace_back(70); f.write(fh, (time_t)1234567890); diff --git a/src/network_inspectors/reputation/reputation_inspect.cc b/src/network_inspectors/reputation/reputation_inspect.cc index 270a2741d..6ecceddd3 100644 --- a/src/network_inspectors/reputation/reputation_inspect.cc +++ b/src/network_inspectors/reputation/reputation_inspect.cc @@ -33,7 +33,6 @@ #include "packet_io/active.h" #include "profiler/profiler.h" -#include "reputation_module.h" #include "reputation_parse.h" #define VERDICT_REASON_REPUTATION 19 @@ -74,8 +73,6 @@ const char* WhiteActionOption[] = */ static void snort_reputation(ReputationConfig* GlobalConf, Packet* p); -unsigned ReputationFlowData::inspector_id = 0; - static void print_iplist_stats(ReputationConfig* config) { /*Print out the summary*/ @@ -313,20 +310,6 @@ static unsigned create_reputation_id() // class stuff //------------------------------------------------------------------------- -class Reputation : public Inspector -{ -public: - Reputation(ReputationConfig*); - - void show(SnortConfig*) override; - void eval(Packet*) override; - -private: - ReputationConfig config; - unsigned reputation_id; - bool is_reputation_disabled(Flow* flow); -}; - Reputation::Reputation(ReputationConfig* pc) { reputation_id = create_reputation_id(); @@ -348,26 +331,6 @@ Reputation::Reputation(ReputationConfig* pc) reputationstats.memory_allocated = sfrt_flat_usage(conf->ip_list); } -bool Reputation::is_reputation_disabled(Flow* flow) -{ - if (!flow) - return false; - - ReputationFlowData* fd = (ReputationFlowData*)flow->get_flow_data( - ReputationFlowData::inspector_id); - - if (!fd) - { - fd = new ReputationFlowData; - flow->set_flow_data(fd); - } - else if (fd->checked_reputation_id == reputation_id) // reputation previously checked - return true; - - fd->checked_reputation_id = reputation_id; // disable future reputation checking - return false; -} - void Reputation::show(SnortConfig*) { print_reputation_conf(&config); @@ -380,11 +343,19 @@ void Reputation::eval(Packet* p) // precondition - what we registered for assert(p->has_ip()); - if (!p->is_rebuilt() && !is_reputation_disabled(p->flow)) + if (p->is_rebuilt()) + return; + + if (p->flow) { - snort_reputation(&config, p); - ++reputationstats.packets; + if (p->flow->reputation_id == reputation_id) // reputation previously checked + return; + else + p->flow->reputation_id = reputation_id; // disable future reputation checking } + + snort_reputation(&config, p); + ++reputationstats.packets; } //------------------------------------------------------------------------- @@ -399,7 +370,6 @@ static void mod_dtor(Module* m) static void reputation_init() { - ReputationFlowData::init(); PacketTracer::register_verdict_reason(VERDICT_REASON_REPUTATION, PacketTracer::PRIORITY_LOW); } diff --git a/src/network_inspectors/reputation/reputation_inspect.h b/src/network_inspectors/reputation/reputation_inspect.h index 410add114..6c8bbb8e5 100644 --- a/src/network_inspectors/reputation/reputation_inspect.h +++ b/src/network_inspectors/reputation/reputation_inspect.h @@ -21,16 +21,19 @@ #include "flow/flow.h" -class ReputationFlowData : public snort::FlowData +#include "reputation_module.h" + +class Reputation : public snort::Inspector { public: - ReputationFlowData() : snort::FlowData(inspector_id){} + Reputation(ReputationConfig*); - static void init() - { inspector_id = snort::FlowData::create_flow_data_id(); } + void show(snort::SnortConfig*) override; + void eval(snort::Packet*) override; - static unsigned inspector_id; - unsigned checked_reputation_id = 0; +private: + ReputationConfig config; + unsigned reputation_id; }; #endif diff --git a/src/network_inspectors/reputation/reputation_parse.cc b/src/network_inspectors/reputation/reputation_parse.cc index 9ff92fe72..8b8f977d7 100644 --- a/src/network_inspectors/reputation/reputation_parse.cc +++ b/src/network_inspectors/reputation/reputation_parse.cc @@ -753,7 +753,7 @@ void add_black_white_List(ReputationConfig* config) listItem->file_name = config->blacklist_path; listItem->file_type = BLACK_LIST; listItem->list_id = 0; - config->list_files.push_back(listItem); + config->list_files.emplace_back(listItem); } if (config->whitelist_path.size()) { @@ -762,7 +762,7 @@ void add_black_white_List(ReputationConfig* config) listItem->file_name = config->whitelist_path; listItem->file_type = WHITE_LIST; listItem->list_id = 0; - config->list_files.push_back(listItem); + config->list_files.emplace_back(listItem); } } @@ -896,7 +896,7 @@ static bool process_line_in_manifest(ListFile* list_item, const char* manifest, return false; } - list_item->zones.insert(zone_id); + list_item->zones.emplace(zone_id); has_zone = true; } @@ -917,7 +917,7 @@ static bool process_line_in_manifest(ListFile* list_item, const char* manifest, list_item->all_zones_enabled = true; } - config->list_files.push_back(list_item); + config->list_files.emplace_back(list_item); return true; } diff --git a/src/packet_io/sfdaq_config.cc b/src/packet_io/sfdaq_config.cc index 2232dd3e0..06d2f70e9 100644 --- a/src/packet_io/sfdaq_config.cc +++ b/src/packet_io/sfdaq_config.cc @@ -63,7 +63,7 @@ void SFDAQInstanceConfig::set_input_spec(const char* input_spec_str) void SFDAQInstanceConfig::set_variable(const char* varkvp) { - variables.push_back(parse_variable(varkvp)); + variables.emplace_back(parse_variable(varkvp)); } /* @@ -85,7 +85,7 @@ SFDAQConfig::~SFDAQConfig() void SFDAQConfig::add_module_dir(const char* module_dir) { if (module_dir) - module_dirs.push_back(module_dir); + module_dirs.emplace_back(module_dir); } void SFDAQConfig::set_input_spec(const char* input_spec_str, int instance_id) @@ -143,7 +143,7 @@ void SFDAQConfig::set_variable(const char* varkvp, int instance_id) ic->set_variable(varkvp); } else - variables.push_back(parse_variable(varkvp)); + variables.emplace_back(parse_variable(varkvp)); } void SFDAQConfig::overlay(const SFDAQConfig* other) diff --git a/src/packet_io/trough.cc b/src/packet_io/trough.cc index 375c54317..12107d419 100644 --- a/src/packet_io/trough.cc +++ b/src/packet_io/trough.cc @@ -99,7 +99,7 @@ int Trough::get_pcaps(std::vector &pol) return -1; } while ((pcap_filename = pcap_dir.next())) - tmp_queue.push_back(pcap_filename); + tmp_queue.emplace_back(pcap_filename); std::sort(tmp_queue.begin(), tmp_queue.end()); pcap_queue.reserve(pcap_queue.size() + tmp_queue.size()); pcap_queue.insert(pcap_queue.end(), tmp_queue.begin(), tmp_queue.end()); @@ -108,7 +108,7 @@ int Trough::get_pcaps(std::vector &pol) { if (filter.empty() || (fnmatch(filter.c_str(), pcap_name.c_str(), 0) == 0)) - pcap_queue.push_back(pcap_name); + pcap_queue.emplace_back(pcap_name); } else { @@ -165,7 +165,7 @@ int Trough::get_pcaps(std::vector &pol) } } - pcap_queue.push_back(pcap_name); + pcap_queue.emplace_back(pcap_name); } while (pos != std::string::npos); } @@ -185,7 +185,7 @@ int Trough::get_pcaps(std::vector &pol) return -1; } while ((pcap_filename = pcap_dir.next())) - tmp_queue.push_back(pcap_filename); + tmp_queue.emplace_back(pcap_filename); std::sort(tmp_queue.begin(), tmp_queue.end()); pcap_queue.reserve(pcap_queue.size() + tmp_queue.size()); pcap_queue.insert(pcap_queue.end(), tmp_queue.begin(), tmp_queue.end()); @@ -206,7 +206,7 @@ void Trough::add_source(SourceType type, const char* list) pro.arg = list; pro.filter = pcap_filter; - pcap_object_list.push_back(pro); + pcap_object_list.emplace_back(pro); } void Trough::set_filter(const char *f) diff --git a/src/piglet/piglet_manager.cc b/src/piglet/piglet_manager.cc index c8d210092..4e3718e99 100644 --- a/src/piglet/piglet_manager.cc +++ b/src/piglet/piglet_manager.cc @@ -170,7 +170,7 @@ void Manager::destroy(BasePlugin* p) } void Manager::add_chunk(const string& filename, const string& target, const string& chunk) -{ chunks.push_back(Chunk(filename, target, chunk)); } +{ chunks.emplace_back(Chunk(filename, target, chunk)); } const vector& Manager::get_chunks() { return chunks; } diff --git a/src/piglet/piglet_utils.h b/src/piglet/piglet_utils.h index 1e1f53f62..f031309fd 100644 --- a/src/piglet/piglet_utils.h +++ b/src/piglet/piglet_utils.h @@ -95,7 +95,7 @@ struct Test inline void set_error(const std::string& s) { result = ERROR; - messages.push_back(s); + messages.emplace_back(s); } Test(const Chunk& ch) : chunk { &ch } { } diff --git a/src/piglet_plugins/pp_codec_iface.cc b/src/piglet_plugins/pp_codec_iface.cc index 9e93f8670..44ce44803 100644 --- a/src/piglet_plugins/pp_codec_iface.cc +++ b/src/piglet_plugins/pp_codec_iface.cc @@ -90,7 +90,7 @@ static const luaL_Reg methods[] = std::vector tmp; tmp.reserve(ret.size()); for(auto a: ret) - tmp.push_back(to_utype(a)); + tmp.emplace_back(to_utype(a)); lua_newtable(L); Lua::fill_table_from_vector(L, lua_gettop(L), tmp); diff --git a/src/profiler/profiler_nodes.h b/src/profiler/profiler_nodes.h index c7414d3fb..8c92a6094 100644 --- a/src/profiler/profiler_nodes.h +++ b/src/profiler/profiler_nodes.h @@ -59,7 +59,7 @@ public: { stats.reset(); } void add_child(ProfilerNode* node) - { children.push_back(node); } + { children.emplace_back(node); } const std::vector get_children() const { return children; } diff --git a/src/protocols/packet_manager.cc b/src/protocols/packet_manager.cc index 1a2867c3c..7a62a5612 100644 --- a/src/protocols/packet_manager.cc +++ b/src/protocols/packet_manager.cc @@ -860,10 +860,10 @@ void PacketManager::dump_stats() g_stats[CodecManager::s_proto_map[to_utype(ProtocolId::FINISHED_DECODE)] + stat_offset] = 0; for (unsigned int i = 0; i < stat_names.size(); i++) - pkt_names.push_back(stat_names[i]); + pkt_names.emplace_back(stat_names[i]); for (int i = 0; CodecManager::s_protocols[i] != nullptr; i++) - pkt_names.push_back(CodecManager::s_protocols[i]->get_name()); + pkt_names.emplace_back(CodecManager::s_protocols[i]->get_name()); show_percent_stats((PegCount*)&g_stats, &pkt_names[0], (unsigned int)pkt_names.size(), "codec"); diff --git a/src/search_engines/acsmx.cc b/src/search_engines/acsmx.cc index 2a66f4da0..77d6d06c0 100644 --- a/src/search_engines/acsmx.cc +++ b/src/search_engines/acsmx.cc @@ -184,7 +184,7 @@ static void Build_NFA(ACSM_STRUCT* acsm) if (s) { - queue.push_back(s); + queue.emplace_back(s); acsm->acsmStateTable[s].FailState = 0; } } @@ -199,7 +199,7 @@ static void Build_NFA(ACSM_STRUCT* acsm) if ( s != ACSM_FAIL_STATE ) { - queue.push_back(s); + queue.emplace_back(s); int fs = acsm->acsmStateTable[r].FailState; int next; @@ -247,7 +247,7 @@ static void Convert_NFA_To_DFA(ACSM_STRUCT* acsm) for (int i = 0; i < ALPHABET_SIZE; i++) { if ( int s = acsm->acsmStateTable[0].NextState[i] ) - queue.push_back(s); + queue.emplace_back(s); } /* Start building the next layer of transitions */ @@ -260,7 +260,7 @@ static void Convert_NFA_To_DFA(ACSM_STRUCT* acsm) if ( s != ACSM_FAIL_STATE ) { - queue.push_back(s); + queue.emplace_back(s); } else { diff --git a/src/search_engines/acsmx2.cc b/src/search_engines/acsmx2.cc index 3f29fc554..96af99aee 100644 --- a/src/search_engines/acsmx2.cc +++ b/src/search_engines/acsmx2.cc @@ -650,7 +650,7 @@ static void Build_NFA(ACSM_STRUCT2* acsm) { if ( !queue_array[s] ) { - queue.push_back(s); + queue.emplace_back(s); queue_array[s] = true; } FailState[s] = 0; @@ -671,7 +671,7 @@ static void Build_NFA(ACSM_STRUCT2* acsm) { if ( !queue_array[s] ) { - queue.push_back(s); + queue.emplace_back(s); queue_array[s] = true; } int fs = FailState[r]; @@ -743,7 +743,7 @@ static void Convert_NFA_To_DFA(ACSM_STRUCT2* acsm) { if ( !queue_array[s] ) { - queue.push_back(s); + queue.emplace_back(s); queue_array[s] = true; } } @@ -763,7 +763,7 @@ static void Convert_NFA_To_DFA(ACSM_STRUCT2* acsm) { if ( !queue_array[s] ) { - queue.push_back(s); + queue.emplace_back(s); queue_array[s] = true; } } diff --git a/src/search_engines/bnfa_search.cc b/src/search_engines/bnfa_search.cc index 193cab2d1..f0be11fdb 100644 --- a/src/search_engines/bnfa_search.cc +++ b/src/search_engines/bnfa_search.cc @@ -722,7 +722,7 @@ static int _bnfa_build_nfa(bnfa_struct_t* bnfa) int s = _bnfa_list_get_next_state(bnfa,0,i); if ( s ) /* don't bother adding state zero */ { - queue.push_back(s); + queue.emplace_back(s); FailState[s] = 0; } } @@ -740,7 +740,7 @@ static int _bnfa_build_nfa(bnfa_struct_t* bnfa) if ( s == (int)BNFA_FAIL_STATE ) continue; - queue.push_back(s); + queue.emplace_back(s); fs = FailState[r]; diff --git a/src/search_engines/hyperscan.cc b/src/search_engines/hyperscan.cc index 53f4fc1fd..856d4bdf2 100644 --- a/src/search_engines/hyperscan.cc +++ b/src/search_engines/hyperscan.cc @@ -129,7 +129,7 @@ public: const PatternDescriptor& desc, void* user) override { Pattern p(pat, len, desc, user); - pvector.push_back(p); + pvector.emplace_back(p); ++patterns; return 0; } @@ -228,9 +228,9 @@ int HyperscanMpse::prep_patterns(SnortConfig* sc) for ( auto& p : pvector ) { - pats.push_back(p.pat.c_str()); - flags.push_back(p.flags); - ids.push_back(id++); + pats.emplace_back(p.pat.c_str()); + flags.emplace_back(p.flags); + ids.emplace_back(id++); } if ( hs_compile_multi(&pats[0], &flags[0], &ids[0], pvector.size(), HS_MODE_BLOCK, diff --git a/src/service_inspectors/ftp_telnet/ftp_module.cc b/src/service_inspectors/ftp_telnet/ftp_module.cc index 7cfde5685..282b10fc1 100644 --- a/src/service_inspectors/ftp_telnet/ftp_module.cc +++ b/src/service_inspectors/ftp_telnet/ftp_module.cc @@ -181,7 +181,7 @@ bool FtpClientModule::end(const char* fqn, int idx, SnortConfig*) ParseError("bad ftp_client.bounce_to [%d]", idx); return false; } - bounce_to.push_back(new BounceTo(address, port, last_port)); + bounce_to.emplace_back(new BounceTo(address, port, last_port)); } return true; } @@ -375,7 +375,7 @@ void FtpServerModule::add_commands( v.set_first_token(); while ( v.get_next_token(tok) ) - cmds.push_back(new FtpCmd(tok, flags, num)); + cmds.emplace_back(new FtpCmd(tok, flags, num)); } const FtpCmd* FtpServerModule::get_cmd(unsigned idx) @@ -489,7 +489,7 @@ bool FtpServerModule::end(const char* fqn, int idx, SnortConfig*) return true; if ( !strcmp(fqn, "ftp_server.cmd_validity") ) - cmds.push_back(new FtpCmd(names, format, number)); + cmds.emplace_back(new FtpCmd(names, format, number)); else if ( !strcmp(fqn, "ftp_server.directory_cmds") ) { diff --git a/src/service_inspectors/gtp/gtp_module.cc b/src/service_inspectors/gtp/gtp_module.cc index 0861d51c5..17f4eb56f 100644 --- a/src/service_inspectors/gtp/gtp_module.cc +++ b/src/service_inspectors/gtp/gtp_module.cc @@ -171,19 +171,19 @@ bool GtpInspectModule::end(const char* fqn, int idx, SnortConfig*) for ( unsigned i = 0; i < temp.size(); ++i ) { temp[i].version = stuff.version; - config.push_back(temp[i]); + config.emplace_back(temp[i]); } temp.clear(); } else if ( !strcmp(fqn, "gtp_inspect.messages") and idx ) { assert(stuff.length < 0); - temp.push_back(stuff); + temp.emplace_back(stuff); } else if ( !strcmp(fqn, "gtp_inspect.infos") and idx ) { assert(stuff.length >= 0); - temp.push_back(stuff); + temp.emplace_back(stuff); } return true; } diff --git a/src/service_inspectors/smtp/smtp_module.cc b/src/service_inspectors/smtp/smtp_module.cc index 47381f78f..13639c597 100644 --- a/src/service_inspectors/smtp/smtp_module.cc +++ b/src/service_inspectors/smtp/smtp_module.cc @@ -205,7 +205,7 @@ void SmtpModule::add_commands( v.set_first_token(); while ( v.get_next_token(tok) ) - cmds.push_back(new SmtpCmd(tok, flags, 0)); + cmds.emplace_back(new SmtpCmd(tok, flags, 0)); } const SmtpCmd* SmtpModule::get_cmd(unsigned idx) @@ -349,7 +349,7 @@ bool SmtpModule::end(const char* fqn, int idx, SnortConfig*) return true; if ( !strcmp(fqn, "smtp.alt_max_command_line_len") ) - cmds.push_back(new SmtpCmd(names, number)); + cmds.emplace_back(new SmtpCmd(names, number)); return true; } diff --git a/src/service_inspectors/wizard/curses.cc b/src/service_inspectors/wizard/curses.cc index 2d82fe1c6..8229d4148 100644 --- a/src/service_inspectors/wizard/curses.cc +++ b/src/service_inspectors/wizard/curses.cc @@ -266,9 +266,9 @@ bool CurseBook::add_curse(const char* key) if (curse.name == key) { if (curse.is_tcp) - tcp_curses.push_back(&curse); + tcp_curses.emplace_back(&curse); else - non_tcp_curses.push_back(&curse); + non_tcp_curses.emplace_back(&curse); return true; } } diff --git a/src/service_inspectors/wizard/hexes.cc b/src/service_inspectors/wizard/hexes.cc index 949a4c7dd..1951f4c5d 100644 --- a/src/service_inspectors/wizard/hexes.cc +++ b/src/service_inspectors/wizard/hexes.cc @@ -47,9 +47,9 @@ bool HexBook::translate(const char* in, HexVector& out) else if ( !hex ) { if ( in[i] == '?' ) - out.push_back(WILD); + out.emplace_back(WILD); else - out.push_back(in[i]); + out.emplace_back(in[i]); } else if ( in[i] != ' ' ) { @@ -64,7 +64,7 @@ bool HexBook::translate(const char* in, HexVector& out) if ( push && !byte.empty() ) { int b = strtol(byte.c_str(), nullptr, 16); - out.push_back((uint8_t)b); + out.emplace_back((uint8_t)b); byte.clear(); } ++i; diff --git a/src/service_inspectors/wizard/spells.cc b/src/service_inspectors/wizard/spells.cc index da783ec17..9db5c9312 100644 --- a/src/service_inspectors/wizard/spells.cc +++ b/src/service_inspectors/wizard/spells.cc @@ -48,9 +48,9 @@ bool SpellBook::translate(const char* in, HexVector& out) if ( wild ) { if ( in[i] != '*' ) - out.push_back(WILD); + out.emplace_back(WILD); - out.push_back(in[i]); + out.emplace_back(in[i]); wild = false; } else @@ -58,7 +58,7 @@ bool SpellBook::translate(const char* in, HexVector& out) if ( in[i] == '*' ) wild = true; else - out.push_back(in[i]); + out.emplace_back(in[i]); } ++i; } diff --git a/src/service_inspectors/wizard/wiz_module.cc b/src/service_inspectors/wizard/wiz_module.cc index 63fb38208..a02e494f9 100644 --- a/src/service_inspectors/wizard/wiz_module.cc +++ b/src/service_inspectors/wizard/wiz_module.cc @@ -140,10 +140,10 @@ bool WizardModule::set(const char*, Value& v, SnortConfig*) return true; else if ( v.is("hex") ) - spells.push_back(v.get_string()); + spells.emplace_back(v.get_string()); else if ( v.is("spell") ) - spells.push_back(v.get_string()); + spells.emplace_back(v.get_string()); else if ( v.is("curses") ) curses->add_curse(v.get_string()); diff --git a/src/service_inspectors/wizard/wizard.cc b/src/service_inspectors/wizard/wizard.cc index b918e084a..405372001 100644 --- a/src/service_inspectors/wizard/wizard.cc +++ b/src/service_inspectors/wizard/wizard.cc @@ -227,9 +227,9 @@ void Wizard::reset(Wand& w, bool tcp, bool c2s) for ( const CurseDetails* curse : pages ) { if (tcp) - w.curse_tracker.push_back({ curse, new CurseTracker }); + w.curse_tracker.emplace_back( CurseServiceTracker{ curse, new CurseTracker } ); else - w.curse_tracker.push_back({ curse, nullptr }); + w.curse_tracker.emplace_back( CurseServiceTracker{ curse, nullptr } ); } } } diff --git a/src/side_channel/side_channel.cc b/src/side_channel/side_channel.cc index d03d39962..f60f0d3a7 100644 --- a/src/side_channel/side_channel.cc +++ b/src/side_channel/side_channel.cc @@ -97,7 +97,7 @@ void SideChannelManager::instantiate(const SCConnectors* connectors, const PortB scm->connectors = *connectors; scm->ports = *ports; - s_maps.push_back(scm); + s_maps.emplace_back(scm); } // Initialize state to be ready to accept configuration @@ -149,7 +149,7 @@ void SideChannelManager::thread_init() } /* Save the thread specific map */ - map_list->push_back(map); + map_list->emplace_back(map); } /* Finally, save the thread-specific list */ diff --git a/src/side_channel/side_channel_module.cc b/src/side_channel/side_channel_module.cc index 04e98366e..621529663 100644 --- a/src/side_channel/side_channel_module.cc +++ b/src/side_channel/side_channel_module.cc @@ -98,7 +98,7 @@ bool SideChannelModule::set(const char*, Value& v, SnortConfig*) assert(config); if ( v.is("connector") ) - config->connectors.push_back(std::move(v.get_string())); + config->connectors.emplace_back(std::move(v.get_string())); else if ( v.is("ports") ) { diff --git a/src/side_channel/test/side_channel_test.cc b/src/side_channel/test/side_channel_test.cc index f9bc1cda3..20281ea4f 100644 --- a/src/side_channel/test/side_channel_test.cc +++ b/src/side_channel/test/side_channel_test.cc @@ -154,8 +154,8 @@ TEST_GROUP(side_channel) SCConnectors test_connectors; PortBitSet test_ports; - test_connectors.push_back("R"); - test_connectors.push_back("T"); + test_connectors.emplace_back("R"); + test_connectors.emplace_back("T"); test_ports.set(1); SideChannelManager::instantiate(&test_connectors, &test_ports); @@ -163,7 +163,7 @@ TEST_GROUP(side_channel) test_connectors.clear(); test_ports.reset(1); - test_connectors.push_back("R"); + test_connectors.emplace_back("R"); test_ports.set(2); SideChannelManager::instantiate(&test_connectors, &test_ports); @@ -171,7 +171,7 @@ TEST_GROUP(side_channel) test_connectors.clear(); test_ports.reset(2); - test_connectors.push_back("T"); + test_connectors.emplace_back("T"); test_ports.set(3); SideChannelManager::instantiate(&test_connectors, &test_ports); @@ -186,7 +186,7 @@ TEST_GROUP(side_channel) test_connectors.clear(); test_ports.reset(4); - test_connectors.push_back("D"); + test_connectors.emplace_back("D"); test_ports.set(5); SideChannelManager::instantiate(&test_connectors, &test_ports); diff --git a/src/stream/base/stream_ha.cc b/src/stream/base/stream_ha.cc index 641125e45..82367cb74 100644 --- a/src/stream/base/stream_ha.cc +++ b/src/stream/base/stream_ha.cc @@ -255,7 +255,7 @@ ProtocolHA::ProtocolHA(PktType protocol) if ( proto_map == nullptr ) proto_map = new ProtocolMap; - proto_map->insert(std::make_pair((int)protocol, this)); + proto_map->emplace((int)protocol, this); } ProtocolHA::~ProtocolHA() diff --git a/src/stream/flush_bucket.cc b/src/stream/flush_bucket.cc index ae08a10fe..75f9c788e 100644 --- a/src/stream/flush_bucket.cc +++ b/src/stream/flush_bucket.cc @@ -68,7 +68,7 @@ uint16_t FlushBucket::get_size() void VarFlushBucket::set_next(uint16_t pt) { - flush_points.push_back(pt); + flush_points.emplace_back(pt); } uint16_t VarFlushBucket::get_next() diff --git a/src/stream/user/user_session.cc b/src/stream/user/user_session.cc index 814c0405d..58334805b 100644 --- a/src/stream/user/user_session.cc +++ b/src/stream/user/user_session.cc @@ -292,7 +292,7 @@ void UserTracker::add_data(Packet* p) if ( avail < p->dsize ) { UserSegment* us = UserSegment::init(p->data+avail, p->dsize-avail); - seg_list.push_back(us); + seg_list.emplace_back(us); } total += p->dsize; process(p); diff --git a/src/target_based/snort_protocols.cc b/src/target_based/snort_protocols.cc index 162599ffa..829ca3e17 100644 --- a/src/target_based/snort_protocols.cc +++ b/src/target_based/snort_protocols.cc @@ -63,7 +63,7 @@ const char* ProtocolReference::get_name_sorted(SnortProtocolId id) if ( ind_map.size() < id_map.size() ) { while ( ind_map.size() < id_map.size() ) - ind_map.push_back((SnortProtocolId)ind_map.size()); + ind_map.emplace_back((SnortProtocolId)ind_map.size()); Compare c { id_map }; sort(ind_map.begin(), ind_map.end(), c); @@ -86,7 +86,7 @@ SnortProtocolId ProtocolReference::add(const char* protocol) } SnortProtocolId snort_protocol_id = protocol_number++; - id_map.push_back(protocol); + id_map.emplace_back(protocol); ref_table[protocol] = snort_protocol_id; return snort_protocol_id; diff --git a/src/time/periodic.cc b/src/time/periodic.cc index 53aa33e7e..8048fb398 100644 --- a/src/time/periodic.cc +++ b/src/time/periodic.cc @@ -82,7 +82,7 @@ void Periodic::unregister_all() static std::vector s_test_args; static void s_test_handler(void* pv) -{ s_test_args.push_back(*(int*)(pv)); } +{ s_test_args.emplace_back(*(int*)(pv)); } TEST_CASE("periodic", "[periodic]") {