]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
parser: make rust probing parsers optional 4561/head
authorPhilippe Antoine <contact@catenacyber.fr>
Tue, 18 Feb 2020 08:35:47 +0000 (09:35 +0100)
committerPhilippe Antoine <contact@catenacyber.fr>
Tue, 18 Feb 2020 08:35:47 +0000 (09:35 +0100)
rust/src/applayertemplate/template.rs
rust/src/dhcp/dhcp.rs
rust/src/ikev2/ikev2.rs
rust/src/krb/krb5.rs
rust/src/ntp/ntp.rs
rust/src/parser.rs
rust/src/rdp/rdp.rs
rust/src/sip/sip.rs
rust/src/snmp/snmp.rs
src/app-layer-register.c

index bb02267f6c2ab3017bbe40f05fac060dd74896f2..b4fb74aa4b0e08a9e0d6feff63678922c0458e76 100644 (file)
@@ -518,8 +518,8 @@ pub unsafe extern "C" fn rs_template_register_parser() {
         name: PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port: default_port.as_ptr(),
         ipproto: IPPROTO_TCP,
-        probe_ts: rs_template_probing_parser,
-        probe_tc: rs_template_probing_parser,
+        probe_ts: Some(rs_template_probing_parser),
+        probe_tc: Some(rs_template_probing_parser),
         min_depth: 0,
         max_depth: 16,
         state_new: rs_template_state_new,
index 6aa576669dca2fb029b028e959cb8c6af3929444..a819b1bfaf4c6b77686fa60ce173e4220afbc901 100644 (file)
@@ -426,8 +426,8 @@ pub unsafe extern "C" fn rs_dhcp_register_parser() {
         name: PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port       : ports.as_ptr(),
         ipproto            : IPPROTO_UDP,
-        probe_ts           : rs_dhcp_probing_parser,
-        probe_tc           : rs_dhcp_probing_parser,
+        probe_ts           : Some(rs_dhcp_probing_parser),
+        probe_tc           : Some(rs_dhcp_probing_parser),
         min_depth          : 0,
         max_depth          : 16,
         state_new          : rs_dhcp_state_new,
index 0eaf9bcf9d504982a957c7ca41e940100d3f4af0..0a659d7e989400d81e7b501d5ca0d7f099fa6bf9 100644 (file)
@@ -704,8 +704,8 @@ pub unsafe extern "C" fn rs_register_ikev2_parser() {
         name               : PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port       : default_port.as_ptr(),
         ipproto            : core::IPPROTO_UDP,
-        probe_ts           : rs_ikev2_probing_parser,
-        probe_tc           : rs_ikev2_probing_parser,
+        probe_ts           : Some(rs_ikev2_probing_parser),
+        probe_tc           : Some(rs_ikev2_probing_parser),
         min_depth          : 0,
         max_depth          : 16,
         state_new          : rs_ikev2_state_new,
index 1c87449a6a2b1d0642d55812ec643bd7ea0be6d7..c2bf66fcce4e2b31b5d7e58a8539a068d886db06 100644 (file)
@@ -647,8 +647,8 @@ pub unsafe extern "C" fn rs_register_krb5_parser() {
         name               : PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port       : default_port.as_ptr(),
         ipproto            : core::IPPROTO_UDP,
-        probe_ts           : rs_krb5_probing_parser,
-        probe_tc           : rs_krb5_probing_parser,
+        probe_ts           : Some(rs_krb5_probing_parser),
+        probe_tc           : Some(rs_krb5_probing_parser),
         min_depth          : 0,
         max_depth          : 16,
         state_new          : rs_krb5_state_new,
@@ -690,8 +690,8 @@ pub unsafe extern "C" fn rs_register_krb5_parser() {
     }
     // register TCP parser
     parser.ipproto = core::IPPROTO_TCP;
-    parser.probe_ts = rs_krb5_probing_parser_tcp;
-    parser.probe_tc = rs_krb5_probing_parser_tcp;
+    parser.probe_ts = Some(rs_krb5_probing_parser_tcp);
+    parser.probe_tc = Some(rs_krb5_probing_parser_tcp);
     parser.parse_ts = rs_krb5_parse_request_tcp;
     parser.parse_tc = rs_krb5_parse_response_tcp;
     let ip_proto_str = CString::new("tcp").unwrap();
index ad3b519e9ce1fc98c55f89ac6afe1551179f52a7..4b53853208d95a7bd16231443cc66e12077a8dd8 100644 (file)
@@ -403,8 +403,8 @@ pub unsafe extern "C" fn rs_register_ntp_parser() {
         name               : PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port       : default_port.as_ptr(),
         ipproto            : core::IPPROTO_UDP,
-        probe_ts           : ntp_probing_parser,
-        probe_tc           : ntp_probing_parser,
+        probe_ts           : Some(ntp_probing_parser),
+        probe_tc           : Some(ntp_probing_parser),
         min_depth          : 0,
         max_depth          : 16,
         state_new          : rs_ntp_state_new,
index 5dec9f2c32a3fef31b2bd6372dbf772601004d84..e33f9bc9dd381d78aeab29fc0870d57746aceb25 100644 (file)
@@ -38,9 +38,9 @@ pub struct RustParser {
     pub ipproto:            c_int,
 
     /// Probing function, for packets going to server
-    pub probe_ts:           ProbeFn,
+    pub probe_ts:           Option<ProbeFn>,
     /// Probing function, for packets going to client
-    pub probe_tc:           ProbeFn,
+    pub probe_tc:           Option<ProbeFn>,
 
     /// Minimum frame depth for probing
     pub min_depth:          u16,
index 4a349fe18aab5681ac64f29402bd693bfe359a57..223e78b48cbe675e45e1a6ea57d3a50833fe8fc1 100644 (file)
@@ -505,8 +505,8 @@ pub unsafe extern "C" fn rs_rdp_register_parser() {
         name: PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port: default_port.as_ptr(),
         ipproto: IPPROTO_TCP,
-        probe_ts: rs_rdp_probe_ts_tc,
-        probe_tc: rs_rdp_probe_ts_tc,
+        probe_ts: Some(rs_rdp_probe_ts_tc),
+        probe_tc: Some(rs_rdp_probe_ts_tc),
         min_depth: 0,
         max_depth: 16,
         state_new: rs_rdp_state_new,
index 2c51e3c95d6e6d54d1d205cb9193ab08bd14543a..f50b1592677b4b5ee59f0672b26e38bfe19894b1 100755 (executable)
@@ -396,8 +396,8 @@ pub unsafe extern "C" fn rs_sip_register_parser() {
         name: PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port: default_port.as_ptr(),
         ipproto: core::IPPROTO_UDP,
-        probe_ts: rs_sip_probing_parser_ts,
-        probe_tc: rs_sip_probing_parser_tc,
+        probe_ts: Some(rs_sip_probing_parser_ts),
+        probe_tc: Some(rs_sip_probing_parser_tc),
         min_depth: 0,
         max_depth: 16,
         state_new: rs_sip_state_new,
index a3c5307c283709a090a7c76fbf1d410036b56a1f..954a388c914b9e617c0ba5db24cb0a78745996d6 100644 (file)
@@ -586,8 +586,8 @@ pub unsafe extern "C" fn rs_register_snmp_parser() {
         name               : PARSER_NAME.as_ptr() as *const std::os::raw::c_char,
         default_port       : default_port.as_ptr(),
         ipproto            : core::IPPROTO_UDP,
-        probe_ts           : rs_snmp_probing_parser,
-        probe_tc           : rs_snmp_probing_parser,
+        probe_ts           : Some(rs_snmp_probing_parser),
+        probe_tc           : Some(rs_snmp_probing_parser),
         min_depth          : 0,
         max_depth          : 16,
         state_new          : rs_snmp_state_new,
index 3fd73c46d7f772ef6bac53e6cbdc0202487de45a..17691d26ac9355522e11d3699e8eb007dff1aa56 100644 (file)
@@ -54,6 +54,10 @@ AppProto AppLayerRegisterProtocolDetection(const struct AppLayerParser *p, int e
 
     AppLayerProtoDetectRegisterProtocol(alproto, p->name);
 
+    if (p->ProbeTS == NULL || p->ProbeTC == NULL) {
+        return alproto;
+    }
+
     if (RunmodeIsUnittests()) {
 
         SCLogDebug("Unittest mode, registering default configuration.");