summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epan/addr_resolv.c33
-rw-r--r--epan/addr_resolv.h8
-rw-r--r--epan/address_to_str.c6
-rw-r--r--epan/dissectors/packet-ieee802154.c8
-rw-r--r--epan/dissectors/packet-zbee-nwk.c2
-rw-r--r--epan/dissectors/packet-zbee-zdp-binding.c20
-rw-r--r--epan/dissectors/packet-zbee-zdp-discovery.c24
-rw-r--r--epan/dissectors/packet-zbee-zdp-management.c4
-rw-r--r--epan/proto.c16
-rw-r--r--epan/to_str.h2
10 files changed, 51 insertions, 72 deletions
diff --git a/epan/addr_resolv.c b/epan/addr_resolv.c
index 2d3756f340..8d3d8c7f93 100644
--- a/epan/addr_resolv.c
+++ b/epan/addr_resolv.c
@@ -3111,41 +3111,20 @@ tvb_get_manuf_name_if_known(tvbuff_t *tvb, gint offset)
}
const gchar *
-ep_eui64_to_display(const guint64 addr_eui64)
+eui64_to_display(wmem_allocator_t *allocator, const guint64 addr_eui64)
{
- gchar *cur, *name;
- guint8 *addr = (guint8 *)ep_alloc(8);
+ gchar *name;
+ guint8 *addr = (guint8 *)wmem_alloc(allocator, 8);
/* Copy and convert the address to network byte order. */
*(guint64 *)(void *)(addr) = pntoh64(&(addr_eui64));
if (!gbl_resolv_flags.mac_name || ((name = manuf_name_lookup(addr)) == NULL)) {
- cur=ep_strdup_printf("%02x:%02x:%02x%02x:%02x:%02x%02x:%02x", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7]);
- return cur;
- }
- cur=ep_strdup_printf("%s_%02x:%02x:%02x:%02x:%02x", name, addr[3], addr[4], addr[5], addr[6], addr[7]);
- return cur;
-
-} /* ep_eui64_to_display */
-
-
-const gchar *
-ep_eui64_to_display_if_known(const guint64 addr_eui64)
-{
- gchar *cur, *name;
- guint8 *addr = (guint8 *)ep_alloc(8);
-
- /* Copy and convert the address to network byte order. */
- *(guint64 *)(void *)(addr) = pntoh64(&(addr_eui64));
-
- if ((name = manuf_name_lookup(addr)) == NULL) {
- return NULL;
+ return wmem_strdup_printf(allocator, "%02x:%02x:%02x%02x:%02x:%02x%02x:%02x", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7]);
}
+ return wmem_strdup_printf(allocator, "%s_%02x:%02x:%02x:%02x:%02x", name, addr[3], addr[4], addr[5], addr[6], addr[7]);
- cur=ep_strdup_printf("%s_%02x:%02x:%02x:%02x:%02x", name, addr[3], addr[4], addr[5], addr[6], addr[7]);
- return cur;
-
-} /* ep_eui64_to_display_if_known */
+} /* eui64_to_display */
#ifdef HAVE_C_ARES
#define GHI_TIMEOUT (250 * 1000)
diff --git a/epan/addr_resolv.h b/epan/addr_resolv.h
index 46f45bf6ce..3ba002df5c 100644
--- a/epan/addr_resolv.h
+++ b/epan/addr_resolv.h
@@ -216,13 +216,9 @@ WS_DLL_PUBLIC const gchar *tvb_get_manuf_name(tvbuff_t *tvb, gint offset);
*/
WS_DLL_PUBLIC const gchar *tvb_get_manuf_name_if_known(tvbuff_t *tvb, gint offset);
-/* ep_eui64_to_display returns "<vendor>_%02x:%02x:%02x:%02x:%02x:%02x" if the vendor code is known
+/* eui64_to_display returns "<vendor>_%02x:%02x:%02x:%02x:%02x:%02x" if the vendor code is known
"%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x" */
-extern const gchar *ep_eui64_to_display(const guint64 addr);
-
-/* ep_eui64_to_display_if_known returns "<vendor>_%02x:%02x:%02x:%02x:%02x:%02x" if the vendor code is known else NULL */
-extern const gchar *ep_eui64_to_display_if_known(const guint64 addr);
-
+extern const gchar *eui64_to_display(wmem_allocator_t *allocator, const guint64 addr);
/* get_ipxnet_name returns the logical name if found in an ipxnets file,
* or a string formatted with "%X" if not */
diff --git a/epan/address_to_str.c b/epan/address_to_str.c
index 00e3be050a..5c1f6cd3c1 100644
--- a/epan/address_to_str.c
+++ b/epan/address_to_str.c
@@ -239,12 +239,12 @@ vines_addr_to_str_buf(const guint8 *addrp, gchar *buf, int buf_len)
XXX update the address_to_str stuff to use this function.
*/
gchar *
-eui64_to_str(const guint64 ad) {
+eui64_to_str(wmem_allocator_t *scope, const guint64 ad) {
gchar *buf;
guint8 *p_eui64;
- p_eui64 = (guint8 *)ep_alloc(8);
- buf=(gchar *)ep_alloc(EUI64_STR_LEN);
+ p_eui64=(guint8 *)wmem_alloc(scope, 8);
+ buf=(gchar *)wmem_alloc(scope, EUI64_STR_LEN);
/* Copy and convert the address to network byte order. */
*(guint64 *)(void *)(p_eui64) = pntoh64(&(ad));
diff --git a/epan/dissectors/packet-ieee802154.c b/epan/dissectors/packet-ieee802154.c
index 3056740464..20c122152e 100644
--- a/epan/dissectors/packet-ieee802154.c
+++ b/epan/dissectors/packet-ieee802154.c
@@ -740,9 +740,9 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
TVB_SET_ADDRESS(&pinfo->dst, AT_EUI64, tvb, offset, 8);
if (tree) {
proto_tree_add_item(ieee802154_tree, hf_ieee802154_dst64, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- proto_item_append_text(proto_root, ", Dst: %s", ep_eui64_to_display(packet->dst64));
+ proto_item_append_text(proto_root, ", Dst: %s", eui64_to_display(wmem_packet_scope(), packet->dst64));
}
- col_append_fstr(pinfo->cinfo, COL_INFO, ", Dst: %s", ep_eui64_to_display(packet->dst64));
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Dst: %s", eui64_to_display(wmem_packet_scope(), packet->dst64));
offset += 8;
}
else if (packet->dst_addr_mode != IEEE802154_FCF_ADDR_NONE) {
@@ -848,10 +848,10 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
TVB_SET_ADDRESS(&pinfo->src, AT_EUI64, tvb, offset, 8);
if (tree) {
proto_tree_add_item(ieee802154_tree, hf_ieee802154_src64, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- proto_item_append_text(proto_root, ", Src: %s", ep_eui64_to_display(packet->src64));
+ proto_item_append_text(proto_root, ", Src: %s", eui64_to_display(wmem_packet_scope(), packet->src64));
}
- col_append_fstr(pinfo->cinfo, COL_INFO, ", Src: %s", ep_eui64_to_display(packet->src64));
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Src: %s", eui64_to_display(wmem_packet_scope(), packet->src64));
offset += 8;
}
else if (packet->src_addr_mode != IEEE802154_FCF_ADDR_NONE) {
diff --git a/epan/dissectors/packet-zbee-nwk.c b/epan/dissectors/packet-zbee-nwk.c
index 9053efd02f..53bf66ed34 100644
--- a/epan/dissectors/packet-zbee-nwk.c
+++ b/epan/dissectors/packet-zbee-nwk.c
@@ -1412,7 +1412,7 @@ static int dissect_zbee_beacon(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
offset += 8;
/* Update the Info Column with the EPID. */
- col_append_fstr(pinfo->cinfo, COL_INFO, ", EPID: %s", ep_eui64_to_display(epid));
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", EPID: %s", eui64_to_display(wmem_packet_scope(), epid));
/*
* In ZigBee 2006 the Tx-Offset is optional, while in the 2007 and
diff --git a/epan/dissectors/packet-zbee-zdp-binding.c b/epan/dissectors/packet-zbee-zdp-binding.c
index 67c03515cf..ba67f5ca7a 100644
--- a/epan/dissectors/packet-zbee-zdp-binding.c
+++ b/epan/dissectors/packet-zbee-zdp-binding.c
@@ -159,7 +159,7 @@ dissect_zbee_zdp_req_end_device_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tr
for (i=0; i<out_count; i++) zbee_parse_uint(field_tree, hf_zbee_zdp_out_cluster, tvb, &offset, sizeof_cluster, NULL);
if (version >= ZBEE_VERSION_2007) {
- zbee_append_info(tree, pinfo, " Src: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, " Src: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
}
zbee_append_info(tree, pinfo, ", Target: 0x%04x", target);
@@ -220,13 +220,13 @@ dissect_zbee_zdp_req_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
}
if (version >= ZBEE_VERSION_2007) {
- zbee_append_info(tree, pinfo, " Src: %s", ep_eui64_to_display(src64));
+ zbee_append_info(tree, pinfo, " Src: %s", eui64_to_display(wmem_packet_scope(), src64));
}
if (dst_mode == ZBEE_ZDP_ADDR_MODE_GROUP) {
zbee_append_info(tree, pinfo, ", Dst: 0x%04x", dst);
}
else {
- zbee_append_info(tree, pinfo, ", Dst: %s", ep_eui64_to_display(dst64));
+ zbee_append_info(tree, pinfo, ", Dst: %s", eui64_to_display(wmem_packet_scope(), dst64));
}
/* Dump any leftover bytes. */
@@ -286,13 +286,13 @@ dissect_zbee_zdp_req_unbind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
if (version >= ZBEE_VERSION_2007) {
- zbee_append_info(tree, pinfo, " Src: %s", ep_eui64_to_display(src64));
+ zbee_append_info(tree, pinfo, " Src: %s", eui64_to_display(wmem_packet_scope(), src64));
}
if (dst_mode == ZBEE_ZDP_ADDR_MODE_GROUP) {
zbee_append_info(tree, pinfo, ", Dst: 0x%04x", dst);
}
else {
- zbee_append_info(tree, pinfo, ", Dst: %s", ep_eui64_to_display(dst64));
+ zbee_append_info(tree, pinfo, ", Dst: %s", eui64_to_display(wmem_packet_scope(), dst64));
}
/* Dump any leftover bytes. */
@@ -321,7 +321,7 @@ dissect_zbee_zdp_req_bind_register(tvbuff_t *tvb, packet_info *pinfo, proto_tree
ext_addr = zbee_parse_eui64(tree, hf_zbee_zdp_ext_addr, tvb, &offset, (int)sizeof(guint64), NULL);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -355,8 +355,8 @@ dissect_zbee_zdp_req_replace_device(tvbuff_t *tvb, packet_info *pinfo, proto_tre
new_addr = zbee_parse_eui64(tree, hf_zbee_zdp_replacement, tvb, &offset, (int)sizeof(guint64), NULL);
/*new_ep =*/ zbee_parse_uint(tree, hf_zbee_zdp_replacement_ep, tvb, &offset, (int)sizeof(guint8), NULL);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
- zbee_append_info(tree, pinfo, ", Replacement: %s", ep_eui64_to_display(new_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
+ zbee_append_info(tree, pinfo, ", Replacement: %s", eui64_to_display(wmem_packet_scope(), new_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -406,7 +406,7 @@ dissect_zbee_zdp_req_store_bak_bind_entry(tvbuff_t *tvb, packet_info *pinfo, pro
}
else if (tree) proto_item_append_text(ti, " (Reserved)");
- zbee_append_info(tree, pinfo, ", Src: %s", ep_eui64_to_display(src64));
+ zbee_append_info(tree, pinfo, ", Src: %s", eui64_to_display(wmem_packet_scope(), src64));
zbee_append_info(tree, pinfo, ", Src Endpoint: %d", src_ep);
zbee_append_info(tree, pinfo, ", Cluster: %d", cluster);
@@ -458,7 +458,7 @@ dissect_zbee_zdp_req_remove_bak_bind_entry(tvbuff_t *tvb, packet_info *pinfo, pr
}
else if (tree) proto_item_append_text(ti, " (Reserved)");
- zbee_append_info(tree, pinfo, ", Src: %s", ep_eui64_to_display(src64));
+ zbee_append_info(tree, pinfo, ", Src: %s", eui64_to_display(wmem_packet_scope(), src64));
zbee_append_info(tree, pinfo, ", Src Endpoint: %d", src_ep);
zbee_append_info(tree, pinfo, ", Cluster: %d", cluster);
diff --git a/epan/dissectors/packet-zbee-zdp-discovery.c b/epan/dissectors/packet-zbee-zdp-discovery.c
index 0c7e5da3e3..217338210d 100644
--- a/epan/dissectors/packet-zbee-zdp-discovery.c
+++ b/epan/dissectors/packet-zbee-zdp-discovery.c
@@ -61,7 +61,7 @@ dissect_zbee_zdp_req_nwk_addr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
/*req_type =*/ zbee_parse_uint(tree, hf_zbee_zdp_req_type, tvb, &offset, sizeof(guint8), NULL);
/*idx =*/ zbee_parse_uint(tree, hf_zbee_zdp_index, tvb, &offset, sizeof(guint8), NULL);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -344,7 +344,7 @@ dissect_zbee_zdp_req_discovery_cache(tvbuff_t *tvb, packet_info *pinfo, proto_tr
/*device =*/ zbee_parse_uint(tree, hf_zbee_zdp_device, tvb, &offset, (int)sizeof(guint16), NULL);
ext_addr = zbee_parse_eui64(tree, hf_zbee_zdp_ext_addr, tvb, &offset, (int)sizeof(guint64), NULL);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -376,7 +376,7 @@ dissect_zbee_zdp_device_annce(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
ext_addr = zbee_parse_eui64(tree, hf_zbee_zdp_ext_addr, tvb, &offset, (int)sizeof(guint64), NULL);
/*capability =*/ zdp_parse_cinfo(tree, ett_zbee_zdp_cinfo, tvb, &offset);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -493,7 +493,7 @@ dissect_zbee_zdp_req_store_discovery(tvbuff_t *tvb, packet_info *pinfo, proto_tr
zbee_parse_uint(field_tree, hf_zbee_zdp_disc_simple_size, tvb, &offset, (int)sizeof(guint8), NULL);
}
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -524,7 +524,7 @@ dissect_zbee_zdp_req_store_node_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tr
ext_addr = zbee_parse_eui64(tree, hf_zbee_zdp_ext_addr, tvb, &offset, (int)sizeof(guint64), NULL);
zdp_parse_node_desc(tree, ett_zbee_zdp_node, tvb, &offset, version);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -555,7 +555,7 @@ dissect_zbee_zdp_req_store_power_desc(tvbuff_t *tvb, packet_info *pinfo, proto_t
ext_addr = zbee_parse_eui64(tree, hf_zbee_zdp_ext_addr, tvb, &offset, (int)sizeof(guint64), NULL);
zdp_parse_power_desc(tree, ett_zbee_zdp_power, tvb, &offset);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -596,7 +596,7 @@ dissect_zbee_zdp_req_store_active_ep(tvbuff_t *tvb, packet_info *pinfo, proto_tr
(void)zbee_parse_uint(field_tree, hf_zbee_zdp_endpoint, tvb, &offset, (int)sizeof(guint8), NULL);
}
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -629,7 +629,7 @@ dissect_zbee_zdp_req_store_simple_desc(tvbuff_t *tvb, packet_info *pinfo, proto_
/*simple_len =*/ zbee_parse_uint(tree, hf_zbee_zdp_simple_length, tvb, &offset, (int)sizeof(guint8), NULL);
zdp_parse_simple_desc(tree, ett_zbee_zdp_simple, tvb, &offset, version);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -659,7 +659,7 @@ dissect_zbee_zdp_req_remove_node_cache(tvbuff_t *tvb, packet_info *pinfo, proto_
/*device =*/ zbee_parse_uint(tree, hf_zbee_zdp_device, tvb, &offset, (int)sizeof(guint16), NULL);
ext_addr = zbee_parse_eui64(tree, hf_zbee_zdp_ext_addr, tvb, &offset, (int)sizeof(guint64), NULL);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -689,7 +689,7 @@ dissect_zbee_zdp_req_find_node_cache(tvbuff_t *tvb, packet_info *pinfo, proto_tr
/*device =*/ zbee_parse_uint(tree, hf_zbee_zdp_device, tvb, &offset, (int)sizeof(guint16), NULL);
ext_addr = zbee_parse_eui64(tree, hf_zbee_zdp_ext_addr, tvb, &offset, (int)sizeof(guint64), NULL);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -808,7 +808,7 @@ dissect_zbee_zdp_rsp_nwk_addr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
if (status == ZBEE_ZDP_STATUS_SUCCESS) {
- zbee_append_info(tree, pinfo, ", Device: %s = 0x%04x", ep_eui64_to_display(ext_addr), device);
+ zbee_append_info(tree, pinfo, ", Device: %s = 0x%04x", eui64_to_display(wmem_packet_scope(), ext_addr), device);
}
/* Dump any leftover bytes. */
@@ -862,7 +862,7 @@ dissect_zbee_zdp_rsp_ext_addr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
if (status == ZBEE_ZDP_STATUS_SUCCESS) {
- zbee_append_info(tree, pinfo, ", Device: 0x%04x = %s", device, ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: 0x%04x = %s", device, eui64_to_display(wmem_packet_scope(), ext_addr));
}
/* Dump any leftover bytes. */
diff --git a/epan/dissectors/packet-zbee-zdp-management.c b/epan/dissectors/packet-zbee-zdp-management.c
index c4d9ae7c32..b283f74061 100644
--- a/epan/dissectors/packet-zbee-zdp-management.c
+++ b/epan/dissectors/packet-zbee-zdp-management.c
@@ -372,7 +372,7 @@ dissect_zbee_zdp_req_mgmt_leave(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
offset += 1;
}
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
@@ -402,7 +402,7 @@ dissect_zbee_zdp_req_mgmt_direct_join(tvbuff_t *tvb, packet_info *pinfo, proto_t
ext_addr = zbee_parse_eui64(tree, hf_zbee_zdp_ext_addr, tvb, &offset, 8, NULL);
/*cinfo =*/ zdp_parse_cinfo(tree, ett_zbee_zdp_cinfo, tvb, &offset);
- zbee_append_info(tree, pinfo, ", Device: %s", ep_eui64_to_display(ext_addr));
+ zbee_append_info(tree, pinfo, ", Device: %s", eui64_to_display(wmem_packet_scope(), ext_addr));
/* Dump any leftover bytes. */
zdp_dump_excess(tvb, offset, pinfo, tree);
diff --git a/epan/proto.c b/epan/proto.c
index ba0efd2aa4..948928cca0 100644
--- a/epan/proto.c
+++ b/epan/proto.c
@@ -4386,9 +4386,11 @@ proto_custom_set(proto_tree* tree, GSList *field_ids, gint occurrence,
offset_r = (int)strlen(result);
break;
case FT_EUI64:
- offset_r += protoo_strlcpy(result+offset_r,
- eui64_to_str(fvalue_get_integer64(&finfo->value)),
- size-offset_r);
+ {
+ char* str = eui64_to_str(NULL, fvalue_get_integer64(&finfo->value));
+ offset_r += protoo_strlcpy(result+offset_r, str, size-offset_r);
+ wmem_free(NULL, str);
+ }
break;
case FT_IPv4:
@@ -6237,9 +6239,11 @@ proto_item_fill_label(field_info *fi, gchar *label_str)
case FT_EUI64:
integer64 = fvalue_get_integer64(&fi->value);
- label_fill_descr(label_str, 0, hfinfo,
- ep_eui64_to_display(integer64),
- eui64_to_str(integer64));
+ addr_str = eui64_to_str(NULL, integer64);
+ tmp = (char*)eui64_to_display(NULL, integer64);
+ label_fill_descr(label_str, 0, hfinfo, tmp, addr_str);
+ wmem_free(NULL, tmp);
+ wmem_free(NULL, addr_str);
break;
case FT_STRING:
case FT_STRINGZ:
diff --git a/epan/to_str.h b/epan/to_str.h
index a8d0c4fa6a..a57f15e19a 100644
--- a/epan/to_str.h
+++ b/epan/to_str.h
@@ -67,7 +67,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(wmem_allocator_t *scope, const guint32 ad, const char punct);
-WS_DLL_PUBLIC gchar* eui64_to_str(const guint64 ad);
+WS_DLL_PUBLIC gchar* eui64_to_str(wmem_allocator_t *scope, const guint64 ad);
WS_DLL_PUBLIC gchar* time_secs_to_str(wmem_allocator_t *scope, const gint32 time_val);
gchar* time_secs_to_str_unsigned(wmem_allocator_t *scope, const guint32);