aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2015-11-26 04:44:52 +0000
committerJoão Valverde <j@v6e.pt>2016-02-26 23:09:43 +0000
commite4c059f67f3b29bcc26b1faf111bf647ac630e04 (patch)
tree8ec634d7614f7a32c09c5cdb60d7509fc2dd2208 /epan
parent92537916483ec721a638cdd7c416d099a45a9304 (diff)
Add free_address_wmem(), fix warnings [-Wcast-qual]
Try to improve address API and also fix some constness warnings by not overloading the 'data' pointer to store malloc'ed buffers (use private pointer for that instead). Second try, now passing test suite. Change-Id: Idc101cd866b6d4f13500c9d59da5c7a38847fb7f Reviewed-on: https://code.wireshark.org/review/13946 Petri-Dish: João Valverde <j@v6e.pt> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'epan')
-rw-r--r--epan/address.h138
-rw-r--r--epan/conversation_table.c8
-rw-r--r--epan/dissectors/packet-dcerpc.c16
-rw-r--r--epan/dissectors/packet-dcom.c2
-rw-r--r--epan/dissectors/packet-dvbci.c4
-rw-r--r--epan/dissectors/packet-enip.c23
-rw-r--r--epan/dissectors/packet-forces.c19
-rw-r--r--epan/dissectors/packet-ftp.c2
-rw-r--r--epan/dissectors/packet-ieee802154.c12
-rw-r--r--epan/dissectors/packet-isakmp.c4
-rw-r--r--epan/dissectors/packet-jxta.c20
-rw-r--r--epan/dissectors/packet-lbtrm.c2
-rw-r--r--epan/dissectors/packet-lbtru.c2
-rw-r--r--epan/dissectors/packet-lbttcp.c2
-rw-r--r--epan/dissectors/packet-maccontrol.c2
-rw-r--r--epan/dissectors/packet-mgcp.c2
-rw-r--r--epan/dissectors/packet-ms-mms.c2
-rw-r--r--epan/dissectors/packet-msrp.c2
-rw-r--r--epan/dissectors/packet-nbap.c26
-rw-r--r--epan/dissectors/packet-openflow_v4.c48
-rw-r--r--epan/dissectors/packet-openflow_v5.c48
-rw-r--r--epan/dissectors/packet-radius.c2
-rw-r--r--epan/dissectors/packet-rdt.c2
-rw-r--r--epan/dissectors/packet-rpc.c2
-rw-r--r--epan/dissectors/packet-rtcp.c2
-rw-r--r--epan/dissectors/packet-rtp.c4
-rw-r--r--epan/dissectors/packet-sdp.c18
-rw-r--r--epan/dissectors/packet-sflow.c25
-rw-r--r--epan/dissectors/packet-sprt.c2
-rw-r--r--epan/dissectors/packet-ssl-utils.c2
-rw-r--r--epan/dissectors/packet-t38.c2
-rw-r--r--epan/dissectors/packet-teamspeak2.c4
-rw-r--r--epan/dissectors/packet-uma.c6
-rw-r--r--epan/dissectors/packet-vuze-dht.c2
-rw-r--r--epan/packet.c60
-rw-r--r--epan/reassemble.c16
-rw-r--r--epan/wslua/wslua_address.c42
-rw-r--r--epan/wslua/wslua_field.c20
-rw-r--r--epan/wslua/wslua_tvb.c27
39 files changed, 332 insertions, 290 deletions
diff --git a/epan/address.h b/epan/address.h
index 897e7f0fe0..730acfb136 100644
--- a/epan/address.h
+++ b/epan/address.h
@@ -63,9 +63,24 @@ typedef enum {
typedef struct _address {
int type; /* type of address */
int len; /* length of address, in bytes */
- const void *data; /* pointer to address data */
+ const void *data; /* pointer to address data */
+
+ /* private */
+ void *priv;
} address;
+#define ADDRESS_INIT(type, len, data) {type, len, data, NULL}
+#define ADDRESS_INIT_NONE ADDRESS_INIT(AT_NONE, 0, NULL)
+
+static inline void
+clear_address(address *addr)
+{
+ addr->type = AT_NONE;
+ addr->len = 0;
+ addr->data = NULL;
+ addr->priv = NULL;
+}
+
/** Initialize an address with the given values.
*
* @param addr [in,out] The address to initialize.
@@ -76,9 +91,10 @@ typedef struct _address {
*/
static inline void
set_address(address *addr, int addr_type, int addr_len, const void *addr_data) {
- addr->data = addr_data;
addr->type = addr_type;
addr->len = addr_len;
+ addr->data = addr_data;
+ addr->priv = NULL;
}
/** Initialize an address from TVB data.
@@ -104,6 +120,52 @@ set_address_tvb(address *addr, int addr_type, int addr_len, tvbuff_t *tvb, int o
set_address(addr, addr_type, addr_len, p);
}
+/** Initialize an address with the given values, allocating a new buffer
+ * for the address data using wmem-scoped memory.
+ *
+ * @param scope [in] The lifetime of the allocated memory, e.g., wmem_packet_scope()
+ * @param addr [in,out] The address to initialize.
+ * @param addr_type [in] Address type.
+ * @param addr_len [in] The length in bytes of the address data. For example, 4 for
+ * AT_IPv4 or sizeof(struct e_in6_addr) for AT_IPv6.
+ * @param addr_data [in] Pointer to the address data.
+ */
+static inline void
+alloc_address_wmem(wmem_allocator_t *scope, address *addr,
+ int addr_type, int addr_len, const void *addr_data) {
+ if (addr == NULL)
+ return;
+ addr->type = addr_type;
+ addr->len = addr_len;
+ if (addr_type == AT_NONE || addr->len <= 0) {
+ addr->data = addr->priv = NULL;
+ return;
+ }
+ addr->priv = wmem_memdup(scope, addr_data, addr->len);
+ addr->data = addr->priv;
+}
+
+/** Allocate an address from TVB data.
+ *
+ * Same as alloc_address_wmem but it takes a TVB and an offset.
+ *
+ * @param scope [in] The lifetime of the allocated memory, e.g., wmem_packet_scope()
+ * @param addr [in,out] The address to initialize.
+ * @param addr_type [in] Address type.
+ * @param addr_len [in] The length in bytes of the address data. For example, 4 for
+ * AT_IPv4 or sizeof(struct e_in6_addr) for AT_IPv6.
+ * @param tvb [in] Pointer to the TVB.
+ * @param offset [in] Offset within the TVB.
+ */
+static inline void
+alloc_address_tvb(wmem_allocator_t *scope, address *addr,
+ int addr_type, int addr_len, tvbuff_t *tvb, int offset) {
+ const void *p;
+
+ p = tvb_get_ptr(tvb, offset, addr_len);
+ alloc_address_wmem(scope, addr, addr_type, addr_len, p);
+}
+
/** Compare two addresses.
*
* @param addr1 [in] The first address to compare.
@@ -163,56 +225,66 @@ addresses_data_equal(const address *addr1, const address *addr2) {
return FALSE;
}
-/** Copy an address, allocating a new buffer for the address data.
+/** Perform a shallow copy of the address (both addresses point to the same
+ * memory location).
*
* @param to [in,out] The destination address.
* @param from [in] The source address.
+ *
+ * \warning Make sure 'from' memory stays valid for the lifetime of this object.
+ * Also it's strongly recommended to use this function instead of copy-assign.
*/
static inline void
-copy_address(address *to, const address *from) {
- guint8 *to_data;
-
- to->type = from->type;
- to->len = from->len;
- to_data = (guint8 *)g_malloc(from->len);
- if (from->len != 0)
- memcpy(to_data, from->data, from->len);
- to->data = to_data;
+copy_address_shallow(address *to, const address *from) {
+ set_address(to, from->type, from->len, from->data);
}
-/** Perform a shallow copy of the address (both addresses point to the same
- * memory location).
+/** Copy an address, allocating a new buffer for the address data
+ * using wmem-scoped memory.
*
+ * @param scope [in] The lifetime of the allocated memory, e.g., wmem_packet_scope()
* @param to [in,out] The destination address.
* @param from [in] The source address.
*/
static inline void
-copy_address_shallow(address *to, const address *from) {
- memcpy(to, from, sizeof(address));
- /*
- to->type = from->type;
- to->len = from->len;
- to->data = from->data;
- */
+copy_address_wmem(wmem_allocator_t *scope, address *to, const address *from) {
+ alloc_address_wmem(scope, to, from->type, from->len, from->data);
}
-/** Copy an address, allocating a new buffer for the address data
- * using wmem-scoped memory.
+/** Copy an address, allocating a new buffer for the address data.
*
- * @param scope [in] The lifetime of the allocated memory, wmem_packet_scope()
* @param to [in,out] The destination address.
* @param from [in] The source address.
*/
static inline void
-copy_address_wmem(wmem_allocator_t *scope, address *to, const address *from) {
- void *to_data;
-
- to->type = from->type;
- to->len = from->len;
- to_data = wmem_alloc(scope, from->len);
- if (from->len != 0)
- memcpy(to_data, from->data, from->len);
- to->data = to_data;
+copy_address(address *to, const address *from) {
+ copy_address_wmem(NULL, to, from);
+}
+
+/** Free an address allocated with wmem-scoped memory.
+ *
+ * @param scope [in] The lifetime of the allocated memory, e.g., wmem_packet_scope()
+ * @param addr [in,out] The address whose data to free.
+ */
+static inline void
+free_address_wmem(wmem_allocator_t *scope, address *addr) {
+ /* Because many dissectors set 'type = AT_NONE' to mean clear we check for that */
+ if (addr->type != AT_NONE && addr->len > 0 && addr->priv != NULL) {
+ /* Make sure API use is correct */
+ /* if priv is not null then data == priv */
+ g_assert(addr->data == addr->priv);
+ wmem_free(scope, addr->priv);
+ }
+ clear_address(addr);
+}
+
+/** Free an address.
+ *
+ * @param addr [in,out] The address whose data to free.
+ */
+static inline void
+free_address(address *addr) {
+ free_address_wmem(NULL, addr);
}
/** Hash an address into a hash value (which must already have been set).
diff --git a/epan/conversation_table.c b/epan/conversation_table.c
index a41d49e3c7..e92f986d10 100644
--- a/epan/conversation_table.c
+++ b/epan/conversation_table.c
@@ -285,8 +285,8 @@ reset_conversation_table_data(conv_hash_t *ch)
guint i;
for(i = 0; i < ch->conv_array->len; i++){
conv_item_t *conv = &g_array_index(ch->conv_array, conv_item_t, i);
- g_free((gpointer)conv->src_address.data);
- g_free((gpointer)conv->dst_address.data);
+ free_address(&conv->src_address);
+ free_address(&conv->dst_address);
}
g_array_free(ch->conv_array, TRUE);
@@ -310,7 +310,7 @@ void reset_hostlist_table_data(conv_hash_t *ch)
guint i;
for(i = 0; i < ch->conv_array->len; i++){
hostlist_talker_t *host = &g_array_index(ch->conv_array, hostlist_talker_t, i);
- g_free((gpointer)host->myaddress.data);
+ free_address(&host->myaddress);
}
g_array_free(ch->conv_array, TRUE);
@@ -769,7 +769,7 @@ add_hostlist_table_data(conv_hash_t *ch, const address *addr, guint32 port, gboo
host_key_t existing_key;
gpointer talker_idx_hash_val;
- existing_key.myaddress = *addr;
+ copy_address_shallow(&existing_key.myaddress, addr);
existing_key.port = port;
if (g_hash_table_lookup_extended(ch->hashtable, &existing_key, NULL, &talker_idx_hash_val)) {
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c
index c116ef6e1c..cc41270723 100644
--- a/epan/dissectors/packet-dcerpc.c
+++ b/epan/dissectors/packet-dcerpc.c
@@ -797,8 +797,8 @@ decode_dcerpc_binding_free(void *binding_in)
{
decode_dcerpc_bind_values_t *binding = (decode_dcerpc_bind_values_t *)binding_in;
- g_free((void *) binding->addr_a.data);
- g_free((void *) binding->addr_b.data);
+ free_address(&binding->addr_a);
+ free_address(&binding->addr_b);
if (binding->ifname)
g_string_free(binding->ifname, TRUE);
g_free(binding);
@@ -962,8 +962,8 @@ decode_dcerpc_binding_reset(const char *name _U_, gconstpointer pattern)
decode_dcerpc_bindings = g_slist_remove(decode_dcerpc_bindings, le->data);
- g_free((void *) old_binding->addr_a.data);
- g_free((void *) old_binding->addr_b.data);
+ free_address(&old_binding->addr_a);
+ free_address(&old_binding->addr_b);
g_string_free(old_binding->ifname, TRUE);
g_free(old_binding);
return FALSE;
@@ -1082,8 +1082,8 @@ dcerpc_fragment_temporary_key(const packet_info *pinfo, const guint32 id,
dcerpc_fragment_key *key = g_slice_new(dcerpc_fragment_key);
const e_dce_dg_common_hdr_t *hdr = (const e_dce_dg_common_hdr_t *)data;
- key->src = pinfo->src;
- key->dst = pinfo->dst;
+ copy_address_shallow(&key->src, &pinfo->src);
+ copy_address_shallow(&key->dst, &pinfo->dst);
key->id = id;
key->act_id = hdr->act_id;
@@ -1124,8 +1124,8 @@ dcerpc_fragment_free_persistent_key(gpointer ptr)
/*
* Free up the copies of the addresses from the old key.
*/
- g_free((gpointer)key->src.data);
- g_free((gpointer)key->dst.data);
+ free_address(&key->src);
+ free_address(&key->dst);
g_slice_free(dcerpc_fragment_key, key);
}
diff --git a/epan/dissectors/packet-dcom.c b/epan/dissectors/packet-dcom.c
index 3225a7465e..cab217518a 100644
--- a/epan/dissectors/packet-dcom.c
+++ b/epan/dissectors/packet-dcom.c
@@ -2192,7 +2192,7 @@ static void dcom_cleanup(void) {
objects->data = NULL; /* for good measure */
}
g_list_free(machine->objects);
- g_free((void*)machine->ip.data);
+ free_address(&machine->ip);
machine->objects = NULL; /* for good measure */
}
diff --git a/epan/dissectors/packet-dvbci.c b/epan/dissectors/packet-dvbci.c
index 17aec9ea85..650086849d 100644
--- a/epan/dissectors/packet-dvbci.c
+++ b/epan/dissectors/packet-dvbci.c
@@ -1676,8 +1676,8 @@ guint8
dvbci_get_evt_from_addrs(packet_info *pinfo)
{
/* this should be working from C89 on */
- static const address a_cam = { AT_STRINGZ, sizeof(ADDR_CAM), ADDR_CAM };
- static const address a_host = { AT_STRINGZ, sizeof(ADDR_HOST), ADDR_HOST };
+ static const address a_cam = ADDRESS_INIT(AT_STRINGZ, sizeof(ADDR_CAM), ADDR_CAM);
+ static const address a_host = ADDRESS_INIT(AT_STRINGZ, sizeof(ADDR_HOST), ADDR_HOST);
if ( addresses_equal(&(pinfo->src), &a_cam) &&
addresses_equal(&(pinfo->dst), &a_host) ) {
diff --git a/epan/dissectors/packet-enip.c b/epan/dissectors/packet-enip.c
index 6f6ea947ff..d008719e2c 100644
--- a/epan/dissectors/packet-enip.c
+++ b/epan/dissectors/packet-enip.c
@@ -1105,14 +1105,14 @@ enip_open_cip_connection( packet_info *pinfo, cip_conn_info_t* connInfo)
((connInfo->O2T.ipaddress.type == AT_IPv4) && ((*(const guint32*)connInfo->O2T.ipaddress.data)) == 0) ||
((connInfo->O2T.ipaddress.type == AT_IPv6) && (memcmp(connInfo->O2T.ipaddress.data, &ipv6_zero, sizeof(ipv6_zero)) == 0)) ||
(connInfo->O2T.type != CONN_TYPE_MULTICAST))
- connInfo->O2T.ipaddress = pinfo->src;
+ copy_address_shallow(&connInfo->O2T.ipaddress, &pinfo->src);
if ((connInfo->T2O.port == 0) || (connInfo->T2O.type == CONN_TYPE_MULTICAST))
connInfo->T2O.port = ENIP_IO_PORT;
if ((connInfo->T2O.ipaddress.type == AT_NONE) ||
((connInfo->T2O.ipaddress.type == AT_IPv4) && ((*(const guint32*)connInfo->T2O.ipaddress.data)) == 0) ||
((connInfo->T2O.ipaddress.type == AT_IPv6) && (memcmp(connInfo->T2O.ipaddress.data, &ipv6_zero, sizeof(ipv6_zero)) == 0)) ||
(connInfo->T2O.type != CONN_TYPE_MULTICAST))
- connInfo->T2O.ipaddress = pinfo->dst;
+ copy_address_shallow(&connInfo->T2O.ipaddress, &pinfo->dst);
if (connInfo->O2T.ipaddress.type == AT_IPv6)
{
@@ -2537,24 +2537,17 @@ dissect_cpf(enip_request_key_t *request_key, int command, tvbuff_t *tvb,
request_info = (enip_request_info_t *)p_get_proto_data(wmem_file_scope(), pinfo, proto_enip, ENIP_REQUEST_INFO);
if (request_info != NULL)
{
- guint16 port;
- guint32 *datap;
-
- port = tvb_get_ntohs(tvb, offset+8);
- datap = (guint32 *)wmem_alloc(wmem_file_scope(), sizeof(guint32));
- *datap = tvb_get_ipv4(tvb, offset+10);
-
if (item == SOCK_ADR_INFO_OT)
{
- request_info->cip_info->connInfo->O2T.port = port;
- set_address(&request_info->cip_info->connInfo->O2T.ipaddress,
- AT_IPv4, sizeof(guint32), datap);
+ request_info->cip_info->connInfo->O2T.port = tvb_get_ntohs(tvb, offset+8);
+ alloc_address_tvb(wmem_file_scope(), &request_info->cip_info->connInfo->O2T.ipaddress,
+ AT_IPv4, sizeof(guint32), tvb, offset+10);
}
else
{
- request_info->cip_info->connInfo->T2O.port = port;
- set_address(&request_info->cip_info->connInfo->T2O.ipaddress,
- AT_IPv4, sizeof(guint32), datap);
+ request_info->cip_info->connInfo->T2O.port = tvb_get_ntohs(tvb, offset+8);
+ alloc_address_tvb(wmem_file_scope(), &request_info->cip_info->connInfo->T2O.ipaddress,
+ AT_IPv4, sizeof(guint32), tvb, offset+10);
}
}
}
diff --git a/epan/dissectors/packet-forces.c b/epan/dissectors/packet-forces.c
index 237c28ce75..b1a56b630d 100644
--- a/epan/dissectors/packet-forces.c
+++ b/epan/dissectors/packet-forces.c
@@ -411,10 +411,13 @@ dissect_redirecttlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint of
gint start_offset;
gint length_meta, length_ilv, length_redirect;
proto_item *ti;
- address src_addr = pinfo->src,
- src_net_addr = pinfo->net_src,
- dst_addr = pinfo->dst,
- dst_net_addr = pinfo->net_dst;
+ address src_addr, src_net_addr;
+ address dst_addr, dst_net_addr;
+
+ copy_address_shallow(&src_addr, &pinfo->src);
+ copy_address_shallow(&src_net_addr, &pinfo->net_src);
+ copy_address_shallow(&dst_addr, &pinfo->dst);
+ copy_address_shallow(&dst_net_addr, &pinfo->net_dst);
meta_data_tree = proto_tree_add_subtree(tree, tvb, offset, TLV_TL_LENGTH,
ett_forces_redirect_tlv_meta_data_tlv, &ti, "Meta Data TLV");
@@ -476,10 +479,10 @@ dissect_redirecttlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint of
call_dissector(ip_handle, next_tvb, pinfo, redirect_data_tree);
/* Restore IP info */
- memcpy(&(pinfo->src), &src_addr, sizeof(address));
- memcpy(&(pinfo->net_src), &src_net_addr, sizeof(address));
- memcpy(&(pinfo->dst), &dst_addr, sizeof(address));
- memcpy(&(pinfo->net_dst), &dst_net_addr, sizeof(address));
+ copy_address_shallow(&pinfo->src, &src_addr);
+ copy_address_shallow(&pinfo->net_src, &src_net_addr);
+ copy_address_shallow(&pinfo->dst, &dst_addr);
+ copy_address_shallow(&pinfo->net_dst, &dst_net_addr);
}
}
}
diff --git a/epan/dissectors/packet-ftp.c b/epan/dissectors/packet-ftp.c
index 6487d2e9b1..caa9c3147d 100644
--- a/epan/dissectors/packet-ftp.c
+++ b/epan/dissectors/packet-ftp.c
@@ -545,7 +545,7 @@ dissect_ftp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
gboolean ftp_nat;
conversation_t *conversation;
- ftp_ip_address = pinfo->src;
+ copy_address_shallow(&ftp_ip_address, &pinfo->src);
if (pinfo->match_uint == pinfo->destport)
is_request = TRUE;
diff --git a/epan/dissectors/packet-ieee802154.c b/epan/dissectors/packet-ieee802154.c
index 5ff7344af2..78faba7895 100644
--- a/epan/dissectors/packet-ieee802154.c
+++ b/epan/dissectors/packet-ieee802154.c
@@ -811,12 +811,12 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
* ADDRESSING FIELDS
*/
/* Clear out the addressing strings. */
- set_address(&pinfo->net_dst, AT_NONE, 0, NULL);
- copy_address_shallow(&pinfo->dl_dst, &pinfo->net_dst);
- copy_address_shallow(&pinfo->dst, &pinfo->net_dst);
- set_address(&pinfo->net_src, AT_NONE, 0, NULL);
- copy_address_shallow(&pinfo->dl_src, &pinfo->net_src);
- copy_address_shallow(&pinfo->src, &pinfo->net_src);
+ clear_address(&pinfo->net_dst);
+ clear_address(&pinfo->dl_dst);
+ clear_address(&pinfo->dst);
+ clear_address(&pinfo->net_src);
+ clear_address(&pinfo->dl_src);
+ clear_address(&pinfo->src);
if (packet->dst_addr_mode == IEEE802154_FCF_ADDR_RESERVED) {
/* Invalid Destination Address Mode. Abort Dissection. */
diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c
index 6cfd973e2b..e29e680ab5 100644
--- a/epan/dissectors/packet-isakmp.c
+++ b/epan/dissectors/packet-isakmp.c
@@ -2878,7 +2878,7 @@ dissect_isakmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
#ifdef HAVE_LIBGCRYPT
if (isakmp_version == 1) {
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
tvb_memcpy(tvb, i_cookie, offset, COOKIE_SIZE);
decr = (decrypt_data_t*) g_hash_table_lookup(isakmp_hash, i_cookie);
@@ -2888,7 +2888,7 @@ dissect_isakmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
decr = (decrypt_data_t *)g_slice_alloc(sizeof(decrypt_data_t));
memcpy(ic_key, i_cookie, COOKIE_SIZE);
memset(decr, 0, sizeof(decrypt_data_t));
- set_address(&decr->initiator, AT_NONE, 0, NULL);
+ clear_address(&decr->initiator);
g_hash_table_insert(isakmp_hash, ic_key, decr);
}
diff --git a/epan/dissectors/packet-jxta.c b/epan/dissectors/packet-jxta.c
index 454c7a66d4..6be32b8b2a 100644
--- a/epan/dissectors/packet-jxta.c
+++ b/epan/dissectors/packet-jxta.c
@@ -692,9 +692,9 @@ static int dissect_jxta_stream(tvbuff_t * tvb, packet_info * pinfo, proto_tree *
/* g_message("%d From initiator : %s -> %s ", pinfo->num,
address_to_str(wmem_packet_scope(), &tpt_conv_data->initiator_address),
address_to_str(wmem_packet_scope(), &tpt_conv_data->receiver_address)); */
- pinfo->src = tpt_conv_data->initiator_address;
+ copy_address_shallow(&pinfo->src, &tpt_conv_data->initiator_address);
pinfo->srcport = 0;
- pinfo->dst = tpt_conv_data->receiver_address;
+ copy_address_shallow(&pinfo->dst, &tpt_conv_data->receiver_address);
pinfo->destport = 0;
pinfo->ptype = PT_NONE;
} else if (addresses_equal(&pinfo->src, &tpt_conv_data->receiver_tpt_address) &&
@@ -702,9 +702,9 @@ static int dissect_jxta_stream(tvbuff_t * tvb, packet_info * pinfo, proto_tree *
/* g_message("%d From receiver : %s -> %s ", pinfo->num,
address_to_str(wmem_packet_scope(), &tpt_conv_data->receiver_address),
address_to_str(wmem_packet_scope(), &tpt_conv_data->initiator_address)); */
- pinfo->src = tpt_conv_data->receiver_address;
+ copy_address_shallow(&pinfo->src, &tpt_conv_data->receiver_address);
pinfo->srcport = 0;
- pinfo->dst = tpt_conv_data->initiator_address;
+ copy_address_shallow(&pinfo->dst, &tpt_conv_data->initiator_address);
pinfo->destport = 0;
pinfo->ptype = PT_NONE;
} else {
@@ -768,16 +768,12 @@ static jxta_stream_conversation_data *get_tpt_conversation(packet_info * pinfo)
copy_address_wmem(wmem_file_scope(), &tpt_conv_data->initiator_tpt_address, &pinfo->src);
tpt_conv_data->initiator_tpt_port = pinfo->srcport;
tpt_conv_data->initiator_welcome_frame = 0;
- tpt_conv_data->initiator_address.type = AT_NONE;
- tpt_conv_data->initiator_address.len = 0;
- tpt_conv_data->initiator_address.data = NULL;
+ clear_address(&tpt_conv_data->initiator_address);
copy_address_wmem(wmem_file_scope(), &tpt_conv_data->receiver_tpt_address, &pinfo->dst);
tpt_conv_data->receiver_tpt_port = pinfo->destport;
tpt_conv_data->receiver_welcome_frame = 0;
- tpt_conv_data->receiver_address.type = AT_NONE;
- tpt_conv_data->receiver_address.len = 0;
- tpt_conv_data->receiver_address.data = NULL;
+ clear_address(&tpt_conv_data->receiver_address);
conversation_add_proto_data(tpt_conversation, proto_jxta, tpt_conv_data);
}
@@ -1332,8 +1328,8 @@ static int dissect_jxta_message(tvbuff_t * tvb, packet_info * pinfo, proto_tree
if ((uri_address_type == pinfo->src.type) && (uri_address_type == pinfo->dst.type)) {
jxta_tap_header *tap_header = wmem_new(wmem_file_scope(), jxta_tap_header);
- tap_header->src_address = pinfo->src;
- tap_header->dest_address = pinfo->dst;
+ copy_address_shallow(&tap_header->src_address, &pinfo->src);
+ copy_address_shallow(&tap_header->dest_address, &pinfo->dst);
tap_header->size = offset - message_start_offset ;
tap_queue_packet(jxta_tap, pinfo, tap_header);
diff --git a/epan/dissectors/packet-lbtrm.c b/epan/dissectors/packet-lbtrm.c
index 805ad93b68..f3e1e6842d 100644
--- a/epan/dissectors/packet-lbtrm.c
+++ b/epan/dissectors/packet-lbtrm.c
@@ -52,7 +52,7 @@ static int lbtrm_tap_handle = -1;
/* LBT-RM transport management. */
/*----------------------------------------------------------------------------*/
-static const address lbtrm_null_address = { AT_NONE, 0, NULL };
+static const address lbtrm_null_address = ADDRESS_INIT_NONE;
static lbtrm_transport_t * lbtrm_transport_unicast_find(const address * source_address, guint16 source_port, guint32 session_id, guint32 frame)
{
diff --git a/epan/dissectors/packet-lbtru.c b/epan/dissectors/packet-lbtru.c
index 162c198eaa..8b79178a43 100644
--- a/epan/dissectors/packet-lbtru.c
+++ b/epan/dissectors/packet-lbtru.c
@@ -49,7 +49,7 @@ static int lbtru_tap_handle = -1;
/* LBT-RU transport management. */
/*----------------------------------------------------------------------------*/
-static const address lbtru_null_address = { AT_NONE, 0, NULL };
+static const address lbtru_null_address = ADDRESS_INIT_NONE;
static lbtru_transport_t * lbtru_transport_find(const address * source_address, guint16 source_port, guint32 session_id, guint32 frame)
{
diff --git a/epan/dissectors/packet-lbttcp.c b/epan/dissectors/packet-lbttcp.c
index 9b1bd98be5..615b760255 100644
--- a/epan/dissectors/packet-lbttcp.c
+++ b/epan/dissectors/packet-lbttcp.c
@@ -51,7 +51,7 @@ typedef struct
wmem_tree_t * session_tree;
} lbttcp_transport_conv_data_t;
-static const address lbttcp_null_address = { AT_NONE, 0, NULL };
+static const address lbttcp_null_address = ADDRESS_INIT_NONE;
lbttcp_transport_t * lbttcp_transport_find(const address * source_address, guint16 source_port, guint32 session_id, guint32 frame)
{
diff --git a/epan/dissectors/packet-maccontrol.c b/epan/dissectors/packet-maccontrol.c
index a61d67939a..749872f9f9 100644
--- a/epan/dissectors/packet-maccontrol.c
+++ b/epan/dissectors/packet-maccontrol.c
@@ -127,7 +127,7 @@ static const value_string reg_flags_vals[] = {
};
static const guint8 dst_addr[] = {0x01, 0x80, 0xC2, 0x00, 0x00, 0x01};
-static const address macctrl_dst_address = { AT_ETHER, 6, dst_addr};
+static const address macctrl_dst_address = ADDRESS_INIT(AT_ETHER, 6, dst_addr);
static int
dissect_macctrl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
diff --git a/epan/dissectors/packet-mgcp.c b/epan/dissectors/packet-mgcp.c
index 126558db57..1e3c2f515c 100644
--- a/epan/dissectors/packet-mgcp.c
+++ b/epan/dissectors/packet-mgcp.c
@@ -1127,7 +1127,7 @@ static void dissect_mgcp_firstline(tvbuff_t *tvb, packet_info *pinfo, proto_tree
const gchar *verb_description = "";
char code_with_verb[64] = ""; /* To fit "<4-letter-code> (<longest-verb>)" */
- static address null_address = { AT_NONE, 0, NULL };
+ static address null_address = ADDRESS_INIT_NONE;
tvb_previous_offset = 0;
tvb_len = tvb_reported_length(tvb);
tvb_current_offset = tvb_previous_offset;
diff --git a/epan/dissectors/packet-ms-mms.c b/epan/dissectors/packet-ms-mms.c
index f4498a16a9..85353a9166 100644
--- a/epan/dissectors/packet-ms-mms.c
+++ b/epan/dissectors/packet-ms-mms.c
@@ -1127,7 +1127,7 @@ static void msmms_data_add_address(packet_info *pinfo, address *addr, port_type
return;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
/* Check if the ip address and port combination is not
* already registered as a conversation. */
diff --git a/epan/dissectors/packet-msrp.c b/epan/dissectors/packet-msrp.c
index 4fe1801ffb..c8b08c174f 100644
--- a/epan/dissectors/packet-msrp.c
+++ b/epan/dissectors/packet-msrp.c
@@ -167,7 +167,7 @@ msrp_add_address( packet_info *pinfo,
return;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
/*
* Check if the ip address and port combination is not
diff --git a/epan/dissectors/packet-nbap.c b/epan/dissectors/packet-nbap.c
index 9abd00040e..142e491499 100644
--- a/epan/dissectors/packet-nbap.c
+++ b/epan/dissectors/packet-nbap.c
@@ -10315,7 +10315,7 @@ int i;
}
/*Find the conversations assoicated with the HS-DSCH flows in this packet and set proper H-RNTI*/
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
for (i = 0; i < maxNrOfMACdFlows; i++) {
if (nbap_hsdsch_channel_info[i].crnc_port != 0){
conversation = find_conversation(actx->pinfo->num, &(nbap_hsdsch_channel_info[i].crnc_address), &null_addr,
@@ -18247,7 +18247,7 @@ guint32 no_ddi_entries, i;
}
/* Check if we have conversation info */
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
p_conv = find_conversation(actx->pinfo->num, &nbap_edch_channel_info[e_dch_macdflow_id].crnc_address, &null_addr,
PT_UDP,
nbap_edch_channel_info[e_dch_macdflow_id].crnc_port, 0, NO_ADDR_B);
@@ -18542,7 +18542,7 @@ num_items = 1;
/*Do the configurations*/
/* Check if we have conversation info */
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
p_conv = find_conversation(actx->pinfo->num, &nbap_edch_channel_info[e_dch_macdflow_id].crnc_address, &null_addr,
PT_UDP,
nbap_edch_channel_info[e_dch_macdflow_id].crnc_port, 0, NO_ADDR_B);
@@ -18654,7 +18654,7 @@ BindingID_port = 0;
* Basically the idea here is that we create a new converation (Which is ok? maybe?)
* And then hijack the old conversation and let lower tree items configure that hijacked data.
* */
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
@@ -23362,7 +23362,7 @@ int i;
return offset;
}
/* Set port to zero use that as an indication of whether we have data or not */
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
for (i = 0; i < maxNrOfCommonMACFlows; i++) {
if (nbap_common_channel_info[i].crnc_port != 0){
@@ -23807,7 +23807,7 @@ dissect_nbap_HSDSCH_FDD_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
}
/* Set port to zero use that as an indication of whether we have data or not */
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
for (i = 0; i < maxNrOfMACdFlows; i++) {
if (nbap_hsdsch_channel_info[i].crnc_port != 0){
nbap_debug("Frame %u HSDSCH-MACdFlows-Information:hsdsch_macdflow_id %u Look for conv on IP %s Port %u",
@@ -24141,7 +24141,7 @@ dissect_nbap_HSDSCH_Information_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn
}
/* Set port to zero use that as an indication of whether we have data or not */
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
nbap_debug("Frame %u HSDSCH-MACdFlows-Information Start",
actx->pinfo->num);
@@ -28682,7 +28682,7 @@ dch_id = 0xFFFFFFFF;
return offset;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
@@ -28820,7 +28820,7 @@ BindingID_port = 0;
{
return offset;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
@@ -32389,7 +32389,7 @@ transportFormatSet_type = NBAP_CPCH;
{
return offset;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
@@ -32554,7 +32554,7 @@ num_items = 1;
{
return offset;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
@@ -32697,7 +32697,7 @@ transportFormatSet_type = NBAP_CPCH;
{
return offset;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
@@ -55227,7 +55227,7 @@ static void add_hsdsch_bind(packet_info *pinfo){
}
/* Set port to zero use that as an indication of whether we have data or not */
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
for (i = 0; i < maxNrOfMACdFlows; i++) {
if (nbap_hsdsch_channel_info[i].crnc_port != 0){
conversation = find_conversation(pinfo->num, &(nbap_hsdsch_channel_info[i].crnc_address), &null_addr,
diff --git a/epan/dissectors/packet-openflow_v4.c b/epan/dissectors/packet-openflow_v4.c
index 194ab8e7ef..cb525a7a0a 100644
--- a/epan/dissectors/packet-openflow_v4.c
+++ b/epan/dissectors/packet-openflow_v4.c
@@ -1820,12 +1820,12 @@ dissect_openflow_packet_in_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* save some state */
save_writable = col_get_writable(pinfo->cinfo);
save_in_error_pkt = pinfo->flags.in_error_pkt;
- save_dl_src = pinfo->dl_src;
- save_dl_dst = pinfo->dl_dst;
- save_net_src = pinfo->net_src;
- save_net_dst = pinfo->net_dst;
- save_src = pinfo->src;
- save_dst = pinfo->dst;
+ copy_address_shallow(&save_dl_src, &pinfo->dl_src);
+ copy_address_shallow(&save_dl_dst, &pinfo->dl_dst);
+ copy_address_shallow(&save_net_src, &pinfo->net_src);
+ copy_address_shallow(&save_net_dst, &pinfo->net_dst);
+ copy_address_shallow(&save_src, &pinfo->src);
+ copy_address_shallow(&save_dst, &pinfo->dst);
/* dissect data */
col_set_writable(pinfo->cinfo, FALSE);
@@ -1835,12 +1835,12 @@ dissect_openflow_packet_in_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* restore saved state */
col_set_writable(pinfo->cinfo, save_writable);
pinfo->flags.in_error_pkt = save_in_error_pkt;
- pinfo->dl_src = save_dl_src;
- pinfo->dl_dst = save_dl_dst;
- pinfo->net_src = save_net_src;
- pinfo->net_dst = save_net_dst;
- pinfo->src = save_src;
- pinfo->dst = save_dst;
+ copy_address_shallow(&pinfo->dl_src, &save_dl_src);
+ copy_address_shallow(&pinfo->dl_dst, &save_dl_dst);
+ copy_address_shallow(&pinfo->net_src, &save_net_src);
+ copy_address_shallow(&pinfo->net_dst, &save_net_dst);
+ copy_address_shallow(&pinfo->src, &save_src);
+ copy_address_shallow(&pinfo->dst, &save_dst);
}
}
@@ -2407,12 +2407,12 @@ dissect_openflow_packet_out_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* save some state */
save_writable = col_get_writable(pinfo->cinfo);
save_in_error_pkt = pinfo->flags.in_error_pkt;
- save_dl_src = pinfo->dl_src;
- save_dl_dst = pinfo->dl_dst;
- save_net_src = pinfo->net_src;
- save_net_dst = pinfo->net_dst;
- save_src = pinfo->src;
- save_dst = pinfo->dst;
+ copy_address_shallow(&save_dl_src, &pinfo->dl_src);
+ copy_address_shallow(&save_dl_dst, &pinfo->dl_dst);
+ copy_address_shallow(&save_net_src, &pinfo->net_src);
+ copy_address_shallow(&save_net_dst, &pinfo->net_dst);
+ copy_address_shallow(&save_src, &pinfo->src);
+ copy_address_shallow(&save_dst, &pinfo->dst);
/* dissect data */
col_set_writable(pinfo->cinfo, FALSE);
@@ -2422,12 +2422,12 @@ dissect_openflow_packet_out_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* restore saved state */
col_set_writable(pinfo->cinfo, save_writable);
pinfo->flags.in_error_pkt = save_in_error_pkt;
- pinfo->dl_src = save_dl_src;
- pinfo->dl_dst = save_dl_dst;
- pinfo->net_src = save_net_src;
- pinfo->net_dst = save_net_dst;
- pinfo->src = save_src;
- pinfo->dst = save_dst;
+ copy_address_shallow(&pinfo->dl_src, &save_dl_src);
+ copy_address_shallow(&pinfo->dl_dst, &save_dl_dst);
+ copy_address_shallow(&pinfo->net_src, &save_net_src);
+ copy_address_shallow(&pinfo->net_dst, &save_net_dst);
+ copy_address_shallow(&pinfo->src, &save_src);
+ copy_address_shallow(&pinfo->dst, &save_dst);
}
}
diff --git a/epan/dissectors/packet-openflow_v5.c b/epan/dissectors/packet-openflow_v5.c
index b3c69e49e1..7e12a42eab 100644
--- a/epan/dissectors/packet-openflow_v5.c
+++ b/epan/dissectors/packet-openflow_v5.c
@@ -2050,12 +2050,12 @@ dissect_openflow_packet_in_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* save some state */
save_writable = col_get_writable(pinfo->cinfo);
save_in_error_pkt = pinfo->flags.in_error_pkt;
- save_dl_src = pinfo->dl_src;
- save_dl_dst = pinfo->dl_dst;
- save_net_src = pinfo->net_src;
- save_net_dst = pinfo->net_dst;
- save_src = pinfo->src;
- save_dst = pinfo->dst;
+ copy_address_shallow(&save_dl_src, &pinfo->dl_src);
+ copy_address_shallow(&save_dl_dst, &pinfo->dl_dst);
+ copy_address_shallow(&save_net_src, &pinfo->net_src);
+ copy_address_shallow(&save_net_dst, &pinfo->net_dst);
+ copy_address_shallow(&save_src, &pinfo->src);
+ copy_address_shallow(&save_dst, &pinfo->dst);
/* dissect data */
col_set_writable(pinfo->cinfo, FALSE);
@@ -2065,12 +2065,12 @@ dissect_openflow_packet_in_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* restore saved state */
col_set_writable(pinfo->cinfo, save_writable);
pinfo->flags.in_error_pkt = save_in_error_pkt;
- pinfo->dl_src = save_dl_src;
- pinfo->dl_dst = save_dl_dst;
- pinfo->net_src = save_net_src;
- pinfo->net_dst = save_net_dst;
- pinfo->src = save_src;
- pinfo->dst = save_dst;
+ copy_address_shallow(&pinfo->dl_src, &save_dl_src);
+ copy_address_shallow(&pinfo->dl_dst, &save_dl_dst);
+ copy_address_shallow(&pinfo->net_src, &save_net_src);
+ copy_address_shallow(&pinfo->net_dst, &save_net_dst);
+ copy_address_shallow(&pinfo->src, &save_src);
+ copy_address_shallow(&pinfo->dst, &save_dst);
}
}
@@ -2789,12 +2789,12 @@ dissect_openflow_packet_out_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* save some state */
save_writable = col_get_writable(pinfo->cinfo);
save_in_error_pkt = pinfo->flags.in_error_pkt;
- save_dl_src = pinfo->dl_src;
- save_dl_dst = pinfo->dl_dst;
- save_net_src = pinfo->net_src;
- save_net_dst = pinfo->net_dst;
- save_src = pinfo->src;
- save_dst = pinfo->dst;
+ copy_address_shallow(&save_dl_src, &pinfo->dl_src);
+ copy_address_shallow(&save_dl_dst, &pinfo->dl_dst);
+ copy_address_shallow(&save_net_src, &pinfo->net_src);
+ copy_address_shallow(&save_net_dst, &pinfo->net_dst);
+ copy_address_shallow(&save_src, &pinfo->src);
+ copy_address_shallow(&save_dst, &pinfo->dst);
/* dissect data */
col_set_writable(pinfo->cinfo, FALSE);
@@ -2804,12 +2804,12 @@ dissect_openflow_packet_out_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* restore saved state */
col_set_writable(pinfo->cinfo, save_writable);
pinfo->flags.in_error_pkt = save_in_error_pkt;
- pinfo->dl_src = save_dl_src;
- pinfo->dl_dst = save_dl_dst;
- pinfo->net_src = save_net_src;
- pinfo->net_dst = save_net_dst;
- pinfo->src = save_src;
- pinfo->dst = save_dst;
+ copy_address_shallow(&pinfo->dl_src, &save_dl_src);
+ copy_address_shallow(&pinfo->dl_dst, &save_dl_dst);
+ copy_address_shallow(&pinfo->net_src, &save_net_src);
+ copy_address_shallow(&pinfo->net_dst, &save_net_dst);
+ copy_address_shallow(&pinfo->src, &save_src);
+ copy_address_shallow(&pinfo->dst, &save_dst);
}
}
diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c
index fb14bcb161..37ea2b4233 100644
--- a/epan/dissectors/packet-radius.c
+++ b/epan/dissectors/packet-radius.c
@@ -1695,7 +1695,7 @@ dissect_radius(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
radius_call_info_key radius_call_key;
radius_call_info_key *new_radius_call_key;
radius_call_t *radius_call = NULL;
- static address null_address = { AT_NONE, 0, NULL };
+ static address null_address = ADDRESS_INIT_NONE;
/* does this look like radius ? */
if(!is_radius(tvb)){
diff --git a/epan/dissectors/packet-rdt.c b/epan/dissectors/packet-rdt.c
index 38675a4f47..1f622723c4 100644
--- a/epan/dissectors/packet-rdt.c
+++ b/epan/dissectors/packet-rdt.c
@@ -242,7 +242,7 @@ void rdt_add_address(packet_info *pinfo,
return;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
/* Check if the ip address and port combination is not already registered
as a conversation. */
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c
index d2f587c519..0e015fbbf7 100644
--- a/epan/dissectors/packet-rpc.c
+++ b/epan/dissectors/packet-rpc.c
@@ -1632,7 +1632,7 @@ dissect_rpc_authgss_priv_data(tvbuff_t *tvb, proto_tree *tree, int offset,
return offset;
}
-static address null_address = { AT_NONE, 0, NULL };
+static address null_address = ADDRESS_INIT_NONE;
/*
* Attempt to find a conversation for a call and, if we don't find one,
diff --git a/epan/dissectors/packet-rtcp.c b/epan/dissectors/packet-rtcp.c
index 311a523f51..4efd72cf85 100644
--- a/epan/dissectors/packet-rtcp.c
+++ b/epan/dissectors/packet-rtcp.c
@@ -744,7 +744,7 @@ void srtcp_add_address( packet_info *pinfo,
return;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
/*
* Check if the ip address and port combination is not
diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c
index f6568ed9f7..b207ada77f 100644
--- a/epan/dissectors/packet-rtp.c
+++ b/epan/dissectors/packet-rtp.c
@@ -1154,7 +1154,7 @@ bluetooth_add_address(packet_info *pinfo, address *addr, guint32 stream_number,
return;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
/*
* Check if the ip address and port combination is not
@@ -1243,7 +1243,7 @@ srtp_add_address(packet_info *pinfo, address *addr, int port, int other_port,
other_port, setup_method, setup_frame_number));
DINDENT();
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
/*
* Check if the ip address and port combination is not
diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c
index 664083fe95..60843c42f3 100644
--- a/epan/dissectors/packet-sdp.c
+++ b/epan/dissectors/packet-sdp.c
@@ -1856,22 +1856,24 @@ convert_disposable_media(transport_info_t* transport_info, disposable_media_info
if ((media_info->connection_address != NULL) &&
(media_info->connection_type != NULL)) {
if (strcmp(media_info->connection_type, "IP4") == 0) {
- transport_info->src_addr[transport_index].data = wmem_alloc(wmem_file_scope(), 4);
- if (str_to_ip(media_info->connection_address, (void*)transport_info->src_addr[transport_index].data)) {
+ guint32 ip4_addr;
+
+ if (str_to_ip(media_info->connection_address, &ip4_addr)) {
/* connection_address could be converted to a valid ipv4 address*/
transport_info->proto_bitmask[transport_index] |= SDP_IPv4;
- transport_info->src_addr[transport_index].type = AT_IPv4;
- transport_info->src_addr[transport_index].len = 4;
+ alloc_address_wmem(wmem_file_scope(), &transport_info->src_addr[transport_index],
+ AT_IPv4, 4, &ip4_addr);
DPRINT(("set SDP_IPv4 bitmask=%x, for transport_index=%d",
transport_info->proto_bitmask[transport_index], transport_index));
}
} else if (strcmp(media_info->connection_type, "IP6") == 0) {
- transport_info->src_addr[transport_index].data = wmem_alloc(wmem_file_scope(), 16);
- if (str_to_ip6(media_info->connection_address, (void*)transport_info->src_addr[transport_index].data)) {
+ struct e_in6_addr ip6_addr;
+
+ if (str_to_ip6(media_info->connection_address, &ip6_addr)) {
/* connection_address could be converted to a valid ipv6 address*/
transport_info->proto_bitmask[transport_index] |= SDP_IPv6;
- transport_info->src_addr[transport_index].type = AT_IPv6;
- transport_info->src_addr[transport_index].len = 16;
+ alloc_address_wmem(wmem_file_scope(), &transport_info->src_addr[transport_index],
+ AT_IPv6, 16, &ip6_addr);
DPRINT(("set SDP_IPv6 bitmask=%x, for transport_index=%d",
transport_info->proto_bitmask[transport_index], transport_index));
}
diff --git a/epan/dissectors/packet-sflow.c b/epan/dissectors/packet-sflow.c
index 3bfd571076..59ff00411a 100644
--- a/epan/dissectors/packet-sflow.c
+++ b/epan/dissectors/packet-sflow.c
@@ -706,12 +706,12 @@ dissect_sflow_245_sampled_header(tvbuff_t *tvb, packet_info *pinfo,
}
col_set_writable(pinfo->cinfo, FALSE);
- save_dl_src = pinfo->dl_src;
- save_dl_dst = pinfo->dl_dst;
- save_net_src = pinfo->net_src;
- save_net_dst = pinfo->net_dst;
- save_src = pinfo->src;
- save_dst = pinfo->dst;
+ copy_address_shallow(&save_dl_src, &pinfo->dl_src);
+ copy_address_shallow(&save_dl_dst, &pinfo->dl_dst);
+ copy_address_shallow(&save_net_src, &pinfo->net_src);
+ copy_address_shallow(&save_net_dst, &pinfo->net_dst);
+ copy_address_shallow(&save_src, &pinfo->src);
+ copy_address_shallow(&save_dst, &pinfo->dst);
TRY
{
@@ -729,13 +729,12 @@ dissect_sflow_245_sampled_header(tvbuff_t *tvb, packet_info *pinfo,
/* restore saved state */
col_set_writable(pinfo->cinfo, save_writable);
pinfo->flags.in_error_pkt = save_in_error_pkt;
-
- pinfo->dl_src = save_dl_src;
- pinfo->dl_dst = save_dl_dst;
- pinfo->net_src = save_net_src;
- pinfo->net_dst = save_net_dst;
- pinfo->src = save_src;
- pinfo->dst = save_dst;
+ copy_address_shallow(&pinfo->dl_src, &save_dl_src);
+ copy_address_shallow(&pinfo->dl_dst, &save_dl_dst);
+ copy_address_shallow(&pinfo->net_src, &save_net_src);
+ copy_address_shallow(&pinfo->net_dst, &save_net_dst);
+ copy_address_shallow(&pinfo->src, &save_src);
+ copy_address_shallow(&pinfo->dst, &save_dst);
offset += header_length;
return offset;
diff --git a/epan/dissectors/packet-sprt.c b/epan/dissectors/packet-sprt.c
index b18e105a22..4f62ba6a02 100644
--- a/epan/dissectors/packet-sprt.c
+++ b/epan/dissectors/packet-sprt.c
@@ -782,7 +782,7 @@ void sprt_add_address(packet_info *pinfo,
return;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
/*
* Check if the ip address and port combination is not
diff --git a/epan/dissectors/packet-ssl-utils.c b/epan/dissectors/packet-ssl-utils.c
index 7d7397cdbc..6e07727dce 100644
--- a/epan/dissectors/packet-ssl-utils.c
+++ b/epan/dissectors/packet-ssl-utils.c
@@ -4063,7 +4063,7 @@ ssl_get_session(conversation_t *conversation, dissector_handle_t ssl_handle)
/* Initialize parameters which are not necessary specific to decryption. */
ssl_session->session.version = SSL_VER_UNKNOWN;
- set_address(&ssl_session->session.srv_addr, AT_NONE, 0, NULL);
+ clear_address(&ssl_session->session.srv_addr);
ssl_session->session.srv_ptype = PT_NONE;
ssl_session->session.srv_port = 0;
diff --git a/epan/dissectors/packet-t38.c b/epan/dissectors/packet-t38.c
index 8a3a49f284..c4e6e5f1f9 100644
--- a/epan/dissectors/packet-t38.c
+++ b/epan/dissectors/packet-t38.c
@@ -274,7 +274,7 @@ void t38_add_address(packet_info *pinfo,
return;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
/*
* Check if the ip address and port combination is not
diff --git a/epan/dissectors/packet-teamspeak2.c b/epan/dissectors/packet-teamspeak2.c
index cdbe67abf4..3febde13f3 100644
--- a/epan/dissectors/packet-teamspeak2.c
+++ b/epan/dissectors/packet-teamspeak2.c
@@ -735,7 +735,7 @@ static int dissect_ts2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
switch(type) {
case TS2T_LOGINREQUEST:
conversation_data->server_port=pinfo->destport;
- conversation_data->server_addr=pinfo->dst;
+ copy_address_shallow(&conversation_data->server_addr, &pinfo->dst);
break;
}
break;
@@ -783,7 +783,7 @@ static int dissect_ts2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
proto_tree_add_item(ts2_tree, hf_ts2_nick, tvb, 150, 1, ENC_ASCII|ENC_BIG_ENDIAN);
conversation_data->server_port=pinfo->destport;
- conversation_data->server_addr=pinfo->dst;
+ copy_address_shallow(&conversation_data->server_addr, &pinfo->dst);
break;
case TS2T_LOGINREPLY:
diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c
index 87eb08c496..9822fe3811 100644
--- a/epan/dissectors/packet-uma.c
+++ b/epan/dissectors/packet-uma.c
@@ -1479,7 +1479,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
break;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
set_address(&dst_addr, AT_IPv4, 4, &GPRS_user_data_ipv4_address);
@@ -1511,7 +1511,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
break;
}
- set_address(&null_addr, AT_NONE, 0, NULL);
+ clear_address(&null_addr);
set_address(&dst_addr, AT_IPv4, 4, &unc_ipv4_address);
@@ -1541,7 +1541,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
set_address(&src_addr, AT_IPv4, 4, &unc_ipv4_address);
}else{
/* Set Source IP = own IP */
- src_addr = pinfo->src;
+ copy_address_shallow(&src_addr, &pinfo->src);
}
if((!pinfo->fd->flags.visited) && RTP_UDP_port!=0){
diff --git a/epan/dissectors/packet-vuze-dht.c b/epan/dissectors/packet-vuze-dht.c
index 817f4c1766..30d8cf4f94 100644
--- a/epan/dissectors/packet-vuze-dht.c
+++ b/epan/dissectors/packet-vuze-dht.c
@@ -346,7 +346,7 @@ dissect_vuze_dht_address(tvbuff_t *tvb, packet_info _U_*pinfo, proto_tree *tree,
set_address_tvb( &addr, AT_IPv6, ip_length, tvb, offset);
break;
default:
- addr.type = AT_NONE;
+ clear_address(&addr);
break;
}
offset += ip_length;
diff --git a/epan/packet.c b/epan/packet.c
index 343eb3040d..f8066dedeb 100644
--- a/epan/packet.c
+++ b/epan/packet.c
@@ -471,12 +471,12 @@ dissect_record(epan_dissect_t *edt, int file_type_subtype,
edt->pi.fd = fd;
edt->pi.phdr = phdr;
edt->pi.pseudo_header = &phdr->pseudo_header;
- edt->pi.dl_src.type = AT_NONE;
- edt->pi.dl_dst.type = AT_NONE;
- edt->pi.net_src.type = AT_NONE;
- edt->pi.net_dst.type = AT_NONE;
- edt->pi.src.type = AT_NONE;
- edt->pi.dst.type = AT_NONE;
+ clear_address(&edt->pi.dl_src);
+ clear_address(&edt->pi.dl_dst);
+ clear_address(&edt->pi.net_src);
+ clear_address(&edt->pi.net_dst);
+ clear_address(&edt->pi.src);
+ clear_address(&edt->pi.dst);
edt->pi.ctype = CT_NONE;
edt->pi.noreassembly_reason = "";
edt->pi.ptype = PT_NONE;
@@ -537,12 +537,12 @@ dissect_file(epan_dissect_t *edt, struct wtap_pkthdr *phdr,
edt->pi.fd = fd;
edt->pi.phdr = phdr;
edt->pi.pseudo_header = &phdr->pseudo_header;
- edt->pi.dl_src.type = AT_NONE;
- edt->pi.dl_dst.type = AT_NONE;
- edt->pi.net_src.type = AT_NONE;
- edt->pi.net_dst.type = AT_NONE;
- edt->pi.src.type = AT_NONE;
- edt->pi.dst.type = AT_NONE;
+ clear_address(&edt->pi.dl_src);
+ clear_address(&edt->pi.dl_dst);
+ clear_address(&edt->pi.net_src);
+ clear_address(&edt->pi.net_dst);
+ clear_address(&edt->pi.src);
+ clear_address(&edt->pi.dst);
edt->pi.ctype = CT_NONE;
edt->pi.noreassembly_reason = "";
edt->pi.ptype = PT_NONE;
@@ -754,12 +754,12 @@ call_dissector_work_error(dissector_handle_t handle, tvbuff_t *tvb,
save_writable = col_get_writable(pinfo->cinfo);
col_set_writable(pinfo->cinfo, FALSE);
- save_dl_src = pinfo->dl_src;
- save_dl_dst = pinfo->dl_dst;
- save_net_src = pinfo->net_src;
- save_net_dst = pinfo->net_dst;
- save_src = pinfo->src;
- save_dst = pinfo->dst;
+ copy_address_shallow(&save_dl_src, &pinfo->dl_src);
+ copy_address_shallow(&save_dl_dst, &pinfo->dl_dst);
+ copy_address_shallow(&save_net_src, &pinfo->net_src);
+ copy_address_shallow(&save_net_dst, &pinfo->net_dst);
+ copy_address_shallow(&save_src, &pinfo->src);
+ copy_address_shallow(&save_dst, &pinfo->dst);
/* Dissect the contained packet. */
TRY {
@@ -770,12 +770,12 @@ call_dissector_work_error(dissector_handle_t handle, tvbuff_t *tvb,
* Restore the column writability and addresses.
*/
col_set_writable(pinfo->cinfo, save_writable);
- pinfo->dl_src = save_dl_src;
- pinfo->dl_dst = save_dl_dst;
- pinfo->net_src = save_net_src;
- pinfo->net_dst = save_net_dst;
- pinfo->src = save_src;
- pinfo->dst = save_dst;
+ copy_address_shallow(&pinfo->dl_src, &save_dl_src);
+ copy_address_shallow(&pinfo->dl_dst, &save_dl_dst);
+ copy_address_shallow(&pinfo->net_src, &save_net_src);
+ copy_address_shallow(&pinfo->net_dst, &save_net_dst);
+ copy_address_shallow(&pinfo->src, &save_src);
+ copy_address_shallow(&pinfo->dst, &save_dst);
/*
* Restore the current protocol, so any
@@ -812,12 +812,12 @@ call_dissector_work_error(dissector_handle_t handle, tvbuff_t *tvb,
ENDTRY;
col_set_writable(pinfo->cinfo, save_writable);
- pinfo->dl_src = save_dl_src;
- pinfo->dl_dst = save_dl_dst;
- pinfo->net_src = save_net_src;
- pinfo->net_dst = save_net_dst;
- pinfo->src = save_src;
- pinfo->dst = save_dst;
+ copy_address_shallow(&pinfo->dl_src, &save_dl_src);
+ copy_address_shallow(&pinfo->dl_dst, &save_dl_dst);
+ copy_address_shallow(&pinfo->net_src, &save_net_src);
+ copy_address_shallow(&pinfo->net_dst, &save_net_dst);
+ copy_address_shallow(&pinfo->src, &save_src);
+ copy_address_shallow(&pinfo->dst, &save_dst);
pinfo->want_pdu_tracking = 0;
return len;
}
diff --git a/epan/reassemble.c b/epan/reassemble.c
index 745b585ddb..e4dcf80b0d 100644
--- a/epan/reassemble.c
+++ b/epan/reassemble.c
@@ -97,8 +97,8 @@ fragment_addresses_temporary_key(const packet_info *pinfo, const guint32 id,
/*
* Do a shallow copy of the addresses.
*/
- key->src = pinfo->src;
- key->dst = pinfo->dst;
+ copy_address_shallow(&key->src, &pinfo->src);
+ copy_address_shallow(&key->dst, &pinfo->dst);
key->id = id;
return (gpointer)key;
@@ -142,8 +142,8 @@ fragment_addresses_free_persistent_key(gpointer ptr)
/*
* Free up the copies of the addresses from the old key.
*/
- g_free((gpointer)key->src.data);
- g_free((gpointer)key->dst.data);
+ free_address(&key->src);
+ free_address(&key->dst);
g_slice_free(fragment_addresses_key, key);
}
@@ -231,8 +231,8 @@ fragment_addresses_ports_temporary_key(const packet_info *pinfo, const guint32 i
/*
* Do a shallow copy of the addresses.
*/
- key->src_addr = pinfo->src;
- key->dst_addr = pinfo->dst;
+ copy_address_shallow(&key->src_addr, &pinfo->src);
+ copy_address_shallow(&key->dst_addr, &pinfo->dst);
key->src_port = pinfo->srcport;
key->dst_port = pinfo->destport;
key->id = id;
@@ -280,8 +280,8 @@ fragment_addresses_ports_free_persistent_key(gpointer ptr)
/*
* Free up the copies of the addresses from the old key.
*/
- g_free((gpointer)key->src_addr.data);
- g_free((gpointer)key->dst_addr.data);
+ free_address(&key->src_addr);
+ free_address(&key->dst_addr);
g_slice_free(fragment_addresses_ports_key, key);
}
diff --git a/epan/wslua/wslua_address.c b/epan/wslua/wslua_address.c
index 30e4565be2..0516884b43 100644
--- a/epan/wslua/wslua_address.c
+++ b/epan/wslua/wslua_address.c
@@ -43,14 +43,14 @@ WSLUA_CONSTRUCTOR Address_ip(lua_State* L) {
#define WSLUA_ARG_Address_ip_HOSTNAME 1 /* The address or name of the IP host. */
Address addr = (Address)g_malloc(sizeof(address));
- guint32* ip_addr = (guint32 *)g_malloc(sizeof(guint32));
+ guint32 ip_addr;
const gchar* name = luaL_checkstring(L,WSLUA_ARG_Address_ip_HOSTNAME);
- if (! get_host_ipaddr(name, (guint32*)ip_addr)) {
- *ip_addr = 0;
+ if (! get_host_ipaddr(name, &ip_addr)) {
+ ip_addr = 0;
}
- set_address(addr, AT_IPv4, 4, ip_addr);
+ alloc_address_wmem(NULL, addr, AT_IPv4, 4, &ip_addr);
pushAddress(L,addr);
WSLUA_RETURN(1); /* The Address object. */
}
@@ -60,7 +60,7 @@ WSLUA_CONSTRUCTOR Address_ip(lua_State* L) {
static int Address_ipv6(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -68,7 +68,7 @@ static int Address_ipv6(lua_State* L) {
static int Address_ss7(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -76,7 +76,7 @@ static int Address_ss7(lua_State* L) {
static int Address_eth(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -84,7 +84,7 @@ static int Address_eth(lua_State* L) {
static int Address_sna(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -92,7 +92,7 @@ static int Address_sna(lua_State* L) {
static int Address_atalk(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -100,7 +100,7 @@ static int Address_atalk(lua_State* L) {
static int Address_vines(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -108,7 +108,7 @@ static int Address_vines(lua_State* L) {
static int Address_osi(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -116,7 +116,7 @@ static int Address_osi(lua_State* L) {
static int Address_arcnet(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -124,7 +124,7 @@ static int Address_arcnet(lua_State* L) {
static int Address_fc(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -132,7 +132,7 @@ static int Address_fc(lua_State* L) {
static int Address_string(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -140,7 +140,7 @@ static int Address_string(lua_State* L) {
static int Address_eui64(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -148,7 +148,7 @@ static int Address_eui64(lua_State* L) {
static int Address_uri(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -156,7 +156,7 @@ static int Address_uri(lua_State* L) {
static int Address_tipc(lua_State* L) {
Address addr = g_malloc(sizeof(address));
- set_address(addr, AT_NONE, 4, g_malloc(4));
+ /* alloc_address() */
pushAddress(L,addr);
return 1;
@@ -186,11 +186,11 @@ WSLUA_METHODS Address_methods[] = {
WSLUA_METAMETHOD Address__tostring(lua_State* L) {
Address addr = checkAddress(L,1);
- const gchar *str = address_to_display(NULL, addr);
+ gchar *str = address_to_display(NULL, addr);
lua_pushstring(L, str);
- wmem_free(NULL, (void*) str);
+ wmem_free(NULL, str);
WSLUA_RETURN(1); /* The string representing the address. */
}
@@ -200,8 +200,8 @@ static int Address__gc(lua_State* L) {
Address addr = toAddress(L,1);
if (addr) {
- g_free((void*)(addr->data));
- g_free((void*)(addr));
+ free_address(addr);
+ g_free(addr);
}
return 0;
diff --git a/epan/wslua/wslua_field.c b/epan/wslua/wslua_field.c
index fc1a46f62a..0bb3e26774 100644
--- a/epan/wslua/wslua_field.c
+++ b/epan/wslua/wslua_field.c
@@ -124,41 +124,31 @@ WSLUA_METAMETHOD FieldInfo__call(lua_State* L) {
}
case FT_ETHER: {
Address eth = (Address)g_malloc(sizeof(address));
- eth->type = AT_ETHER;
- eth->len = fi->ws_fi->length;
- eth->data = tvb_memdup(NULL,fi->ws_fi->ds_tvb,fi->ws_fi->start,fi->ws_fi->length);
+ alloc_address_tvb(NULL,eth,AT_ETHER,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start);
pushAddress(L,eth);
return 1;
}
case FT_IPv4:{
Address ipv4 = (Address)g_malloc(sizeof(address));
- ipv4->type = AT_IPv4;
- ipv4->len = fi->ws_fi->length;
- ipv4->data = tvb_memdup(NULL,fi->ws_fi->ds_tvb,fi->ws_fi->start,fi->ws_fi->length);
+ alloc_address_tvb(NULL,ipv4,AT_IPv4,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start);
pushAddress(L,ipv4);
return 1;
}
case FT_IPv6: {
Address ipv6 = (Address)g_malloc(sizeof(address));
- ipv6->type = AT_IPv6;
- ipv6->len = fi->ws_fi->length;
- ipv6->data = tvb_memdup(NULL,fi->ws_fi->ds_tvb,fi->ws_fi->start,fi->ws_fi->length);
+ alloc_address_tvb(NULL,ipv6,AT_IPv6,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start);
pushAddress(L,ipv6);
return 1;
}
case FT_FCWWN: {
Address fcwwn = (Address)g_malloc(sizeof(address));
- fcwwn->type = AT_FCWWN;
- fcwwn->len = fi->ws_fi->length;
- fcwwn->data = tvb_memdup(NULL,fi->ws_fi->ds_tvb,fi->ws_fi->start,fi->ws_fi->length);
+ alloc_address_tvb(NULL,fcwwn,AT_FCWWN,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start);
pushAddress(L,fcwwn);
return 1;
}
case FT_IPXNET:{
Address ipx = (Address)g_malloc(sizeof(address));
- ipx->type = AT_IPX;
- ipx->len = fi->ws_fi->length;
- ipx->data = tvb_memdup(NULL,fi->ws_fi->ds_tvb,fi->ws_fi->start,fi->ws_fi->length);
+ alloc_address_tvb(NULL,ipx,AT_IPX,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start);
pushAddress(L,ipx);
return 1;
}
diff --git a/epan/wslua/wslua_tvb.c b/epan/wslua/wslua_tvb.c
index 0a7e903498..b6c2d824da 100644
--- a/epan/wslua/wslua_tvb.c
+++ b/epan/wslua/wslua_tvb.c
@@ -751,7 +751,6 @@ WSLUA_METHOD TvbRange_ipv4(lua_State* L) {
/* Get an IPv4 Address from a `TvbRange`, as an `Address` object. */
TvbRange tvbr = checkTvbRange(L,1);
Address addr;
- guint32* ip_addr;
if ( !(tvbr && tvbr->tvb)) return 0;
if (tvbr->tvb->expired) {
@@ -764,12 +763,8 @@ WSLUA_METHOD TvbRange_ipv4(lua_State* L) {
return 0;
}
- addr = (address *)g_malloc(sizeof(address));
-
- ip_addr = (guint32 *)g_malloc(sizeof(guint32));
- *ip_addr = tvb_get_ipv4(tvbr->tvb->ws_tvb,tvbr->offset);
-
- set_address(addr, AT_IPv4, 4, ip_addr);
+ addr = g_new(address,1);
+ alloc_address_tvb(NULL,addr,AT_IPv4,sizeof(guint32),tvbr->tvb->ws_tvb,tvbr->offset);
pushAddress(L,addr);
WSLUA_RETURN(1); /* The IPv4 `Address` object. */
@@ -779,7 +774,7 @@ WSLUA_METHOD TvbRange_le_ipv4(lua_State* L) {
/* Get an Little Endian IPv4 Address from a `TvbRange`, as an `Address` object. */
TvbRange tvbr = checkTvbRange(L,1);
Address addr;
- guint32* ip_addr;
+ guint32 ip_addr;
if ( !(tvbr && tvbr->tvb)) return 0;
if (tvbr->tvb->expired) {
@@ -792,13 +787,9 @@ WSLUA_METHOD TvbRange_le_ipv4(lua_State* L) {
return 0;
}
- addr = (address *)g_malloc(sizeof(address));
-
- ip_addr = (guint32 *)g_malloc(sizeof(guint32));
- *ip_addr = tvb_get_ipv4(tvbr->tvb->ws_tvb,tvbr->offset);
- *((guint32 *)ip_addr) = GUINT32_SWAP_LE_BE(*((guint32 *)ip_addr));
-
- set_address(addr, AT_IPv4, 4, ip_addr);
+ addr = g_new(address,1);
+ ip_addr = GUINT32_SWAP_LE_BE(tvb_get_ipv4(tvbr->tvb->ws_tvb,tvbr->offset));
+ alloc_address_wmem(NULL, addr, AT_IPv4, sizeof(ip_addr), &ip_addr);
pushAddress(L,addr);
WSLUA_RETURN(1); /* The IPv4 `Address` object. */
@@ -808,7 +799,6 @@ WSLUA_METHOD TvbRange_ether(lua_State* L) {
/* Get an Ethernet Address from a `TvbRange`, as an `Address` object. */
TvbRange tvbr = checkTvbRange(L,1);
Address addr;
- guint8* buff;
if ( !(tvbr && tvbr->tvb)) return 0;
if (tvbr->tvb->expired) {
@@ -822,10 +812,7 @@ WSLUA_METHOD TvbRange_ether(lua_State* L) {
}
addr = g_new(address,1);
-
- buff = (guint8 *)tvb_memdup(NULL,tvbr->tvb->ws_tvb,tvbr->offset,tvbr->len);
-
- set_address(addr, AT_ETHER, 6, buff);
+ alloc_address_tvb(NULL,addr,AT_ETHER,6,tvbr->tvb->ws_tvb,tvbr->offset);
pushAddress(L,addr);
WSLUA_RETURN(1); /* The Ethernet `Address` object. */