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)
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,
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;