]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
ldap: refactor function aux_ldap_parse_protocol_resp_op
authorAlice Akaki <akakialice@gmail.com>
Thu, 20 Feb 2025 22:32:35 +0000 (18:32 -0400)
committerVictor Julien <victor@inliniac.net>
Wed, 5 Mar 2025 14:59:53 +0000 (15:59 +0100)
Split code to create a generic function that parses LdapIndex

rust/src/ldap/detect.rs

index fad15816b93073f0bba9e93c94f248a2ff5dbfba..2c630f83a989fd0a87ea1921c0f050ff86b2a079 100644 (file)
@@ -115,11 +115,7 @@ unsafe extern "C" fn ldap_detect_request_free(_de: *mut c_void, ctx: *mut c_void
     rs_detect_u8_free(ctx);
 }
 
-fn aux_ldap_parse_protocol_resp_op(s: &str) -> Option<DetectLdapRespOpData> {
-    let parts: Vec<&str> = s.split(',').collect();
-    if parts.len() > 2 {
-        return None;
-    }
+fn parse_ldap_index(parts: &[&str]) -> Option<LdapIndex> {
     let index = if parts.len() == 2 {
         match parts[1] {
             "all" => LdapIndex::All,
@@ -132,11 +128,19 @@ fn aux_ldap_parse_protocol_resp_op(s: &str) -> Option<DetectLdapRespOpData> {
     } else {
         LdapIndex::Any
     };
-    if let Some(ctx) = detect_parse_uint_enum::<u8, ProtocolOpCode>(parts[0]) {
-        let du8 = ctx;
-        return Some(DetectLdapRespOpData { du8, index });
+    return Some(index);
+}
+
+fn aux_ldap_parse_protocol_resp_op(s: &str) -> Option<DetectLdapRespOpData> {
+    let parts: Vec<&str> = s.split(',').collect();
+    if parts.len() > 2 {
+        return None;
     }
-    return None;
+
+    let index = parse_ldap_index(&parts)?;
+    let du8 = detect_parse_uint_enum::<u8, ProtocolOpCode>(parts[0])?;
+
+    Some(DetectLdapRespOpData { du8, index })
 }
 
 unsafe extern "C" fn ldap_parse_protocol_resp_op(