aboutsummaryrefslogtreecommitdiffstats
path: root/packet-dcerpc.c
diff options
context:
space:
mode:
authorsahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2003-01-06 11:27:03 +0000
committersahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2003-01-06 11:27:03 +0000
commit0c71cae252800c71d79c5ecc23a24eb924a00b0e (patch)
tree075a27ad170514bc94591e83f5e9f23dfad94117 /packet-dcerpc.c
parente7672a453262857601415cb6f0266d5dc1db14a1 (diff)
Update DCERPC so that for (NTLMSSP) PDUs that have been decrypted
we also call the proper DCERPC subdissector. With this change ethereal will call the SAMR dissector and dissect the decrypted SAMR packets in devins capture. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6855 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'packet-dcerpc.c')
-rw-r--r--packet-dcerpc.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/packet-dcerpc.c b/packet-dcerpc.c
index 3ab5859e2e..a893a30c60 100644
--- a/packet-dcerpc.c
+++ b/packet-dcerpc.c
@@ -2,7 +2,7 @@
* Routines for DCERPC packet disassembly
* Copyright 2001, Todd Sabin <tas@webspan.net>
*
- * $Id: packet-dcerpc.c,v 1.94 2002/12/31 08:08:19 guy Exp $
+ * $Id: packet-dcerpc.c,v 1.95 2003/01/06 11:27:00 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -37,6 +37,7 @@
#include "prefs.h"
#include "reassemble.h"
#include "tap.h"
+#include "packet-ntlmssp.h"
static int dcerpc_tap = -1;
@@ -1418,9 +1419,29 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree,
/* NTLMSSP */
tvbuff_t *ntlmssp_tvb;
ntlmssp_tvb = tvb_new_subset(tvb, offset, length, length);
-
+ pinfo->decrypted_data=NULL;
+
call_dissector(ntlmssp_enc_payload_handle, ntlmssp_tvb, pinfo,
sub_tree);
+
+ if(pinfo->decrypted_data){
+ ntlmssp_decrypted_info_t *ndi=pinfo->decrypted_data;
+
+
+ sub_dissect = info->request ? proc->dissect_rqst : proc->dissect_resp;
+ if (sub_dissect) {
+ saved_proto = pinfo->current_proto;
+ saved_private_data = pinfo->private_data;
+ pinfo->current_proto = sub_proto->name;
+ pinfo->private_data = (void *)info;
+
+ init_ndr_pointer_list(pinfo);
+ offset = sub_dissect (ndi->decr_tvb, 0, pinfo, ndi->decr_tree, drep);
+
+ pinfo->current_proto = saved_proto;
+ pinfo->private_data = saved_private_data;
+ }
+ }
break;
}
}