diff -x '*.po' -d -urpN abrt.4/src/Daemon/abrt.conf abrt.5/src/Daemon/abrt.conf
--- abrt.4/src/Daemon/abrt.conf 2010-03-31 17:40:56.000000000 +0200
+++ abrt.5/src/Daemon/abrt.conf 2010-05-06 02:01:15.327928666 +0200
@@ -8,6 +8,8 @@ OpenGPGCheck = yes
BlackList = nspluginwrapper, valgrind, strace, avant-window-navigator
# Process crashes in executables which do not belong to any package?
ProcessUnpackaged = no
+# Blacklisted executable paths (shell patterns)
+BlackListedPaths = /usr/share/doc/*, */example*
# Which database plugin to use
Database = SQLite3
# Max size for crash storage [MiB]
diff -x '*.po' -d -urpN abrt.4/src/Daemon/MiddleWare.cpp
abrt.5/src/Daemon/MiddleWare.cpp
--- abrt.4/src/Daemon/MiddleWare.cpp 2010-05-06 01:53:04.836994653 +0200
+++ abrt.5/src/Daemon/MiddleWare.cpp 2010-05-06 02:48:47.813218492 +0200
@@ -18,6 +18,8 @@
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#include <fnmatch.h>
+#include <algorithm>
#include "abrtlib.h"
#include "abrt_types.h"
#include "Daemon.h"
@@ -27,7 +29,6 @@
#include "ABRTException.h"
#include "CommLayerInner.h"
#include "MiddleWare.h"
-#include <algorithm>
using namespace std;
@@ -739,6 +740,17 @@ static mw_result_t SavePackageDescriptio
log("Blacklisted package '%s'", packageName.c_str());
return MW_BLACKLISTED;
}
+ set_string_t::iterator it = g_settings_setBlackListedPaths.begin();
+ while (it != g_settings_setBlackListedPaths.end())
+ {
+ if (fnmatch(it->c_str(), pExecutable, /*flags:*/ 0) == 0)
+ {
+ log("Blacklisted executable '%s'", pExecutable);
+ return MW_BLACKLISTED;
+ }
+ it++;
+ }
+
if (g_settings_bOpenGPGCheck)
{
if (!s_RPM.CheckFingerprint(packageName.c_str()))
diff -x '*.po' -d -urpN abrt.4/src/Daemon/Settings.cpp
abrt.5/src/Daemon/Settings.cpp
--- abrt.4/src/Daemon/Settings.cpp 2010-05-06 01:53:18.178928181 +0200
+++ abrt.5/src/Daemon/Settings.cpp 2010-05-06 02:10:19.261178497 +0200
@@ -54,6 +54,7 @@ bool g_settings_bOpenGPGCheck =
/* one line: "OpenGPGPublicKeys = value1,value2" */
set_string_t g_settings_setOpenGPGPublicKeys;
set_string_t g_settings_setBlackListedPkgs;
+set_string_t g_settings_setBlackListedPaths;
std::string g_settings_sDatabase;
unsigned int g_settings_nMaxCrashReportsSize = 1000;
bool g_settings_bProcessUnpackaged = false;
@@ -175,6 +176,11 @@ static void ParseCommon()
{
g_settings_setBlackListedPkgs = ParseList(it->second.c_str());
}
+ it = s_mapSectionCommon.find("BlackListedPaths");
+ if (it != end)
+ {
+ g_settings_setBlackListedPaths = ParseList(it->second.c_str());
+ }
it = s_mapSectionCommon.find("Database");
if (it != end)
{
@@ -475,6 +481,7 @@ void SaveSettings()
SaveBool("OpenGPGCheck", g_settings_bOpenGPGCheck, fOut);
SaveSetString("OpenGPGPublicKeys", g_settings_setOpenGPGPublicKeys,
fOut);
SaveSetString("BlackList", g_settings_setBlackListedPkgs, fOut);
+ SaveSetString("BlackListedPaths", g_settings_setBlackListedPaths,
fOut);
fprintf(fOut, "Database = %s\n", g_settings_sDatabase.c_str());
fprintf(fOut, "MaxCrashReportsSize = %u\n",
g_settings_nMaxCrashReportsSize);
SaveVectorPairStrings("ActionsAndReporters",
g_settings_vectorActionsAndReporters, fOut);
diff -x '*.po' -d -urpN abrt.4/src/Daemon/Settings.h abrt.5/src/Daemon/Settings.h
--- abrt.4/src/Daemon/Settings.h 2010-05-06 01:52:54.600178675 +0200
+++ abrt.5/src/Daemon/Settings.h 2010-05-06 02:01:26.076178548 +0200
@@ -27,6 +27,7 @@ typedef map_map_string_t map_abrt_settin
extern set_string_t g_settings_setOpenGPGPublicKeys;
extern set_string_t g_settings_setBlackListedPkgs;
+extern set_string_t g_settings_setBlackListedPaths;
extern unsigned int g_settings_nMaxCrashReportsSize;
extern bool g_settings_bOpenGPGCheck;
extern bool g_settings_bProcessUnpackaged;