diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2009-10-01 08:55:25 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2009-10-01 08:55:25 +0000 |
commit | 2ea2589afb938ad3d61635e9a55880af72424c1a (patch) | |
tree | 680ee88b7424678ce4df8dbe44db1abc63d2d0fd /epan/dissectors/packet-dcerpc.c | |
parent | f9fb2a7d7adeb5b5a18d37a77a3d59c6f20a108c (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.
svn path=/trunk/; revision=30226
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)); |