summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-05-24 10:30:01 -0400
committerMichael Mann <mmann78@netscape.net>2017-05-24 16:50:02 +0000
commit45dbd239ef55f87741f782950a02cc998d48508a (patch)
tree5dfa4f522b901ae1d6d13c10b71cbd38f0bdf160
parente108df022f20a00cdb4f0f05d201af9c3b8eab3c (diff)
downloadwireshark-45dbd239ef55f87741f782950a02cc998d48508a.tar.gz
packet-icq.c: Use more FT_UINT_STRING
Makes it simpler than proto_tree_add_string + tvb_get_string_enc combo. Change-Id: Id25d1cc1ed727a6211d9ce113d54dd29c9bbdfcb Reviewed-on: https://code.wireshark.org/review/21745 Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r--epan/dissectors/packet-icq.c140
1 files changed, 58 insertions, 82 deletions
diff --git a/epan/dissectors/packet-icq.c b/epan/dissectors/packet-icq.c
index 5ca6810250..bbd321db16 100644
--- a/epan/dissectors/packet-icq.c
+++ b/epan/dissectors/packet-icq.c
@@ -94,6 +94,10 @@ static int hf_icq_nickname = -1;
static int hf_icq_first_name = -1;
static int hf_icq_last_name = -1;
static int hf_icq_email = -1;
+static int hf_icq_nickname_uint_string = -1;
+static int hf_icq_first_name_uint_string = -1;
+static int hf_icq_last_name_uint_string = -1;
+static int hf_icq_email_uint_string = -1;
static int hf_icq_primary_email = -1;
static int hf_icq_secondary_email = -1;
static int hf_icq_old_email = -1;
@@ -480,29 +484,6 @@ decrypt_v5(guchar *bfr, guint32 size,guint32 key)
}
}
-/*
- * The packet has, at offset "offset" a (len, string) pair.
- * Display the length and string in the tree.
- *
- * If anything is wrong, return -1, since -1 is not a valid string
- * length. Else, return the number of chars processed.
- */
-static guint16
-proto_add_icq_attr(proto_tree *tree, /* The tree to add to */
- tvbuff_t *tvb, /* Tvbuff with packet */
- const int offset, /* Offset from the start of packet of field */
- const int* hf) /* The description to use in the tree */
-{
- guint16 len;
-
- len = tvb_get_letohs(tvb, offset);
- if (len > tvb_reported_length_remaining(tvb, offset))
- return -1; /* length goes past end of packet */
- proto_tree_add_string(tree, *hf, tvb, offset, len+2,
- tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 2, len, ENC_ASCII));
- return len + 2;
-}
-
static void
icqv5_decode_msgType(proto_tree *tree, tvbuff_t *tvb, int offset, int size,
packet_info *pinfo)
@@ -881,14 +862,6 @@ icqv5_srv_meta_user(proto_tree *tree, /* Tree to put the data in */
* They are used to "implement" a poorman's exception handling
*/
int len = 0;
- static const int *hf_descr[] = {
- &hf_icq_nickname,
- &hf_icq_first_name,
- &hf_icq_last_name,
- &hf_icq_email,
- NULL
- };
- const int **hf = hf_descr;
unsigned char auth;
/*
* Read UIN
@@ -896,12 +869,15 @@ icqv5_srv_meta_user(proto_tree *tree, /* Tree to put the data in */
proto_tree_add_item(sstree, hf_icq_uin, tvb, offset, 4, ENC_LITTLE_ENDIAN);
offset+=4;
- for ( ; *hf!=NULL; hf++) {
- len = proto_add_icq_attr(sstree, tvb, offset, *hf);
- if (len == -1)
- return;
- offset += len;
- }
+ proto_tree_add_item_ret_length(sstree, hf_icq_nickname_uint_string, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset += len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_first_name_uint_string, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset += len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_last_name_uint_string, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset += len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_email_uint_string, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset += len;
+
/* Get the authorize setting */
auth = tvb_get_guint8(tvb, offset);
proto_tree_add_uint_format_value(sstree, hf_icq_meta_user_found_authorization, tvb, offset, 1,
@@ -919,36 +895,13 @@ icqv5_srv_meta_user(proto_tree *tree, /* Tree to put the data in */
int len;
/* Get the about information */
- len = tvb_get_letohs(tvb, offset);
- offset+=2;
- proto_tree_add_string(sstree, hf_icq_meta_user_about, tvb, offset - 2,
- len+2, tvb_get_string_enc(wmem_packet_scope(), tvb, offset, len, ENC_ASCII));
+ proto_tree_add_item_ret_length(sstree, hf_icq_meta_user_about, tvb, offset,
+ 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset += len;
break;
}
case META_USER_INFO:
{
- /* The goto mentioned in this block should be local to this
- * block if C'd allow it.
- *
- * They are used to "implement" a poorman's exception handling
- */
- static const int *hf_descr[] = {
- &hf_icq_nickname,
- &hf_icq_first_name,
- &hf_icq_last_name,
- &hf_icq_primary_email,
- &hf_icq_secondary_email,
- &hf_icq_old_email,
- &hf_icq_city,
- &hf_icq_state,
- &hf_icq_phone,
- &hf_icq_fax,
- &hf_icq_street,
- &hf_icq_cellphone,
- &hf_icq_zip,
- NULL
- };
- const int **hf = hf_descr;
int len = 0;
#if 0
/* Get the uin */
@@ -959,14 +912,33 @@ icqv5_srv_meta_user(proto_tree *tree, /* Tree to put the data in */
/*
* Get every field from the description
*/
- for ( ; *hf!=NULL; hf++) {
- len = proto_add_icq_attr(sstree, tvb, offset, *hf);
- if (len < 0) {
- offset+=2;
- continue;
- }
- offset+=len;
- }
+ proto_tree_add_item_ret_length(sstree, hf_icq_nickname_uint_string, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_first_name_uint_string, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_last_name_uint_string, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_primary_email, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_secondary_email, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_old_email, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_city, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_state, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_phone, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_fax, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_street, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_cellphone, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+ proto_tree_add_item_ret_length(sstree, hf_icq_zip, tvb, offset, 2, ENC_LITTLE_ENDIAN|ENC_ASCII, &len);
+ offset+=len;
+
/* Get country code */
proto_tree_add_item(sstree, hf_icq_meta_user_countrycode, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset+=2;
@@ -1336,7 +1308,7 @@ proto_register_icq(void)
{ &hf_icq_meta_user_found_authorization, { "Authorization", "icq.meta_user.found_authorization", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_meta_user_x2, { "x2", "icq.meta_user.x2", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_meta_user_x3, { "x3", "icq.meta_user.x3", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_meta_user_about, { "About", "icq.meta_user.about", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_meta_user_about, { "About", "icq.meta_user.about", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_meta_user_countrycode, { "Countrycode", "icq.meta_user.countrycode", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_meta_user_timezone, { "Timezone", "icq.meta_user.timezone", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_meta_user_info_authorization, { "Authorization", "icq.meta_user.info_authorization", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x0, NULL, HFILL }},
@@ -1353,16 +1325,20 @@ proto_register_icq(void)
{ &hf_icq_first_name, { "First name", "icq.first_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_last_name, { "Last name", "icq.last_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_email, { "Email", "icq.email", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_primary_email, { "Primary email", "icq.primary_email", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_secondary_email, { "Secondary email", "icq.secondary_email", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_old_email, { "Old email", "icq.old_email", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_city, { "City", "icq.city", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_state, { "State", "icq.state", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_phone, { "Phone", "icq.phone", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_fax, { "Fax", "icq.fax", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_street, { "Street", "icq.street", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_cellphone, { "Cellphone", "icq.cellphone", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
- { &hf_icq_zip, { "Zip", "icq.zip", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_nickname_uint_string, { "Nickname", "icq.nickname", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_first_name_uint_string, { "First name", "icq.first_name", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_last_name_uint_string, { "Last name", "icq.last_name", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_email_uint_string, { "Email", "icq.email", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_primary_email, { "Primary email", "icq.primary_email", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_secondary_email, { "Secondary email", "icq.secondary_email", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_old_email, { "Old email", "icq.old_email", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_city, { "City", "icq.city", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_state, { "State", "icq.state", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_phone, { "Phone", "icq.phone", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_fax, { "Fax", "icq.fax", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_street, { "Street", "icq.street", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_cellphone, { "Cellphone", "icq.cellphone", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_icq_zip, { "Zip", "icq.zip", FT_UINT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_description, { "Description", "icq.description", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_url, { "URL", "icq.url", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_icq_text, { "Text", "icq.text", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},