diff --git a/abrt-1.0.9-better-bz-summary.patch b/abrt-1.0.9-better-bz-summary.patch new file mode 100644 index 0000000..6d3f0c3 --- /dev/null +++ b/abrt-1.0.9-better-bz-summary.patch @@ -0,0 +1,28 @@ +commit fcde1a65a0a283ed785cafa8a44ae219e1a79912 +Author: Nikola Pajkovsky +Date: Wed Apr 7 17:47:32 2010 +0200 + + add function name into summary(if it's found) + + Signed-off-by: Nikola Pajkovsky + +diff --git a/lib/Plugins/Bugzilla.cpp b/lib/Plugins/Bugzilla.cpp +index e59e9a7..bffccc1 100644 +--- a/lib/Plugins/Bugzilla.cpp ++++ b/lib/Plugins/Bugzilla.cpp +@@ -352,8 +352,15 @@ xmlrpc_int32 ctx::new_bug(const map_crash_data_t& pCrashData) + const std::string& arch = get_crash_data_item_content(pCrashData, FILENAME_ARCHITECTURE); + const std::string& duphash = get_crash_data_item_content(pCrashData, CD_DUPHASH); + const char *reason = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_REASON); ++ const char *function = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_CRASH_FUNCTION); + + std::string summary = "[abrt] crash in " + package; ++ if (function != NULL && strlen(function) < 30) ++ { ++ summary += ": "; ++ summary += function; ++ } ++ + if (reason != NULL) + { + summary += ": "; diff --git a/abrt-1.0.9-ignore_user_scripts.patch b/abrt-1.0.9-ignore_user_scripts.patch new file mode 100644 index 0000000..fe3783a --- /dev/null +++ b/abrt-1.0.9-ignore_user_scripts.patch @@ -0,0 +1,126 @@ +commit a6daecbb32cf5fb0f71bdc14dddd35e7422dd4bb +Author: Karel Klic +Date: Tue Apr 13 14:57:20 2010 +0200 + + do not catch perl/python crashes when the script is not of known package origin + +diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp +index a0ead47..5c9ecb7 100644 +--- a/src/Daemon/MiddleWare.cpp ++++ b/src/Daemon/MiddleWare.cpp +@@ -594,43 +594,51 @@ void LoadOpenGPGPublicKey(const char* key) + } + + /** +- * Get a package name from executable name and save +- * package description to particular debugdump directory of a crash. +- * @param pExecutable A name of crashed application. +- * @param pDebugDumpDir A debugdump dir containing all necessary data. +- * @return It return results of operation. See mw_result_t. ++ * Returns the first full path argument in the command line or NULL. ++ * Skips options are in form "-XXX". ++ * Caller must delete the returned string using free(). + */ + static char *get_argv1_if_full_path(const char* cmdline) + { +- char *argv1 = (char*) strchr(cmdline, ' '); ++ const char *argv1 = strpbrk(cmdline, " \t"); + while (argv1 != NULL) + { + /* we found space in cmdline, so it might contain + * path to some script like: + * /usr/bin/python [-XXX] /usr/bin/system-control-network + */ +- argv1++; +- if (*argv1 == '-') ++ argv1++; /* skip the space */ ++ if (*argv1 == '-') /* skip arguments */ + { + /* looks like -XXX in "perl -XXX /usr/bin/script.pl", skip */ +- argv1 = strchr(argv1, ' '); ++ argv1 = strpbrk(argv1, " \t"); + continue; + } +- /* if the string following the space doesn't start +- * with '/' it's probably not a full path to script +- * and we can't use it to determine the package name +- */ +- if (*argv1 != '/') ++ else if (*argv1 == ' ' || *argv1 == '\t') /* skip multiple spaces */ ++ continue; ++ else if (*argv1 != '/') + { +- return NULL; ++ /* if the string following the space doesn't start ++ * with '/' it's probably not a full path to script ++ * and we can't use it to determine the package name ++ */ ++ break; + } ++ ++ /* cut the rest of cmdline arguments */ + int len = strchrnul(argv1, ' ') - argv1; +- /* cut the cmdline arguments */ +- argv1 = xstrndup(argv1, len); +- break; ++ return xstrndup(argv1, len); + } +- return argv1; ++ return NULL; + } ++ ++/** ++ * Get a package name from executable name and save ++ * package description to particular debugdump directory of a crash. ++ * @param pExecutable A name of crashed application. ++ * @param pDebugDumpDir A debugdump dir containing all necessary data. ++ * @return It return results of operation. See mw_result_t. ++ */ + static mw_result_t SavePackageDescriptionToDebugDump( + const char *pExecutable, + const char *cmdline, +@@ -692,6 +700,7 @@ static mw_result_t SavePackageDescriptionToDebugDump( + * This will work only if the cmdline contains the whole path. + * Example: python /usr/bin/system-control-network + */ ++ bool knownOrigin = false; + char *script_name = get_argv1_if_full_path(cmdline); + if (script_name) + { +@@ -707,9 +716,16 @@ static mw_result_t SavePackageDescriptionToDebugDump( + rpm_pkg = script_pkg; + scriptName = script_name; + pExecutable = scriptName.c_str(); ++ knownOrigin = true; + } + free(script_name); + } ++ ++ if (!knownOrigin && !g_settings_bProcessUnpackaged) ++ { ++ log("Interpreter crashed, but no packaged script detected: '%s'", cmdline); ++ return MW_PACKAGE_ERROR; ++ } + } + + package = rpm_pkg; +@@ -717,7 +733,7 @@ static mw_result_t SavePackageDescriptionToDebugDump( + VERB2 log("Package:'%s' short:'%s'", rpm_pkg, packageName.c_str()); + free(rpm_pkg); + +- if (g_setBlackList.find(packageName) != g_setBlackList.end()) ++ if (g_setBlackList.find(packageName) != g_setBlackList.end()) + { + log("Blacklisted package '%s'", packageName.c_str()); + return MW_BLACKLISTED; +@@ -838,8 +854,8 @@ static void RunAnalyzerActions(const char *pAnalyzer, const char *pDebugDumpDir, + if (!action) + { + /* GetAction() already complained if no such plugin. +- * If plugin exists but isn't an Action, it's not an error. +- */ ++ * If plugin exists but isn't an Action, it's not an error. ++ */ + continue; + } + try diff --git a/abrt-localizedyum.patch b/abrt-localizedyum.patch new file mode 100644 index 0000000..4567a55 --- /dev/null +++ b/abrt-localizedyum.patch @@ -0,0 +1,19 @@ +commit 306a4686200c33e34c0650b6ad09b1a5a3f32a77 +Author: Jiri Moskovcak +Date: Tue Apr 13 16:51:30 2010 +0200 + + fixed problem with localized yum output rhbz#581804 + +diff --git a/src/Daemon/abrt-debuginfo-install b/src/Daemon/abrt-debuginfo-install +index 521d42a..84d2446 100755 +--- a/src/Daemon/abrt-debuginfo-install ++++ b/src/Daemon/abrt-debuginfo-install +@@ -303,7 +303,7 @@ $debug && echo "build_ids:$build_ids" + # When we look for debuginfo we need only -debuginfo* repos, we can disable the rest + # and thus make it faster. + yum_repo_opts="'--disablerepo=*'" +-for enabled_repo in `yum repolist all | grep 'enabled:' | cut -f1 -d' ' | grep -v -- '-debuginfo'`; do ++for enabled_repo in `LANG=C yum repolist all | grep 'enabled:' | cut -f1 -d' ' | grep -v -- '-debuginfo'`; do + yum_repo_opts="$yum_repo_opts '--enablerepo=${enabled_repo}-debuginfo*'" + done +