]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
smb/dce_opnum: use DCERPC_TYPE_REQUEST
authorEloy Pérez González <zer1t0ps@protonmail.com>
Fri, 22 Oct 2021 13:00:11 +0000 (15:00 +0200)
committerVictor Julien <vjulien@oisf.net>
Tue, 14 Jun 2022 10:26:18 +0000 (12:26 +0200)
The smb dce_opnum keyword doesn't match the dcerpc requests/responses.
This occurs because in the rs_smb_tx_match_dce_opnum function, the
x.req_cmd is matched against the erroneous code 1. Fix this by using
DCERPC_TYPE_REQUEST for the comparison instead.

Ticket: 4767
(cherry picked from commit 8dca3d0416f539f5086f72f69d71cfc418355a2f)

rust/src/smb/detect.rs

index 5c2b344cb08f2a462ab3e31d73ac45acefcbcdc0..86f6a60a34cc6bae435d0ba7b13a3ea521301928 100644 (file)
@@ -19,6 +19,7 @@ use std;
 use std::ptr;
 use crate::core::*;
 use crate::smb::smb::*;
+use crate::smb::dcerpc::DCERPC_TYPE_REQUEST;
 
 #[no_mangle]
 pub extern "C" fn rs_smb_tx_get_share(tx: &mut SMBTransaction,
@@ -117,7 +118,7 @@ pub extern "C" fn rs_smb_tx_get_dce_opnum(tx: &mut SMBTransaction,
     SCLogDebug!("rs_smb_tx_get_dce_opnum: start");
     match tx.type_data {
         Some(SMBTransactionTypeData::DCERPC(ref x)) => {
-            if x.req_cmd == 1 { // REQUEST
+            if x.req_cmd == DCERPC_TYPE_REQUEST {
                 unsafe {
                     *opnum = x.opnum as u16;
                     return 1;