Nikola,
Please review the following.
The patch does not remove the if here:
bool analyzer_has_AutoReportUIDs(const char *analyzer_name, const char* uid)
{
...
if ((strcmp(analyzer_name, "Kerneloops") == 0) && (strcmp(uid,
"-1") == 0))
return true;
but it surely looks wrong. Why we are doing it?
--
vda
diff -x '*.po' -d -urpN abrt.0/inc/abrtlib.h abrt.1/inc/abrtlib.h
--- abrt.0/inc/abrtlib.h 2009-11-30 15:48:00.000000000 +0100
+++ abrt.1/inc/abrtlib.h 2009-11-30 15:58:52.044391700 +0100
@@ -193,10 +193,10 @@ char* xmalloc_sockaddr2host_noport(const
char* xmalloc_sockaddr2hostonly_noport(const struct sockaddr *sa);
char* xmalloc_sockaddr2dotted(const struct sockaddr *sa);
char* xmalloc_sockaddr2dotted_noport(const struct sockaddr *sa);
-bool getuidbyname(const char* login, uid_t *uid);
/* Random utility functions */
+uid_t getuidbyname(const char* login);
/* Returns malloc'ed block */
char *encode_base64(const void *src, int length);
diff -x '*.po' -d -urpN abrt.0/lib/Utils/parse_release.cpp
abrt.1/lib/Utils/parse_release.cpp
--- abrt.0/lib/Utils/parse_release.cpp 2009-11-30 15:48:00.000000000 +0100
+++ abrt.1/lib/Utils/parse_release.cpp 2009-11-30 16:17:39.900963796 +0100
@@ -11,7 +11,7 @@ void parse_release(const char *pRelease,
{
pProduct = "Fedora";
pVersion = "rawhide";
- VERB3 log("%s:Version is '%s' and product is
'%s'",__func__, pVersion.c_str(), pProduct.c_str());
+ VERB3 log("%s: version:'%s' product:'%s'", __func__,
pVersion.c_str(), pProduct.c_str());
return;
}
if (strstr(pRelease, "Fedora"))
@@ -36,5 +36,5 @@ void parse_release(const char *pRelease,
}
space++;
}
- VERB3 log("%s:Version is '%s' and product is
'%s'",__func__, pVersion.c_str(), pProduct.c_str());
+ VERB3 log("%s: version:'%s' product:'%s'", __func__,
pVersion.c_str(), pProduct.c_str());
}
diff -x '*.po' -d -urpN abrt.0/lib/Utils/xfuncs.cpp abrt.1/lib/Utils/xfuncs.cpp
--- abrt.0/lib/Utils/xfuncs.cpp 2009-11-30 15:48:00.000000000 +0100
+++ abrt.1/lib/Utils/xfuncs.cpp 2009-11-30 15:59:57.676391802 +0100
@@ -369,13 +369,11 @@ bool string_to_bool(const char *s)
return false;
}
-bool getuidbyname(const char* login, uid_t *uid)
+uid_t getuidbyname(const char* login)
{
struct passwd* pwd = getpwnam(login);
if (pwd == NULL)
- return false;
+ return -1;
- *uid = pwd->pw_uid;
- return true;
+ return pwd->pw_uid;
}
-
diff -x '*.po' -d -urpN abrt.0/src/Daemon/Daemon.cpp abrt.1/src/Daemon/Daemon.cpp
--- abrt.0/src/Daemon/Daemon.cpp 2009-11-30 15:48:00.000000000 +0100
+++ abrt.1/src/Daemon/Daemon.cpp 2009-11-30 16:16:01.949713667 +0100
@@ -487,41 +487,44 @@ static gboolean handle_inotify_cb(GIOCha
case MW_OK:
log("New crash, saving");
RunActionsAndReporters(crashinfo[CD_MWDDD][CD_CONTENT].c_str());
- /* Fall through to "send dbus signal" */
+ /* Fall through */
case MW_REPORTED:
case MW_OCCURED:
- if (res != MW_OK)
- log("Already saved crash, just sending dbus signal");
- /* Send dbus signal */
{
- // I don't see any usable usecase for other plugin to be able
automatic report.
- if
(analyzer_has_AutoReportUIDs(crashinfo[CD_MWANALYZER][CD_CONTENT].c_str(),
crashinfo[CD_UID][CD_CONTENT].c_str()))
+ if (res != MW_OK)
+ log("Already saved crash, just sending dbus
signal");
+
+ const char *analyzer =
crashinfo[CD_MWANALYZER][CD_CONTENT].c_str();
+ const char *uid_str = crashinfo[CD_UID][CD_CONTENT].c_str();
+
+ /* Autoreport it if configured to do so */
+ if (analyzer_has_AutoReportUIDs(analyzer, uid_str))
{
+ VERB3 log("Create autoreport for user with uid %s",
uid_str);
map_crash_report_t crash_report;
- VERB3 log("Create autoreport for user with uid
%s",crashinfo[CD_UID][CD_CONTENT].c_str());
- mw_result_t crash_result =
CreateCrashReport(crashinfo[CD_UUID][CD_CONTENT].c_str(),
crashinfo[CD_UID][CD_CONTENT].c_str(), 0, crash_report);
+ mw_result_t crash_result =
CreateCrashReport(crashinfo[CD_UUID][CD_CONTENT].c_str(), uid_str, 0, crash_report);
if (crash_result == MW_OK)
{
- map_analyzer_actions_and_reporters_t::const_iterator it =
g_settings_mapAnalyzerActionsAndReporters.find("Kerneloops");
+ map_analyzer_actions_and_reporters_t::const_iterator it =
g_settings_mapAnalyzerActionsAndReporters.find(analyzer);
map_analyzer_actions_and_reporters_t::const_iterator end
= g_settings_mapAnalyzerActionsAndReporters.end();
if (it != end)
{
vector_pair_string_string_t keys = it->second;
-
- uint32_t size = keys.size();
- for (uint32_t ii = 0; ii < size; ii++)
+ unsigned size = keys.size();
+ for (unsigned ii = 0; ii < size; ii++)
{
autoreport(keys[ii], crash_report);
}
}
}
}
- const char *uid_str =
analyzer_has_InformAllUsers(crashinfo[CD_MWANALYZER][CD_CONTENT].c_str())
- ? NULL
- : crashinfo[CD_UID][CD_CONTENT].c_str();
+
+ /* Send dbus signal */
+ if (analyzer_has_InformAllUsers(analyzer))
+ uid_str = NULL;
g_pCommLayer->Crash(crashinfo[CD_PACKAGE][CD_CONTENT].c_str(),
uid_str);
+ break;
}
- break;
case MW_BLACKLISTED:
case MW_CORRUPTED:
case MW_PACKAGE_ERROR:
diff -x '*.po' -d -urpN abrt.0/src/Daemon/MiddleWare.cpp
abrt.1/src/Daemon/MiddleWare.cpp
--- abrt.0/src/Daemon/MiddleWare.cpp 2009-11-30 15:48:00.000000000 +0100
+++ abrt.1/src/Daemon/MiddleWare.cpp 2009-11-30 16:19:01.455715059 +0100
@@ -656,7 +656,6 @@ bool analyzer_has_InformAllUsers(const c
bool analyzer_has_AutoReportUIDs(const char *analyzer_name, const char* uid)
{
-
CAnalyzer* analyzer = g_pPluginManager->GetAnalyzer(analyzer_name);
if (!analyzer)
{
@@ -675,16 +674,15 @@ bool analyzer_has_AutoReportUIDs(const c
vector_string_t logins;
parse_args(it->second.c_str(), logins);
- uint32_t size = logins.size();
+ unsigned size = logins.size();
if (size == 0)
return false;
- uid_t id;
- for (uint32_t ii = 0; ii < size; ii++)
+ for (unsigned ii = 0; ii < size; ii++)
{
- if (!getuidbyname(logins[ii].c_str(), &id))
+ uid_t id = getuidbyname(logins[ii].c_str())
+ if (id == (uid_t)-1)
continue;
-
if (strcmp(uid, to_string(id).c_str()) == 0)
return true;
}
diff -x '*.po' -d -urpN abrt.0/src/Daemon/PluginManager.cpp
abrt.1/src/Daemon/PluginManager.cpp
--- abrt.0/src/Daemon/PluginManager.cpp 2009-11-30 15:48:00.000000000 +0100
+++ abrt.1/src/Daemon/PluginManager.cpp 2009-11-30 15:58:12.812407269 +0100
@@ -205,11 +205,10 @@ void CPluginManager::RegisterPlugin(cons
CPlugin* plugin = abrt_plugin->second->PluginNew();
map_plugin_settings_t pluginSettings;
- if ((strcmp(pName, "Kerneloops") == 0)
- || (strcmp(pName, "KerneloopsReporter") == 0)
- || (strcmp(pName, "KerneloopsScanner") == 0)
- )
- {
+ if (strcmp(pName, "Kerneloops") == 0
+ || strcmp(pName, "KerneloopsReporter") == 0
+ || strcmp(pName, "KerneloopsScanner") == 0
+ ) {
LoadPluginSettings(PLUGINS_CONF_DIR"/Kerneloops."PLUGINS_CONF_EXTENSION,
pluginSettings);
VERB3 log("Load kerneloops.conf settings");
}