aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dcerpc.c
diff options
context:
space:
mode:
authorsahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2009-10-01 08:55:25 +0000
committersahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2009-10-01 08:55:25 +0000
commit58e2b7ce11e5e4dbc78b4c368486464a96a43747 (patch)
tree680ee88b7424678ce4df8dbe44db1abc63d2d0fd /epan/dissectors/packet-dcerpc.c
parent2bd62c2505b02b4746d98ab39f82467d279f7a14 (diff)
we need to copy the information about the transport syntax, i.e. i fit
is ndr64 or not, from the bind information to the data we store for each individual pdu, since the trnasport syntax may change dynamically back and forth between "normal" and "ndr64" on the same conversation. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@30226 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-dcerpc.c')
-rw-r--r--epan/dissectors/packet-dcerpc.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c
index 9fe8320605..1f4be1468a 100644
--- a/epan/dissectors/packet-dcerpc.c
+++ b/epan/dissectors/packet-dcerpc.c
@@ -3363,7 +3363,7 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
call_value=se_alloc (sizeof (dcerpc_call_value));
call_value->uuid = bind_value->uuid;
call_value->ver = bind_value->ver;
- call_value->object_uuid = obj_id;
+ call_value->object_uuid = obj_id;
call_value->opnum = opnum;
call_value->req_frame=pinfo->fd->num;
call_value->req_time=pinfo->fd->abs_ts;
@@ -3372,6 +3372,11 @@ dissect_dcerpc_cn_rqst (tvbuff_t *tvb, gint offset, packet_info *pinfo,
call_value->se_data = NULL;
call_value->private_data = NULL;
call_value->pol = NULL;
+ call_value->flags = 0;
+ if (!memcmp(&bind_value->transport, &ndr64_uuid, sizeof(ndr64_uuid))) {
+ call_value->flags |= DCERPC_IS_NDR64;
+ }
+
g_hash_table_insert (dcerpc_cn_calls, call_key, call_value);
new_matched_key = se_alloc(sizeof (dcerpc_matched_key));
@@ -3643,6 +3648,7 @@ dissect_dcerpc_cn_fault (tvbuff_t *tvb, gint offset, packet_info *pinfo,
new_matched_key = se_alloc(sizeof (dcerpc_matched_key));
*new_matched_key = matched_key;
g_hash_table_insert (dcerpc_matched, new_matched_key, call_value);
+
value = call_value;
if(call_value->rep_frame==0){
call_value->rep_frame=pinfo->fd->num;
@@ -4543,6 +4549,9 @@ dissect_dcerpc_dg_rqst (tvbuff_t *tvb, int offset, packet_info *pinfo,
call_value->se_data = NULL;
call_value->private_data = NULL;
call_value->pol = NULL;
+ /* NDR64 is not available on dg transports ?*/
+ call_value->flags = 0;
+
g_hash_table_insert (dcerpc_dg_calls, call_key, call_value);
new_matched_key = se_alloc(sizeof (dcerpc_matched_key));