From fc6a51199763ce907561524fdbd96560d9dec36e Mon Sep 17 00:00:00 2001 From: Alexis La Goutte Date: Mon, 29 Jan 2024 16:16:39 +0100 Subject: [PATCH] x50ce: addic Dissection of IPv4/IPv6 when lenght is 8 (IPv4) or 32 (IPv6) (+mask) FIX #19626 --- .../asn1/x509ce/packet-x509ce-template.c | 8 ++++++++ epan/dissectors/asn1/x509ce/x509ce.cnf | 12 +++++++++++ epan/dissectors/packet-x509ce.c | 20 +++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/epan/dissectors/asn1/x509ce/packet-x509ce-template.c b/epan/dissectors/asn1/x509ce/packet-x509ce-template.c index 44cb2429bb..c525eeca62 100644 --- a/epan/dissectors/asn1/x509ce/packet-x509ce-template.c +++ b/epan/dissectors/asn1/x509ce/packet-x509ce-template.c @@ -35,7 +35,9 @@ static int hf_x509ce_id_ce_invalidityDate; static int hf_x509ce_id_ce_baseUpdateTime; static int hf_x509ce_object_identifier_id; static int hf_x509ce_IPAddress_ipv4; +static int hf_x509ce_IPAddress_ipv4_mask; static int hf_x509ce_IPAddress_ipv6; +static int hf_x509ce_IPAddress_ipv6_mask; static int hf_x509ce_IPAddress_unknown; #include "packet-x509ce-hf.c" @@ -120,9 +122,15 @@ void proto_register_x509ce(void) { { &hf_x509ce_IPAddress_ipv4, { "iPAddress", "x509ce.IPAddress.ipv4", FT_IPv4, BASE_NONE, NULL, 0, "IPv4 address", HFILL }}, + { &hf_x509ce_IPAddress_ipv4_mask, + { "iPAddress Mask", "x509ce.IPAddress.ipv4_mask", FT_IPv4, BASE_NONE, NULL, 0, + "IPv4 address Mask", HFILL }}, { &hf_x509ce_IPAddress_ipv6, { "iPAddress", "x509ce.IPAddress.ipv6", FT_IPv6, BASE_NONE, NULL, 0, "IPv6 address", HFILL }}, + { &hf_x509ce_IPAddress_ipv6_mask, + { "iPAddress Mask", "x509ce.IPAddress.ipv6_mask", FT_IPv6, BASE_NONE, NULL, 0, + "IPv6 address Mask", HFILL }}, { &hf_x509ce_IPAddress_unknown, { "iPAddress", "x509ce.IPAddress.unknown", FT_BYTES, BASE_NONE, NULL, 0, "Unknown Address", HFILL }}, diff --git a/epan/dissectors/asn1/x509ce/x509ce.cnf b/epan/dissectors/asn1/x509ce/x509ce.cnf index 9f900b620d..9a43b7dd01 100644 --- a/epan/dissectors/asn1/x509ce/x509ce.cnf +++ b/epan/dissectors/asn1/x509ce/x509ce.cnf @@ -184,10 +184,22 @@ EnhancedCertificateAssertion/pathToName enhancedPathToName proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; break; + case 8: /* IPv4 + Mask*/ + proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv4_mask, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + break; case 16: /* IPv6 */ proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv6, tvb, offset, 16, ENC_NA); offset += 16; break; + case 32: /* IPv6 + Mask */ + proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv6, tvb, offset, 16, ENC_NA); + offset += 16; + proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv6_mask, tvb, offset, 16, ENC_NA); + offset += 16; + break; default: /* Unknown */ proto_tree_add_item(tree, hf_x509ce_IPAddress_unknown, tvb, offset, len, ENC_NA); offset += len; diff --git a/epan/dissectors/packet-x509ce.c b/epan/dissectors/packet-x509ce.c index 2d8d51105f..1553afc288 100644 --- a/epan/dissectors/packet-x509ce.c +++ b/epan/dissectors/packet-x509ce.c @@ -40,7 +40,9 @@ static int hf_x509ce_id_ce_invalidityDate; static int hf_x509ce_id_ce_baseUpdateTime; static int hf_x509ce_object_identifier_id; static int hf_x509ce_IPAddress_ipv4; +static int hf_x509ce_IPAddress_ipv4_mask; static int hf_x509ce_IPAddress_ipv6; +static int hf_x509ce_IPAddress_ipv6_mask; static int hf_x509ce_IPAddress_unknown; static int hf_x509ce_AuthorityKeyIdentifier_PDU; /* AuthorityKeyIdentifier */ static int hf_x509ce_SubjectKeyIdentifier_PDU; /* SubjectKeyIdentifier */ @@ -406,10 +408,22 @@ dissect_x509ce_T_iPAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; break; + case 8: /* IPv4 + Mask*/ + proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv4_mask, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + break; case 16: /* IPv6 */ proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv6, tvb, offset, 16, ENC_NA); offset += 16; break; + case 32: /* IPv6 + Mask */ + proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv6, tvb, offset, 16, ENC_NA); + offset += 16; + proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv6_mask, tvb, offset, 16, ENC_NA); + offset += 16; + break; default: /* Unknown */ proto_tree_add_item(tree, hf_x509ce_IPAddress_unknown, tvb, offset, len, ENC_NA); offset += len; @@ -2123,9 +2137,15 @@ void proto_register_x509ce(void) { { &hf_x509ce_IPAddress_ipv4, { "iPAddress", "x509ce.IPAddress.ipv4", FT_IPv4, BASE_NONE, NULL, 0, "IPv4 address", HFILL }}, + { &hf_x509ce_IPAddress_ipv4_mask, + { "iPAddress Mask", "x509ce.IPAddress.ipv4_mask", FT_IPv4, BASE_NONE, NULL, 0, + "IPv4 address Mask", HFILL }}, { &hf_x509ce_IPAddress_ipv6, { "iPAddress", "x509ce.IPAddress.ipv6", FT_IPv6, BASE_NONE, NULL, 0, "IPv6 address", HFILL }}, + { &hf_x509ce_IPAddress_ipv6_mask, + { "iPAddress Mask", "x509ce.IPAddress.ipv6_mask", FT_IPv6, BASE_NONE, NULL, 0, + "IPv6 address Mask", HFILL }}, { &hf_x509ce_IPAddress_unknown, { "iPAddress", "x509ce.IPAddress.unknown", FT_BYTES, BASE_NONE, NULL, 0, "Unknown Address", HFILL }},