aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss.ws@gmail.com>2014-06-25 15:37:36 -0400
committerEvan Huus <eapache@gmail.com>2014-06-27 00:48:51 +0000
commit9d4af5fccd4061521f72d42c2afb7fef78d3e690 (patch)
tree792a561669f89d803f7d5dc4e434fd75fa177a0c /epan
parent4742fc8ed25f64822c711610e847298600319282 (diff)
Check the validity of fields given to tshark with "-e": complain and exit if
they aren't valid. Should help avoid confusion like that in https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=10201 Bug: 10201 Change-Id: Iff7f51ae042ca1a92d1c803b6cb61aa5d81ce205 Reviewed-on: https://code.wireshark.org/review/2654 Reviewed-by: Michael Mann <mmann78@netscape.net> Reviewed-by: Evan Huus <eapache@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/print.c26
-rw-r--r--epan/print.h1
2 files changed, 27 insertions, 0 deletions
diff --git a/epan/print.c b/epan/print.c
index 3789443134..f4eb8818e0 100644
--- a/epan/print.c
+++ b/epan/print.c
@@ -1429,6 +1429,32 @@ void output_fields_add(output_fields_t *fields, const gchar *field)
}
+static void
+output_field_check(void *data, void *user_data)
+{
+ gchar *field = (gchar *)data;
+ gboolean *all_valid = (gboolean *)user_data;
+
+ if (!strncmp(field, COLUMN_FIELD_FILTER, strlen(COLUMN_FIELD_FILTER)))
+ return;
+
+ if (!proto_registrar_get_byname(field)) {
+ g_warning("'%s' isn't a valid field!", field);
+ *all_valid = FALSE;
+ }
+
+}
+
+gboolean
+output_fields_valid(output_fields_t *fields)
+{
+ gboolean all_valid = TRUE;
+
+ g_ptr_array_foreach(fields->fields, output_field_check, &all_valid);
+
+ return all_valid;
+}
+
gboolean output_fields_set_option(output_fields_t *info, gchar *option)
{
const gchar *option_name;
diff --git a/epan/print.h b/epan/print.h
index be739f248b..9832d575a4 100644
--- a/epan/print.h
+++ b/epan/print.h
@@ -119,6 +119,7 @@ typedef struct _output_fields output_fields_t;
WS_DLL_PUBLIC output_fields_t* output_fields_new(void);
WS_DLL_PUBLIC void output_fields_free(output_fields_t* info);
WS_DLL_PUBLIC void output_fields_add(output_fields_t* info, const gchar* field);
+WS_DLL_PUBLIC gboolean output_fields_valid(output_fields_t* info);
WS_DLL_PUBLIC gsize output_fields_num_fields(output_fields_t* info);
WS_DLL_PUBLIC gboolean output_fields_set_option(output_fields_t* info, gchar* option);
WS_DLL_PUBLIC void output_fields_list_options(FILE *fh);