summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Makefile.am14
-rw-r--r--src/plugins/SQLite3.conf4
-rw-r--r--src/plugins/SQLite3.cpp742
-rw-r--r--src/plugins/SQLite3.h58
-rw-r--r--src/plugins/abrt-SQLite3.736
-rw-r--r--src/plugins/abrt-action-analyze-c.c4
-rw-r--r--src/plugins/abrt-action-analyze-oops.c2
-rw-r--r--src/plugins/abrt-action-analyze-python.c2
-rw-r--r--src/plugins/abrt-action-generate-backtrace.c2
-rwxr-xr-xsrc/plugins/abrt-action-install-debuginfo7
-rw-r--r--src/plugins/abrt-action-mailx.cpp2
-rw-r--r--src/plugins/abrt-action-rhtsupport.cpp7
-rw-r--r--src/plugins/abrt-action-upload.cpp7
-rw-r--r--src/plugins/abrt-plugins.73
14 files changed, 20 insertions, 870 deletions
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index 8a8a6f30..c60c06fe 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -7,8 +7,7 @@ libexec_SCRIPTS = \
pluginslib_LTLIBRARIES = \
libCCpp.la \
- libKerneloopsScanner.la \
- libSQLite3.la
+ libKerneloopsScanner.la
dist_pluginslib_DATA = \
Logger.glade \
@@ -27,8 +26,7 @@ dist_pluginsconf_DATA = \
Kerneloops.conf \
Bugzilla.conf \
RHTSupport.conf \
- Upload.conf \
- SQLite3.conf
+ Upload.conf
man_MANS = \
abrt-Bugzilla.7 \
@@ -37,7 +35,6 @@ man_MANS = \
abrt-Logger.7 \
abrt-Mailx.7 \
abrt-Upload.7 \
- abrt-SQLite3.7 \
abrt-plugins.7
EXTRA_DIST = $(man_MANS) abrt-action-install-debuginfo
@@ -47,7 +44,6 @@ $(DESTDIR)/$(DEBUG_INFO_DIR):
install-data-hook: $(DESTDIR)/$(DEBUG_INFO_DIR)
sed 's: = /var/: = $(localstatedir)/:g' -i \
- $(DESTDIR)$(sysconfdir)/abrt/plugins/SQLite3.conf \
$(DESTDIR)$(sysconfdir)/abrt/plugins/Logger.conf
# CCpp
@@ -66,12 +62,6 @@ libKerneloopsScanner_la_SOURCES = KerneloopsScanner.cpp KerneloopsScanner.h Kern
libKerneloopsScanner_la_LDFLAGS = -avoid-version $(GLIB_LIBS)
libKerneloopsScanner_la_CPPFLAGS = -I$(INC_PATH) -I$(UTILS_PATH) -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" $(GLIB_CFLAGS)
-# SQLite3
-libSQLite3_la_SOURCES = SQLite3.cpp SQLite3.h
-libSQLite3_la_LDFLAGS = -avoid-version
-libSQLite3_la_LIBADD = $(SQLITE3_LIBS) $(GLIB_LIBS)
-libSQLite3_la_CPPFLAGS = -I$(INC_PATH) -I$(UTILS_PATH) $(SQLITE3_CFLAGS) -DLOCALSTATEDIR='"$(localstatedir)"' $(GLIB_CFLAGS)
-
libexec_PROGRAMS = \
abrt-action-analyze-c \
abrt-action-analyze-python \
diff --git a/src/plugins/SQLite3.conf b/src/plugins/SQLite3.conf
deleted file mode 100644
index a7617a90..00000000
--- a/src/plugins/SQLite3.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-# Configuration file for database plugin SQLite3
-
-# DB path
-DBPath = /var/spool/abrt/abrt-db
diff --git a/src/plugins/SQLite3.cpp b/src/plugins/SQLite3.cpp
deleted file mode 100644
index 2ed3f9fd..00000000
--- a/src/plugins/SQLite3.cpp
+++ /dev/null
@@ -1,742 +0,0 @@
-/*
- SQLite3.cpp
-
- Copyright (C) 2009 Zdenek Prikryl (zprikryl@redhat.com)
- Copyright (C) 2009 RedHat inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-#include <sqlite3.h>
-#include "abrtlib.h"
-#include "SQLite3.h"
-
-using namespace std;
-
-#define ABRT_TABLE_VERSION 4
-#define ABRT_TABLE_VERSION_STR "4"
-#define ABRT_TABLE "abrt_v"ABRT_TABLE_VERSION_STR
-#define ABRT_REPRESULT_TABLE "abrt_v"ABRT_TABLE_VERSION_STR"_reportresult"
-#define SQLITE3_MASTER_TABLE "sqlite_master"
-
-#define COL_UID "UID"
-#define COL_UUID "UUID"
-#define COL_INFORMALL "InformAll"
-#define COL_DEBUG_DUMP_PATH "DebugDumpPath"
-#define COL_COUNT "Count"
-#define COL_REPORTED "Reported"
-#define COL_TIME "Time"
-#define COL_MESSAGE "Message"
-
-#define COL_REPORTER "Reporter"
-
-#define NUM_COL 8
-
-/* Is this string safe wrt SQL injection?
- * PHP's mysql_real_escape_string() treats \, ', ", \x00, \n, \r, and \x1a as special.
- * We are a bit more paranoid and disallow any control chars.
- */
-static bool is_string_safe(const char *str)
-{
-// Apparently SQLite allows unescaped newlines. More surprisingly,
-// it does not unescape escaped ones - I see lines ending with \ when I do it.
-// I wonder whether this is a bug in SQLite, and whether using unescaped
-// newlines is a danger with other SQL servers.
-// For now, I disabled newline escaping, and also allowed double quote.
- const char *p = str;
- while (*p)
- {
- unsigned char c = *p;
-// if (c == '\\' && p[1] != '\0')
-// {
-// p += 2;
-// continue;
-// }
- if ((c < ' ' && c != '\n')
- || strchr("\\\'", c) //was: "\\\"\'"
- ) {
- error_msg("Probable SQL injection: '%s'", str);
- return false;
- }
- p++;
- }
- return true;
-}
-
-#ifdef UNUSED_FOR_NOW
-/* Escape \n */
-static string sql_escape(const char *str)
-{
- const char *s = str;
- unsigned len = 0;
- do
- {
- if (*s == '\n')
- len++;
- len++;
- } while (*s++);
-
- char buf[len];
- s = str;
- char *d = buf;
- do
- {
- if (*s == '\n')
- *d++ = '\\';
- *d++ = *s;
- } while (*s++);
-
- return buf;
-}
-#endif
-
-/* Note:
- * expects "SELECT * FROM ...", not "SELECT <only some fields> FROM ..."
- */
-static GList *vget_table(sqlite3 *db, const char *fmt, va_list p)
-{
- char *sql = xvasprintf(fmt, p);
-
- char **table;
- int ncol, nrow;
- char *err = NULL;
- int ret = sqlite3_get_table(db, sql, &table, &nrow, &ncol, &err);
- if (ret != SQLITE_OK)
- {
- error_msg("Error in SQL:'%s' error: %s", sql, err);
- free(sql);
- sqlite3_free(err);
- return (GList*)ERR_PTR;
- }
- VERB2 log("%s: %d rows returned by SQL:%s", __func__, nrow, sql);
- free(sql);
-
- if (nrow > 0 && ncol < NUM_COL)
- error_msg_and_die("Unexpected number of columns: %d", ncol);
-
- GList *rows = NULL;
- int ii;
- for (ii = 0; ii < nrow; ii++)
- {
- int jj;
- struct db_row *row = (struct db_row*)xzalloc(sizeof(struct db_row));
- for (jj = 0; jj < ncol; jj++)
- {
- char *val = table[jj + (ncol*ii) + ncol];
- switch (jj)
- {
- case 0: row->db_uuid = xstrdup(val); break;
- case 1: row->db_uid = xstrdup(val); break;
- case 2: row->db_inform_all = xstrdup(val); break;
- case 3: row->db_dump_dir = xstrdup(val); break;
- case 4: row->db_count = xstrdup(val); break;
- case 5: row->db_reported = xstrdup(val); break;
- case 6: row->db_time = xstrdup(val); break;
- case 7: row->db_message = xstrdup(val); break;
- }
- }
-
- VERB3 log("%s: row->db_uuid = '%s'", __func__, row->db_uuid);
- VERB3 log("%s: row->db_uid = '%s'", __func__, row->db_uid);
- VERB3 log("%s: row->db_inform_all = '%s'", __func__, row->db_inform_all);
- VERB3 log("%s: row->db_dump_dir = '%s'", __func__, row->db_dump_dir);
- VERB3 log("%s: row->db_count = '%s'", __func__, row->db_count);
- VERB3 log("%s: row->db_reported = '%s'", __func__, row->db_reported);
- VERB3 log("%s: row->db_time = '%s'", __func__, row->db_time);
- VERB3 log("%s: row->db_message = '%s'", __func__, row->db_message);
- rows = g_list_append(rows, row);
-
- }
- sqlite3_free_table(table);
-
- return rows;
-}
-
-static GList *get_table_or_die(sqlite3 *db, const char *fmt, ...)
-{
- va_list p;
- va_start(p, fmt);
- GList *table = vget_table(db, fmt, p);
- va_end(p);
-
- if (table == (GList*)ERR_PTR)
- xfunc_die();
-
- return table;
-}
-
-static int vexecute_sql(sqlite3 *db, const char *fmt, va_list p)
-{
- char *sql = xvasprintf(fmt, p);
-
- char *err = NULL;
- int ret = sqlite3_exec(db, sql, /*callback:*/ NULL, /*callback param:*/ NULL, &err);
- if (ret != SQLITE_OK)
- {
- error_msg("Error in SQL:'%s' error: %s", sql, err);
- free(sql);
- sqlite3_free(err);
- return -1;
- }
- int affected = sqlite3_changes(db);
- VERB2 log("%d rows affected by SQL:%s", affected, sql);
- free(sql);
-
- return affected;
-}
-
-static int execute_sql_or_die(sqlite3 *db, const char *fmt, ...)
-{
- va_list p;
- va_start(p, fmt);
- int ret = vexecute_sql(db, fmt, p);
- va_end(p);
-
- if (ret < 0)
- xfunc_die();
-
- return ret;
-}
-
-static bool exists_uuid_uid(sqlite3 *db, const char *UUID, const char *UID)
-{
- GList *table = get_table_or_die(db, "SELECT * FROM "ABRT_TABLE
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s';",
- UUID, UID
- );
-
- if (!table)
- return false;
-
- db_list_free(table);
-
- return true;
-}
-
-static void update_from_old_ver(sqlite3 *db, int old_version)
-{
- static const char *const update_sql_commands[] = {
- // v0 -> v1
- NULL,
- // v1 -> v2
- "BEGIN TRANSACTION;"
- "CREATE TABLE abrt_v2 ("
- COL_UUID" VARCHAR NOT NULL,"
- COL_UID" VARCHAR NOT NULL,"
- COL_DEBUG_DUMP_PATH" VARCHAR NOT NULL,"
- COL_COUNT" INT NOT NULL DEFAULT 1,"
- COL_REPORTED" INT NOT NULL DEFAULT 0,"
- COL_TIME" VARCHAR NOT NULL DEFAULT 0,"
- COL_MESSAGE" VARCHAR NOT NULL DEFAULT '',"
- "PRIMARY KEY ("COL_UUID","COL_UID"));"
- "INSERT INTO abrt_v2 "
- "SELECT "COL_UUID","
- COL_UID","
- COL_DEBUG_DUMP_PATH","
- COL_COUNT","
- COL_REPORTED","
- COL_TIME","
- COL_MESSAGE
- " FROM abrt;"
- "DROP TABLE abrt;"
- "COMMIT;",
- // v2 -> v3
- "BEGIN TRANSACTION;"
- "CREATE TABLE abrt_v3 ("
- COL_UUID" VARCHAR NOT NULL,"
- COL_UID" VARCHAR NOT NULL,"
- COL_DEBUG_DUMP_PATH" VARCHAR NOT NULL,"
- COL_COUNT" INT NOT NULL DEFAULT 1,"
- COL_REPORTED" INT NOT NULL DEFAULT 0,"
- COL_TIME" VARCHAR NOT NULL DEFAULT 0,"
- COL_MESSAGE" VARCHAR NOT NULL DEFAULT '',"
- "PRIMARY KEY ("COL_UUID","COL_UID"));"
- "INSERT INTO abrt_v3 "
- "SELECT "COL_UUID","
- COL_UID","
- COL_DEBUG_DUMP_PATH","
- COL_COUNT","
- COL_REPORTED","
- COL_TIME","
- COL_MESSAGE
- " FROM abrt_v2;"
- "DROP TABLE abrt_v2;"
- "CREATE TABLE abrt_v3_reportresult ("
- COL_UUID" VARCHAR NOT NULL,"
- COL_UID" VARCHAR NOT NULL,"
- COL_REPORTER" VARCHAR NOT NULL,"
- COL_MESSAGE" VARCHAR NOT NULL DEFAULT '',"
- "PRIMARY KEY ("COL_UUID","COL_UID","COL_REPORTER"));"
- "COMMIT;",
- // v3-> v4
- "BEGIN TRANSACTION;"
- "CREATE TABLE abrt_v4("
- COL_UUID" VARCHAR NOT NULL,"
- COL_UID" VARCHAR NOT NULL,"
- COL_INFORMALL" INT NOT NULL DEFAULT 0,"
- COL_DEBUG_DUMP_PATH" VARCHAR NOT NULL,"
- COL_COUNT" INT NOT NULL DEFAULT 1,"
- COL_REPORTED" INT NOT NULL DEFAULT 0,"
- COL_TIME" VARCHAR NOT NULL DEFAULT 0,"
- COL_MESSAGE" VARCHAR NOT NULL DEFAULT '',"
- "PRIMARY KEY ("COL_UUID","COL_UID"));"
- "INSERT INTO abrt_v4 "
- "SELECT "COL_UUID","
- COL_UID","
- "0," /* COL_INFORMALL */
- COL_DEBUG_DUMP_PATH","
- COL_COUNT","
- COL_REPORTED","
- COL_TIME","
- COL_MESSAGE
- " FROM abrt_v3;"
- "DROP TABLE abrt_v3;"
- "UPDATE abrt_v4"
- " SET "COL_UID"='0', "COL_INFORMALL"=1"
- " WHERE "COL_UID"='-1';"
- "CREATE TABLE abrt_v4_reportresult ("
- COL_UUID" VARCHAR NOT NULL,"
- COL_UID" VARCHAR NOT NULL,"
- COL_REPORTER" VARCHAR NOT NULL,"
- COL_MESSAGE" VARCHAR NOT NULL DEFAULT '',"
- "PRIMARY KEY ("COL_UUID","COL_UID","COL_REPORTER"));"
- "INSERT INTO abrt_v4_reportresult "
- "SELECT * FROM abrt_v3_reportresult;"
- "DROP TABLE abrt_v3_reportresult;"
- "COMMIT;",
- };
-
- while (old_version < ABRT_TABLE_VERSION)
- {
- execute_sql_or_die(db, update_sql_commands[old_version]);
- old_version++;
- }
-}
-
-static bool check_table(sqlite3 *db)
-{
- const char *command = "SELECT NAME FROM "SQLITE3_MASTER_TABLE" "
- "WHERE TYPE='table' AND NAME like 'abrt_v%';";
- char **table;
- int ncol, nrow;
- char *err;
- int ret = sqlite3_get_table(db, command, &table, &nrow, &ncol, &err);
- if (ret != SQLITE_OK)
- {
- /* Should never happen */
- error_msg_and_die("SQLite3 database is corrupted");
- }
- if (!nrow)
- {
- sqlite3_free_table(table);
- return false;
- }
-
- // table format:
- // table[0]:"NAME" // table[1]:"SQL" <== field names from SELECT
- // table[2]:"abrt_vNN" // table[3]:"sql"
- char *tableName = table[0 + ncol];
- char *underscore = strchr(tableName, '_');
- if (underscore)
- {
- // It can be "abrt_vNN_something", thus using atoi(), not xatoi()
- int tableVersion = atoi(underscore + 2);
- sqlite3_free_table(table);
- if (tableVersion < ABRT_TABLE_VERSION)
- {
- update_from_old_ver(db, tableVersion);
- }
- return true;
- }
- sqlite3_free_table(table);
- update_from_old_ver(db, 1);
- return true;
-}
-
-
-CSQLite3::CSQLite3() :
- m_sDBPath(LOCALSTATEDIR "/spool/abrt/abrt-db"),
- m_pDB(NULL)
-{}
-
-CSQLite3::~CSQLite3()
-{
- /* Paranoia. In C++, destructor will abort() if it was called while unwinding
- * the stack and it throws an exception.
- */
- try
- {
- DisConnect();
- m_sDBPath.clear();
- }
- catch (...)
- {
- error_msg_and_die("Internal error");
- }
-}
-
-void CSQLite3::DisConnect()
-{
- if (m_pDB)
- {
- sqlite3_close(m_pDB);
- m_pDB = NULL;
- }
-}
-
-void CSQLite3::Connect()
-{
- int ret = sqlite3_open_v2(m_sDBPath.c_str(),
- &m_pDB,
- SQLITE_OPEN_READWRITE,
- NULL
- );
-
- if (ret != SQLITE_OK)
- {
- if (ret != SQLITE_CANTOPEN)
- {
- error_msg_and_die("Can't open database '%s': %s", m_sDBPath.c_str(), sqlite3_errmsg(m_pDB));
- }
-
- ret = sqlite3_open_v2(m_sDBPath.c_str(),
- &m_pDB,
- SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
- NULL
- );
- if (ret != SQLITE_OK)
- {
- error_msg_and_die("Can't create database '%s': %s", m_sDBPath.c_str(), sqlite3_errmsg(m_pDB));
- }
- }
-
- if (!check_table(m_pDB))
- {
- execute_sql_or_die(m_pDB,
- "CREATE TABLE "ABRT_TABLE" ("
- COL_UUID" VARCHAR NOT NULL,"
- COL_UID" VARCHAR NOT NULL,"
- COL_INFORMALL" INT NOT NULL DEFAULT 0,"
- COL_DEBUG_DUMP_PATH" VARCHAR NOT NULL,"
- COL_COUNT" INT NOT NULL DEFAULT 1,"
- COL_REPORTED" INT NOT NULL DEFAULT 0,"
- COL_TIME" VARCHAR NOT NULL DEFAULT 0,"
- COL_MESSAGE" VARCHAR NOT NULL DEFAULT '',"
- "PRIMARY KEY ("COL_UUID","COL_UID"));"
- );
- execute_sql_or_die(m_pDB,
- "CREATE TABLE "ABRT_REPRESULT_TABLE" ("
- COL_UUID" VARCHAR NOT NULL,"
- COL_UID" VARCHAR NOT NULL,"
- COL_REPORTER" VARCHAR NOT NULL,"
- COL_MESSAGE" VARCHAR NOT NULL DEFAULT '',"
- "PRIMARY KEY ("COL_UUID","COL_UID","COL_REPORTER"));"
- );
- }
-}
-
-void CSQLite3::Insert_or_Update(const char *crash_id,
- bool inform_all_users,
- const char *pDebugDumpPath,
- const char *pTime)
-{
- const char *UUID = strchr(crash_id, ':');
- if (!UUID
- || !is_string_safe(crash_id)
- || !is_string_safe(pDebugDumpPath)
- || !is_string_safe(pTime)
- ) {
- return;
- }
-
- /* Split crash_id into UID:UUID */
- unsigned uid_len = UUID - crash_id;
- UUID++;
- char UID[uid_len + 1];
- strncpy(UID, crash_id, uid_len);
- UID[uid_len] = '\0';
-
- if (!exists_uuid_uid(m_pDB, UUID, UID))
- {
- execute_sql_or_die(m_pDB,
- "INSERT INTO "ABRT_TABLE" ("
- COL_UUID","
- COL_UID","
- COL_INFORMALL","
- COL_DEBUG_DUMP_PATH","
- COL_TIME
- ")"
- " VALUES ('%s','%s',%u,'%s','%s');",
- UUID, UID, (unsigned)inform_all_users, pDebugDumpPath, pTime
- );
- }
- else
- {
- execute_sql_or_die(m_pDB,
- "UPDATE "ABRT_TABLE
- " SET "COL_COUNT"="COL_COUNT"+1,"COL_TIME"='%s'"
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s';",
- pTime,
- UUID, UID
- );
- }
-}
-
-void CSQLite3::DeleteRow(const char *crash_id)
-{
- const char *UUID = strchr(crash_id, ':');
- if (!UUID
- || !is_string_safe(crash_id)
- ) {
- return;
- }
-
- /* Split crash_id into UID:UUID */
- unsigned uid_len = UUID - crash_id;
- UUID++;
- char UID[uid_len + 1];
- strncpy(UID, crash_id, uid_len);
- UID[uid_len] = '\0';
-
- if (exists_uuid_uid(m_pDB, UUID, UID))
- {
- execute_sql_or_die(m_pDB, "DELETE FROM "ABRT_TABLE
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s';",
- UUID, UID
- );
- execute_sql_or_die(m_pDB, "DELETE FROM "ABRT_REPRESULT_TABLE
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s';",
- UUID, UID
- );
- }
- else
- {
- error_msg("crash_id %s is not found in DB", crash_id);
- }
-}
-
-void CSQLite3::DeleteRows_by_dir(const char *dump_dir)
-{
- if (!is_string_safe(dump_dir))
- {
- return;
- }
-
- /* Get UID:UUID pair(s) to delete */
- GList *table = get_table_or_die(m_pDB, "SELECT * FROM "ABRT_TABLE
- " WHERE "COL_DEBUG_DUMP_PATH"='%s';",
- dump_dir
- );
-
- if (!table)
- {
- return;
- }
-
- struct db_row *row = NULL;
- /* Delete from both tables */
- for (GList *li = table; li != NULL; li = g_list_next(li))
- {
- row = (struct db_row*)li->data;
- execute_sql_or_die(m_pDB,
- "DELETE FROM "ABRT_REPRESULT_TABLE
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s';",
- row->db_uuid, row->db_uid
- );
- }
- execute_sql_or_die(m_pDB,
- "DELETE FROM "ABRT_TABLE
- " WHERE "COL_DEBUG_DUMP_PATH"='%s'",
- dump_dir
- );
-}
-
-void CSQLite3::SetReported(const char *crash_id, const char *pMessage)
-{
- const char *UUID = strchr(crash_id, ':');
- if (!UUID
- || !is_string_safe(crash_id)
- || !is_string_safe(pMessage)
- ) {
- return;
- }
-
- /* Split crash_id into UID:UUID */
- unsigned uid_len = UUID - crash_id;
- UUID++;
- char UID[uid_len + 1];
- strncpy(UID, crash_id, uid_len);
- UID[uid_len] = '\0';
-
- if (exists_uuid_uid(m_pDB, UUID, UID))
- {
- execute_sql_or_die(m_pDB,
- "UPDATE "ABRT_TABLE
- " SET "COL_REPORTED"=1"
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s';",
- UUID, UID
- );
- execute_sql_or_die(m_pDB,
- "UPDATE "ABRT_TABLE
- " SET "COL_MESSAGE"='%s'"
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s';",
- pMessage, UUID, UID
- );
- }
- else
- {
- error_msg("crash_id %s is not found in DB", crash_id);
- }
-}
-
-void CSQLite3::SetReportedPerReporter(const char *crash_id,
- const char *reporter,
- const char *pMessage)
-{
- const char *UUID = strchr(crash_id, ':');
- if (!UUID
- || !is_string_safe(crash_id)
- || !is_string_safe(reporter)
- || !is_string_safe(pMessage)
- ) {
- return;
- }
-
- /* Split crash_id into UID:UUID */
- unsigned uid_len = UUID - crash_id;
- UUID++;
- char UID[uid_len + 1];
- strncpy(UID, crash_id, uid_len);
- UID[uid_len] = '\0';
-
- int affected_rows = execute_sql_or_die(m_pDB,
- "UPDATE "ABRT_REPRESULT_TABLE
- " SET "COL_MESSAGE"='%s'"
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s' AND "COL_REPORTER"='%s'",
- pMessage,
- UUID, UID, reporter
- );
- if (!affected_rows)
- {
- execute_sql_or_die(m_pDB,
- "INSERT INTO "ABRT_REPRESULT_TABLE
- " ("COL_UUID","COL_UID","COL_REPORTER","COL_MESSAGE")"
- " VALUES ('%s','%s','%s','%s');",
- UUID, UID, reporter, pMessage
- );
- }
-}
-
-GList *CSQLite3::GetUIDData(long caller_uid)
-{
- GList *table = NULL;
-
- if (caller_uid == 0)
- {
- table = get_table_or_die(m_pDB, "SELECT * FROM "ABRT_TABLE";");
- }
- else
- {
- table = get_table_or_die(m_pDB, "SELECT * FROM "ABRT_TABLE
- " WHERE "COL_UID"='%ld' OR "COL_INFORMALL"=1;",
- caller_uid
- );
- }
- return table;
-}
-
-struct db_row *CSQLite3::GetRow(const char *crash_id)
-{
- const char *UUID = strchr(crash_id, ':');
- if (!UUID
- || !is_string_safe(crash_id)
- ) {
- return NULL;
- }
-
- /* Split crash_id into UID:UUID */
- unsigned uid_len = UUID - crash_id;
- UUID++;
- char UID[uid_len + 1];
- strncpy(UID, crash_id, uid_len);
- UID[uid_len] = '\0';
-
- GList *table = get_table_or_die(m_pDB, "SELECT * FROM "ABRT_TABLE
- " WHERE "COL_UUID"='%s' AND "COL_UID"='%s';",
- UUID, UID
- );
-
- if (!table)
- {
- return NULL;
- }
-
- GList *first = g_list_first(table);
- struct db_row *row = db_rowcpy_from_list(first);
-
- db_list_free(table);
-
- return row;
-}
-
-struct db_row *CSQLite3::GetRow_by_dir(const char *dir)
-{
- if (!is_string_safe(dir))
- return NULL;
-
- GList *table = get_table_or_die(m_pDB, "SELECT * FROM "ABRT_TABLE
- " WHERE "COL_DEBUG_DUMP_PATH"='%s';",
- dir
- );
-
- if (!table)
- return NULL;
-
- GList *first = g_list_first(table);
- struct db_row *row = db_rowcpy_from_list(first);
-
- db_list_free(table);
-
- return row;
-}
-
-void CSQLite3::SetSettings(const map_plugin_settings_t& pSettings)
-{
- m_pSettings = pSettings;
-
- map_plugin_settings_t::const_iterator end = pSettings.end();
- map_plugin_settings_t::const_iterator it;
- it = pSettings.find("DBPath");
- if (it != end)
- {
- m_sDBPath = it->second;
- }
-}
-
-//ok to delete?
-//const map_plugin_settings_t& CSQLite3::GetSettings()
-//{
-// m_pSettings["DBPath"] = m_sDBPath;
-//
-// return m_pSettings;
-//}
-
-PLUGIN_INFO(DATABASE,
- CSQLite3,
- "SQLite3",
- "0.0.2",
- _("Keeps SQLite3 database about all crashes"),
- "zprikryl@redhat.com,jmoskovc@redhat.com",
- "https://fedorahosted.org/abrt/wiki",
- "");
diff --git a/src/plugins/SQLite3.h b/src/plugins/SQLite3.h
deleted file mode 100644
index 5750d92e..00000000
--- a/src/plugins/SQLite3.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- SQLite3.h
-
- Copyright (C) 2009 Zdenek Prikryl (zprikryl@redhat.com)
- Copyright (C) 2009 RedHat inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-#ifndef SQLITE3_H_
-#define SQLITE3_H_
-
-#include "plugin.h"
-#include "database.h"
-
-class CSQLite3 : public CDatabase
-{
- private:
- std::string m_sDBPath;
- sqlite3* m_pDB;
-
- public:
- CSQLite3();
- ~CSQLite3();
-
- virtual void Connect();
- virtual void DisConnect();
-
- virtual void Insert_or_Update(const char *crash_id,
- bool inform_all_users,
- const char *pDebugDumpPath,
- const char *pTime);
- virtual void DeleteRow(const char *crash_id);
- virtual void DeleteRows_by_dir(const char *dump_dir);
- virtual void SetReported(const char *crash_id, const char *pMessage);
- virtual void SetReportedPerReporter(const char *crash_id,
- const char *reporter,
- const char *pMessage);
- virtual GList *GetUIDData(long caller_uid);
- virtual struct db_row *GetRow(const char *crash_id);
- virtual struct db_row *GetRow_by_dir(const char *dir);
-
- virtual void SetSettings(const map_plugin_settings_t& pSettings);
-};
-
-
-#endif
diff --git a/src/plugins/abrt-SQLite3.7 b/src/plugins/abrt-SQLite3.7
deleted file mode 100644
index c2b39d86..00000000
--- a/src/plugins/abrt-SQLite3.7
+++ /dev/null
@@ -1,36 +0,0 @@
-.TH abrt "7" "1 Jun 2009" ""
-.SH NAME
-SQLite3 database plugin for abrt(8)
-.SH DESCRIPTION
-.P
-.I abrt
-is a daemon that watches for application crashes. When a crash occurs,
-it collects the crash data and takes action according to
-its configuration. This manual page describes the \fISQLite3\fP database plugin
-for \fIabrt\fP.
-.P
-This is a database plugin: \fIabrt\fP needs a database in which to store
-its metadata. You can choose one by specifying "Database" in
-the \fIabrt.conf\fP configuration file. Currently SQLite3 is
-the only choice supported.
-.SH INVOCATION
-The plugin is invoked in the \fIabrt.conf\fP configuration file, like
-this:
-.br
-[common]
-.br
-Database = SQLite3
-.SH CONFIGURATION
-The \fISQLite3.conf\fP configuration file contains one entry:
-.SS DBPath
-The path to the database.
-.SH EXAMPLES
-see \fBINVOCATION\fP
-.SH "SEE ALSO"
-.IR abrt (8),
-.IR abrt.conf (5),
-.IR abrt-plugins (7)
-.SH AUTHOR
-Written by Zdenek Prikryl <zprikryl@redhat.com> and Jiri
-Moskovcak <jmoskovc@redhat.com>. Manual
-page by Daniel Novotny <dnovotny@redhat.com>.
diff --git a/src/plugins/abrt-action-analyze-c.c b/src/plugins/abrt-action-analyze-c.c
index 60e08372..6d8ac1b4 100644
--- a/src/plugins/abrt-action-analyze-c.c
+++ b/src/plugins/abrt-action-analyze-c.c
@@ -50,7 +50,7 @@ static char *run_unstrip_n(const char *dump_dir_name, unsigned timeout_sec)
struct dump_dir *dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
if (!dd)
return NULL;
- char *uid_str = dd_load_text(dd, CD_UID);
+ char *uid_str = dd_load_text(dd, FILENAME_UID);
dd_close(dd);
unsigned uid = xatoi_u(uid_str);
free(uid_str);
@@ -231,7 +231,7 @@ int main(int argc, char **argv)
create_hash(hash_str, string_to_hash);
/*free(hash_str);*/
- dd_save_text(dd, CD_UUID, hash_str);
+ dd_save_text(dd, FILENAME_UUID, hash_str);
dd_close(dd);
return 0;
diff --git a/src/plugins/abrt-action-analyze-oops.c b/src/plugins/abrt-action-analyze-oops.c
index 354ec6fd..24538641 100644
--- a/src/plugins/abrt-action-analyze-oops.c
+++ b/src/plugins/abrt-action-analyze-oops.c
@@ -167,7 +167,7 @@ int main(int argc, char **argv)
hash &= 0x7FFFFFFF;
char hash_str[sizeof(int)*3 + 2];
sprintf(hash_str, "%u", hash);
- dd_save_text(dd, CD_UUID, hash_str);
+ dd_save_text(dd, FILENAME_UUID, hash_str);
dd_save_text(dd, FILENAME_DUPHASH, hash_str);
dd_close(dd);
diff --git a/src/plugins/abrt-action-analyze-python.c b/src/plugins/abrt-action-analyze-python.c
index bb5722ec..9fe563db 100644
--- a/src/plugins/abrt-action-analyze-python.c
+++ b/src/plugins/abrt-action-analyze-python.c
@@ -111,7 +111,7 @@ int main(int argc, char **argv)
}
*d = '\0';
- dd_save_text(dd, CD_UUID, hash_str);
+ dd_save_text(dd, FILENAME_UUID, hash_str);
dd_save_text(dd, FILENAME_DUPHASH, hash_str);
dd_close(dd);
diff --git a/src/plugins/abrt-action-generate-backtrace.c b/src/plugins/abrt-action-generate-backtrace.c
index 8f1642d7..64ce4082 100644
--- a/src/plugins/abrt-action-generate-backtrace.c
+++ b/src/plugins/abrt-action-generate-backtrace.c
@@ -130,7 +130,7 @@ static char* exec_vp(char **args, uid_t uid, int redirect_stderr, int *status)
static char *get_backtrace(struct dump_dir *dd)
{
- char *uid_str = dd_load_text(dd, CD_UID);
+ char *uid_str = dd_load_text(dd, FILENAME_UID);
uid_t uid = xatoi_u(uid_str);
free(uid_str);
char *executable = dd_load_text(dd, FILENAME_EXECUTABLE);
diff --git a/src/plugins/abrt-action-install-debuginfo b/src/plugins/abrt-action-install-debuginfo
index c1b8fdb9..59bccba9 100755
--- a/src/plugins/abrt-action-install-debuginfo
+++ b/src/plugins/abrt-action-install-debuginfo
@@ -25,7 +25,8 @@
#
# Exitcodes:
# 0 - all debuginfos are installed
-# 1 - not all debuginfos are installed
+# 0 - not all debuginfos are installed
+# (was 1, but this scares event processing)
# 2+ - serious problem
#
# Algorithm:
@@ -413,6 +414,8 @@ done
cleanup_and_report_missing
-test x"$missing_build_ids" != x"" && exit 1
+# Was exiting with 1, but this stops event processing.
+test x"$missing_build_ids" != x"" && exit 0
+
echo "All needed debuginfos are present"
exit 0
diff --git a/src/plugins/abrt-action-mailx.cpp b/src/plugins/abrt-action-mailx.cpp
index 9f33e8c1..d11a0d5f 100644
--- a/src/plugins/abrt-action-mailx.cpp
+++ b/src/plugins/abrt-action-mailx.cpp
@@ -115,7 +115,7 @@ static void create_and_send_email(
args = append_str_to_vector(args, arg_size, email_to);
log(_("Sending an email..."));
- const char *uid_str = get_crash_data_item_content_or_NULL(pCrashData, CD_UID);
+ const char *uid_str = get_crash_data_item_content_or_NULL(pCrashData, FILENAME_UID);
exec_and_feed_input(xatoi_u(uid_str), dsc, args);
free(dsc);
diff --git a/src/plugins/abrt-action-rhtsupport.cpp b/src/plugins/abrt-action-rhtsupport.cpp
index d1854541..aecd30c8 100644
--- a/src/plugins/abrt-action-rhtsupport.cpp
+++ b/src/plugins/abrt-action-rhtsupport.cpp
@@ -130,11 +130,10 @@ static void report_to_rhtsupport(
map_crash_data_t::const_iterator it = pCrashData.begin();
for (; it != pCrashData.end(); it++)
{
- if (it->first == CD_COUNT) continue;
+ if (it->first == FILENAME_COUNT) continue;
if (it->first == CD_DUMPDIR) continue;
- if (it->first == CD_INFORMALL) continue;
- if (it->first == CD_REPORTED) continue;
- if (it->first == CD_MESSAGE) continue; // plugin's status message (if we already reported it yesterday)
+ if (it->first == FILENAME_INFORMALL) continue;
+ if (it->first == FILENAME_MESSAGE) continue; // plugin's status message (if we already reported it yesterday)
if (it->first == FILENAME_DESCRIPTION) continue; // package description
const char *content = it->second[CD_CONTENT].c_str();
diff --git a/src/plugins/abrt-action-upload.cpp b/src/plugins/abrt-action-upload.cpp
index d2acd0f7..0bf54bea 100644
--- a/src/plugins/abrt-action-upload.cpp
+++ b/src/plugins/abrt-action-upload.cpp
@@ -166,11 +166,10 @@ static int create_and_upload_archive(
char *short_name, *full_name;
while (dd_get_next_file(dd, &short_name, &full_name))
{
- if (strcmp(short_name, CD_COUNT) == 0) goto next;
+ if (strcmp(short_name, FILENAME_COUNT) == 0) goto next;
if (strcmp(short_name, CD_DUMPDIR) == 0) goto next;
- if (strcmp(short_name, CD_INFORMALL) == 0) goto next;
- if (strcmp(short_name, CD_REPORTED) == 0) goto next;
- if (strcmp(short_name, CD_MESSAGE) == 0) goto next; // plugin's status message (if we already reported it yesterday)
+ if (strcmp(short_name, FILENAME_INFORMALL) == 0) goto next;
+ if (strcmp(short_name, FILENAME_MESSAGE) == 0) goto next; // plugin's status message (if we already reported it yesterday)
if (strcmp(short_name, FILENAME_DESCRIPTION) == 0) goto next; // package description
// dd_get_next_file guarantees this:
//struct stat stbuf;
diff --git a/src/plugins/abrt-plugins.7 b/src/plugins/abrt-plugins.7
index 6c07e65a..28de8f02 100644
--- a/src/plugins/abrt-plugins.7
+++ b/src/plugins/abrt-plugins.7
@@ -31,12 +31,11 @@ stored in the \fI/etc/abrt/plugins\fP directory.
.IR abrt (8),
.IR abrt.conf (5),
.IR abrt-Bugzilla (7),
-.IR abrt-FileTransfer (7),
+.IR abrt-Upload (7),
.IR abrt-KerneloopsReporter (7),
.IR abrt-KerneloopsScanner (7),
.IR abrt-Logger (7),
.IR abrt-Mailx (7),
-.IR abrt-SQLite3 (7)
.SH AUTHOR
\fIabrt\fP written by Zdeněk Přikryl <zprikryl@redhat.com> and
Jiří Moskovčák <jmoskovc@redhat.com>. Manual page written by Daniel