aboutsummaryrefslogtreecommitdiffstats
path: root/ui/gtk/filter_dlg.c
diff options
context:
space:
mode:
authorMichal Labedzki <michal.labedzki@tieto.com>2014-12-19 09:21:20 +0100
committerMichal Labedzki <michal.labedzki@tieto.com>2014-12-20 17:59:25 +0000
commit7b2ae7123521a6000ab7f0c655ec7125c8eb688a (patch)
tree6a8d4000df6a53d1a1fef2dbf987facb80880a61 /ui/gtk/filter_dlg.c
parentabd90c32bbba16d848905b15f2b6ccfc353c8e41 (diff)
Fix filter valid/invalid test for multifield custom type
Check for "or" or "||" (also ignore whitespaces) and check both arguments of this operator to be fieldname (character check), then check whole filter is valid for dfilter compiler. Change-Id: I412b5dc1fca16fcd2b640aa74af81167300fd11e Reviewed-on: https://code.wireshark.org/review/5848 Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Tested-by: Michal Labedzki <michal.labedzki@tieto.com> Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
Diffstat (limited to 'ui/gtk/filter_dlg.c')
-rw-r--r--ui/gtk/filter_dlg.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/ui/gtk/filter_dlg.c b/ui/gtk/filter_dlg.c
index ac08e6a240..6662bd8705 100644
--- a/ui/gtk/filter_dlg.c
+++ b/ui/gtk/filter_dlg.c
@@ -1347,6 +1347,28 @@ filter_te_syntax_check_cb(GtkWidget *w, gpointer user_data _U_)
statusbar_pop_filter_msg();
}
+ if (strval && g_object_get_data(G_OBJECT(w), E_FILT_MULTI_FIELD_NAME_ONLY_KEY)) {
+ gchar **fields;
+ guint i_field = 0;
+
+ fields = g_regex_split_simple(" *([^ ]+) *(?:(?:\\|\\|)|(?:or))? *",
+ strval, G_REGEX_ANCHORED, G_REGEX_MATCH_ANCHORED);
+
+ for (i_field =0; i_field < g_strv_length(fields); i_field += 1) {
+ if (fields[i_field] && *fields[i_field]) {
+ c = proto_check_field_name(fields[i_field]);
+ if (c != 0) {
+ colorize_filter_te_as_invalid(w);
+ if (use_statusbar)
+ statusbar_push_filter_msg(" Invalid filter");
+ g_strfreev(fields);
+ return;
+ }
+ }
+ }
+ g_strfreev(fields);
+ }
+
/* colorize filter string entry */
if (g_object_get_data(G_OBJECT(w), E_FILT_FIELD_NAME_ONLY_KEY) &&
strval && (c = proto_check_field_name(strval)) != 0)