diff options
author | Guy Harris <guy@alum.mit.edu> | 2004-08-28 09:54:04 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2004-08-28 09:54:04 +0000 |
commit | 57d15574efe676dea419513980d9466fd19c13da (patch) | |
tree | be13bd0109cacd8d1e4cf10a21aca9ddb0f0ebb8 | |
parent | 7d2c21e3173f21e4c5234e6c0ac30bf6b74e84bd (diff) |
From Francisco Alcoba: fix a crashing bug caused if you change the
dissection for a given transport protocol port and there's no packet
currently selected.
svn path=/trunk/; revision=11843
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | gtk/decode_as_dlg.c | 26 |
2 files changed, 22 insertions, 5 deletions
@@ -2267,6 +2267,7 @@ Marco van den Bovenkamp <marco [AT] linuxgoeroe.dhs.org> Ming Zhang <mingz [AT] ele.uri.edu> Neil Piercy <Neil.Piercy [AT] ipaccess.com> Rémi Denis-Courmont <courmisch [AT] via.ecp.fr> +Francisco Alcoba <francisco.alcoba [AT] ericsson.com> Alain Magloire <alainm[AT]rcsm.ece.mcgill.ca> was kind enough to give his permission to use his version of snprintf.c. diff --git a/gtk/decode_as_dlg.c b/gtk/decode_as_dlg.c index d7502c1b15..3d93efd0ce 100644 --- a/gtk/decode_as_dlg.c +++ b/gtk/decode_as_dlg.c @@ -79,6 +79,9 @@ enum srcdst_type { #define E_MENU_SRCDST "menu_src_dst" #define E_PAGE_ACTION "notebook_page_action" +#define E_PAGE_DPORT "dport" +#define E_PAGE_SPORT "sport" + #define E_PAGE_LIST "notebook_page_list" #define E_PAGE_TABLE "notebook_page_table_name" #define E_PAGE_TITLE "notebook_page_title" @@ -740,7 +743,8 @@ decode_transport(GtkWidget *notebook_pg) GtkWidget *menu, *menuitem; GtkWidget *list; gchar *table_name; - gint requested_srcdst; + gint requested_srcdst, requested_port; + gpointer portp; list = OBJECT_GET_DATA(notebook_pg, E_PAGE_LIST); if (requested_action == E_DECODE_NO) @@ -765,10 +769,20 @@ decode_transport(GtkWidget *notebook_pg) decode_change_one_dissector(table_name, 0, list); return; } - if (requested_srcdst != E_DECODE_DPORT) - decode_change_one_dissector(table_name, cfile.edt->pi.srcport, list); - if (requested_srcdst != E_DECODE_SPORT) - decode_change_one_dissector(table_name, cfile.edt->pi.destport, list); + if (requested_srcdst != E_DECODE_DPORT) { + portp = OBJECT_GET_DATA(notebook_pg, E_PAGE_SPORT); + if (portp != NULL) { + requested_port = GPOINTER_TO_INT(portp); + decode_change_one_dissector(table_name, requested_port, list); + } + } + if (requested_srcdst != E_DECODE_SPORT) { + portp = OBJECT_GET_DATA(notebook_pg, E_PAGE_DPORT); + if (portp != NULL) { + requested_port = GPOINTER_TO_INT(portp); + decode_change_one_dissector(table_name, requested_port, list); + } + } } /**************************************************/ @@ -1018,6 +1032,8 @@ decode_add_srcdst_menu (GtkWidget *page) OBJECT_SET_DATA(page, E_MENU_SRCDST, menu); gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu); + OBJECT_SET_DATA(page, E_PAGE_SPORT, GINT_TO_POINTER(cfile.edt->pi.srcport)); + OBJECT_SET_DATA(page, E_PAGE_DPORT, GINT_TO_POINTER(cfile.edt->pi.destport)); alignment = decode_add_pack_menu(optmenu); |