]> 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)
committerShivani Bhardwaj <shivanib134@gmail.com>
Wed, 9 Feb 2022 14:31:38 +0000 (20:01 +0530)
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 102b852a108a5d2ce00fcd37233595f78985fe81..a9a003428d5495a863aea76382ecdb0398b94e05 100644 (file)
@@ -19,6 +19,7 @@ use std::ptr;
 use crate::core::*;
 use crate::smb::smb::*;
 use crate::dcerpc::detect::{DCEIfaceData, DCEOpnumData, DETECT_DCE_OPNUM_RANGE_UNINITIALIZED};
+use crate::dcerpc::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_match_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 {
                 for range in dce_data.data.iter() {
                     if range.range2 == DETECT_DCE_OPNUM_RANGE_UNINITIALIZED {
                         if range.range1 == x.opnum as u32 {