]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #3573: Const changes
authorRon Dempster (rdempste) <rdempste@cisco.com>
Thu, 1 Sep 2022 15:34:15 +0000 (15:34 +0000)
committerRon Dempster (rdempste) <rdempste@cisco.com>
Thu, 1 Sep 2022 15:34:15 +0000 (15:34 +0000)
Merge in SNORT/snort3 from ~RDEMPSTE/snort3:const_changes to master

Squashed commit of the following:

commit 49533a8a6b24ba425331b874f32326666bb3b6e0
Author: Ron Dempster (rdempste) <rdempste@cisco.com>
Date:   Fri Aug 19 13:29:40 2022 -0400

    stream: free flow data, if flow is blocked

commit 3634e7e499ca310d8b3a92938682098d5e0aeba8
Author: Ron Dempster (rdempste) <rdempste@cisco.com>
Date:   Thu Aug 18 16:45:24 2022 -0400

    framework, rna, pub_sub: make data bus get_packet method a const

commit 47beb51ab6055c7bdac4594a2aceed0d96128471
Author: Ron Dempster (rdempste) <rdempste@cisco.com>
Date:   Thu Aug 18 16:42:05 2022 -0400

    stream: use a const packet to populate the flow key

commit 546c8888f600b139a7877e47b75d469ed3752824
Author: Ron Dempster (rdempste) <rdempste@cisco.com>
Date:   Thu Aug 18 16:40:44 2022 -0400

    flow: update flow statistics before processing a flow

23 files changed:
src/flow/flow.cc
src/flow/flow_control.cc
src/framework/data_bus.cc
src/framework/data_bus.h
src/network_inspectors/appid/appid_ssh_event_handler.cc
src/network_inspectors/rna/rna_cpe_os.h
src/pub_sub/active_events.h
src/pub_sub/appid_events.h
src/pub_sub/assistant_gadget_event.h
src/pub_sub/cip_events.h
src/pub_sub/dcerpc_events.h
src/pub_sub/dhcp_events.h
src/pub_sub/eve_process_event.h
src/pub_sub/expect_events.h
src/pub_sub/finalize_packet_event.h
src/pub_sub/netflow_event.h
src/pub_sub/opportunistic_tls_event.h
src/pub_sub/rna_events.h
src/pub_sub/sip_events.h
src/pub_sub/smb_events.h
src/pub_sub/ssh_events.h
src/stream/stream.cc
src/stream/stream.h

index 6f2e8f823674ed9aa42225a63f0decc4f681e3d0..3e5342ae501e7219c406121d0c7410fbea348d68 100644 (file)
@@ -333,6 +333,8 @@ void Flow::free_flow_data(uint32_t proto)
 
 void Flow::free_flow_data()
 {
+    if (!flow_data)
+        return;
     const SnortConfig* sc = SnortConfig::get_conf();
     PolicySelector* ps = sc->policy_map->get_policy_selector();
     NetworkPolicy* np = nullptr;
index b336c15d8014f308a40fcbbc315c096906e98ebe..35699d3f27aba086e2c6892989b3d9f349b1245d 100644 (file)
@@ -452,8 +452,8 @@ unsigned FlowControl::process(Flow* flow, Packet* p)
             set_ips_policy(p->context->conf, flow->ips_policy_id);
         }
         p->filtering_state = flow->filtering_state;
+        update_stats(flow, p);
     }
-
     else
     {
         flow->network_policy_id = get_network_policy()->policy_id;
@@ -465,6 +465,8 @@ unsigned FlowControl::process(Flow* flow, Packet* p)
         // process expected flows
         check_expected_flow(flow, p);
 
+        update_stats(flow, p);
+
         flow->set_client_initiate(p);
         DataBus::publish(FLOW_STATE_SETUP_EVENT, p);
 
@@ -525,7 +527,6 @@ unsigned FlowControl::process(Flow* flow, Packet* p)
         break;
     }
 
-    update_stats(flow, p);
     return news;
 }
 
index debd6a8801aa73b221701bc9d2c51899014bd058..03bb9c749c8fa02939c4d9ea5b074233a4214e87 100644 (file)
@@ -56,7 +56,7 @@ public:
     PacketEvent(Packet* p)
     { packet = p; }
 
-    const Packet* get_packet() override
+    const Packet* get_packet() const override
     { return packet; }
 
 private:
index 3b7f8c711ff32d230a54cd4c723d9d67d4caf5df..9770aa5e9e19364471cf6ab36ba2e4d3f3a7b0d1 100644 (file)
@@ -45,7 +45,7 @@ class DataEvent
 public:
     virtual ~DataEvent() = default;
 
-    virtual const Packet* get_packet()
+    virtual const Packet* get_packet() const
     { return nullptr; }
 
     virtual const uint8_t* get_data()
index 0308c4765ffe15a96fb6cca58db074a5e3d4dd6a..916a92353931b2e35b88dd593d2606b6e51711e4 100644 (file)
@@ -136,7 +136,7 @@ static void service_success(SshAppIdInfo& fd, const Packet& p, AppIdSession& asd
     asd.set_service_detected();
 }
 
-static void handle_success(SshEventFlowData& data, SshEvent& event,
+static void handle_success(SshEventFlowData& data, const SshEvent& event,
     AppIdSession& asd, AppidChangeBits& change_bits)
 {
     service_success(data.service_info, *event.get_packet(), asd, change_bits);
index 780abbdd0787659068a939700be81754054d0c80..61debb7e19bc68adf31cf237041fa76d625e9e54 100644 (file)
@@ -28,7 +28,7 @@ class SO_PUBLIC CpeOsInfoEvent : public snort::DataEvent
 public:
     CpeOsInfoEvent(const snort::Packet& p) : p(p) { }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     {
          return &p;
     }
index 17ef2a0479956b346e871e1dbca33638901692a5..eb532a5d96c12e6c49ff220b95429ef64a92febe 100644 (file)
@@ -44,7 +44,7 @@ public:
     Active::ActiveActionType get_previous_action() const
     { return previous_action; }
 
-    const Packet* get_pkt() const
+    const Packet* get_packet() const override
     { return pkt; }
 
 private:
index bb93019cc187bd86f6d53c9aaa27d4c013c69bcb..e2650de906a2a35feee25215dc44aa8216799ffd 100644 (file)
@@ -135,7 +135,7 @@ public:
     const snort::AppIdSessionApi& get_appid_session_api() const
     { return api; }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return &p; }
 
 private:
index ae826d4a3cb49f8c6d6909b14b75d4e2836a64e5..c777fe2e7b4667b1830ddbc3f2bc436406396152 100644 (file)
@@ -41,7 +41,7 @@ public:
         p(packet), service(_service)
     { }
 
-    snort::Packet* get_packet() override
+    snort::Packet* get_packet() const override
     { return p; }
 
     const char* get_service()
index 9ac5681f691d3134efc5a4a1fd33d3e1bc34c22b..c35ffde18edd059846f2acf732c319aee333e787 100644 (file)
@@ -47,7 +47,7 @@ class SO_PUBLIC CipEvent : public snort::DataEvent
 public:
     CipEvent(const snort::Packet*, const CipEventData*);
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return p; }
 
 private:
index 7dd6d58e0cb5c607361c2f5543fb22d81e49f11e..ab1577483844e30e2327695c97e0b6c2723c67e3 100644 (file)
@@ -26,7 +26,7 @@ public:
             dst_ip(dst_ip), dst_port(dst_port),
             proto(proto), protocol_id(protocol_id) { }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return p; }
 
     const snort::SfIp* get_src_ip() const
index 653a606fc9424676f3e33d67e7420f8f5b171c8f..3c26481b79cc2dc800e4940612f1516cc7ace326 100644 (file)
@@ -42,7 +42,7 @@ public:
         memcpy(eth_addr, eth, sizeof(eth_addr));
     }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return pkt; }
 
     uint32_t get_ip_address() const
@@ -82,7 +82,7 @@ public:
         memcpy(eth_addr, eth, sizeof(eth_addr));
     }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return pkt; }
 
     unsigned get_op55_len() const
index 53d425cebdde9d7cb9d4cf51738e282344a7a8b5..62d94ce4eccd72c414722b00ffcf33347ce4cacb 100644 (file)
@@ -33,7 +33,7 @@ public:
 
     EveProcessEvent(const snort::Packet& p, const char* server) : p(p), server_name(server) { }
 
-    const snort::Packet* get_packet() override { return &p; }
+    const snort::Packet* get_packet() const override { return &p; }
 
     const std::string& get_process_name() const
     {
index b980b2e77bc4409ebdc811460851db6c6ce63fe9..20520eee7f24bce3b35cdc65c59c11e53e45579a 100644 (file)
@@ -47,7 +47,7 @@ public:
         flow_data = fd;
     }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return p; }
 
     snort::ExpectFlow* get_expect_flow()
index 5ec6fc37a6fe84ff6c7d26da4a98295b2aeaa636..6c56021efe5ddfe380f68e55143925dd182d79b7 100644 (file)
@@ -40,7 +40,7 @@ public:
     {
     }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return pkt; }
 
     DAQ_Verdict& get_verdict()
index 4be64a503b336d45d175ca5002be37f0e1b6c5ad..b7e1cabd170e7bb4c4f73c155b6fc3b592a39a2b 100644 (file)
@@ -36,7 +36,7 @@ public:
         : pkt(p), record(rec), create_host(cre_host),
           create_service(cre_serv), swapped(swp_initiator), serviceID(s_id) { }
 
-    const Packet* get_packet() override
+    const Packet* get_packet() const override
     { return pkt; }
 
     const NetFlowSessionRecord* get_record()
index 4d7b046ad05dc606cb3653ae4ed21691b2025a94..51a31c0915bf0bc5acc104d3f9329653e4a6f7b5 100644 (file)
@@ -37,7 +37,7 @@ public:
     OpportunisticTlsEvent(const snort::Packet* p, const char* service) :
         pkt(p), next_service(service) { }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return pkt; }
 
     const char* get_next_service()
index 986a44c0bf6d7cc24f61ff2d8fff7d04c1399700..5af57d7450f11d44352e3fb99b0eaeb54aaaee99 100644 (file)
@@ -34,7 +34,7 @@ public:
     RNAEvent(const snort::Packet* p, const NetFlowSessionRecord* rec, const uint32_t service)
         : pkt(p), record(rec), service_id(service) { }
 
-    const Packet* get_packet() override
+    const Packet* get_packet() const override
     { return pkt; }
 
     const NetFlowSessionRecord* get_record()
index 2ccedd301d7e99c3e2ca370359f652db374d53b5..f49cb9c2f51d9933bbcb4c0365066f6847345c4f 100644 (file)
@@ -83,7 +83,7 @@ public:
     SipEvent(const snort::Packet*, const SIPMsg*, const SIP_DialogData*);
     ~SipEvent() override;
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return p; }
 
     const char* get_from() const
index 61872f5db473cb7aed08c5c54814b1d0a06baba2..abbc5b891606f8d9f4ad1a29df1a4e12b12dfe92 100644 (file)
@@ -33,7 +33,7 @@ public:
     FpSMBDataEvent(const snort::Packet* p, unsigned major, unsigned minor,
         uint32_t flags) : pkt(p), major_version(major), minor_version(minor), flags(flags) { }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return pkt; }
 
     unsigned get_fp_smb_major() const
index 236da101c51667b4890c30ee7e590fdc40b7c517..da8fcecd50d03aa53300529e3652d629a3e1edb0 100644 (file)
@@ -59,7 +59,7 @@ public:
     uint8_t get_direction() const
     { return direction; }
 
-    const snort::Packet* get_packet() override
+    const snort::Packet* get_packet() const override
     { return packet; }
 
 private:
index 023321cb4d654566ee25882e2f0078971713ab41..68db50a013ca1d44470fb37b9cdcda3a3f0754ad 100644 (file)
@@ -117,7 +117,7 @@ Flow* Stream::get_flow(
     return get_flow(&key);
 }
 
-void Stream::populate_flow_key(Packet* p, FlowKey* key)
+void Stream::populate_flow_key(const Packet* p, FlowKey* key)
 {
     if (!key || !p)
         return;
@@ -221,6 +221,7 @@ void Stream::check_flow_closed(Packet* p)
     else if (flow->session_state & STREAM_STATE_BLOCK_PENDING)
     {
         flow->session->clear();
+        flow->free_flow_data();
         flow->set_state(Flow::FlowState::BLOCK);
 
         if ( !(p->packet_flags & PKT_STATELESS) )
index 6c5c82572aa71861f6637a35bfd796bc45052a42..b9dc615a10f5c29636401424682adddff572025e 100644 (file)
@@ -213,7 +213,7 @@ public:
     static FlowKey* get_flow_key(Packet*);
 
     //  Populate a session key from the Packet
-    static void populate_flow_key(Packet*, FlowKey*);
+    static void populate_flow_key(const Packet*, FlowKey*);
 
     static void set_snort_protocol_id_from_ha(Flow*, const SnortProtocolId);