aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorAndersBroman <anders.broman@ericsson.com>2015-01-12 13:58:49 +0100
committerAnders Broman <a.broman58@gmail.com>2015-01-12 13:01:00 +0000
commit554a3972cd085a17d7f7a9ed4d235234994907a3 (patch)
tree2a78433106a7ca9bb14ab64c8b53bd59544444f4 /asn1
parentd7bce3314085d0dc29d0d4eee3234770f066e61d (diff)
[GPRS CDR] Add expert info for unknown record types.
Change-Id: Ib485f435b6c423b06c7c31f2cf681d01261bfc15 Reviewed-on: https://code.wireshark.org/review/6504 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'asn1')
-rw-r--r--asn1/gprscdr/gprscdr.cnf14
-rw-r--r--asn1/gprscdr/packet-gprscdr-template.c2
2 files changed, 16 insertions, 0 deletions
diff --git a/asn1/gprscdr/gprscdr.cnf b/asn1/gprscdr/gprscdr.cnf
index b6cdd3f1ec..b622dce0c1 100644
--- a/asn1/gprscdr/gprscdr.cnf
+++ b/asn1/gprscdr/gprscdr.cnf
@@ -153,6 +153,20 @@ GPRSRecord
subtree = proto_item_add_subtree(actx->created_item, ett_gprscdr_plmn_id);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, TRUE);
+#.FN_BODY GPRSRecord VAL_PTR = &branch_taken
+proto_item *item;
+gint branch_taken, t_offset = offset;
+gint32 tag;
+
+ %(DEFAULT_BODY)s
+
+ if(branch_taken == -1){
+ get_ber_identifier(tvb, t_offset, NULL, NULL, &tag);
+ item = proto_tree_add_uint(tree, hf_index, tvb, t_offset, 1, tag);
+ dissect_ber_identifier(actx->pinfo, tree, tvb, t_offset, NULL, NULL, &tag);
+ expert_add_info_format(actx->pinfo, item, &ei_gprscdr_choice_not_found,
+ "Record type(BER choice) not found: %%u", tag);
+ }
#.TYPE_ATTR
IPBinaryAddress/iPBinV4Address TYPE = FT_IPv4 DISPLAY = BASE_NONE
IPBinaryAddress/iPBinV6Address TYPE = FT_IPv6 DISPLAY = BASE_NONE
diff --git a/asn1/gprscdr/packet-gprscdr-template.c b/asn1/gprscdr/packet-gprscdr-template.c
index 24d8c08ae3..eec55555e3 100644
--- a/asn1/gprscdr/packet-gprscdr-template.c
+++ b/asn1/gprscdr/packet-gprscdr-template.c
@@ -50,6 +50,7 @@ static int ett_gprscdr_managementextension_information = -1;
#include "packet-gprscdr-ett.c"
static expert_field ei_gprscdr_not_dissected = EI_INIT;
+static expert_field ei_gprscdr_choice_not_found = EI_INIT;
/* Global variables */
static const char *obj_id = NULL;
@@ -86,6 +87,7 @@ proto_register_gprscdr(void)
static ei_register_info ei[] = {
{ &ei_gprscdr_not_dissected, { "gprscdr.not_dissected", PI_UNDECODED, PI_WARN, "Not dissected", EXPFILL }},
+ { &ei_gprscdr_choice_not_found, { "gprscdr.error.choice_not_found", PI_MALFORMED, PI_WARN, "GPRS CDR Error: This choice field(Record type) was not found", EXPFILL }},
};
expert_module_t* expert_gprscdr;