Hi,

This patch fix off-by-one error in packet_list_init()
and makes new_packet_list_append() to use stack for row_data_t.

Btw. There's new issue, when I load some capture into wireshark, and don't
click any packet. I got SIGSEGV on closing capture (^W) on quiting (^Q)

(gdb) bt
#0  0x000000000044ea8f in set_menus_for_selected_packet (cf=0x79e3e0) at 
menus.c:2639
#1  0x000000000044a15b in main_cf_callback (event=<value optimized out>, 
data=0x79e3e0, user_data=<value optimized out>) at main.c:1277
#2  0x0000000000435145 in cf_callback_invoke (event=0, data=0x79e3e0) at 
file.c:146
#3  0x0000000000438c7e in cf_close (cf=0x79e3e0) at file.c:385
[cut]

2639        set_menu_sensitivity(packet_list_menu_factory, "/SCTP",
2640                             cf->current_frame != NULL ? 
(cf->edt->pi.ipproto == IP_PROTO_SCTP) : FALSE);

cf->current_frame $1 = (frame_data *) 0x16bcae0,
but       cf->edt $2 = (epan_dissect_t *) 0x0
diff --git gtk/new_packet_list.c gtk/new_packet_list.c
index cbf2f6c..fec3d12 100644
--- gtk/new_packet_list.c
+++ gtk/new_packet_list.c
@@ -85,20 +85,18 @@ guint
 new_packet_list_append(column_info cinfo, frame_data *fdata)
 {
        gint i;
-       row_data_t *row_data;
+       row_data_t row_data;
 
-       row_data = g_new0(row_data_t, 1);
+       memset(&row_data, 0, sizeof(row_data_t));
 
        for(i = 0; i < cfile.cinfo.num_cols; i++) {
-               row_data->col_text[cinfo.col_fmt[i]] =
+               row_data.col_text[cinfo.col_fmt[i]] =
                        se_strdup(cinfo.col_data[i]);
        }
 
-       row_data->fdata = fdata;
+       row_data.fdata = fdata;
 
-       packet_list_append_record(packetlist, row_data);
-
-       g_free(row_data);
+       packet_list_append_record(packetlist, &row_data);
 
        return packetlist->num_rows; /* XXX - Check that this is the right # */
 }
diff --git gtk/packet_list_store.c gtk/packet_list_store.c
index 7c8670b..92d4f12 100644
--- gtk/packet_list_store.c
+++ gtk/packet_list_store.c
@@ -202,10 +202,9 @@ packet_list_init(PacketList *packet_list)
 {
        guint i;
 
-       for(i = 0; i <= NUM_COL_FMTS; i++) { /* XXX - Temporary? */
+       for(i = 0; i < NUM_COL_FMTS; i++) { /* XXX - Temporary? */
                packet_list->column_types[i] = G_TYPE_STRING;
        }
-       
 
        packet_list->n_columns = NUM_COL_FMTS;
        packet_list->num_rows = 0;
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to