From 22b4ec91c006fec65e655ccbb0dbbc32438f820b Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Sun, 4 Jan 2015 21:40:05 -0500 Subject: Replace ep_display_to_address with wmem equivalent display_to_address. Almost all instances require using "manual" memory management, but it gets some ep_ calls out of the GUI. Change-Id: Ifa7303766b08d09442ccf3d7063cbe061578ecd9 Reviewed-on: https://code.wireshark.org/review/6318 Reviewed-by: Michael Mann --- ui/cli/tap-endpoints.c | 9 ++++--- ui/cli/tap-iousers.c | 16 +++++++----- ui/cli/tap-rtp.c | 10 +++++--- ui/gtk/conversations_table.c | 19 +++++++++++--- ui/gtk/graph_analysis.c | 6 ++++- ui/gtk/hostlist_table.c | 11 +++++--- ui/gtk/iax2_analysis.c | 55 ++++++++++++++++++++++++++-------------- ui/gtk/mcast_stream.c | 4 +-- ui/gtk/mcast_stream_dlg.c | 20 ++++++++++++--- ui/gtk/rtp_analysis.c | 58 +++++++++++++++++++++++++++---------------- ui/gtk/rtp_player.c | 27 +++++++++++++------- ui/gtk/rtp_stream_dlg.c | 27 +++++++++++++++----- ui/gtk/voip_calls_dlg.c | 4 ++- ui/gtk/wlan_stat_dlg.c | 30 +++++++++++----------- ui/qt/conversation_dialog.cpp | 25 +++++++++++++++---- ui/qt/endpoint_dialog.cpp | 12 +++++++-- ui/qt/lbm_uimflow_dialog.cpp | 5 +++- ui/qt/sequence_diagram.cpp | 6 ++++- ui/qt/sequence_dialog.cpp | 5 +++- ui/qt/voip_calls_dialog.cpp | 5 +++- ui/tap-rtp-common.c | 4 ++- ui/tap-sequence-analysis.c | 11 +++++--- ui/traffic_table_ui.c | 6 ++++- 23 files changed, 261 insertions(+), 114 deletions(-) (limited to 'ui') diff --git a/ui/cli/tap-endpoints.c b/ui/cli/tap-endpoints.c index e9aa797502..1a6946d2fa 100644 --- a/ui/cli/tap-endpoints.c +++ b/ui/cli/tap-endpoints.c @@ -71,17 +71,19 @@ endpoints_draw(void *arg) for (i=0; (iu->hash.conv_array && i < iu->hash.conv_array->len); i++) { guint64 tot_frames; + gchar* conversation_str; host = &g_array_index(iu->hash.conv_array, hostlist_talker_t, i); tot_frames = host->rx_frames + host->tx_frames; if (tot_frames == last_frames) { + /* XXX - TODO: make name resolution configurable (through gbl_resolv_flags?) */ + conversation_str = (char*)get_conversation_address(NULL, &host->myaddress, TRUE); if (display_port) { printf("%-20s %5s %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u \n", - /* XXX - TODO: make name resolution configurable (through gbl_resolv_flags?) */ - get_conversation_address(&host->myaddress, TRUE), + conversation_str, /* XXX - TODO: make port resolution configurable (through gbl_resolv_flags?) */ get_conversation_port(host->port, host->ptype, TRUE), host->tx_frames+host->rx_frames, host->tx_bytes+host->rx_bytes, @@ -92,12 +94,13 @@ endpoints_draw(void *arg) "u %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u \n", /* XXX - TODO: make name resolution configurable (through gbl_resolv_flags?) */ - get_conversation_address(&host->myaddress, TRUE), + conversation_str, host->tx_frames+host->rx_frames, host->tx_bytes+host->rx_bytes, host->tx_frames, host->tx_bytes, host->rx_frames, host->rx_bytes); } + wmem_free(NULL, conversation_str); } } max_frames = last_frames; diff --git a/ui/cli/tap-iousers.c b/ui/cli/tap-iousers.c index 1100c0d6dc..c3bc5320df 100644 --- a/ui/cli/tap-iousers.c +++ b/ui/cli/tap-iousers.c @@ -94,18 +94,20 @@ iousers_draw(void *arg) for (i=0; (iu->hash.conv_array && i < iu->hash.conv_array->len); i++) { guint64 tot_frames; + char *src_addr, *dst_addr; iui = &g_array_index(iu->hash.conv_array, conv_item_t, i); tot_frames = iui->rx_frames + iui->tx_frames; if (tot_frames == last_frames) { + /* XXX - TODO: make name / port resolution configurable (through gbl_resolv_flags?) */ + src_addr = (char*)get_conversation_address(NULL, &iui->src_address, TRUE); + dst_addr = (char*)get_conversation_address(NULL, &iui->dst_address, TRUE); if (display_ports) { char *src, *dst; - - /* XXX - TODO: make name / port resolution configurable (through gbl_resolv_flags?) */ - src = wmem_strconcat(NULL, get_conversation_address(&iui->src_address, TRUE), + src = wmem_strconcat(NULL, src_addr, ":", get_conversation_port(iui->src_port, iui->ptype, TRUE), NULL); - dst = wmem_strconcat(NULL, get_conversation_address(&iui->dst_address, TRUE), + dst = wmem_strconcat(NULL, dst_addr, ":", get_conversation_port(iui->dst_port, iui->ptype, TRUE), NULL); printf("%-26s <-> %-26s %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u %6" @@ -122,8 +124,7 @@ iousers_draw(void *arg) printf("%-20s <-> %-20s %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u %6" G_GINT64_MODIFIER "u %9" G_GINT64_MODIFIER "u ", - /* XXX - TODO: make name resolution configurable (through gbl_resolv_flags?) */ - get_conversation_address(&iui->src_address, TRUE), get_conversation_address(&iui->dst_address, TRUE), + src_addr, dst_addr, iui->tx_frames, iui->tx_bytes, iui->rx_frames, iui->rx_bytes, iui->tx_frames+iui->rx_frames, @@ -131,6 +132,9 @@ iousers_draw(void *arg) ); } + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); + switch (timestamp_get_type()) { case TS_ABSOLUTE: tm_time = localtime(&iui->start_abs_time.secs); diff --git a/ui/cli/tap-rtp.c b/ui/cli/tap-rtp.c index 97a86dc2b1..76d15877ea 100644 --- a/ui/cli/tap-rtp.c +++ b/ui/cli/tap-rtp.c @@ -65,6 +65,7 @@ rtp_streams_stat_draw(void *arg _U_) gint32 lost; double perc; char *savelocale; + char *src_addr, *dst_addr; printf("========================= RTP Streams ========================\n"); printf("%15s %5s %15s %5s %10s %16s %5s %12s %15s %15s %15s %s\n","Src IP addr", "Port", "Dest IP addr", "Port", "SSRC", "Payload", "Pkts", "Lost", "Max Delta(ms)", "Max Jitter(ms)", "Mean Jitter(ms)", "Problems?"); @@ -105,10 +106,12 @@ rtp_streams_stat_draw(void *arg _U_) perc = 0; } + src_addr = (char*)address_to_display(NULL, &(strinfo->src_addr)); + dst_addr = (char*)address_to_display(NULL, &(strinfo->dest_addr)); printf("%15s %5u %15s %5u 0x%08X %16s %5u %5d (%.1f%%) %15.2f %15.2f %15.2f %s\n", - ep_address_to_display(&(strinfo->src_addr)), + src_addr, strinfo->src_port, - ep_address_to_display(&(strinfo->dest_addr)), + dst_addr, strinfo->dest_port, strinfo->ssrc, payload_type, @@ -122,7 +125,8 @@ rtp_streams_stat_draw(void *arg _U_) list = g_list_next(list); g_free(payload_type); - + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); } printf("==============================================================\n"); diff --git a/ui/gtk/conversations_table.c b/ui/gtk/conversations_table.c index 5f9998667f..db59acbc11 100644 --- a/ui/gtk/conversations_table.c +++ b/ui/gtk/conversations_table.c @@ -1593,16 +1593,21 @@ draw_ct_table_addresses(conversations_table *ct) while (iter_valid) { conv_item_t *conv_item; + char *src_addr, *dst_addr; gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, CONV_INDEX_COLUMN, &idx, -1); conv_item = &g_array_index(ct->hash.conv_array, conv_item_t, idx); + src_addr = (char*)get_conversation_address(NULL, &conv_item->src_address, ct->resolve_names); + dst_addr = (char*)get_conversation_address(NULL, &conv_item->dst_address, ct->resolve_names); gtk_list_store_set (store, &iter, - CONV_COLUMN_SRC_ADDR, get_conversation_address(&conv_item->src_address, ct->resolve_names), + CONV_COLUMN_SRC_ADDR, src_addr, CONV_COLUMN_SRC_PORT, get_conversation_port(conv_item->src_port, conv_item->ptype, ct->resolve_names), - CONV_COLUMN_DST_ADDR, get_conversation_address(&conv_item->dst_address, ct->resolve_names), + CONV_COLUMN_DST_ADDR, dst_addr, CONV_COLUMN_DST_PORT, get_conversation_port(conv_item->dst_port, conv_item->ptype, ct->resolve_names), -1); iter_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); } gtk_tree_view_set_model(GTK_TREE_VIEW(ct->table), GTK_TREE_MODEL(store)); @@ -1707,11 +1712,15 @@ draw_ct_table_data(conversations_table *ct) CONV_COLUMN_BPS_BA, rx_ptr, -1); } else { + char *src_addr, *dst_addr; + + src_addr = (char*)get_conversation_address(NULL, &conv_item->src_address, ct->resolve_names); + dst_addr = (char*)get_conversation_address(NULL, &conv_item->dst_address, ct->resolve_names); /* New row. All entries, including fixed ones */ gtk_list_store_insert_with_values(store, &iter, G_MAXINT, - CONV_COLUMN_SRC_ADDR, get_conversation_address(&conv_item->src_address, ct->resolve_names), + CONV_COLUMN_SRC_ADDR, src_addr, CONV_COLUMN_SRC_PORT, get_conversation_port(conv_item->src_port, conv_item->ptype, ct->resolve_names), - CONV_COLUMN_DST_ADDR, get_conversation_address(&conv_item->dst_address, ct->resolve_names), + CONV_COLUMN_DST_ADDR, dst_addr, CONV_COLUMN_DST_PORT, get_conversation_port(conv_item->dst_port, conv_item->ptype, ct->resolve_names), CONV_COLUMN_PACKETS, conv_item->tx_frames+conv_item->rx_frames, CONV_COLUMN_BYTES, conv_item->tx_bytes+conv_item->rx_bytes, @@ -1725,6 +1734,8 @@ draw_ct_table_data(conversations_table *ct) CONV_COLUMN_BPS_BA, rx_ptr, CONV_INDEX_COLUMN, idx, -1); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); } iter_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter); diff --git a/ui/gtk/graph_analysis.c b/ui/gtk/graph_analysis.c index eebaef016d..da81d78b01 100644 --- a/ui/gtk/graph_analysis.c +++ b/ui/gtk/graph_analysis.c @@ -618,9 +618,13 @@ static void dialog_graph_draw(graph_analysis_data_t *user_data) } /* Draw the node names on top and the division lines */ for (i=0; igraph_info->num_nodes; i++) { + char* addr_str; + /* print the node identifiers */ /* XXX we assign 5 pixels per character in the node identity */ - g_strlcpy(label_string, ep_address_to_display(&(user_data->graph_info->nodes[i])), NODE_WIDTH/5); + addr_str = (char*)address_to_display(NULL, &(user_data->graph_info->nodes[i])); + g_strlcpy(label_string, addr_str, NODE_WIDTH/5); + wmem_free(NULL, addr_str); pango_layout_set_text(layout, label_string, -1); pango_layout_get_pixel_size(layout, &label_width, &label_height); #if GTK_CHECK_VERSION(2,22,0) diff --git a/ui/gtk/hostlist_table.c b/ui/gtk/hostlist_table.c index a0c62af529..5bdb12fbfc 100644 --- a/ui/gtk/hostlist_table.c +++ b/ui/gtk/hostlist_table.c @@ -476,16 +476,19 @@ draw_hostlist_table_addresses(hostlist_table *hl) while (iter_valid) { hostlist_talker_t *host; + char* addr_str; gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, ENDP_INDEX_COLUMN, &idx, -1); host = &g_array_index(hl->hash.conv_array, hostlist_talker_t, idx); + addr_str = (char*)get_conversation_address(NULL, &host->myaddress, hl->resolve_names); gtk_list_store_set (store, &iter, - ENDP_COLUMN_ADDR, get_conversation_address(&host->myaddress, hl->resolve_names), + ENDP_COLUMN_ADDR, addr_str, ENDP_COLUMN_PORT, get_conversation_port(host->port, host->ptype, hl->resolve_names), -1); iter_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter); + wmem_free(NULL, addr_str); } gtk_tree_view_set_model(GTK_TREE_VIEW(hl->table), GTK_TREE_MODEL(store)); g_object_unref(store); @@ -551,6 +554,7 @@ draw_hostlist_table_data(hostlist_table *hl) } host->modified = FALSE; if (!iter_valid) { + char* addr_str; #ifdef HAVE_GEOIP char *geoip[ENDP_NUM_GEOIP_COLUMNS]; guint j; @@ -593,8 +597,9 @@ draw_hostlist_table_data(hostlist_table *hl) } #endif /* HAVE_GEOIP */ + addr_str = (char*)get_conversation_address(NULL, &host->myaddress, hl->resolve_names); gtk_list_store_insert_with_values( store, &iter, G_MAXINT, - ENDP_COLUMN_ADDR, get_conversation_address(&host->myaddress, hl->resolve_names), + ENDP_COLUMN_ADDR, addr_str, ENDP_COLUMN_PORT, get_conversation_port(host->port, host->ptype, hl->resolve_names), ENDP_COLUMN_PACKETS, host->tx_frames+host->rx_frames, ENDP_COLUMN_BYTES, host->tx_bytes+host->rx_bytes, @@ -619,7 +624,7 @@ draw_hostlist_table_data(hostlist_table *hl) #endif ENDP_INDEX_COLUMN, idx, -1); - + wmem_free(NULL, addr_str); #ifdef HAVE_GEOIP for (j = 0; j < ENDP_NUM_GEOIP_COLUMNS; j++) g_free(geoip[j]); diff --git a/ui/gtk/iax2_analysis.c b/ui/gtk/iax2_analysis.c index 53d1e4da50..28efc2eb22 100644 --- a/ui/gtk/iax2_analysis.c +++ b/ui/gtk/iax2_analysis.c @@ -823,21 +823,31 @@ static void dialog_graph_set_title(user_data_t* user_data) { char *title; + char *src_fwd_addr, *dst_fwd_addr, *src_rev_addr, *dst_rev_addr; if (!user_data->dlg.dialog_graph.window) { return; } + + src_fwd_addr = (char*)address_to_display(NULL, &(user_data->ip_src_fwd)); + dst_fwd_addr = (char*)address_to_display(NULL, &(user_data->ip_dst_fwd)); + src_rev_addr = (char*)address_to_display(NULL, &(user_data->ip_src_rev)); + dst_rev_addr = (char*)address_to_display(NULL, &(user_data->ip_dst_rev)); title = g_strdup_printf("IAX2 Graph Analysis Forward: %s:%u to %s:%u Reverse: %s:%u to %s:%u", - ep_address_to_display(&(user_data->ip_src_fwd)), + src_fwd_addr, user_data->port_src_fwd, - ep_address_to_display(&(user_data->ip_dst_fwd)), + dst_fwd_addr, user_data->port_dst_fwd, - ep_address_to_display(&(user_data->ip_src_rev)), + src_rev_addr, user_data->port_src_rev, - ep_address_to_display(&(user_data->ip_dst_rev)), + dst_rev_addr, user_data->port_dst_rev); gtk_window_set_title(GTK_WINDOW(user_data->dlg.dialog_graph.window), title); + wmem_free(NULL, src_fwd_addr); + wmem_free(NULL, dst_fwd_addr); + wmem_free(NULL, src_rev_addr); + wmem_free(NULL, dst_rev_addr); g_free(title); } @@ -848,6 +858,7 @@ static void dialog_graph_reset(user_data_t* user_data) { int i, j; + char *src_addr, *dst_addr; user_data->dlg.dialog_graph.needs_redraw = TRUE; for (i = 0; i < MAX_GRAPHS; i++) { @@ -866,25 +877,31 @@ dialog_graph_reset(user_data_t* user_data) for (i = 0; i < MAX_GRAPHS; i++) { /* it is forward */ if (i < 2) { + src_addr = (char*)address_to_display(NULL, &(user_data->ip_src_fwd)); + dst_addr = (char*)address_to_display(NULL, &(user_data->ip_dst_fwd)); g_snprintf(user_data->dlg.dialog_graph.graph[i].title, sizeof (user_data->dlg.dialog_graph.graph[0].title), "%s: %s:%u to %s:%u", graph_descr[i], - ep_address_to_display(&(user_data->ip_src_fwd)), + src_addr, user_data->port_src_fwd, - ep_address_to_display(&(user_data->ip_dst_fwd)), + dst_addr, user_data->port_dst_fwd); /* it is reverse */ } else { + src_addr = (char*)address_to_display(NULL, &(user_data->ip_src_rev)); + dst_addr = (char*)address_to_display(NULL, &(user_data->ip_dst_rev)); g_snprintf(user_data->dlg.dialog_graph.graph[i].title, sizeof(user_data->dlg.dialog_graph.graph[0].title), "%s: %s:%u to %s:%u", graph_descr[i], - ep_address_to_display(&(user_data->ip_src_rev)), + src_addr, user_data->port_src_rev, - ep_address_to_display(&(user_data->ip_dst_rev)), + dst_addr, user_data->port_dst_rev); } + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); } dialog_graph_set_title(user_data); @@ -3319,8 +3336,7 @@ create_iax2_dialog(user_data_t* user_data) gchar label_forward[150]; gchar label_reverse[150]; - gchar str_ip_src[16]; - gchar str_ip_dst[16]; + char *src_addr, *dst_addr; window = dlg_window_new("Wireshark: IAX2 Stream Analysis"); /* transient_for top_level */ gtk_window_set_default_size(GTK_WINDOW(window), 700, 400); @@ -3332,20 +3348,21 @@ create_iax2_dialog(user_data_t* user_data) gtk_widget_show(main_vb); /* Notebooks... */ - g_strlcpy(str_ip_src, ep_address_to_display(&(user_data->ip_src_fwd)), 16); - g_strlcpy(str_ip_dst, ep_address_to_display(&(user_data->ip_dst_fwd)), 16); - + src_addr = (char*)address_to_display(NULL, &(user_data->ip_src_fwd)); + dst_addr = (char*)address_to_display(NULL, &(user_data->ip_dst_fwd)); g_snprintf(label_forward, sizeof(label_forward), "Analysing stream from %s port %u to %s port %u ", - str_ip_src, user_data->port_src_fwd, str_ip_dst, user_data->port_dst_fwd); - - - g_strlcpy(str_ip_src, ep_address_to_display(&(user_data->ip_src_rev)), 16); - g_strlcpy(str_ip_dst, ep_address_to_display(&(user_data->ip_dst_rev)), 16); + src_addr, user_data->port_src_fwd, dst_addr, user_data->port_dst_fwd); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); + src_addr = (char*)address_to_display(NULL, &(user_data->ip_src_rev)); + dst_addr = (char*)address_to_display(NULL, &(user_data->ip_dst_rev)); g_snprintf(label_reverse, sizeof(label_reverse), "Analysing stream from %s port %u to %s port %u ", - str_ip_src, user_data->port_src_rev, str_ip_dst, user_data->port_dst_rev); + src_addr, user_data->port_src_rev, dst_addr, user_data->port_dst_rev); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); /* Start a notebook for flipping between sets of changes */ notebook = gtk_notebook_new(); diff --git a/ui/gtk/mcast_stream.c b/ui/gtk/mcast_stream.c index f1514bd7e6..cd9f63d308 100644 --- a/ui/gtk/mcast_stream.c +++ b/ui/gtk/mcast_stream.c @@ -193,8 +193,8 @@ mcaststream_packet(void *arg, packet_info *pinfo, epan_dissect_t *edt _U_, const /* not in the list? then create a new entry */ if (!strinfo) { - /*printf("nov sip %s sp %d dip %s dp %d\n", g_strdup(ep_address_to_display(&(pinfo->src))), - pinfo->srcport, g_strdup(ep_address_to_display(&(pinfo->dst))), pinfo->destport);*/ + /*printf("nov sip %s sp %d dip %s dp %d\n", address_to_display(NULL, &(pinfo->src)), + pinfo->srcport, address_to_display(NULL, &(pinfo->dst)), pinfo->destport);*/ tmp_strinfo.npackets = 0; tmp_strinfo.apackets = 0; tmp_strinfo.first_frame_num = pinfo->fd->num; diff --git a/ui/gtk/mcast_stream_dlg.c b/ui/gtk/mcast_stream_dlg.c index 71ea3d3270..3bdb17eece 100644 --- a/ui/gtk/mcast_stream_dlg.c +++ b/ui/gtk/mcast_stream_dlg.c @@ -169,18 +169,24 @@ static void mcaststream_on_select_row(GtkTreeSelection *selection, gpointer data _U_) { gchar label_text[80]; + char *src_addr, *dst_addr; if (gtk_tree_selection_get_selected(selection, NULL, &list_iter)) { + src_addr = (char*)address_to_display(NULL, &(selected_stream_fwd->src_addr)); + dst_addr = (char*)address_to_display(NULL, &(selected_stream_fwd->dest_addr)); gtk_tree_model_get(GTK_TREE_MODEL(list_store), &list_iter, MC_COL_DATA, &selected_stream_fwd, -1); g_snprintf(label_text, sizeof(label_text), "Selected: %s:%u -> %s:%u", - ep_address_to_display(&(selected_stream_fwd->src_addr)), + src_addr, selected_stream_fwd->src_port, - ep_address_to_display(&(selected_stream_fwd->dest_addr)), + dst_addr, selected_stream_fwd->dest_port ); gtk_label_set_text(GTK_LABEL(label_fwd), label_text); gtk_widget_set_sensitive(bt_filter, TRUE); + + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); } else { selected_stream_fwd = NULL; gtk_label_set_text(GTK_LABEL(label_fwd), FWD_LABEL_TEXT); @@ -362,15 +368,19 @@ add_to_list_store(mcast_stream_info_t* strinfo) gchar *data[NUM_COLS]; int i; char *savelocale; + char *src_addr, *dst_addr; /* save the current locale */ savelocale = g_strdup(setlocale(LC_NUMERIC, NULL)); /* switch to "C" locale to avoid problems with localized decimal separators in g_snprintf("%f") functions */ setlocale(LC_NUMERIC, "C"); - data[0] = g_strdup(ep_address_to_display(&(strinfo->src_addr))); + + src_addr = (char*)address_to_display(NULL, &(strinfo->src_addr)); + dst_addr = (char*)address_to_display(NULL, &(strinfo->dest_addr)); + data[0] = g_strdup(src_addr); data[1] = g_strdup_printf("%u", strinfo->src_port); - data[2] = g_strdup(ep_address_to_display(&(strinfo->dest_addr))); + data[2] = g_strdup(dst_addr); data[3] = g_strdup_printf("%u", strinfo->dest_port); data[4] = g_strdup_printf("%u", strinfo->npackets); data[5] = g_strdup_printf("%u /s", strinfo->apackets); @@ -407,6 +417,8 @@ add_to_list_store(mcast_stream_info_t* strinfo) for (i = 0; i < NUM_COLS-1; i++) g_free(data[i]); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); /* Update the top label with the number of detected streams */ g_snprintf(label_text, sizeof(label_text), diff --git a/ui/gtk/rtp_analysis.c b/ui/gtk/rtp_analysis.c index eb46fc3123..c2446a6649 100644 --- a/ui/gtk/rtp_analysis.c +++ b/ui/gtk/rtp_analysis.c @@ -865,24 +865,32 @@ static void dialog_graph_set_title(user_data_t* user_data) { char *title; + char *src_fwd_addr, *dst_fwd_addr, *src_rev_addr, *dst_rev_addr; if (!user_data->dlg.dialog_graph.window) { return; } + src_fwd_addr = (char*)address_to_display(NULL, &(user_data->src_fwd)); + dst_fwd_addr = (char*)address_to_display(NULL, &(user_data->dst_fwd)); + src_rev_addr = (char*)address_to_display(NULL, &(user_data->src_rev)); + dst_rev_addr = (char*)address_to_display(NULL, &(user_data->dst_rev)); title = g_strdup_printf("RTP Graph Analysis Forward: %s:%u to %s:%u Reverse: %s:%u to %s:%u", - ep_address_to_display(&(user_data->src_fwd)), + src_fwd_addr, user_data->port_src_fwd, - ep_address_to_display(&(user_data->dst_fwd)), + dst_fwd_addr, user_data->port_dst_fwd, - ep_address_to_display(&(user_data->src_rev)), + src_rev_addr, user_data->port_src_rev, - ep_address_to_display(&(user_data->dst_rev)), + dst_rev_addr, user_data->port_dst_rev); gtk_window_set_title(GTK_WINDOW(user_data->dlg.dialog_graph.window), title); g_free(title); - + wmem_free(NULL, src_fwd_addr); + wmem_free(NULL, dst_fwd_addr); + wmem_free(NULL, src_rev_addr); + wmem_free(NULL, dst_rev_addr); } @@ -891,6 +899,7 @@ static void dialog_graph_reset(user_data_t* user_data) { int i, j; + char *src_addr, *dst_addr; user_data->dlg.dialog_graph.needs_redraw = TRUE; for (i = 0; i < MAX_GRAPHS; i++) { @@ -909,27 +918,33 @@ dialog_graph_reset(user_data_t* user_data) for (i = 0; i < MAX_GRAPHS; i++) { /* it is forward */ if (i < (MAX_GRAPHS/2)) { + src_addr = (char*)address_to_display(NULL, &(user_data->src_fwd)); + dst_addr = (char*)address_to_display(NULL, &(user_data->dst_fwd)); g_snprintf(user_data->dlg.dialog_graph.graph[i].title, sizeof(user_data->dlg.dialog_graph.graph[0].title), "%s: %s:%u to %s:%u (SSRC=0x%X)", graph_descr[i], - ep_address_to_display(&(user_data->src_fwd)), + src_addr, user_data->port_src_fwd, - ep_address_to_display(&(user_data->dst_fwd)), + dst_addr, user_data->port_dst_fwd, user_data->ssrc_fwd); /* it is reverse */ } else { + src_addr = (char*)address_to_display(NULL, &(user_data->src_rev)); + dst_addr = (char*)address_to_display(NULL, &(user_data->dst_rev)); g_snprintf(user_data->dlg.dialog_graph.graph[i].title, sizeof(user_data->dlg.dialog_graph.graph[0].title), "%s: %s:%u to %s:%u (SSRC=0x%X)", graph_descr[i], - ep_address_to_display(&(user_data->src_rev)), + src_addr, user_data->port_src_rev, - ep_address_to_display(&(user_data->dst_rev)), + dst_addr, user_data->port_dst_rev, user_data->ssrc_rev); } + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); } dialog_graph_set_title(user_data); @@ -3531,9 +3546,7 @@ create_rtp_dialog(user_data_t* user_data) gchar label_forward[150]; gchar label_forward_tree[150]; gchar label_reverse[150]; - - gchar str_src[16]; - gchar str_dst[16]; + char *src_addr, *dst_addr; window = dlg_window_new("Wireshark: RTP Stream Analysis"); /* transient_for top_level */ gtk_window_set_default_size(GTK_WINDOW(window), 700, 400); @@ -3545,26 +3558,27 @@ create_rtp_dialog(user_data_t* user_data) gtk_widget_show(main_vb); /* Notebooks... */ - g_strlcpy(str_src, ep_address_to_display(&(user_data->src_fwd)), sizeof(str_src)); - g_strlcpy(str_dst, ep_address_to_display(&(user_data->dst_fwd)), sizeof(str_dst)); - + src_addr = (char*)address_to_display(NULL, &(user_data->src_fwd)); + dst_addr = (char*)address_to_display(NULL, &(user_data->dst_fwd)); g_snprintf(label_forward, sizeof(label_forward), "Analysing stream from %s port %u to %s port %u SSRC = 0x%X", - str_src, user_data->port_src_fwd, str_dst, user_data->port_dst_fwd, user_data->ssrc_fwd); + src_addr, user_data->port_src_fwd, dst_addr, user_data->port_dst_fwd, user_data->ssrc_fwd); g_snprintf(label_forward_tree, sizeof(label_forward_tree), "Analysing stream from %s port %u to %s port %u SSRC = 0x%X \n" "Note many things affects the accurasy of the analysis, use with caution", - str_src, user_data->port_src_fwd, str_dst, user_data->port_dst_fwd, user_data->ssrc_fwd); - - - g_strlcpy(str_src, ep_address_to_display(&(user_data->src_rev)), sizeof(str_src)); - g_strlcpy(str_dst, ep_address_to_display(&(user_data->dst_rev)), sizeof(str_dst)); + src_addr, user_data->port_src_fwd, dst_addr, user_data->port_dst_fwd, user_data->ssrc_fwd); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); + src_addr = (char*)address_to_display(NULL, &(user_data->src_rev)); + dst_addr = (char*)address_to_display(NULL, &(user_data->dst_rev)); g_snprintf(label_reverse, sizeof(label_reverse), "Analysing stream from %s port %u to %s port %u SSRC = 0x%X \n" "Note many things affects the accurasy of the analysis, use with caution", - str_src, user_data->port_src_rev, str_dst, user_data->port_dst_rev, user_data->ssrc_rev); + src_addr, user_data->port_src_rev, dst_addr, user_data->port_dst_rev, user_data->ssrc_rev); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); /* Start a notebook for flipping between sets of changes */ notebook = gtk_notebook_new(); diff --git a/ui/gtk/rtp_player.c b/ui/gtk/rtp_player.c index bbb44f81cc..3b2886ef55 100644 --- a/ui/gtk/rtp_player.c +++ b/ui/gtk/rtp_player.c @@ -352,8 +352,8 @@ add_rtp_packet(const struct _rtp_info *rtp_info, packet_info *pinfo) * uses: src_ip:src_port dst_ip:dst_port ssrc */ key_str = g_string_new(""); - g_string_printf(key_str, "%s:%d %s:%d %d", ep_address_to_display(&(pinfo->src)), - pinfo->srcport, ep_address_to_display(&(pinfo->dst)), + g_string_printf(key_str, "%s:%d %s:%d %d", address_to_display(pinfo->pool, &(pinfo->src)), + pinfo->srcport, address_to_display(pinfo->pool, &(pinfo->dst)), pinfo->destport, rtp_info->info_sync_src ); /* lookup for this RTP packet in the stream hash table */ @@ -548,6 +548,7 @@ decode_rtp_stream(rtp_stream_info_t *rsi, gpointer ptr) double mean_delay; double variation; #endif + char *src_addr, *dst_addr; int decoded_bytes; int decoded_bytes_prev; @@ -580,9 +581,13 @@ decode_rtp_stream(rtp_stream_info_t *rsi, gpointer ptr) * uses: src_ip:src_port dst_ip:dst_port call_num */ key_str = g_string_new(""); - g_string_printf(key_str, "%s:%d %s:%d %d %u", ep_address_to_display(&(rsi->src_addr)), - rsi->src_port, ep_address_to_display(&(rsi->dest_addr)), + src_addr = (char*)address_to_display(NULL, &(rsi->src_addr)); + dst_addr = (char*)address_to_display(NULL, &(rsi->dest_addr)); + g_string_printf(key_str, "%s:%d %s:%d %d %u", src_addr, + rsi->src_port, dst_addr, rsi->dest_port, rsi->call_num, info->current_channel); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); /* create the rtp_channels_hash table if it doesn't exist */ if (!rtp_channels_hash) { @@ -1760,7 +1765,7 @@ add_channel_to_window(gchar *key _U_ , rtp_channel_info_t *rci, guint *counter _ { GString *label; GtkWidget *viewport; - + char *src_addr, *dst_addr; /* create the channel draw area */ rci->draw_area=gtk_drawing_area_new(); @@ -1797,22 +1802,26 @@ add_channel_to_window(gchar *key _U_ , rtp_channel_info_t *rci, guint *counter _ label = g_string_new(""); + src_addr = (char*)address_to_display(NULL, &(rci->first_stream->src_addr)); + dst_addr = (char*)address_to_display(NULL, &(rci->first_stream->dest_addr)); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cb_use_rtp_timestamp))) { g_string_printf(label, "From %s:%d to %s:%d Duration:%.2f Out of Seq: %d(%.1f%%) Wrong Timestamp: %d(%.1f%%)", - ep_address_to_display(&(rci->first_stream->src_addr)), rci->first_stream->src_port, - ep_address_to_display(&(rci->first_stream->dest_addr)), rci->first_stream->dest_port, + src_addr, rci->first_stream->src_port, + dst_addr, rci->first_stream->dest_port, (double)rci->samples->len/sample_rate, rci->out_of_seq, (double)rci->out_of_seq * 100 / (double)rci->num_packets, rci->wrong_timestamp, (double)rci->wrong_timestamp * 100 / (double)rci->num_packets); } else { g_string_printf(label, "From %s:%d to %s:%d Duration:%.2f Drop by Jitter Buff:%d(%.1f%%) Out of Seq: %d(%.1f%%) Wrong Timestamp: %d(%.1f%%)", - ep_address_to_display(&(rci->first_stream->src_addr)), rci->first_stream->src_port, - ep_address_to_display(&(rci->first_stream->dest_addr)), rci->first_stream->dest_port, + src_addr, rci->first_stream->src_port, + dst_addr, rci->first_stream->dest_port, (double)rci->samples->len/sample_rate, rci->drop_by_jitter_buff, (double)rci->drop_by_jitter_buff * 100 / (double)rci->num_packets, rci->out_of_seq, (double)rci->out_of_seq * 100 / (double)rci->num_packets, rci->wrong_timestamp, (double)rci->wrong_timestamp * 100 / (double)rci->num_packets); } + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); rci->check_bt = gtk_check_button_new_with_label(label->str); gtk_box_pack_start(GTK_BOX (channels_vb), rci->check_bt, FALSE, FALSE, 1); diff --git a/ui/gtk/rtp_stream_dlg.c b/ui/gtk/rtp_stream_dlg.c index 4df1879170..89d1fb9729 100644 --- a/ui/gtk/rtp_stream_dlg.c +++ b/ui/gtk/rtp_stream_dlg.c @@ -557,6 +557,7 @@ rtpstream_view_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, rtp_stream_info_t* selected_stream; gboolean result = TRUE; gchar label_text[80]; + char *src_addr, *dst_addr; /* Logic * nb_selected path_currently_selected forward reverse action result @@ -627,11 +628,13 @@ rtpstream_view_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, } } + src_addr = (char*)address_to_display(NULL, &(selected_stream_fwd->src_addr)); + dst_addr = (char*)address_to_display(NULL, &(selected_stream_fwd->dest_addr)); if (selected_stream_fwd) { g_snprintf(label_text, sizeof(label_text), "Forward: %s:%u -> %s:%u, SSRC=0x%X", - ep_address_to_display(&(selected_stream_fwd->src_addr)), + src_addr, selected_stream_fwd->src_port, - ep_address_to_display(&(selected_stream_fwd->dest_addr)), + dst_addr, selected_stream_fwd->dest_port, selected_stream_fwd->ssrc ); @@ -642,12 +645,16 @@ rtpstream_view_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, else gtk_label_set_text(GTK_LABEL(label_fwd), FWD_LABEL_TEXT); } + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); + src_addr = (char*)address_to_display(NULL, &(selected_stream_rev->src_addr)); + dst_addr = (char*)address_to_display(NULL, &(selected_stream_rev->dest_addr)); if (selected_stream_rev) { g_snprintf(label_text, sizeof(label_text), "Reverse: %s:%u -> %s:%u, SSRC=0x%X", - ep_address_to_display(&(selected_stream_rev->src_addr)), + src_addr, selected_stream_rev->src_port, - ep_address_to_display(&(selected_stream_rev->dest_addr)), + dst_addr, selected_stream_rev->dest_port, selected_stream_rev->ssrc ); @@ -655,6 +662,8 @@ rtpstream_view_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, } else { gtk_label_set_text(GTK_LABEL(label_rev), REV_LABEL_TEXT); } + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); return result; } @@ -673,6 +682,7 @@ add_to_list_store(rtp_stream_info_t* strinfo) double perc; int i; char *savelocale; + char *src_addr, *dst_addr; /* save the current locale */ savelocale = g_strdup(setlocale(LC_NUMERIC, NULL)); @@ -680,9 +690,12 @@ add_to_list_store(rtp_stream_info_t* strinfo) in g_snprintf("%f") functions */ setlocale(LC_NUMERIC, "C"); - data[0] = g_strdup(ep_address_to_display(&(strinfo->src_addr))); + src_addr = (char*)address_to_display(NULL, &(strinfo->src_addr)); + dst_addr = (char*)address_to_display(NULL, &(strinfo->dest_addr)); + + data[0] = g_strdup(src_addr); data[1] = NULL; - data[2] = g_strdup(ep_address_to_display(&(strinfo->dest_addr))); + data[2] = g_strdup(dst_addr); data[3] = NULL; data[4] = g_strdup_printf("0x%X", strinfo->ssrc); if (strinfo->payload_type_name != NULL) { @@ -736,6 +749,8 @@ add_to_list_store(rtp_stream_info_t* strinfo) for (i = 0; i < NUM_COLS-1; i++) g_free(data[i]); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); /* Update the top label with the number of detected streams */ g_snprintf(label_text, sizeof(label_text), diff --git a/ui/gtk/voip_calls_dlg.c b/ui/gtk/voip_calls_dlg.c index d8895fb1f0..fc581fb9c0 100644 --- a/ui/gtk/voip_calls_dlg.c +++ b/ui/gtk/voip_calls_dlg.c @@ -437,14 +437,16 @@ add_to_list_store(voip_calls_info_t* strinfo) isup_calls_info_t *isupinfo; h323_calls_info_t *h323info; gboolean flag = FALSE; + char* addr_str = (char*)address_to_display(NULL, &(strinfo->initial_speaker)); - g_snprintf(field[CALL_COL_INITIAL_SPEAKER], 30, "%s", ep_address_to_display(&(strinfo->initial_speaker))); + g_snprintf(field[CALL_COL_INITIAL_SPEAKER], 30, "%s", addr_str); g_snprintf(field[CALL_COL_FROM], 50, "%s", strinfo->from_identity); g_snprintf(field[CALL_COL_TO], 50, "%s", strinfo->to_identity); g_snprintf(field[CALL_COL_PROTOCOL], 15, "%s", ((strinfo->protocol==VOIP_COMMON)&&strinfo->protocol_name)? strinfo->protocol_name:voip_protocol_name[strinfo->protocol]); g_snprintf(field[CALL_COL_STATE], 15, "%s", voip_call_state_name[strinfo->call_state]); + wmem_free(NULL, addr_str); /* Add comments based on the protocol */ switch (strinfo->protocol) { diff --git a/ui/gtk/wlan_stat_dlg.c b/ui/gtk/wlan_stat_dlg.c index 38d547dfdd..cb0823e883 100644 --- a/ui/gtk/wlan_stat_dlg.c +++ b/ui/gtk/wlan_stat_dlg.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include "ui/recent.h" @@ -359,8 +360,14 @@ static gboolean is_broadcast(const address *addr) { #if 0 + gboolean cmp_addr; + char* addr_str = address_to_display(NULL, addr); + + cmp_addr = (strcmp(addr_str, "Broadcast") == 0); + wmem_free(NULL, addr_str); + /* doesn't work if MAC resolution is disable */ - return strcmp(ep_address_to_display(addr), "Broadcast") == 0; + return cmp_addr; #endif return ADDRESSES_EQUAL(&broadcast, addr); } @@ -478,7 +485,7 @@ static void wlanstat_draw_details(wlanstat_t *hs, wlan_ep_t *wlan_ep, gboolean clear) { wlan_details_ep_t *tmp; - char addr[256], comment[256], percent[256]; + char *addr_str, comment[256], percent[256]; gboolean broadcast_flag, basestation_flag; float f; GtkListStore *store; @@ -500,11 +507,8 @@ wlanstat_draw_details(wlanstat_t *hs, wlan_ep_t *wlan_ep, gboolean clear) f = 0.0f; } - if (hs->resolve_names) { - g_strlcpy (addr, ep_address_to_display(&tmp->addr), sizeof(addr)); - } else { - g_strlcpy (addr, ep_address_to_str(&tmp->addr), sizeof(addr)); - } + addr_str = (char*)get_conversation_address(NULL, &tmp->addr, hs->resolve_names); + if (basestation_flag) { g_strlcpy (comment, "Base station", sizeof(comment)); } else { @@ -517,7 +521,7 @@ wlanstat_draw_details(wlanstat_t *hs, wlan_ep_t *wlan_ep, gboolean clear) tmp->iter_valid = TRUE; } gtk_list_store_set(store, &tmp->iter, - ADDRESS_COLUMN, addr, + ADDRESS_COLUMN, addr_str, PERCENT_2_COLUMN, percent, DATA_SENT_COLUMN, tmp->data_sent, DATA_REC_COLUMN, tmp->data_received, @@ -532,6 +536,7 @@ wlanstat_draw_details(wlanstat_t *hs, wlan_ep_t *wlan_ep, gboolean clear) -1); hs->num_details++; + wmem_free(NULL, addr_str); } } @@ -541,7 +546,7 @@ wlanstat_draw(void *phs) wlanstat_t *hs = (wlanstat_t *)phs; wlan_ep_t *list = hs->ep_list, *tmp; guint32 data = 0, other = 0; - char bssid[256], channel[256], ssid[256], percent[256]; + char *bssid, channel[256], ssid[256], percent[256]; float f; GtkListStore *store; GtkTreeSelection *sel; @@ -567,11 +572,7 @@ wlanstat_draw(void *phs) tmp->type[0x05] - tmp->type[0x0B] - tmp->type[0x0C]; f = (float)(((float)tmp->number_of_packets * 100.0) / hs->number_of_packets); - if (hs->resolve_names) { - g_strlcpy (bssid, ep_address_to_display(&tmp->bssid), sizeof(bssid)); - } else { - g_strlcpy (bssid, ep_address_to_str(&tmp->bssid), sizeof(bssid)); - } + bssid = (char*)get_conversation_address(NULL, &tmp->bssid, hs->resolve_names); if (tmp->stats.channel) { g_snprintf (channel, sizeof(channel), "%u", tmp->stats.channel); } else { @@ -608,6 +609,7 @@ wlanstat_draw(void *phs) -1); hs->num_entries++; + wmem_free(NULL, bssid); } sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(hs->table)); diff --git a/ui/qt/conversation_dialog.cpp b/ui/qt/conversation_dialog.cpp index 161512e1fe..319e9ffc57 100644 --- a/ui/qt/conversation_dialog.cpp +++ b/ui/qt/conversation_dialog.cpp @@ -339,6 +339,7 @@ public: conv_item_t *conv_item = data(ci_col_, Qt::UserRole).value(); bool ok; quint64 cur_packets = data(pkts_col_, Qt::UserRole).toULongLong(&ok); + char *src_addr, *dst_addr; if (!conv_item) { return; @@ -349,10 +350,14 @@ public: return; } - setText(CONV_COLUMN_SRC_ADDR, get_conversation_address(&conv_item->src_address, resolve_names)); + src_addr = (char*)get_conversation_address(NULL, &conv_item->src_address, resolve_names); + dst_addr = (char*)get_conversation_address(NULL, &conv_item->dst_address, resolve_names); + setText(CONV_COLUMN_SRC_ADDR, src_addr); setText(CONV_COLUMN_SRC_PORT, get_conversation_port(conv_item->src_port, conv_item->ptype, resolve_names)); - setText(CONV_COLUMN_DST_ADDR, get_conversation_address(&conv_item->dst_address, resolve_names)); + setText(CONV_COLUMN_DST_ADDR, dst_addr); setText(CONV_COLUMN_DST_PORT, get_conversation_port(conv_item->dst_port, conv_item->ptype, resolve_names)); + wmem_free(NULL, src_addr); + wmem_free(NULL, dst_addr); double duration = nstime_to_sec(&conv_item->stop_time) - nstime_to_sec(&conv_item->start_time); QString col_str, bps_ab = bps_na_, bps_ba = bps_na_; @@ -380,7 +385,7 @@ public: setData(pkts_col_, Qt::UserRole, qVariantFromValue(packets)); } - // Return a string, qulonglong, double, or invalid QVariant representing the raw column data. + // Return a QString, qulonglong, double, or invalid QVariant representing the raw column data. QVariant colData(int col, bool resolve_names) const { conv_item_t *conv_item = data(ci_col_, Qt::UserRole).value(); @@ -397,7 +402,12 @@ public: switch (col) { case CONV_COLUMN_SRC_ADDR: - return get_conversation_address(&conv_item->src_address, resolve_names); + { + char* addr_str = (char*)get_conversation_address(NULL, &conv_item->src_address, resolve_names); + QString q_addr_str(addr_str); + wmem_free(NULL, addr_str); + return q_addr_str; + } case CONV_COLUMN_SRC_PORT: if (resolve_names) { return get_conversation_port(conv_item->src_port, conv_item->ptype, resolve_names); @@ -405,7 +415,12 @@ public: return quint32(conv_item->src_port); } case CONV_COLUMN_DST_ADDR: - return get_conversation_address(&conv_item->dst_address, resolve_names); + { + char* addr_str = (char*)get_conversation_address(NULL, &conv_item->dst_address, resolve_names); + QString q_addr_str(addr_str); + wmem_free(NULL, addr_str); + return q_addr_str; + } case CONV_COLUMN_DST_PORT: if (resolve_names) { return get_conversation_port(conv_item->dst_port, conv_item->ptype, resolve_names); diff --git a/ui/qt/endpoint_dialog.cpp b/ui/qt/endpoint_dialog.cpp index fc884e533a..81672cd2a0 100644 --- a/ui/qt/endpoint_dialog.cpp +++ b/ui/qt/endpoint_dialog.cpp @@ -228,6 +228,7 @@ public: hostlist_talker_t *endp_item = data(ei_col_, Qt::UserRole).value(); bool ok; quint64 cur_packets = data(pkts_col_, Qt::UserRole).toULongLong(&ok); + char* addr_str; if (!endp_item) { return; @@ -238,8 +239,10 @@ public: return; } - setText(ENDP_COLUMN_ADDR, get_conversation_address(&endp_item->myaddress, resolve_names)); + addr_str = (char*)get_conversation_address(NULL, &endp_item->myaddress, resolve_names); + setText(ENDP_COLUMN_ADDR, addr_str); setText(ENDP_COLUMN_PORT, get_conversation_port(endp_item->port, endp_item->ptype, resolve_names)); + wmem_free(NULL, addr_str); QString col_str; @@ -290,7 +293,12 @@ public: switch (col) { case ENDP_COLUMN_ADDR: - return get_conversation_address(&endp_item->myaddress, resolve_names); + { + char* addr_str = (char*)get_conversation_address(NULL, &endp_item->myaddress, resolve_names); + QString q_addr_str(addr_str); + wmem_free(NULL, addr_str); + return q_addr_str; + } case ENDP_COLUMN_PORT: if (resolve_names) { return get_conversation_port(endp_item->port, endp_item->ptype, resolve_names); diff --git a/ui/qt/lbm_uimflow_dialog.cpp b/ui/qt/lbm_uimflow_dialog.cpp index b4bdb6aa41..010ff90afd 100644 --- a/ui/qt/lbm_uimflow_dialog.cpp +++ b/ui/qt/lbm_uimflow_dialog.cpp @@ -505,6 +505,7 @@ void LBMUIMFlowDialog::fillDiagram(void) { QCustomPlot * sp = m_ui->sequencePlot; seq_analysis_info_t new_sa; + char* addr_str; new_sa = m_sequence_analysis; new_sa.items = g_queue_new(); @@ -520,11 +521,13 @@ void LBMUIMFlowDialog::fillDiagram(void) m_node_label_width = 0; for (guint i = 0; i < m_sequence_analysis.num_nodes; i++) { - int label_w = vfm.width(ep_address_to_display(&(m_sequence_analysis.nodes[i]))); + addr_str = (char*)address_to_display(NULL, &(m_sequence_analysis.nodes[i])); + int label_w = vfm.width(addr_str); if (m_node_label_width < label_w) { m_node_label_width = label_w; } + wmem_free(NULL, addr_str); } m_node_label_width = (m_node_label_width * 3 / 4) + m_one_em; diff --git a/ui/qt/sequence_diagram.cpp b/ui/qt/sequence_diagram.cpp index 3bd4c2d724..bdca224650 100644 --- a/ui/qt/sequence_diagram.cpp +++ b/ui/qt/sequence_diagram.cpp @@ -104,6 +104,7 @@ void SequenceDiagram::setData(seq_analysis_info_t *sainfo) QVector key_labels, val_labels, com_labels; QFontMetrics com_fm(comment_axis_->tickLabelFont()); int elide_w = com_fm.height() * max_comment_em_width_; + char* addr_str; for (GList *cur = g_queue_peek_nth_link(sainfo->items, 0); cur; cur = g_list_next(cur)) { seq_analysis_item_t *sai = (seq_analysis_item_t *) cur->data; @@ -123,10 +124,13 @@ void SequenceDiagram::setData(seq_analysis_info_t *sainfo) for (unsigned int i = 0; i < sainfo_->num_nodes; i++) { val_ticks.append(i); - val_labels.append(ep_address_to_display(&(sainfo_->nodes[i]))); + addr_str = (char*)address_to_display(NULL, &(sainfo_->nodes[i])); + val_labels.append(addr_str); if (i % 2 == 0) { val_labels.last().append("\n"); } + + wmem_free(NULL, addr_str); } keyAxis()->setTickVector(key_ticks); keyAxis()->setTickVectorLabels(key_labels); diff --git a/ui/qt/sequence_dialog.cpp b/ui/qt/sequence_dialog.cpp index 437493ae3d..cd7ea809cf 100644 --- a/ui/qt/sequence_dialog.cpp +++ b/ui/qt/sequence_dialog.cpp @@ -357,12 +357,15 @@ void SequenceDialog::fillDiagram() } QFontMetrics vfm = QFontMetrics(sp->xAxis2->labelFont()); + char* addr_str; node_label_w_ = 0; for (guint i = 0; i < sainfo_->num_nodes; i++) { - int label_w = vfm.width(ep_address_to_display(&(sainfo_->nodes[i]))); + addr_str = (char*)address_to_display(NULL, &(sainfo_->nodes[i])); + int label_w = vfm.width(addr_str); if (node_label_w_ < label_w) { node_label_w_ = label_w; } + wmem_free(NULL, addr_str); } node_label_w_ = (node_label_w_ * 3 / 4) + one_em_; diff --git a/ui/qt/voip_calls_dialog.cpp b/ui/qt/voip_calls_dialog.cpp index 7dfe664c2e..13c38f416f 100644 --- a/ui/qt/voip_calls_dialog.cpp +++ b/ui/qt/voip_calls_dialog.cpp @@ -74,17 +74,20 @@ public: if (!call_info) { return; } + char* addr_str; // XXX Pull digit count from capture file precision setText(start_time_col_, QString::number(nstime_to_sec(&(call_info->start_rel_ts)), 'f', 6)); setText(stop_time_col_, QString::number(nstime_to_sec(&(call_info->stop_rel_ts)), 'f', 6)); - setText(initial_speaker_col_, ep_address_to_display(&(call_info->initial_speaker))); + addr_str = (char*)address_to_display(NULL, &(call_info->initial_speaker)); + setText(initial_speaker_col_, addr_str); setText(from_col_, call_info->from_identity); setText(to_col_, call_info->to_identity); setText(protocol_col_, ((call_info->protocol == VOIP_COMMON) && call_info->protocol_name) ? call_info->protocol_name : voip_protocol_name[call_info->protocol]); setText(packets_col_, QString::number(call_info->npackets)); setText(state_col_, voip_call_state_name[call_info->call_state]); + wmem_free(NULL, addr_str); /* Add comments based on the protocol */ QString call_comments; diff --git a/ui/tap-rtp-common.c b/ui/tap-rtp-common.c index 1959ea1c70..0623e6ef74 100644 --- a/ui/tap-rtp-common.c +++ b/ui/tap-rtp-common.c @@ -127,10 +127,12 @@ void rtp_write_header(rtp_stream_info_t *strinfo, FILE *file) size_t sourcelen; guint16 port; /* UDP port */ guint16 padding; /* 2 padding bytes */ + char* addr_str = (char*)address_to_display(NULL, &(strinfo->dest_addr)); fprintf(file, "#!rtpplay%s %s/%u\n", RTPFILE_VERSION, - ep_address_to_display(&(strinfo->dest_addr)), + addr_str, strinfo->dest_port); + wmem_free(NULL, addr_str); start_sec = g_htonl(strinfo->start_fd->abs_ts.secs); start_usec = g_htonl(strinfo->start_fd->abs_ts.nsecs / 1000000); diff --git a/ui/tap-sequence-analysis.c b/ui/tap-sequence-analysis.c index 6a15c18338..eb35b9125c 100644 --- a/ui/tap-sequence-analysis.c +++ b/ui/tap-sequence-analysis.c @@ -465,6 +465,7 @@ sequence_analysis_dump_to_file(const char *pathname, seq_analysis_info_t *sainfo char src_port[8], dst_port[8]; gchar *time_str; GList *list; + char *addr_str; FILE *of; @@ -522,8 +523,9 @@ sequence_analysis_dump_to_file(const char *pathname, seq_analysis_info_t *sainfo /* Write the node names on top */ for (i=0; inodes[i+first_node]))); + addr_str = (char*)address_to_display(NULL, &(sainfo->nodes[i+first_node])); + g_string_printf(label_string, "| %s", addr_str); + wmem_free(NULL, addr_str); enlarge_string(label_string, NODE_CHARS_WIDTH*2, ' '); fprintf(of, "%s", label_string->str); g_string_printf(label_string, "| "); @@ -539,8 +541,9 @@ sequence_analysis_dump_to_file(const char *pathname, seq_analysis_info_t *sainfo /* Write the node names on top */ for (i=1; inodes[i+first_node]))); + addr_str = (char*)address_to_display(NULL, &(sainfo->nodes[i+first_node])); + g_string_printf(label_string, "| %s", addr_str); + wmem_free(NULL, addr_str); if (label_string->len < NODE_CHARS_WIDTH) { enlarge_string(label_string, NODE_CHARS_WIDTH, ' '); diff --git a/ui/traffic_table_ui.c b/ui/traffic_table_ui.c index 26e2205b6c..2609ca5fd8 100644 --- a/ui/traffic_table_ui.c +++ b/ui/traffic_table_ui.c @@ -223,13 +223,17 @@ create_endpoint_geoip_map(const GArray *endp_array, gchar **err_str) { */ if (lon && lat) { + char* addr_str; + g_string_printf(tpl_entry, "%s", map_endpoint_opener); /* Longitude + latitude */ g_string_append_printf(tpl_entry, " 'type': 'Feature', 'geometry': { 'type': 'Point', 'coordinates': [%s, %s] },\n", lon, lat); /* Address */ - g_string_append_printf(tpl_entry, " 'properties': { 'title': '%s', ", ep_address_to_display(&endp_item->myaddress)); + addr_str = (char*)address_to_display(NULL, &endp_item->myaddress); + g_string_append_printf(tpl_entry, " 'properties': { 'title': '%s', ", addr_str); + wmem_free(NULL, addr_str); /* Description */ -- cgit v1.2.1