diff options
author | sahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-10-01 08:55:25 +0000 |
---|---|---|
committer | sahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-10-01 08:55:25 +0000 |
commit | 58e2b7ce11e5e4dbc78b4c368486464a96a43747 (patch) | |
tree | 680ee88b7424678ce4df8dbe44db1abc63d2d0fd /epan/dissectors/packet-dcerpc.c | |
parent | 2bd62c2505b02b4746d98ab39f82467d279f7a14 (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.c | 11 |
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)); |