aboutsummaryrefslogtreecommitdiffstats
path: root/packet-smb-pipe.c
diff options
context:
space:
mode:
Diffstat (limited to 'packet-smb-pipe.c')
-rw-r--r--packet-smb-pipe.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/packet-smb-pipe.c b/packet-smb-pipe.c
index 7ac1e310e7..ea80a60c53 100644
--- a/packet-smb-pipe.c
+++ b/packet-smb-pipe.c
@@ -8,7 +8,7 @@ XXX Fixme : shouldnt show [malformed frame] for long packets
* significant rewrite to tvbuffify the dissector, Ronnie Sahlberg and
* Guy Harris 2001
*
- * $Id: packet-smb-pipe.c,v 1.38 2001/11/03 00:58:49 guy Exp $
+ * $Id: packet-smb-pipe.c,v 1.39 2001/11/12 08:58:43 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -2218,6 +2218,22 @@ dissect_pipe_lanman(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
return TRUE;
}
+static heur_dissector_list_t msrpc_heur_subdissector_list;
+
+static gboolean
+dissect_pipe_msrpc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
+{
+ gboolean result;
+
+ result = dissector_try_heuristic(msrpc_heur_subdissector_list, tvb,
+ pinfo, parent_tree);
+
+ if (!result)
+ dissect_data(tvb, 0, pinfo, parent_tree);
+
+ return TRUE;
+}
+
gboolean
dissect_pipe_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -2233,6 +2249,16 @@ dissect_pipe_smb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return dissect_pipe_lanman(tvb, pinfo, tree);
}
+ /* MSRPC pipes are transacts on an unnamed pipe (i.e \PIPE\) which
+ is stripped off in the transact dissector */
+
+ if (smb_info->trans_cmd && strcmp(smb_info->trans_cmd, "") == 0) {
+
+ /* Try to decode a msrpc pipe */
+
+ return dissect_pipe_msrpc(tvb, pinfo, tree);
+ }
+
return FALSE;
}
@@ -2567,4 +2593,6 @@ register_proto_smb_pipe(void)
"Microsoft Windows Lanman Remote API Protocol", "LANMAN", "lanman");
proto_register_field_array(proto_smb_lanman, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+
+ register_heur_dissector_list("msrpc", &msrpc_heur_subdissector_list);
}