[gnome-system-monitor] Fixed crash due to regex error (bgo#796168)



commit 18bd98e263caa949ceb2a1991548ebf006834a41
Author: Robert Roth <robert roth off gmail com>
Date:   Wed May 16 21:21:27 2018 +0300

    Fixed crash due to regex error (bgo#796168)

 src/proctable.cpp |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/src/proctable.cpp b/src/proctable.cpp
index 1fadc4d..c530484 100644
--- a/src/proctable.cpp
+++ b/src/proctable.cpp
@@ -214,6 +214,7 @@ iter_matches_search_key (GtkTreeModel *model, GtkTreeIter *iter, const gchar *se
     gboolean found;
     char *search_pattern;
     char **keys;
+    Glib::RefPtr<Glib::Regex> regex;
 
     gtk_tree_model_get (model, iter,
                         COL_NAME, &name,
@@ -226,8 +227,11 @@ iter_matches_search_key (GtkTreeModel *model, GtkTreeIter *iter, const gchar *se
 
     keys = g_strsplit_set(search_text, " |", -1);
     search_pattern = g_strjoinv ("|", keys);
-
-    auto regex = Glib::Regex::create(search_pattern, Glib::REGEX_CASELESS);
+    try {
+        regex = Glib::Regex::create(search_pattern, Glib::REGEX_CASELESS);
+    } catch (const Glib::Error& ex) {
+        regex = Glib::Regex::create(Glib::Regex::escape_string(search_pattern), Glib::REGEX_CASELESS);
+    }
 
     found = (name && regex->match(name)) || (user && regex->match(user))
             || (pids && regex->match(pids)) || (args && regex->match(args));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]