aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-smb-direct.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-smb-direct.c')
-rw-r--r--epan/dissectors/packet-smb-direct.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/epan/dissectors/packet-smb-direct.c b/epan/dissectors/packet-smb-direct.c
index af8d3a6d81..cd7af8e9e8 100644
--- a/epan/dissectors/packet-smb-direct.c
+++ b/epan/dissectors/packet-smb-direct.c
@@ -31,6 +31,7 @@
#include <glib.h>
#include "packet-windows-common.h"
+#include "packet-iwarp-ddp-rdmap.h"
static int proto_smb_direct = -1;
@@ -358,10 +359,25 @@ is_smb_direct(tvbuff_t *tvb, packet_info *pinfo _U_)
static gboolean
dissect_smb_direct_iwarp_heur(tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *parent_tree, void *data _U_)
+ proto_tree *parent_tree, void *data)
{
+ struct rdmapinfo *info = (struct rdmapinfo *)data;
enum SMB_DIRECT_HDR_TYPE hdr_type;
+ if (info == NULL) {
+ return FALSE;
+ }
+
+ switch (info->opcode) {
+ case RDMA_SEND:
+ case RDMA_SEND_INVALIDATE:
+ case RDMA_SEND_SE:
+ case RDMA_SEND_SE_INVALIDATE:
+ break;
+ default:
+ return FALSE;
+ }
+
hdr_type = is_smb_direct(tvb, pinfo);
if (hdr_type == SMB_DIRECT_HDR_UNKNOWN) {
return FALSE;