diff options
author | Michael Mann <mmann78@netscape.net> | 2014-06-26 20:33:02 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-06-29 13:10:02 +0000 |
commit | fe4b7ee625c046bc09a7d8ae55afb0e16cb17fc3 (patch) | |
tree | c4311cf830bd0ccc100f7a59808f39609ba02b24 /epan/dissectors/packet-gsm_a_common.c | |
parent | e1a8c9599fadc787253115316c549e849f377fd2 (diff) |
convert to proto_tree_add_subtree[_format]
Change-Id: If110de1e0555637264f86f1508858d569871a9c7
Reviewed-on: https://code.wireshark.org/review/2675
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-gsm_a_common.c')
-rw-r--r-- | epan/dissectors/packet-gsm_a_common.c | 146 |
1 files changed, 67 insertions, 79 deletions
diff --git a/epan/dissectors/packet-gsm_a_common.c b/epan/dissectors/packet-gsm_a_common.c index b676e20b30..2a1c7da81b 100644 --- a/epan/dissectors/packet-gsm_a_common.c +++ b/epan/dissectors/packet-gsm_a_common.c @@ -733,6 +733,7 @@ static int hf_gsm_a_geo_loc_offset_angle = -1; static int hf_gsm_a_geo_loc_included_angle = -1; static expert_field ei_gsm_a_extraneous_data = EI_INIT; +static expert_field ei_gsm_a_unknown_element = EI_INIT; static char a_bigbuf[1024]; @@ -1249,17 +1250,16 @@ guint16 elem_tlv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei elem_name = try_val_to_str_ext(idx, &elem_names_ext); - item = - proto_tree_add_text(tree, - tvb, curr_offset, parm_len + 1 + lengt_length, - "%s%s", elem_name ? elem_name : "Unknown - aborting dissection", - (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - /* idx is out of range */ - if (elem_name == NULL) + if (elem_name == NULL) { + proto_tree_add_expert_format(tree, pinfo, &ei_gsm_a_unknown_element, + tvb, curr_offset, parm_len + 1 + lengt_length, + "Unknown - aborting dissection%s", (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); return consumed; + } - subtree = proto_item_add_subtree(item, elem_ett[idx]); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, parm_len + 1 + lengt_length, elem_ett[idx], &item, + "%s%s", elem_name, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); proto_tree_add_uint(subtree, get_hf_elem_id(pdu_type), tvb, @@ -1342,17 +1342,16 @@ guint16 elem_telv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 ie elem_name = try_val_to_str_ext(idx, &elem_names_ext); - item = - proto_tree_add_text(tree, - tvb, curr_offset, parm_len + 1 + lengt_length, - "%s%s", elem_name ? elem_name : "Unknown - aborting dissection", - (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - /* idx is out of range */ - if (elem_name == NULL) + if (elem_name == NULL) { + proto_tree_add_expert_format(tree, pinfo, &ei_gsm_a_unknown_element, + tvb, curr_offset, parm_len + 1 + lengt_length, + "Unknown - aborting dissection%s", (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); return consumed; + } - subtree = proto_item_add_subtree(item, elem_ett[idx]); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, parm_len + 1 + lengt_length, elem_ett[idx], &item, + "%s%s", elem_name, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); proto_tree_add_uint(subtree, get_hf_elem_id(pdu_type), tvb, @@ -1427,15 +1426,16 @@ guint16 elem_tlv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 i elem_name = try_val_to_str_ext(idx, &elem_names_ext); - item = proto_tree_add_text(tree, tvb, curr_offset, parm_len + 1 + 2, - "%s%s", elem_name ? elem_name : "Unknown - aborting dissection", - (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - /* idx is out of range */ - if (elem_name == NULL) + if (elem_name == NULL) { + proto_tree_add_expert_format(tree, pinfo, &ei_gsm_a_unknown_element, + tvb, curr_offset, parm_len + 1 + 2, + "Unknown - aborting dissection%s", (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); return consumed; + } - subtree = proto_item_add_subtree(item, elem_ett[idx]); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, parm_len + 1 + 2, elem_ett[idx], &item, + "%s%s", elem_name, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); proto_tree_add_uint(subtree, get_hf_elem_id(pdu_type), tvb, @@ -1506,16 +1506,16 @@ guint16 elem_tv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei, { elem_name = try_val_to_str_ext(idx, &elem_names_ext); - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, - "%s%s", elem_name ? elem_name : "Unknown - aborting dissection", - (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - /* idx is out of range */ - if (elem_name == NULL) + if (elem_name == NULL) { + proto_tree_add_expert_format(tree, pinfo, &ei_gsm_a_unknown_element, + tvb, curr_offset, -1, + "Unknown - aborting dissection%s", (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); return consumed; + } - subtree = proto_item_add_subtree(item, elem_ett[idx]); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, elem_ett[idx], &item, + "%s%s", elem_name, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); proto_tree_add_uint(subtree, get_hf_elem_id(pdu_type), tvb, @@ -1584,17 +1584,16 @@ guint16 elem_tv_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint { elem_name = try_val_to_str_ext(idx, &elem_names_ext); - item = - proto_tree_add_text(tree, - tvb, curr_offset, -1, - "%s%s", elem_name ? elem_name : "Unknown - aborting dissection", - (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - /* idx is out of range */ - if (elem_name == NULL) + if (elem_name == NULL) { + proto_tree_add_expert_format(tree, pinfo, &ei_gsm_a_unknown_element, + tvb, curr_offset, -1, + "Unknown - aborting dissection%s", (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); return consumed; + } - subtree = proto_item_add_subtree(item, elem_ett[idx]); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, elem_ett[idx], &item, + "%s%s", elem_name, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); other_decode_bitfield_value(buf, oct, 0xf0, 8); proto_tree_add_text(subtree, @@ -1694,17 +1693,16 @@ elem_lv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_type, int elem_name = try_val_to_str_ext(idx, &elem_names_ext); - item = - proto_tree_add_text(tree, - tvb, curr_offset, parm_len + 1, - "%s%s", elem_name ? elem_name : "Unknown - aborting dissection", - (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - /* idx is out of range */ - if (elem_name == NULL) + if (elem_name == NULL) { + proto_tree_add_expert_format(tree, pinfo, &ei_gsm_a_unknown_element, + tvb, curr_offset, parm_len + 1, + "Unknown - aborting dissection%s", (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); return consumed; + } - subtree = proto_item_add_subtree(item, elem_ett[idx]); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, parm_len + 1, elem_ett[idx], &item, + "%s%s", elem_name, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); proto_tree_add_uint(subtree, hf_gsm_a_length, tvb, curr_offset, 1, parm_len); @@ -1763,15 +1761,16 @@ guint16 elem_lv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_ elem_name = try_val_to_str_ext(idx, &elem_names_ext); - item = proto_tree_add_text(tree, tvb, curr_offset, parm_len + 2, - "%s%s", elem_name ? elem_name : "Unknown - aborting dissection", - (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - /* idx is out of range */ - if (elem_name == NULL) + if (elem_name == NULL) { + proto_tree_add_expert_format(tree, pinfo, &ei_gsm_a_unknown_element, + tvb, curr_offset, parm_len + 2, + "Unknown - aborting dissection%s", (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); return consumed; + } - subtree = proto_item_add_subtree(item, elem_ett[idx]); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, parm_len + 2, elem_ett[idx], &item, + "%s%s", elem_name, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); proto_tree_add_uint(subtree, hf_gsm_a_length, tvb, curr_offset, 2, parm_len); @@ -1843,14 +1842,12 @@ guint16 elem_v(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_typ { gchar *a_add_string; - item = - proto_tree_add_text(tree, + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, 0, - "%s%s", elem_name, + elem_ett[idx], &item, "%s%s", elem_name, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - subtree = proto_item_add_subtree(item, elem_ett[idx]); - a_add_string= (gchar*)wmem_alloc(wmem_packet_scope(), 1024); a_add_string[0] = '\0'; consumed = (*elem_funcs[idx])(tvb, subtree, pinfo, curr_offset, -1, a_add_string, 1024); @@ -1889,16 +1886,14 @@ guint16 elem_v_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint p elem_name = try_val_to_str_ext(idx, &elem_names_ext); - item = proto_tree_add_text(tree, - tvb, curr_offset, 0, - "%s%s", elem_name ? elem_name : "Unknown - aborting dissection", - ""); - /* idx is out of range */ - if (elem_name == NULL) + if (elem_name == NULL) { + proto_tree_add_expert(tree, pinfo, &ei_gsm_a_unknown_element, + tvb, curr_offset, 0); return consumed; + } - subtree = proto_item_add_subtree(item, elem_ett[idx]); + subtree = proto_tree_add_subtree(tree, tvb, curr_offset, 0, elem_ett[idx], &item, elem_name); a_add_string= (gchar*)wmem_alloc(wmem_packet_scope(), 1024); a_add_string[0] = '\0'; @@ -2149,12 +2144,10 @@ de_lai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin curr_offset = offset; - item = proto_tree_add_text(tree, - tvb, curr_offset, 5, "%s", + subtree = proto_tree_add_subtree(tree, + tvb, curr_offset, 5, ett_gsm_common_elem[DE_LAI], &item, val_to_str_ext_const(DE_LAI, &gsm_common_elem_strings_ext, "")); - subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_LAI]); - octs[0] = tvb_get_guint8(tvb, curr_offset); octs[1] = tvb_get_guint8(tvb, curr_offset + 1); octs[2] = tvb_get_guint8(tvb, curr_offset + 2); @@ -2379,17 +2372,14 @@ de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs { guint32 curr_offset; proto_tree *subtree; - proto_item *item; curr_offset = offset; - item = - proto_tree_add_text(tree, - tvb, curr_offset, 1, "%s", + subtree = + proto_tree_add_subtree(tree, + tvb, curr_offset, 1, ett_gsm_common_elem[DE_MS_CM_1], NULL, val_to_str_ext_const(DE_MS_CM_1, &gsm_common_elem_strings_ext, "")); - subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_1]); - proto_tree_add_item(subtree, hf_gsm_a_b8spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(subtree, hf_gsm_a_MSC_rev, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -3320,20 +3310,17 @@ de_pd_sapi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs guint8 oct; guint32 curr_offset; proto_tree *subtree; - proto_item *item; const gchar *str; curr_offset = offset; oct = tvb_get_guint8(tvb, curr_offset); - item = - proto_tree_add_text(tree, - tvb, curr_offset, 1, "%s", + subtree = + proto_tree_add_subtree(tree, + tvb, curr_offset, 1, ett_gsm_dtap_elem[DE_PD_SAPI], NULL, val_to_str_ext_const(DE_PD_SAPI, &gsm_dtap_elem_strings_ext, "")); - subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_PD_SAPI]); - proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, curr_offset<<3, 2, ENC_BIG_ENDIAN); switch ((oct & 0x30) >> 4) @@ -4475,6 +4462,7 @@ proto_register_gsm_a_common(void) static ei_register_info ei[] = { { &ei_gsm_a_extraneous_data, { "gsm_a.extraneous_data", PI_PROTOCOL, PI_NOTE, "Extraneous Data, dissector bug or later version spec(report to wireshark.org)", EXPFILL }}, + { &ei_gsm_a_unknown_element, { "gsm_a.unknown_element", PI_PROTOCOL, PI_ERROR, "Unknown - aborting dissection", EXPFILL }}, }; expert_module_t* expert_a_common; |