diff options
author | João Valverde <j@v6e.pt> | 2016-02-08 00:43:56 +0000 |
---|---|---|
committer | João Valverde <j@v6e.pt> | 2016-02-08 00:44:22 +0000 |
commit | ef929dc8eb8c61d5829132d2da2a3061df44bba9 (patch) | |
tree | 6dc7fb0abec832c1b336580bfeaec70717f0a76f /epan | |
parent | 8df2857bc1082797cc7052eb5a6ebb45ac92e4b9 (diff) |
Revert "Add free_address_wmem() and other extensions to address API"
This reverts commit 13ec77a9fc3af3b0b502820d0b55796c89997896.
This commit introduces a segmentation fault for Lua code (uncovered by the test suite).
Change-Id: Ibc273d1915cda9632697b9f138f0ae104d3fb65e
Reviewed-on: https://code.wireshark.org/review/13813
Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'epan')
40 files changed, 292 insertions, 328 deletions
diff --git a/epan/address.h b/epan/address.h index 027bc0fef0..f0a42c1eee 100644 --- a/epan/address.h +++ b/epan/address.h @@ -63,24 +63,9 @@ typedef enum { typedef struct _address { int type; /* type of address */ int len; /* length of address, in bytes */ - const void *data; /* pointer to address data */ - - /* private */ - void *priv; + const void *data; /* pointer to address data */ } 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 = -1; - addr->data = NULL; - addr->priv = NULL; -} - /** Initialize an address with the given values. * * @param addr [in,out] The address to initialize. @@ -91,10 +76,9 @@ clear_address(address *addr) */ 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. @@ -120,46 +104,6 @@ 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) { - addr->type = addr_type; - addr->len = addr_len; - 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. @@ -219,66 +163,56 @@ addresses_data_equal(const address *addr1, const address *addr2) { return FALSE; } -/** 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. * * @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_shallow(address *to, const address *from) { - set_address(to, from->type, from->len, from->data); +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 an address, allocating a new buffer for the address data - * using wmem-scoped memory. +/** Perform a shallow copy of the address (both addresses point to the same + * memory location). * - * @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_wmem(wmem_allocator_t *scope, address *to, const address *from) { - alloc_address_wmem(scope, to, from->type, from->len, from->data); +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 an address, allocating a new buffer for the address data. +/** Copy an address, allocating a new buffer for the address data + * using wmem-scoped memory. * + * @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(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); +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; } /** 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 12b9418663..1aaeabc4b3 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); - free_address(&conv->src_address); - free_address(&conv->dst_address); + g_free((gpointer)conv->src_address.data); + g_free((gpointer)conv->dst_address.data); } 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); - free_address(&host->myaddress); + g_free((gpointer)host->myaddress.data); } 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; - copy_address_shallow(&existing_key.myaddress, addr); + 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 c592f13368..253f695856 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; - free_address(&binding->addr_a); - free_address(&binding->addr_b); + g_free((void *) binding->addr_a.data); + g_free((void *) binding->addr_b.data); if (binding->ifname) g_string_free(binding->ifname, TRUE); g_free(binding); @@ -962,8 +962,8 @@ decode_dcerpc_binding_reset(const char *name _U_, const gpointer pattern) decode_dcerpc_bindings = g_slist_remove(decode_dcerpc_bindings, le->data); - free_address(&old_binding->addr_a); - free_address(&old_binding->addr_b); + g_free((void *) old_binding->addr_a.data); + g_free((void *) old_binding->addr_b.data); 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; - copy_address_shallow(&key->src, &pinfo->src); - copy_address_shallow(&key->dst, &pinfo->dst); + key->src = pinfo->src; + 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. */ - free_address(&key->src); - free_address(&key->dst); + g_free((gpointer)key->src.data); + g_free((gpointer)key->dst.data); g_slice_free(dcerpc_fragment_key, key); } diff --git a/epan/dissectors/packet-dcom.c b/epan/dissectors/packet-dcom.c index b4a8181e3b..e41a12e0af 100644 --- a/epan/dissectors/packet-dcom.c +++ b/epan/dissectors/packet-dcom.c @@ -2202,7 +2202,7 @@ static void dcom_cleanup(void) { objects->data = NULL; /* for good measure */ } g_list_free(machine->objects); - free_address(&machine->ip); + g_free((void*)machine->ip.data); machine->objects = NULL; /* for good measure */ } diff --git a/epan/dissectors/packet-dvbci.c b/epan/dissectors/packet-dvbci.c index d42c70cdce..310d50f9b8 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 = ADDRESS_INIT(AT_STRINGZ, sizeof(ADDR_CAM), ADDR_CAM); - static const address a_host = ADDRESS_INIT(AT_STRINGZ, sizeof(ADDR_HOST), ADDR_HOST); + static const address a_cam = { AT_STRINGZ, sizeof(ADDR_CAM), ADDR_CAM }; + static const address a_host = { 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 2f09eccde9..fb8fb8302a 100644 --- a/epan/dissectors/packet-enip.c +++ b/epan/dissectors/packet-enip.c @@ -1113,14 +1113,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)) - copy_address_shallow(&connInfo->O2T.ipaddress, &pinfo->src); + 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)) - copy_address_shallow(&connInfo->T2O.ipaddress, &pinfo->dst); + connInfo->T2O.ipaddress = pinfo->dst; if (connInfo->O2T.ipaddress.type == AT_IPv6) { @@ -2576,17 +2576,24 @@ 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 = 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); + request_info->cip_info->connInfo->O2T.port = port; + set_address(&request_info->cip_info->connInfo->O2T.ipaddress, + AT_IPv4, sizeof(guint32), datap); } else { - 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); + request_info->cip_info->connInfo->T2O.port = port; + set_address(&request_info->cip_info->connInfo->T2O.ipaddress, + AT_IPv4, sizeof(guint32), datap); } } } diff --git a/epan/dissectors/packet-forces.c b/epan/dissectors/packet-forces.c index b1a56b630d..237c28ce75 100644 --- a/epan/dissectors/packet-forces.c +++ b/epan/dissectors/packet-forces.c @@ -411,13 +411,10 @@ 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, 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); + address src_addr = pinfo->src, + src_net_addr = pinfo->net_src, + dst_addr = pinfo->dst, + 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"); @@ -479,10 +476,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 */ - 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); + 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)); } } } diff --git a/epan/dissectors/packet-ftp.c b/epan/dissectors/packet-ftp.c index caa9c3147d..6487d2e9b1 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; - copy_address_shallow(&ftp_ip_address, &pinfo->src); + 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 fd519d2c33..1509988517 100644 --- a/epan/dissectors/packet-ieee802154.c +++ b/epan/dissectors/packet-ieee802154.c @@ -807,12 +807,12 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g * ADDRESSING FIELDS */ /* Clear out the addressing strings. */ - 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); + 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); 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 a5eee78cae..1158673a85 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) { - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); 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)); - clear_address(&decr->initiator); + set_address(&decr->initiator, AT_NONE, 0, NULL); g_hash_table_insert(isakmp_hash, ic_key, decr); } diff --git a/epan/dissectors/packet-jxta.c b/epan/dissectors/packet-jxta.c index ab7a1c4c2a..fb98d01d77 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)); */ - copy_address_shallow(&pinfo->src, &tpt_conv_data->initiator_address); + pinfo->src = tpt_conv_data->initiator_address; pinfo->srcport = 0; - copy_address_shallow(&pinfo->dst, &tpt_conv_data->receiver_address); + 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)); */ - copy_address_shallow(&pinfo->src, &tpt_conv_data->receiver_address); + pinfo->src = tpt_conv_data->receiver_address; pinfo->srcport = 0; - copy_address_shallow(&pinfo->dst, &tpt_conv_data->initiator_address); + pinfo->dst = tpt_conv_data->initiator_address; pinfo->destport = 0; pinfo->ptype = PT_NONE; } else { @@ -768,12 +768,16 @@ 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; - clear_address(&tpt_conv_data->initiator_address); + tpt_conv_data->initiator_address.type = AT_NONE; + tpt_conv_data->initiator_address.len = 0; + tpt_conv_data->initiator_address.data = NULL; 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; - clear_address(&tpt_conv_data->receiver_address); + tpt_conv_data->receiver_address.type = AT_NONE; + tpt_conv_data->receiver_address.len = 0; + tpt_conv_data->receiver_address.data = NULL; conversation_add_proto_data(tpt_conversation, proto_jxta, tpt_conv_data); } @@ -1328,8 +1332,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); - copy_address_shallow(&tap_header->src_address, &pinfo->src); - copy_address_shallow(&tap_header->dest_address, &pinfo->dst); + tap_header->src_address = pinfo->src; + 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 36251ef30e..9d4bf35fe3 100644 --- a/epan/dissectors/packet-lbtrm.c +++ b/epan/dissectors/packet-lbtrm.c @@ -59,7 +59,7 @@ static int lbtrm_tap_handle = -1; /* LBT-RM transport management. */ /*----------------------------------------------------------------------------*/ -static const address lbtrm_null_address = ADDRESS_INIT_NONE; +static const address lbtrm_null_address = { AT_NONE, 0, NULL }; 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 8b79178a43..162c198eaa 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 = ADDRESS_INIT_NONE; +static const address lbtru_null_address = { AT_NONE, 0, NULL }; 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 615b760255..9b1bd98be5 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 = ADDRESS_INIT_NONE; +static const address lbttcp_null_address = { AT_NONE, 0, NULL }; 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 749872f9f9..a61d67939a 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 = ADDRESS_INIT(AT_ETHER, 6, dst_addr); +static const address macctrl_dst_address = { 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 1e3c2f515c..126558db57 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 = ADDRESS_INIT_NONE; + static address null_address = { AT_NONE, 0, NULL }; tvb_previous_offset = 0; tvb_len = tvb_reported_length(tvb); tvb_current_offset = tvb_previous_offset; diff --git a/epan/dissectors/packet-mpeg-audio.c b/epan/dissectors/packet-mpeg-audio.c index 7e8e026661..12b6a23426 100644 --- a/epan/dissectors/packet-mpeg-audio.c +++ b/epan/dissectors/packet-mpeg-audio.c @@ -483,10 +483,10 @@ dissect_mpeg_audio_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) "Audio Layer %d", mpa_layer(&mpa) + 1); if (MPA_BITRATE_VALID(&mpa) && MPA_FREQUENCY_VALID(&mpa)) { data_size = (int)(MPA_DATA_BYTES(&mpa) - sizeof mpa); - clear_address(&pinfo->src); + set_address(&pinfo->src, AT_NONE, 0, NULL); col_add_fstr(pinfo->cinfo, COL_DEF_SRC, "%d kb/s", mpa_bitrate(&mpa) / 1000); - clear_address(&pinfo->dst); + set_address(&pinfo->dst, AT_NONE, 0, NULL); col_add_fstr(pinfo->cinfo, COL_DEF_DST, "%g kHz", mpa_frequency(&mpa) / (float)1000); } diff --git a/epan/dissectors/packet-ms-mms.c b/epan/dissectors/packet-ms-mms.c index 85353a9166..f4498a16a9 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; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); /* 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 c8b08c174f..4fe1801ffb 100644 --- a/epan/dissectors/packet-msrp.c +++ b/epan/dissectors/packet-msrp.c @@ -167,7 +167,7 @@ msrp_add_address( packet_info *pinfo, return; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); /* * 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 0383e53609..ec34e0d838 100644 --- a/epan/dissectors/packet-nbap.c +++ b/epan/dissectors/packet-nbap.c @@ -10293,7 +10293,7 @@ int i; } /*Find the conversations assoicated with the HS-DSCH flows in this packet and set proper H-RNTI*/ - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); 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, @@ -18225,7 +18225,7 @@ guint32 no_ddi_entries, i; } /* Check if we have conversation info */ - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); 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); @@ -18520,7 +18520,7 @@ num_items = 1; /*Do the configurations*/ /* Check if we have conversation info */ - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); 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); @@ -18632,7 +18632,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. * */ - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); @@ -23340,7 +23340,7 @@ int i; return offset; } /* Set port to zero use that as an indication of whether we have data or not */ - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); for (i = 0; i < maxNrOfCommonMACFlows; i++) { if (nbap_common_channel_info[i].crnc_port != 0){ @@ -23785,7 +23785,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 */ - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); 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", @@ -24119,7 +24119,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 */ - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); nbap_debug("Frame %u HSDSCH-MACdFlows-Information Start", actx->pinfo->num); @@ -28660,7 +28660,7 @@ dch_id = 0xFFFFFFFF; return offset; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); @@ -28798,7 +28798,7 @@ BindingID_port = 0; { return offset; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); @@ -32367,7 +32367,7 @@ transportFormatSet_type = NBAP_CPCH; { return offset; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); @@ -32532,7 +32532,7 @@ num_items = 1; { return offset; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); @@ -32675,7 +32675,7 @@ transportFormatSet_type = NBAP_CPCH; { return offset; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); @@ -55205,7 +55205,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 */ - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); 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 cb525a7a0a..194ab8e7ef 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; - 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); + 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; /* 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; - 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->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; } } @@ -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; - 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); + 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; /* 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; - 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->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; } } diff --git a/epan/dissectors/packet-openflow_v5.c b/epan/dissectors/packet-openflow_v5.c index 7e12a42eab..b3c69e49e1 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; - 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); + 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; /* 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; - 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->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; } } @@ -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; - 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); + 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; /* 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; - 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->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; } } diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c index 37ea2b4233..fb14bcb161 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 = ADDRESS_INIT_NONE; + static address null_address = { AT_NONE, 0, NULL }; /* does this look like radius ? */ if(!is_radius(tvb)){ diff --git a/epan/dissectors/packet-rdt.c b/epan/dissectors/packet-rdt.c index 1f622723c4..38675a4f47 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; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); /* 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 ffa58b1d84..bd7cfe0e3f 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 = ADDRESS_INIT_NONE; +static address null_address = { AT_NONE, 0, NULL }; /* * 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 4efd72cf85..311a523f51 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; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); /* * 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 b207ada77f..f6568ed9f7 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; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); /* * 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(); - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); /* * 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 60843c42f3..664083fe95 100644 --- a/epan/dissectors/packet-sdp.c +++ b/epan/dissectors/packet-sdp.c @@ -1856,24 +1856,22 @@ 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) { - guint32 ip4_addr; - - if (str_to_ip(media_info->connection_address, &ip4_addr)) { + 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)) { /* connection_address could be converted to a valid ipv4 address*/ transport_info->proto_bitmask[transport_index] |= SDP_IPv4; - alloc_address_wmem(wmem_file_scope(), &transport_info->src_addr[transport_index], - AT_IPv4, 4, &ip4_addr); + transport_info->src_addr[transport_index].type = AT_IPv4; + transport_info->src_addr[transport_index].len = 4; 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) { - struct e_in6_addr ip6_addr; - - if (str_to_ip6(media_info->connection_address, &ip6_addr)) { + 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)) { /* connection_address could be converted to a valid ipv6 address*/ transport_info->proto_bitmask[transport_index] |= SDP_IPv6; - alloc_address_wmem(wmem_file_scope(), &transport_info->src_addr[transport_index], - AT_IPv6, 16, &ip6_addr); + transport_info->src_addr[transport_index].type = AT_IPv6; + transport_info->src_addr[transport_index].len = 16; 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 be21e97da1..65ad71bcba 100644 --- a/epan/dissectors/packet-sflow.c +++ b/epan/dissectors/packet-sflow.c @@ -685,12 +685,12 @@ dissect_sflow_245_sampled_header(tvbuff_t *tvb, packet_info *pinfo, } col_set_writable(pinfo->cinfo, FALSE); - 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); + 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; TRY { @@ -708,12 +708,13 @@ 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; - 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->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; offset += header_length; return offset; diff --git a/epan/dissectors/packet-sprt.c b/epan/dissectors/packet-sprt.c index 4f62ba6a02..b18e105a22 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; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); /* * 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 dc7de47fbf..b223eae248 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; - clear_address(&ssl_session->session.srv_addr); + set_address(&ssl_session->session.srv_addr, AT_NONE, 0, NULL); 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 c4e6e5f1f9..8a3a49f284 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; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); /* * 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 3febde13f3..cdbe67abf4 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; - copy_address_shallow(&conversation_data->server_addr, &pinfo->dst); + 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; - copy_address_shallow(&conversation_data->server_addr, &pinfo->dst); + 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 9822fe3811..87eb08c496 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; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); 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; } - clear_address(&null_addr); + set_address(&null_addr, AT_NONE, 0, NULL); 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 */ - copy_address_shallow(&src_addr, &pinfo->src); + 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 30d8cf4f94..817f4c1766 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: - clear_address(&addr); + addr.type = AT_NONE; break; } offset += ip_length; diff --git a/epan/packet.c b/epan/packet.c index 16614c4d9c..90f417006a 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; - 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.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; 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; - 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.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; 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); - 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); + 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; /* 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); - 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->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; /* * 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); - 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->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; pinfo->want_pdu_tracking = 0; return len; } diff --git a/epan/reassemble.c b/epan/reassemble.c index 98aae61e0f..8049b26281 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. */ - copy_address_shallow(&key->src, &pinfo->src); - copy_address_shallow(&key->dst, &pinfo->dst); + key->src = pinfo->src; + 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. */ - free_address(&key->src); - free_address(&key->dst); + g_free((gpointer)key->src.data); + g_free((gpointer)key->dst.data); 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. */ - copy_address_shallow(&key->src_addr, &pinfo->src); - copy_address_shallow(&key->dst_addr, &pinfo->dst); + key->src_addr = pinfo->src; + 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. */ - free_address(&key->src_addr); - free_address(&key->dst_addr); + g_free((gpointer)key->src_addr.data); + g_free((gpointer)key->dst_addr.data); g_slice_free(fragment_addresses_ports_key, key); } diff --git a/epan/wslua/wslua_address.c b/epan/wslua/wslua_address.c index 0516884b43..30e4565be2 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* ip_addr = (guint32 *)g_malloc(sizeof(guint32)); const gchar* name = luaL_checkstring(L,WSLUA_ARG_Address_ip_HOSTNAME); - if (! get_host_ipaddr(name, &ip_addr)) { - ip_addr = 0; + if (! get_host_ipaddr(name, (guint32*)ip_addr)) { + *ip_addr = 0; } - alloc_address_wmem(NULL, addr, AT_IPv4, 4, &ip_addr); + set_address(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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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)); - /* alloc_address() */ + set_address(addr, AT_NONE, 4, g_malloc(4)); 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); - gchar *str = address_to_display(NULL, addr); + const gchar *str = address_to_display(NULL, addr); lua_pushstring(L, str); - wmem_free(NULL, str); + wmem_free(NULL, (void*) 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) { - free_address(addr); - g_free(addr); + g_free((void*)(addr->data)); + g_free((void*)(addr)); } return 0; diff --git a/epan/wslua/wslua_field.c b/epan/wslua/wslua_field.c index 0bb3e26774..fc1a46f62a 100644 --- a/epan/wslua/wslua_field.c +++ b/epan/wslua/wslua_field.c @@ -124,31 +124,41 @@ WSLUA_METAMETHOD FieldInfo__call(lua_State* L) { } case FT_ETHER: { Address eth = (Address)g_malloc(sizeof(address)); - alloc_address_tvb(NULL,eth,AT_ETHER,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start); + 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); pushAddress(L,eth); return 1; } case FT_IPv4:{ Address ipv4 = (Address)g_malloc(sizeof(address)); - alloc_address_tvb(NULL,ipv4,AT_IPv4,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start); + 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); pushAddress(L,ipv4); return 1; } case FT_IPv6: { Address ipv6 = (Address)g_malloc(sizeof(address)); - alloc_address_tvb(NULL,ipv6,AT_IPv6,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start); + 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); pushAddress(L,ipv6); return 1; } case FT_FCWWN: { Address fcwwn = (Address)g_malloc(sizeof(address)); - alloc_address_tvb(NULL,fcwwn,AT_FCWWN,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start); + 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); pushAddress(L,fcwwn); return 1; } case FT_IPXNET:{ Address ipx = (Address)g_malloc(sizeof(address)); - alloc_address_tvb(NULL,ipx,AT_IPX,fi->ws_fi->length,fi->ws_fi->ds_tvb,fi->ws_fi->start); + 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); pushAddress(L,ipx); return 1; } diff --git a/epan/wslua/wslua_tvb.c b/epan/wslua/wslua_tvb.c index b6c2d824da..0a7e903498 100644 --- a/epan/wslua/wslua_tvb.c +++ b/epan/wslua/wslua_tvb.c @@ -751,6 +751,7 @@ 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) { @@ -763,8 +764,12 @@ WSLUA_METHOD TvbRange_ipv4(lua_State* L) { return 0; } - addr = g_new(address,1); - alloc_address_tvb(NULL,addr,AT_IPv4,sizeof(guint32),tvbr->tvb->ws_tvb,tvbr->offset); + 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); pushAddress(L,addr); WSLUA_RETURN(1); /* The IPv4 `Address` object. */ @@ -774,7 +779,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) { @@ -787,9 +792,13 @@ WSLUA_METHOD TvbRange_le_ipv4(lua_State* L) { return 0; } - 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); + 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); pushAddress(L,addr); WSLUA_RETURN(1); /* The IPv4 `Address` object. */ @@ -799,6 +808,7 @@ 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) { @@ -812,7 +822,10 @@ WSLUA_METHOD TvbRange_ether(lua_State* L) { } addr = g_new(address,1); - alloc_address_tvb(NULL,addr,AT_ETHER,6,tvbr->tvb->ws_tvb,tvbr->offset); + + buff = (guint8 *)tvb_memdup(NULL,tvbr->tvb->ws_tvb,tvbr->offset,tvbr->len); + + set_address(addr, AT_ETHER, 6, buff); pushAddress(L,addr); WSLUA_RETURN(1); /* The Ethernet `Address` object. */ |