aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-windows-common.c
diff options
context:
space:
mode:
authorHannes Mezger <hannes.mezger@ascolab.com>2014-06-12 16:49:40 +0200
committerAnders Broman <a.broman58@gmail.com>2014-06-17 17:09:03 +0000
commit9991f43f273878021b41a9ba7fddb375bdfbab21 (patch)
tree42604ef61327a4fdeee82776751ad2016f865973 /epan/dissectors/packet-windows-common.c
parentd1cdbd715a5c5e9395d9672394783061dd3a4bf2 (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.c21
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;