aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-01-08 12:13:18 -0500
committerAnders Broman <a.broman58@gmail.com>2015-01-09 06:02:59 +0000
commit6a6e2efbf937c3533304c0814b0bff269932219e (patch)
tree065ecbf7a961ecd9588db97b70a7f11e119048dc /epan
parent456095c89dd5fe257ce86d5529179295ebf9151e (diff)
Have ipxnet addresses use wmem scoped memory.
Change-Id: I1d8eed2ceacccce2768590f0689cd2c83a5e56e9 Reviewed-on: https://code.wireshark.org/review/6418 Petri-Dish: Hadriel Kaplan <hadrielk@yahoo.com> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/addr_resolv.c12
-rw-r--r--epan/addr_resolv.h2
-rw-r--r--epan/address_to_str.c8
-rw-r--r--epan/dissectors/packet-eigrp.c2
-rw-r--r--epan/proto.c4
-rw-r--r--epan/to_str.h2
6 files changed, 16 insertions, 14 deletions
diff --git a/epan/addr_resolv.c b/epan/addr_resolv.c
index 7221ee34b2..2d3756f340 100644
--- a/epan/addr_resolv.c
+++ b/epan/addr_resolv.c
@@ -1864,7 +1864,7 @@ add_ipxnet_name(guint addr, const gchar *name)
#endif
static gchar *
-ipxnet_name_lookup(const guint addr)
+ipxnet_name_lookup(wmem_allocator_t *allocator, const guint addr)
{
hashipxnet_t *tp;
ipxnet_t *ipxnet;
@@ -1878,7 +1878,7 @@ ipxnet_name_lookup(const guint addr)
tp = g_new(hashipxnet_t, 1);
g_hash_table_insert(ipxnet_hash_table, key, tp);
}else{
- return tp->name;
+ return wmem_strdup(allocator, tp->name);
}
/* fill in a new entry */
@@ -1893,7 +1893,7 @@ ipxnet_name_lookup(const guint addr)
g_strlcpy(tp->name, ipxnet->name, MAXNAMELEN);
}
- return (tp->name);
+ return wmem_strdup(allocator, tp->name);
} /* ipxnet_name_lookup */
@@ -3001,14 +3001,14 @@ add_ether_byip(const guint ip, const guint8 *eth)
} /* add_ether_byip */
const gchar *
-get_ipxnet_name(const guint32 addr)
+get_ipxnet_name(wmem_allocator_t *allocator, const guint32 addr)
{
if (!gbl_resolv_flags.network_name) {
- return ipxnet_to_str_punct(addr, '\0');
+ return ipxnet_to_str_punct(allocator, addr, '\0');
}
- return ipxnet_name_lookup(addr);
+ return ipxnet_name_lookup(allocator, addr);
} /* get_ipxnet_name */
diff --git a/epan/addr_resolv.h b/epan/addr_resolv.h
index 23e1c37967..46f45bf6ce 100644
--- a/epan/addr_resolv.h
+++ b/epan/addr_resolv.h
@@ -226,7 +226,7 @@ extern const gchar *ep_eui64_to_display_if_known(const guint64 addr);
/* get_ipxnet_name returns the logical name if found in an ipxnets file,
* or a string formatted with "%X" if not */
-extern const gchar *get_ipxnet_name(const guint32 addr);
+extern const gchar *get_ipxnet_name(wmem_allocator_t *allocator, const guint32 addr);
/* returns the ethernet address corresponding to name or NULL if not known */
extern guint8 *get_ether_addr(const gchar *name);
diff --git a/epan/address_to_str.c b/epan/address_to_str.c
index 78475398a7..00e3be050a 100644
--- a/epan/address_to_str.c
+++ b/epan/address_to_str.c
@@ -202,19 +202,19 @@ ipx_addr_to_str(const guint32 net, const guint8 *ad)
name = get_ether_name_if_known(ad);
if (name) {
- buf = wmem_strdup_printf(wmem_packet_scope(), "%s.%s", get_ipxnet_name(net), name);
+ buf = wmem_strdup_printf(wmem_packet_scope(), "%s.%s", get_ipxnet_name(wmem_packet_scope(), net), name);
}
else {
- buf = wmem_strdup_printf(wmem_packet_scope(), "%s.%s", get_ipxnet_name(net),
+ buf = wmem_strdup_printf(wmem_packet_scope(), "%s.%s", get_ipxnet_name(wmem_packet_scope(), net),
bytestring_to_str(wmem_packet_scope(), ad, 6, '\0'));
}
return buf;
}
gchar *
-ipxnet_to_str_punct(const guint32 ad, const char punct)
+ipxnet_to_str_punct(wmem_allocator_t *scope, const guint32 ad, const char punct)
{
- gchar *buf = (gchar *)ep_alloc(12);
+ gchar *buf = (gchar *)wmem_alloc(scope, 12);
*dword_to_hex_punct(buf, ad, punct) = '\0';
return buf;
diff --git a/epan/dissectors/packet-eigrp.c b/epan/dissectors/packet-eigrp.c
index 02ba92bf3e..f1bbcf391c 100644
--- a/epan/dissectors/packet-eigrp.c
+++ b/epan/dissectors/packet-eigrp.c
@@ -1178,7 +1178,7 @@ dissect_eigrp_ipx_addr (proto_item *ti, proto_tree *tree, tvbuff_t *tvb,
ENC_NA);
/* add it to the top level line */
- proto_item_append_text(ti," = %s", ipxnet_to_str_punct(tvb_get_ntohl(tvb, offset), ' '));
+ proto_item_append_text(ti," = %s", ipxnet_to_str_punct(wmem_packet_scope(), tvb_get_ntohl(tvb, offset), ' '));
if (unreachable) {
expert_add_info(pinfo, ti_dst, &ei_eigrp_unreachable);
diff --git a/epan/proto.c b/epan/proto.c
index 53c421270b..ba0efd2aa4 100644
--- a/epan/proto.c
+++ b/epan/proto.c
@@ -6118,9 +6118,11 @@ proto_item_fill_label(field_info *fi, gchar *label_str)
case FT_IPXNET:
integer = fvalue_get_uinteger(&fi->value);
+ tmp = (char*)get_ipxnet_name(NULL, integer);
g_snprintf(label_str, ITEM_LABEL_LENGTH,
"%s: %s (0x%08X)", hfinfo->name,
- get_ipxnet_name(integer), integer);
+ tmp, integer);
+ wmem_free(NULL, tmp);
break;
case FT_AX25:
diff --git a/epan/to_str.h b/epan/to_str.h
index abbd771df0..a8d0c4fa6a 100644
--- a/epan/to_str.h
+++ b/epan/to_str.h
@@ -66,7 +66,7 @@ void ip_to_str_buf(const guint8 *ad, gchar *buf, const int buf_len);
void ip6_to_str_buf(const struct e_in6_addr *, gchar *);
extern gchar* ipx_addr_to_str(const guint32, const guint8 *);
-extern gchar* ipxnet_to_str_punct(const guint32 ad, const char punct);
+extern gchar* ipxnet_to_str_punct(wmem_allocator_t *scope, const guint32 ad, const char punct);
WS_DLL_PUBLIC gchar* eui64_to_str(const guint64 ad);
WS_DLL_PUBLIC gchar* time_secs_to_str(wmem_allocator_t *scope, const gint32 time_val);