aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss@ulticom.com>2011-01-16 03:57:12 +0000
committerJeff Morriss <jeff.morriss@ulticom.com>2011-01-16 03:57:12 +0000
commit61876001c35547972282a50854957c7c4deaaccf (patch)
tree7f20cb0372c55d80a8f833d862d6cfd13a3c6a1e /epan
parentd553df218ebcb9e76299592b0794f0553ed63ff7 (diff)
Replace some tvb_get_ptr()s with tvb_get_ephemeral_string()s to ensure the
return string is NULL terminated. There's no need to pass the result of tvb_get_ptr() as the 'value' in proto_tree_add_*(): just use proto_tree_add_item(). svn path=/trunk/; revision=35548
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-artnet.c2
-rw-r--r--epan/dissectors/packet-dhcpv6.c42
-rw-r--r--epan/dissectors/packet-fcdns.c11
-rw-r--r--epan/dissectors/packet-ipv6.c4
-rw-r--r--epan/dissectors/packet-ipx.c15
-rw-r--r--epan/dissectors/packet-lldp.c7
-rw-r--r--epan/dissectors/packet-lwres.c174
7 files changed, 88 insertions, 167 deletions
diff --git a/epan/dissectors/packet-artnet.c b/epan/dissectors/packet-artnet.c
index 2df800644f..385327ffaa 100644
--- a/epan/dissectors/packet-artnet.c
+++ b/epan/dissectors/packet-artnet.c
@@ -1384,7 +1384,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (check_col(pinfo->cinfo, COL_INFO)) {
col_append_fstr(pinfo->cinfo, COL_INFO, "%s",
- tvb_get_ptr(tvb, offset, 8));
+ tvb_get_ephemeral_string(tvb, offset, 8));
}
if( tree ){
proto_tree_add_item(artnet_header_tree, hf_artnet_header_id,
diff --git a/epan/dissectors/packet-dhcpv6.c b/epan/dissectors/packet-dhcpv6.c
index b243b2e206..9ece521a51 100644
--- a/epan/dissectors/packet-dhcpv6.c
+++ b/epan/dissectors/packet-dhcpv6.c
@@ -378,7 +378,7 @@ static const value_string pkt_cccV6_opt_vals[] = {
{ PKT_CCCV6_PROV_TIMER, "TSP's Provisioning Timer Value" },
{ PKT_CCCV6_IETF_SEC_TKT, "PacketCable Security Ticket Control" },
{ 0, NULL }
-};
+};
static const value_string sec_tcm_vals[] = {
{ 1 << 0, "PacketCable Provisioning Server" },
@@ -624,7 +624,7 @@ dissect_packetcable_cccV6_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
"Sub element %d: no room left in option for suboption length",
subopt);
return (optend);
- }
+ }
vti = proto_tree_add_text(v_tree, tvb, optoff, subopt_len + 4,
"Sub element %u: %s: ", subopt,
@@ -664,7 +664,7 @@ dissect_packetcable_cccV6_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
}
} else {
proto_item_append_text(vti, "Invalid type: %u (%u byte%s)",
- type, subopt_len, plurality(subopt_len, "", "s"));
+ type, subopt_len, plurality(subopt_len, "", "s"));
}
suboptoff += subopt_len;
break;
@@ -673,11 +673,11 @@ dissect_packetcable_cccV6_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
case PKT_CCCV6_IETF_AP_KRB:
if (subopt_len == 12) {
pkt_s_tree = proto_item_add_subtree(vti, ett_dhcpv6_pkt_option);
- proto_tree_add_text(pkt_s_tree, tvb, suboptoff, 4,
+ proto_tree_add_text(pkt_s_tree, tvb, suboptoff, 4,
"Nominal Timeout : %u", tvb_get_ntohl(tvb, suboptoff));
- proto_tree_add_text(pkt_s_tree, tvb, suboptoff+4, 4,
+ proto_tree_add_text(pkt_s_tree, tvb, suboptoff+4, 4,
"Maximum Timeout : %u", tvb_get_ntohl(tvb, suboptoff+4));
- proto_tree_add_text(pkt_s_tree, tvb, suboptoff+8, 4,
+ proto_tree_add_text(pkt_s_tree, tvb, suboptoff+8, 4,
"Maximum Retry Count : %u", tvb_get_ntohl(tvb, suboptoff+8));
} else {
proto_item_append_text(vti, "Bogus length: %d", subopt_len);
@@ -690,13 +690,13 @@ dissect_packetcable_cccV6_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
for (i=0; i < subopt_len; i++) {
kr_name = tvb_get_guint8(tvb, suboptoff + i);
kr_value = (int)kr_name;
- if ((kr_value >= 65 && kr_value <= 90) ||
- kr_value == 34 ||
- kr_value == 44 ||
- kr_value == 46 ||
- kr_value == 47 ||
- kr_value == 58 ||
- kr_value == 61 ||
+ if ((kr_value >= 65 && kr_value <= 90) ||
+ kr_value == 34 ||
+ kr_value == 44 ||
+ kr_value == 46 ||
+ kr_value == 47 ||
+ kr_value == 58 ||
+ kr_value == 61 ||
kr_value == 92) {
} else if (!kr_fail_flag) {
kr_pos = i;
@@ -708,15 +708,15 @@ dissect_packetcable_cccV6_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
if (kr_fail_flag) {
proto_item_append_text(vti, " (%u byte%s [Invalid at byte=%d]) ",
subopt_len,
- plurality(subopt_len, "", "s"),
+ plurality(subopt_len, "", "s"),
kr_pos);
} else {
proto_item_append_text(vti, " (%u byte%s%s) ",
subopt_len,
- plurality(subopt_len, "", "s"),
+ plurality(subopt_len, "", "s"),
kr_fail_flag != 0 ? " [Invalid]" : "");
}
- }
+ }
suboptoff += subopt_len;
break;
@@ -743,7 +743,7 @@ dissect_packetcable_cccV6_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
sec_tcm = tvb_get_ntohs(tvb, suboptoff);
proto_item_append_text(vti, "0x%04x (%u byte%s%s)",
sec_tcm, subopt_len, plurality(subopt_len, "", "s"),
- subopt_len != 2 ? " [Invalid]" : "");
+ subopt_len != 2 ? " [Invalid]" : "");
if (subopt_len == 2) {
pkt_s_tree = proto_item_add_subtree(vti, ett_dhcpv6_pkt_option);
@@ -763,7 +763,7 @@ dissect_packetcable_cccV6_option(proto_tree *v_tree, tvbuff_t *tvb, int optoff,
suboptoff += subopt_len;
break;
}
-
+
/** Return the number of bytes processed **/
return (suboptoff - optoff);
}
@@ -815,7 +815,7 @@ dissect_cablelabs_specific_opts(proto_tree *v_tree, tvbuff_t *tvb, int voff, int
tvb_format_stringzpad(tvb, sub_off, field_len));
break;
- case CL_OPTION_VENDOR_OUI :
+ case CL_OPTION_VENDOR_OUI :
/* CableLabs specs treat 17.8 inconsistently
* as either binary (3b) or string (6b) */
opt_len = tlv_len;
@@ -979,7 +979,7 @@ dissect_cablelabs_specific_opts(proto_tree *v_tree, tvbuff_t *tvb, int voff, int
subtree = proto_item_add_subtree(ti, ett_dhcpv6_vendor_option);
proto_item_append_text(ti, " (%d bytes)", opt_len);
while (field_len < opt_len) {
- sub_value = dissect_packetcable_cccV6_option(subtree, tvb,
+ sub_value = dissect_packetcable_cccV6_option(subtree, tvb,
sub_off, (opt_len - field_len));
sub_off += sub_value;
field_len += sub_value;
@@ -1828,7 +1828,7 @@ dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree,
break;
}
proto_tree_add_text(subtree, tvb, off, optlen,
- "NAI : %s", tvb_get_ptr(tvb, off, optlen - 2));
+ "NAI : %s", tvb_get_ephemeral_string(tvb, off, optlen - 2));
break;
}
diff --git a/epan/dissectors/packet-fcdns.c b/epan/dissectors/packet-fcdns.c
index b02ed0648f..6932abfa98 100644
--- a/epan/dissectors/packet-fcdns.c
+++ b/epan/dissectors/packet-fcdns.c
@@ -592,9 +592,8 @@ dissect_fcdns_gspnid (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
len = tvb_get_guint8 (tvb, offset);
proto_tree_add_item (req_tree, hf_fcdns_rply_spnamelen,
tvb, offset, 1, 0);
- proto_tree_add_string (req_tree, hf_fcdns_rply_spname, tvb,
- offset+1, len,
- tvb_get_ptr (tvb, offset+1, len));
+ proto_tree_add_item (req_tree, hf_fcdns_rply_spname, tvb,
+ offset+1, len, ENC_NA);
}
}
}
@@ -1256,7 +1255,7 @@ dissect_fcdns_swils_entries (tvbuff_t *tvb, proto_tree *tree, int offset)
proto_tree_add_item (tree, hf_fcdns_sw2_objfmt, tvb, offset, 1, 0);
proto_tree_add_string (tree, hf_fcdns_rply_ownerid, tvb, offset+1,
- 3, fc_to_str (tvb_get_ptr (tvb, offset+1,
+ 3, fc_to_str (tvb_get_ephemeral_string (tvb, offset+1,
3)));
proto_tree_add_item (tree, hf_fcdns_rply_ptype, tvb, offset+4,
1, 0);
@@ -1443,8 +1442,8 @@ dissect_fcdns_gezn (tvbuff_t *tvb, proto_tree *req_tree, gboolean isreq)
str_len = tvb_get_guint8 (tvb, offset);
proto_tree_add_text (req_tree, tvb, offset, 1, "Name Length: %d",
str_len);
- proto_tree_add_string (req_tree, hf_fcdns_zonenm, tvb, offset+3,
- str_len, tvb_get_ptr (tvb, offset+3, str_len));
+ proto_tree_add_item (req_tree, hf_fcdns_zonenm, tvb, offset+3,
+ str_len, ENC_NA);
}
}
else {
diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c
index 63dff538a3..b4b1c43a1b 100644
--- a/epan/dissectors/packet-ipv6.c
+++ b/epan/dissectors/packet-ipv6.c
@@ -499,8 +499,8 @@ dissect_mipv6_hoa(tvbuff_t *tvb, proto_tree *dstopt_tree, int offset, packet_inf
1, tvb_get_guint8(tvb, offset + len));
len += 1;
- proto_tree_add_ipv6(dstopt_tree, hf_ipv6_mipv6_home_address, tvb,
- offset + len, 16, tvb_get_ptr(tvb, offset + len, 16));
+ proto_tree_add_item(dstopt_tree, hf_ipv6_mipv6_home_address, tvb,
+ offset + len, 16, ENC_NA);
SET_ADDRESS(&pinfo->src, AT_IPv6, 16, tvb_get_ptr(tvb, offset + len, 16));
len += 16;
return len;
diff --git a/epan/dissectors/packet-ipx.c b/epan/dissectors/packet-ipx.c
index eab75095e6..4eb1cb35cf 100644
--- a/epan/dissectors/packet-ipx.c
+++ b/epan/dissectors/packet-ipx.c
@@ -247,7 +247,6 @@ dissect_ipx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
char *str;
guint16 first_socket, second_socket;
guint32 ipx_snet, ipx_dnet;
- const guint8 *ipx_snode, *ipx_dnode;
static ipxhdr_t ipxh_arr[4];
static int ipx_current=0;
ipxhdr_t *ipxh;
@@ -321,11 +320,8 @@ dissect_ipx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
hidden_item = proto_tree_add_ipxnet(ipx_tree, hf_ipx_net, tvb, 6, 4,
ipx_dnet);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- ipx_dnode = tvb_get_ptr(tvb, 10, 6);
- proto_tree_add_ether(ipx_tree, hf_ipx_dnode, tvb, 10, 6,
- ipx_dnode);
- hidden_item = proto_tree_add_ether(ipx_tree, hf_ipx_node, tvb, 10, 6,
- ipx_dnode);
+ proto_tree_add_item(ipx_tree, hf_ipx_dnode, tvb, 10, 6, ENC_NA);
+ hidden_item = proto_tree_add_item(ipx_tree, hf_ipx_node, tvb, 10, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_uint(ipx_tree, hf_ipx_dsocket, tvb, 16, 2,
ipxh->ipx_dsocket);
@@ -340,11 +336,8 @@ dissect_ipx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
hidden_item = proto_tree_add_ipxnet(ipx_tree, hf_ipx_net, tvb, 18, 4,
ipx_snet);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- ipx_snode = tvb_get_ptr(tvb, 22, 6);
- proto_tree_add_ether(ipx_tree, hf_ipx_snode, tvb, 22, 6,
- ipx_snode);
- hidden_item = proto_tree_add_ether(ipx_tree, hf_ipx_node, tvb, 22, 6,
- ipx_snode);
+ proto_tree_add_item(ipx_tree, hf_ipx_snode, tvb, 22, 6, ENC_NA);
+ hidden_item = proto_tree_add_item(ipx_tree, hf_ipx_node, tvb, 22, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_uint(ipx_tree, hf_ipx_ssocket, tvb, 28, 2,
ipxh->ipx_ssocket);
diff --git a/epan/dissectors/packet-lldp.c b/epan/dissectors/packet-lldp.c
index f38f464bf8..408326f85c 100644
--- a/epan/dissectors/packet-lldp.c
+++ b/epan/dissectors/packet-lldp.c
@@ -2285,7 +2285,6 @@ dissect_profinet_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gu
guint32 port_tx_delay_local;
guint32 port_tx_delay_remote;
guint32 cable_delay_local;
- const guint8 *mac_addr = NULL;
e_guid_t * uuid;
guint16 mrrt_PortStatus;
@@ -2368,16 +2367,14 @@ dissect_profinet_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gu
}
case 5: /* LLDP_PNIO_CHASSIS_MAC */
{
- mac_addr=tvb_get_ptr(tvb, offset, 6);
- proto_tree_add_ether(tree, hf_profinet_cm_mac, tvb, offset, 6, mac_addr);
+ proto_tree_add_item(tree, hf_profinet_cm_mac, tvb, offset, 6, ENC_NA);
offset += 6;
break;
}
case 6: /* LLDP_PNIO_PTCPSTATUS */
{
/* MasterSourceAddress */
- mac_addr=tvb_get_ptr(tvb, offset, 6);
- proto_tree_add_ether(tree, hf_profinet_master_source_address, tvb, offset, 6, mac_addr);
+ proto_tree_add_item(tree, hf_profinet_master_source_address, tvb, offset, 6, ENC_NA);
offset += 6;
/* SubdomainUUID */
tvb_get_ntohguid (tvb, offset, (e_guid_t *) &uuid);
diff --git a/epan/dissectors/packet-lwres.c b/epan/dissectors/packet-lwres.c
index 5cb9422dc9..f7b4fd9af3 100644
--- a/epan/dissectors/packet-lwres.c
+++ b/epan/dissectors/packet-lwres.c
@@ -205,7 +205,7 @@ static void dissect_getnamebyaddr_request(tvbuff_t* tvb, proto_tree* lwres_tree)
{
guint32 flags,family;
guint16 addrlen, slen;
- const guint8* addr;
+ const char* addrs;
proto_item* nba_request_item;
proto_tree* nba_request_tree;
@@ -213,8 +213,8 @@ static void dissect_getnamebyaddr_request(tvbuff_t* tvb, proto_tree* lwres_tree)
flags = tvb_get_ntohl(tvb, LWRES_LWPACKET_LENGTH);
family = tvb_get_ntohl(tvb, LWRES_LWPACKET_LENGTH + 4);
addrlen = tvb_get_ntohs(tvb, LWRES_LWPACKET_LENGTH + 8);
- addr = tvb_get_ptr(tvb, LWRES_LWPACKET_LENGTH + 10, 4);
- slen = (int)strlen(ip_to_str(addr));
+ addrs = tvb_ip_to_str(tvb, LWRES_LWPACKET_LENGTH + 10);
+ slen = (int)strlen(addrs);
if(lwres_tree)
{
@@ -223,33 +223,17 @@ static void dissect_getnamebyaddr_request(tvbuff_t* tvb, proto_tree* lwres_tree)
}
else return;
- proto_tree_add_uint(nba_request_tree,
- hf_adn_flags,
- tvb,
- LWRES_LWPACKET_LENGTH,
- 4,
- flags);
+ proto_tree_add_uint(nba_request_tree, hf_adn_flags, tvb,
+ LWRES_LWPACKET_LENGTH, 4, flags);
- proto_tree_add_uint(nba_request_tree,
- hf_adn_family,
- tvb,
- LWRES_LWPACKET_LENGTH + 4,
- 4,
- family);
+ proto_tree_add_uint(nba_request_tree, hf_adn_family, tvb,
+ LWRES_LWPACKET_LENGTH + 4, 4, family);
- proto_tree_add_uint(nba_request_tree,
- hf_adn_addr_len,
- tvb,
- LWRES_LWPACKET_LENGTH + 8,
- 2,
- addrlen);
+ proto_tree_add_uint(nba_request_tree, hf_adn_addr_len, tvb,
+ LWRES_LWPACKET_LENGTH + 8, 2, addrlen);
- proto_tree_add_string(nba_request_tree,
- hf_adn_addr_addr,
- tvb,
- LWRES_LWPACKET_LENGTH + 10,
- slen,
- ip_to_str(addr));
+ proto_tree_add_string(nba_request_tree, hf_adn_addr_addr, tvb,
+ LWRES_LWPACKET_LENGTH + 10, slen, addrs);
}
@@ -389,16 +373,16 @@ static void dissect_getaddrsbyname_response(tvbuff_t* tvb, proto_tree* lwres_tre
{
guint32 family ,i, offset;
guint16 naliases, naddrs, realnamelen, length, aliaslen;
- const gchar* addr;
+ const gchar* addrs;
guint slen;
gchar *aliasname;
- proto_item* adn_resp_item;
- proto_tree* adn_resp_tree;
- proto_item* alias_item;
- proto_tree* alias_tree;
- proto_item* addr_item;
- proto_tree* addr_tree;
+ proto_item *adn_resp_item;
+ proto_tree *adn_resp_tree;
+ proto_item *alias_item;
+ proto_tree *alias_tree;
+ proto_item *addr_item;
+ proto_tree *addr_tree;
@@ -414,40 +398,20 @@ static void dissect_getaddrsbyname_response(tvbuff_t* tvb, proto_tree* lwres_tre
realnamelen = tvb_get_ntohs(tvb, LWRES_LWPACKET_LENGTH + 8);
- proto_tree_add_item(adn_resp_tree,
- hf_adn_flags,
- tvb,
- LWRES_LWPACKET_LENGTH,
- 4,
- FALSE);
+ proto_tree_add_item(adn_resp_tree, hf_adn_flags, tvb,
+ LWRES_LWPACKET_LENGTH, 4, FALSE);
- proto_tree_add_item(adn_resp_tree,
- hf_adn_naliases,
- tvb,
- LWRES_LWPACKET_LENGTH + 4,
- 2,
- FALSE);
+ proto_tree_add_item(adn_resp_tree, hf_adn_naliases, tvb,
+ LWRES_LWPACKET_LENGTH + 4, 2, FALSE);
- proto_tree_add_item(adn_resp_tree,
- hf_adn_naddrs,
- tvb,
- LWRES_LWPACKET_LENGTH + 6,
- 2,
- FALSE);
+ proto_tree_add_item(adn_resp_tree, hf_adn_naddrs, tvb,
+ LWRES_LWPACKET_LENGTH + 6, 2, FALSE);
- proto_tree_add_item(adn_resp_tree,
- hf_adn_namelen,
- tvb,
- LWRES_LWPACKET_LENGTH + 8,
- 2,
- FALSE);
+ proto_tree_add_item(adn_resp_tree, hf_adn_namelen, tvb,
+ LWRES_LWPACKET_LENGTH + 8, 2, FALSE);
- proto_tree_add_item(adn_resp_tree,
- hf_adn_realname,
- tvb,
- LWRES_LWPACKET_LENGTH + 10,
- realnamelen,
- FALSE);
+ proto_tree_add_item(adn_resp_tree, hf_adn_realname, tvb,
+ LWRES_LWPACKET_LENGTH + 10, realnamelen, FALSE);
offset = LWRES_LWPACKET_LENGTH + 10 + realnamelen + 1;
@@ -461,19 +425,11 @@ static void dissect_getaddrsbyname_response(tvbuff_t* tvb, proto_tree* lwres_tre
alias_item = proto_tree_add_text(adn_resp_tree, tvb, offset, 2 + aliaslen, "Alias %s",aliasname);
alias_tree = proto_item_add_subtree(alias_item, ett_adn_alias);
- proto_tree_add_uint(alias_tree,
- hf_adn_namelen,
- tvb,
- offset,
- 2,
- aliaslen);
+ proto_tree_add_uint(alias_tree, hf_adn_namelen, tvb,
+ offset, 2, aliaslen);
- proto_tree_add_item(alias_tree,
- hf_adn_aliasname,
- tvb,
- offset + 2,
- aliaslen,
- FALSE);
+ proto_tree_add_item(alias_tree, hf_adn_aliasname, tvb,
+ offset + 2, aliaslen, FALSE);
offset+=(2 + aliaslen + 1);
}
@@ -485,32 +441,20 @@ static void dissect_getaddrsbyname_response(tvbuff_t* tvb, proto_tree* lwres_tre
{
family = tvb_get_ntohl(tvb, offset);
length = tvb_get_ntohs(tvb, offset + 4);
- addr = (gchar*)tvb_get_ptr(tvb, offset + 6, 4);
- slen = (int)strlen((char*)ip_to_str((guint8*)addr));
+ addrs = tvb_ip_to_str(tvb, offset + 6);
+ slen = (int)strlen(addrs);
- addr_item = proto_tree_add_text(adn_resp_tree,tvb, offset, 4+2+4, "Address %s",ip_to_str((guint8*)addr));
+ addr_item = proto_tree_add_text(adn_resp_tree,tvb, offset, 4+2+4, "Address %s", addrs);
addr_tree = proto_item_add_subtree(addr_item, ett_adn_addr);
- proto_tree_add_uint(addr_tree,
- hf_adn_family,
- tvb,
- offset,
- 4,
- family);
+ proto_tree_add_uint(addr_tree, hf_adn_family, tvb,
+ offset, 4, family);
- proto_tree_add_uint(addr_tree,
- hf_adn_addr_len,
- tvb,
- offset + 4,
- 2,
- length);
+ proto_tree_add_uint(addr_tree, hf_adn_addr_len, tvb,
+ offset + 4, 2, length);
- proto_tree_add_string(addr_tree,
- hf_adn_addr_addr,
- tvb,
- offset + 6,
- slen,
- ip_to_str((guint8*)addr));
+ proto_tree_add_string(addr_tree, hf_adn_addr_addr, tvb,
+ offset + 6, slen, addrs);
offset+= 4 + 2 + 4;
}
@@ -522,7 +466,7 @@ static void dissect_getaddrsbyname_response(tvbuff_t* tvb, proto_tree* lwres_tre
static void dissect_a_records(tvbuff_t* tvb, proto_tree* tree,guint32 nrec,int offset)
{
guint32 i, curr;
- const gchar* addr;
+ const gchar* addrs;
guint16 len;
proto_item* a_rec_item;
proto_tree* a_rec_tree;
@@ -545,29 +489,21 @@ static void dissect_a_records(tvbuff_t* tvb, proto_tree* tree,guint32 nrec,int o
curr = offset + ((sizeof(guint32)+sizeof(guint16)) * i);
len = tvb_get_ntohs(tvb,curr);
- addr = (gchar*)tvb_get_ptr(tvb,curr+2,4);
+ addrs = tvb_ip_to_str(tvb, curr+2);
if(a_rec_tree)
{
- addr_item = proto_tree_add_text(a_rec_tree,tvb, curr, 6,"IP Address");
+ addr_item = proto_tree_add_text(a_rec_tree, tvb, curr,
+ 6, "Address %s", addrs);
addr_tree = proto_item_add_subtree(addr_item, ett_a_rec_addr);
- proto_item_set_text(addr_item,"Address %s",ip_to_str((guint8*)addr));
}
else return;
- proto_tree_add_uint(addr_tree,
- hf_a_rec_len,
- tvb,
- curr,
- sizeof(guint16),
- len);
+ proto_tree_add_uint(addr_tree, hf_a_rec_len, tvb, curr,
+ sizeof(guint16), len);
- proto_tree_add_text(addr_tree,
- tvb,
- curr + 2,
- 4,
- "Addr: %s",
- ip_to_str((guint8*)addr));
+ proto_tree_add_text(addr_tree, tvb, curr + 2, 4, "Addr: %s",
+ addrs);
}
@@ -905,13 +841,11 @@ static void dissect_rdata_response(tvbuff_t* tvb, proto_tree* lwres_tree)
static void dissect_noop(tvbuff_t* tvb, proto_tree* lwres_tree)
{
guint16 datalen;
- const char* data;
proto_item* noop_item;
proto_tree* noop_tree;
datalen = tvb_get_ntohs(tvb, LWRES_LWPACKET_LENGTH);
- data = (char*)tvb_get_ptr(tvb, LWRES_LWPACKET_LENGTH, datalen);
if(lwres_tree)
{
@@ -921,12 +855,10 @@ static void dissect_noop(tvbuff_t* tvb, proto_tree* lwres_tree)
else
return;
- proto_tree_add_uint(noop_tree,
- hf_length,
- tvb,
- LWRES_LWPACKET_LENGTH,
- sizeof(guint16),
- datalen);
+ proto_tree_add_uint(noop_tree, hf_length, tvb,
+ LWRES_LWPACKET_LENGTH, sizeof(guint16), datalen);
+
+ tvb_ensure_bytes_exist(tvb, LWRES_LWPACKET_LENGTH, datalen);
}