aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--column.c4
-rw-r--r--gtk/column_prefs.c3
-rw-r--r--prefs.c39
3 files changed, 35 insertions, 11 deletions
diff --git a/column.c b/column.c
index 6f1588e107..90841602ea 100644
--- a/column.c
+++ b/column.c
@@ -1,7 +1,7 @@
/* column.c
* Routines for handling column preferences
*
- * $Id: column.c,v 1.32 2001/07/22 21:28:46 guy Exp $
+ * $Id: column.c,v 1.33 2001/07/22 21:50:46 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -376,7 +376,7 @@ get_column_format_from_str(gchar *str) {
}
cptr++;
}
- return COL_NUMBER;
+ return -1; /* illegal */
}
gchar *
diff --git a/gtk/column_prefs.c b/gtk/column_prefs.c
index fe8b4bb119..9a33d9213f 100644
--- a/gtk/column_prefs.c
+++ b/gtk/column_prefs.c
@@ -1,7 +1,7 @@
/* column_prefs.c
* Dialog box for column preferences
*
- * $Id: column_prefs.c,v 1.5 2000/11/17 21:00:39 gram Exp $
+ * $Id: column_prefs.c,v 1.6 2001/07/22 21:50:47 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -203,6 +203,7 @@ column_sel_list_cb(GtkWidget *l, gpointer data) {
cfmt = (fmt_data *) clp->data;
title = cfmt->title;
cur_fmt = get_column_format_from_str(cfmt->fmt);
+ g_assert(cur_fmt != -1); /* It should always be valid */
gtk_option_menu_set_history(GTK_OPTION_MENU(fmt_m), cur_fmt);
sensitivity = TRUE;
if (clp != g_list_first(prefs.col_list))
diff --git a/prefs.c b/prefs.c
index 0a3ec314fc..cd2bb52c54 100644
--- a/prefs.c
+++ b/prefs.c
@@ -1,7 +1,7 @@
/* prefs.c
* Routines for handling preferences
*
- * $Id: prefs.c,v 1.54 2001/07/22 21:27:54 guy Exp $
+ * $Id: prefs.c,v 1.55 2001/07/22 21:50:46 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -956,7 +956,7 @@ string_to_name_resolve(char *string, guint32 *name_resolve)
static int
set_pref(gchar *pref_name, gchar *value)
{
- GList *col_l;
+ GList *col_l, *col_l_elt;
gint llen;
fmt_data *cfmt;
unsigned long int cval;
@@ -999,17 +999,40 @@ set_pref(gchar *pref_name, gchar *value)
clear_string_list(col_l);
return PREFS_SET_SYNTAX_ERR;
}
+ /* Check to make sure all column formats are valid. */
+ col_l_elt = g_list_first(col_l);
+ while(col_l_elt) {
+ /* Make sure the title isn't empty. */
+ if (strcmp(col_l_elt->data, "") == 0) {
+ /* It is. */
+ clear_string_list(col_l);
+ return PREFS_SET_SYNTAX_ERR;
+ }
+
+ /* Go past the title. */
+ col_l_elt = col_l_elt->next;
+
+ /* Check the format. */
+ if (get_column_format_from_str(col_l_elt->data) == -1) {
+ /* It's not a valid column format. */
+ clear_string_list(col_l);
+ return PREFS_SET_SYNTAX_ERR;
+ }
+
+ /* Go past the format. */
+ col_l_elt = col_l_elt->next;
+ }
free_col_info(&prefs);
prefs.col_list = NULL;
llen = g_list_length(col_l);
prefs.num_cols = llen / 2;
- col_l = g_list_first(col_l);
- while(col_l) {
+ col_l_elt = g_list_first(col_l);
+ while(col_l_elt) {
cfmt = (fmt_data *) g_malloc(sizeof(fmt_data));
- cfmt->title = g_strdup(col_l->data);
- col_l = col_l->next;
- cfmt->fmt = g_strdup(col_l->data);
- col_l = col_l->next;
+ cfmt->title = g_strdup(col_l_elt->data);
+ col_l_elt = col_l_elt->next;
+ cfmt->fmt = g_strdup(col_l_elt->data);
+ col_l_elt = col_l_elt->next;
prefs.col_list = g_list_append(prefs.col_list, cfmt);
}
clear_string_list(col_l);