]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dcerpc/tcp: add missing detect state cleanup
authorVictor Julien <victor@inliniac.net>
Fri, 23 Oct 2020 05:44:28 +0000 (07:44 +0200)
committerVictor Julien <victor@inliniac.net>
Wed, 4 Nov 2020 15:30:30 +0000 (16:30 +0100)
rust/src/dcerpc/dcerpc.rs

index e4fa10e5e7967fcfae850f69f79a957614163da9..a14a5de2ac59c00dc695c1f4ceae608df3f6f2e5 100644 (file)
@@ -17,7 +17,7 @@
 
 use std::mem::transmute;
 use crate::applayer::{AppLayerResult, AppLayerTxData};
-use crate::core;
+use crate::core::{self, sc_detect_engine_state_free};
 use crate::dcerpc::parser;
 use nom::error::ErrorKind;
 use nom::number::Endianness;
@@ -184,6 +184,15 @@ impl DCERPCTransaction {
         };
     }
 
+    pub fn free(&mut self) {
+        match self.de_state {
+            Some(state) => {
+                sc_detect_engine_state_free(state);
+            }
+            _ => {}
+        }
+    }
+
     pub fn get_req_ctxid(&self) -> u16 {
         self.ctxid
     }
@@ -201,6 +210,12 @@ impl DCERPCTransaction {
     }
 }
 
+impl Drop for DCERPCTransaction {
+    fn drop(&mut self) {
+        self.free();
+    }
+}
+
 #[derive(Debug)]
 pub struct DCERPCRequest {
     pub ctxid: u16,