summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/daemon/CrashWatcher.cpp6
-rw-r--r--src/daemon/MiddleWare.cpp15
-rw-r--r--src/daemon/Settings.cpp12
-rw-r--r--src/daemon/Settings.h2
4 files changed, 20 insertions, 15 deletions
diff --git a/src/daemon/CrashWatcher.cpp b/src/daemon/CrashWatcher.cpp
index 416d5f41..95899265 100644
--- a/src/daemon/CrashWatcher.cpp
+++ b/src/daemon/CrashWatcher.cpp
@@ -94,7 +94,7 @@ void CreateReport(const char* crash_id, long caller_uid, int force, map_crash_da
{
/* FIXME: starting from here, any shared data must be protected with a mutex.
* For example, CreateCrashReport does:
- * g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ * g_pPluginManager->GetDatabase(g_settings_sDatabase);
* which is unsafe wrt concurrent updates to g_pPluginManager state.
*/
mw_result_t res = CreateCrashReport(crash_id, caller_uid, force, crashReport);
@@ -186,7 +186,7 @@ int DeleteDebugDump(const char *crash_id, long caller_uid)
{
try
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
database->Connect();
struct db_row *row = database->GetRow(crash_id);
if (!row)
@@ -227,7 +227,7 @@ void DeleteDebugDump_by_dir(const char *dump_dir)
{
try
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
database->Connect();
database->DeleteRows_by_dir(dump_dir);
database->DisConnect();
diff --git a/src/daemon/MiddleWare.cpp b/src/daemon/MiddleWare.cpp
index 4ff83570..ae25180f 100644
--- a/src/daemon/MiddleWare.cpp
+++ b/src/daemon/MiddleWare.cpp
@@ -274,7 +274,7 @@ mw_result_t CreateCrashReport(const char *crash_id,
{
VERB2 log("CreateCrashReport('%s',%ld,result)", crash_id, caller_uid);
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
database->Connect();
struct db_row *row = database->GetRow(crash_id);
@@ -573,7 +573,7 @@ report_status_t Report(const map_crash_data_t& client_report,
if (at_least_one_reporter_succeeded)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
database->Connect();
report_status_t::iterator ret_it = ret.begin();
while (ret_it != ret.end())
@@ -609,10 +609,7 @@ report_status_t Report(const map_crash_data_t& client_report,
*/
static bool is_debug_dump_saved(long uid, const char *debug_dump_dir)
{
- if (g_settings_sDatabase.empty())
- error_msg_and_die(_("Database plugin not specified. Please check abrtd settings."));
-
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
database->Connect();
GList *table = database->GetUIDData(uid);
database->DisConnect();
@@ -792,7 +789,7 @@ static mw_result_t SaveDebugDumpToDatabase(const char *crash_id,
const char *pDebugDumpDir,
map_crash_data_t& pCrashData)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
database->Connect();
/* note: if [UUID,UID] record exists, pDebugDumpDir is not updated in the record */
database->Insert_or_Update(crash_id, inform_all_users, pDebugDumpDir, pTime);
@@ -888,7 +885,7 @@ error:
mw_result_t FillCrashInfo(const char *crash_id,
map_crash_data_t& pCrashData)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
database->Connect();
struct db_row *row = database->GetRow(crash_id);
database->DisConnect();
@@ -922,7 +919,7 @@ mw_result_t FillCrashInfo(const char *crash_id,
void GetUUIDsOfCrash(long caller_uid, vector_string_t &result)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
database->Connect();
GList *rows = database->GetUIDData(caller_uid);
database->DisConnect();
diff --git a/src/daemon/Settings.cpp b/src/daemon/Settings.cpp
index 81b66613..e0d13ef8 100644
--- a/src/daemon/Settings.cpp
+++ b/src/daemon/Settings.cpp
@@ -53,9 +53,9 @@ bool g_settings_bOpenGPGCheck = false;
/* one line: "OpenGPGPublicKeys = value1,value2" */
GList *g_settings_setOpenGPGPublicKeys = NULL;
GList *g_settings_setBlackListedPkgs = NULL;
-std::string g_settings_sDatabase;
GList *g_settings_setBlackListedPaths = NULL;
std::string g_settings_sWatchCrashdumpArchiveDir;
+char *g_settings_sDatabase = NULL;
unsigned int g_settings_nMaxCrashReportsSize = 1000;
bool g_settings_bProcessUnpackaged = false;
@@ -212,8 +212,14 @@ static int ParseCommon()
it = s_mapSectionCommon.find("Database");
if (it != end)
{
- g_settings_sDatabase = it->second;
+ if (it->second.empty())
+ error_msg_and_die(_("Database plugin not specified. Please check abrtd settings."));
+
+ g_settings_sDatabase = xstrdup(it->second.c_str());
}
+ else
+ error_msg_and_die(_("Database plugin not specified. Please check abrtd settings."));
+
it = s_mapSectionCommon.find("WatchCrashdumpArchiveDir");
if (it != end)
{
@@ -575,4 +581,6 @@ void settings_free()
free((char*)li->data);
g_list_free(g_settings_setBlackListedPaths);
+
+ free(g_settings_sDatabase);
}
diff --git a/src/daemon/Settings.h b/src/daemon/Settings.h
index 621c11af..e7151d78 100644
--- a/src/daemon/Settings.h
+++ b/src/daemon/Settings.h
@@ -32,8 +32,8 @@ extern GList *g_settings_setBlackListedPaths;
extern unsigned int g_settings_nMaxCrashReportsSize;
extern bool g_settings_bOpenGPGCheck;
extern bool g_settings_bProcessUnpackaged;
-extern std::string g_settings_sDatabase;
extern std::string g_settings_sWatchCrashdumpArchiveDir;
+extern char *g_settings_sDatabase;
extern map_cron_t g_settings_mapCron;
extern vector_pair_string_string_t g_settings_vectorActionsAndReporters;
extern map_analyzer_actions_and_reporters_t g_settings_mapAnalyzerActionsAndReporters;