aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2004-08-28 09:54:04 +0000
committerGuy Harris <guy@alum.mit.edu>2004-08-28 09:54:04 +0000
commit57d15574efe676dea419513980d9466fd19c13da (patch)
treebe13bd0109cacd8d1e4cf10a21aca9ddb0f0ebb8
parent7d2c21e3173f21e4c5234e6c0ac30bf6b74e84bd (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--AUTHORS1
-rw-r--r--gtk/decode_as_dlg.c26
2 files changed, 22 insertions, 5 deletions
diff --git a/AUTHORS b/AUTHORS
index 90f05b6c9a..88f1d12a71 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -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);