diff options
author | Jaap Keuter <jaap.keuter@xs4all.nl> | 2019-09-14 09:42:57 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2019-09-14 11:32:01 +0000 |
commit | 608dbda8eeefeb1c79fd93c1848515d8bc6b4ca1 (patch) | |
tree | 00002261f1bd06776e350e16fc2b690484f36bdc /epan/dissectors/asn1/snmp | |
parent | b609096e43501b8bf5a62ea39ff8a963b1420c9f (diff) |
SNMP: handle Net-SNMP Engine Id of 12 octets
The Net-SNMP code creates an Engine Id size based on the compilation
size, either 8 or 12 octets long. Current implementation handles 32 bit
compilation of Net-SNMP (resulting in 8 octets), this change adds
handling of 64 bit compilation of Net-SNMP (resulting in 12 octets).
Bug: 16051
Change-Id: I256f9a7ad2fd219492e4ebc413ef24cd2c210e0b
Reviewed-on: https://code.wireshark.org/review/34520
Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl>
Petri-Dish: Jaap Keuter <jaap.keuter@xs4all.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/asn1/snmp')
-rw-r--r-- | epan/dissectors/asn1/snmp/packet-snmp-template.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/epan/dissectors/asn1/snmp/packet-snmp-template.c b/epan/dissectors/asn1/snmp/packet-snmp-template.c index 66f42dc423..8a9ecfd38b 100644 --- a/epan/dissectors/asn1/snmp/packet-snmp-template.c +++ b/epan/dissectors/asn1/snmp/packet-snmp-template.c @@ -1201,16 +1201,16 @@ dissect_snmp_engineid(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int o /* most common enterprise-specific format: (ucd|net)-snmp random */ if ((enterpriseid==2021)||(enterpriseid==8072)) { proto_item_append_text(item, (enterpriseid==2021) ? ": UCD-SNMP Random" : ": Net-SNMP Random"); - /* demystify: 4B random, 4B epoch seconds */ - if (len_remain==8) { - proto_tree_add_item(tree, hf_snmp_engineid_data, tvb, offset, 4, ENC_NA); - seconds = tvb_get_letohl(tvb, offset+4); + /* demystify: 4B/8B random, 4B epoch seconds */ + if ((len_remain==8) || (len_remain==12)) { + proto_tree_add_item(tree, hf_snmp_engineid_data, tvb, offset, len_remain - 4, ENC_NA); + seconds = tvb_get_letohl(tvb, offset + (len_remain - 4)); ts.secs = seconds; ts.nsecs = 0; - proto_tree_add_time_format_value(tree, hf_snmp_engineid_time, tvb, offset+4, 4, + proto_tree_add_time_format_value(tree, hf_snmp_engineid_time, tvb, offset + (len_remain - 4), 4, &ts, "%s", abs_time_secs_to_str(wmem_packet_scope(), seconds, ABSOLUTE_TIME_LOCAL, TRUE)); - offset+=8; + offset+=len_remain; len_remain=0; } break; |