diff options
author | sahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-10-03 04:49:04 +0000 |
---|---|---|
committer | sahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-10-03 04:49:04 +0000 |
commit | e7d3fac73ccb585b173c9fb397a26cee78b7b110 (patch) | |
tree | 306ae8c6a2c9b783d74c4c84de5200c4480c417d /epan/dissectors/packet-dcerpc-ndr.c | |
parent | e7952e86afa691324c193046d3a3e71ec73fe649 (diff) |
add a helper that supports decoding either a 16 or 32 bit integer based
on whether nrd or ndr64 is used.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@30263 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-dcerpc-ndr.c')
-rw-r--r-- | epan/dissectors/packet-dcerpc-ndr.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/epan/dissectors/packet-dcerpc-ndr.c b/epan/dissectors/packet-dcerpc-ndr.c index a6e760bde1..dc1e01afc6 100644 --- a/epan/dissectors/packet-dcerpc-ndr.c +++ b/epan/dissectors/packet-dcerpc-ndr.c @@ -236,6 +236,28 @@ dissect_ndr_4or8 (tvbuff_t *tvb, gint offset, packet_info *pinfo, } } +/* This is used to dissect the new datatypes, such as enums + that are 2 bytes in size in NDR but 4 bytes in NDR64. +*/ +int +dissect_ndr_2or4 (tvbuff_t *tvb, gint offset, packet_info *pinfo, + proto_tree *tree, guint8 *drep, + int hfindex, guint32 *pdata) +{ + dcerpc_info *di; + + di=pinfo->private_data; + + if (di->call_data->flags & DCERPC_IS_NDR64) { + return dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hfindex, pdata); + } else { + guint16 val; + offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hfindex, &val); + *pdata = val; + return offset; + } +} + int PIDL_dissect_uint32 (tvbuff_t *tvb, gint offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, |