diff options
author | Hannes Mezger <hannes.mezger@ascolab.com> | 2014-06-12 16:49:40 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2014-06-17 17:09:03 +0000 |
commit | 9991f43f273878021b41a9ba7fddb375bdfbab21 (patch) | |
tree | 42604ef61327a4fdeee82776751ad2016f865973 /epan/dissectors/packet-windows-common.c | |
parent | d1cdbd715a5c5e9395d9672394783061dd3a4bf2 (diff) |
Add dissect_nt_64bit_time_ex for retrieving the created proto_item
Using dissect_nt_64bit_time it is not possible to access the created proto_item afterwards, hence the new function.
Change-Id: I39aca92536a53841045c30b601b6ec1a7d8bfb4e
Reviewed-on: https://code.wireshark.org/review/2160
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-windows-common.c')
-rw-r--r-- | epan/dissectors/packet-windows-common.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/epan/dissectors/packet-windows-common.c b/epan/dissectors/packet-windows-common.c index 2147d6be89..fd63f7518d 100644 --- a/epan/dissectors/packet-windows-common.c +++ b/epan/dissectors/packet-windows-common.c @@ -1166,6 +1166,12 @@ nt_time_to_nstime(guint32 filetime_high, guint32 filetime_low, nstime_t *tv) int dissect_nt_64bit_time(tvbuff_t *tvb, proto_tree *tree, int offset, int hf_date) { + return dissect_nt_64bit_time_ex(tvb, tree, offset, hf_date, NULL); +} + +int +dissect_nt_64bit_time_ex(tvbuff_t *tvb, proto_tree *tree, int offset, int hf_date, proto_item **createdItem) +{ guint32 filetime_high, filetime_low; nstime_t ts; @@ -1174,30 +1180,35 @@ dissect_nt_64bit_time(tvbuff_t *tvb, proto_tree *tree, int offset, int hf_date) the meaning of this one is yet unknown */ if (tree) { + proto_item *item = NULL; filetime_low = tvb_get_letohl(tvb, offset); filetime_high = tvb_get_letohl(tvb, offset + 4); if (filetime_low == 0 && filetime_high == 0) { - proto_tree_add_text(tree, tvb, offset, 8, + item = proto_tree_add_text(tree, tvb, offset, 8, "%s: No time specified (0)", proto_registrar_get_name(hf_date)); } else if(filetime_low==0 && filetime_high==0x80000000){ - proto_tree_add_text(tree, tvb, offset, 8, + item = proto_tree_add_text(tree, tvb, offset, 8, "%s: Infinity (relative time)", proto_registrar_get_name(hf_date)); } else if(filetime_low==0xffffffff && filetime_high==0x7fffffff){ - proto_tree_add_text(tree, tvb, offset, 8, + item = proto_tree_add_text(tree, tvb, offset, 8, "%s: Infinity (absolute time)", proto_registrar_get_name(hf_date)); } else { if (nt_time_to_nstime(filetime_high, filetime_low, &ts)) { - proto_tree_add_time(tree, hf_date, tvb, + item = proto_tree_add_time(tree, hf_date, tvb, offset, 8, &ts); } else { - proto_tree_add_text(tree, tvb, offset, 8, + item = proto_tree_add_text(tree, tvb, offset, 8, "%s: Time can't be converted", proto_registrar_get_name(hf_date)); } } + if (createdItem != NULL) + { + *createdItem = item; + } } offset += 8; |