abrt/SOURCES/0057-a-a-save-package-data-...

119 lines
3.0 KiB
Diff

From caf03304c98dc84086b2f4f60be4b41fc76f31e6 Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Wed, 4 Mar 2020 16:41:28 +0100
Subject: [PATCH] a-a-save-package-data: Use regexps to match interpreters
Instead of adding more and more interpreters to the list which
gets outdated after a while, we can utilize regular expressions.
User will still have an option to set Interpreters in config file to
match any other interpreters.
The regexes should cover interpreters:
Python:
* python
* python2
* python2.7
* python3
* python3.8
* platform-python
* platform-python3
* platform-python3.8
Perl:
* perl
* perl5.30.1
PHP:
* php
* php-cgi
R
retrace.fedoraproject.org/faf/reports/2832480
tcl
retrace.fedoraproject.org/faf/reports/2555398
The regexes should cover interpreters:
R:
* R
tcl:
* tclsh
* tclsh8.6
Tests require will-crash and perl-interpreter installed.
Resolves: rhbz#1798494
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
src/daemon/abrt-action-save-package-data.c | 39 ++++++++-
1 files change, 38 insertions(+), 1 deletions(-)
diff --git a/src/daemon/abrt-action-save-package-data.c b/src/daemon/abrt-action-save-package-data.c
index 21b4c97d..6ced7971 100644
--- a/src/daemon/abrt-action-save-package-data.c
+++ b/src/daemon/abrt-action-save-package-data.c
@@ -17,11 +17,47 @@
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <fnmatch.h>
+#include <glib.h>
#include "libabrt.h"
#include "rpm.h"
#define GPG_CONF "gpg_keys.conf"
+/**
+ "python3.4, python3.5, python3.6, python3.7, perl, perl5.16.2"
+ * The regexes should cover interpreters with basename:
+ * Python:
+ * python
+ * python2
+ * python3
+ * python2.7
+ * python3.8
+ * platform-python
+ * platform-python3
+ * platform-python3.8
+ *
+ * Perl:
+ * perl
+ * perl5.30.1
+ *
+ * PHP:
+ * php
+ * php-cgi
+ *
+ * R:
+ * R
+ *
+ * tcl:
+ * tclsh
+ * tclsh8.6
+ **/
+#define DEFAULT_INTERPRETERS_REGEX \
+ "^(perl ([[:digit:]][.][[:digit:]]+[.][[:digit:]])? |" \
+ "php (-cgi)? |" \
+ "(platform-)? python ([[:digit:]]([.][[:digit:]])?)? |" \
+ "R |" \
+ "tclsh ([[:digit:]][.][[:digit:]])?)$"
+
static bool settings_bOpenGPGCheck = false;
static GList *settings_setOpenGPGPublicKeys = NULL;
static GList *settings_setBlackListedPkgs = NULL;
@@ -304,7 +340,8 @@ static int SavePackageDescriptionToDebugDump(const char *dump_dir_name, const ch
/* if basename is known interpreter, we want to blame the running script
* not the interpreter
*/
- if (g_list_find_custom(settings_Interpreters, basename, (GCompareFunc)g_strcmp0))
+ if (g_regex_match_simple(DEFAULT_INTERPRETERS_REGEX, basename, G_REGEX_EXTENDED, /*MatchFlags*/0) ||
+ g_list_find_custom(settings_Interpreters, basename, (GCompareFunc)g_strcmp0))
{
struct pkg_envra *script_pkg = get_script_name(cmdline, &executable, chroot);
/* executable may have changed, check it again */
--
2.25.1