diff options
author | Michael Mann <mmann78@netscape.net> | 2015-01-08 12:13:18 -0500 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-01-09 06:02:59 +0000 |
commit | 6a6e2efbf937c3533304c0814b0bff269932219e (patch) | |
tree | 065ecbf7a961ecd9588db97b70a7f11e119048dc /epan | |
parent | 456095c89dd5fe257ce86d5529179295ebf9151e (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.c | 12 | ||||
-rw-r--r-- | epan/addr_resolv.h | 2 | ||||
-rw-r--r-- | epan/address_to_str.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-eigrp.c | 2 | ||||
-rw-r--r-- | epan/proto.c | 4 | ||||
-rw-r--r-- | epan/to_str.h | 2 |
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); |