diff options
author | Anders Broman <anders.broman@ericsson.com> | 2010-01-11 07:52:17 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2010-01-11 07:52:17 +0000 |
commit | 0d26e8ad2d3dbb5e660d06359bbce15b2e03ccaa (patch) | |
tree | 47b2603665066eb20aab929e2685d0e1e5141140 /asn1/goose | |
parent | 19beda3affcba6b8779eeaa086c674c916a6db35 (diff) |
From Gonzalo Casas:
Corrected utc-time display in goose dissector.
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4378
svn path=/trunk/; revision=31484
Diffstat (limited to 'asn1/goose')
-rw-r--r-- | asn1/goose/goose.cnf | 55 | ||||
-rw-r--r-- | asn1/goose/packet-goose-template.c | 2 |
2 files changed, 56 insertions, 1 deletions
diff --git a/asn1/goose/goose.cnf b/asn1/goose/goose.cnf index dc8fa6ebd4..7f613345b1 100644 --- a/asn1/goose/goose.cnf +++ b/asn1/goose/goose.cnf @@ -13,6 +13,59 @@ #.TYPE_RENAME -#.FIELD_RENAME +#.FN_BODY UtcTime + + guint32 len; + proto_item *cause; + guint32 seconds; + guint32 fraction; + guint32 nanoseconds; + nstime_t ts; + gchar * ptime; + + len = tvb_length_remaining(tvb, offset); + + if(len != 8) + { + cause = proto_tree_add_text(tree, tvb, offset, len, + "BER Error: malformed UTCTime encoding, " + "length must be 8 bytes"); + proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); + expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: malformed UTCTime encoding"); + if(hf_index >= 0) + { + proto_tree_add_string(tree, hf_index, tvb, offset, len, "????"); + } + return offset; + } + + seconds = tvb_get_ntohl(tvb, offset); + fraction = tvb_get_ntoh24(tvb, offset+4) * 0x100; /* Only 3 bytes are recommended */ + nanoseconds = (guint32)( ((guint64)fraction * G_GINT64_CONSTANT(1000000000U)) / G_GINT64_CONSTANT(0x100000000U) ) ; + + ts.secs = seconds; + ts.nsecs = nanoseconds; + + ptime = abs_time_to_str(&ts, TRUE); + + if(hf_index >= 0) + { + proto_tree_add_string(tree, hf_index, tvb, offset, len, ptime); + } + + return offset; + + + +#.TYPE_ATTR +UtcTime TYPE = FT_STRING DISPLAY = BASE_NONE + + +#.FIELD_RENAME +GetReferenceRequestPdu/offset getReferenceRequestPDU_offset +GSEMngtResponses/getGsReference gseMngtResponses_GetGSReference +GSEMngtResponses/getGoReference gseMngtResponses_GetGOReference +GSEMngtResponses/getGSSEDataOffset gseMngtResponses_GetGSSEDataOffset +GSEMngtResponses/getGOOSEElementNumber gseMngtResponses_GetGOOSEElementNumber #.END diff --git a/asn1/goose/packet-goose-template.c b/asn1/goose/packet-goose-template.c index 10e31a6b1c..01996bf7d4 100644 --- a/asn1/goose/packet-goose-template.c +++ b/asn1/goose/packet-goose-template.c @@ -31,6 +31,8 @@ #include <epan/packet.h> #include <epan/asn1.h> #include <epan/etypes.h> +#include <epan/expert.h> +#include <epan/nstime.h> #include <stdio.h> #include <string.h> |