summaryrefslogtreecommitdiffstats
path: root/lib/MiddleWare/MiddleWare.cpp
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-02-19 15:23:00 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2009-02-19 15:23:00 +0100
commit2f907417d37d83cefad7950397bd141c0586b1d5 (patch)
tree12d58967607cac7f300e7dcaee456fdfe9bd95a1 /lib/MiddleWare/MiddleWare.cpp
parentb472b75f70c7e9144fb29f9d142e9f52f4caab39 (diff)
parent0c899d52e5e42caf8c5c394ef6c142c08ac38858 (diff)
downloadabrt-2f907417d37d83cefad7950397bd141c0586b1d5.tar.gz
abrt-2f907417d37d83cefad7950397bd141c0586b1d5.tar.xz
abrt-2f907417d37d83cefad7950397bd141c0586b1d5.zip
Merge branch 'master' of git://git.fedorahosted.org/git/crash-catcher
Conflicts: lib/DBus/Makefile.am lib/DBus/dbus-crash-catcher.conf lib/DBus/dbus-crashcatcher.conf src/Daemon/Makefile.am src/Daemon/dbus-crashcatcher.conf
Diffstat (limited to 'lib/MiddleWare/MiddleWare.cpp')
-rw-r--r--lib/MiddleWare/MiddleWare.cpp47
1 files changed, 36 insertions, 11 deletions
diff --git a/lib/MiddleWare/MiddleWare.cpp b/lib/MiddleWare/MiddleWare.cpp
index 2f86c00..f4f50df 100644
--- a/lib/MiddleWare/MiddleWare.cpp
+++ b/lib/MiddleWare/MiddleWare.cpp
@@ -26,7 +26,8 @@
CMiddleWare::CMiddleWare(const std::string& pPlugisConfDir,
const std::string& pPlugisLibDir,
const std::string& pMiddleWareConfFile) :
- m_pPluginManager(NULL)
+ m_pPluginManager(NULL),
+ m_bOpenGPGCheck(true)
{
m_pPluginManager = new CPluginManager(pPlugisConfDir, pPlugisLibDir);
if (m_pPluginManager == NULL)
@@ -61,6 +62,19 @@ void CMiddleWare::LoadSettings(const std::string& pPath)
{
parse_settings(settings["EnabledPlugins"], m_setEnabledPlugins);
}
+ if (settings.find("OpenGPGPublicKeys") != settings.end())
+ {
+ parse_settings(settings["OpenGPGPublicKeys"], m_setOpenGPGKeys);
+ set_opengpg_keys_t::iterator it_k;
+ for (it_k = m_setOpenGPGKeys.begin(); it_k != m_setOpenGPGKeys.end(); it_k++)
+ {
+ m_RPMInfo.LoadOpenGPGPublicKey(*it_k);
+ }
+ }
+ if (settings.find("EnableOpenGPG") != settings.end())
+ {
+ m_bOpenGPGCheck = settings["EnableOpenGPG"] == "yes";
+ }
if (settings.find("Database") != settings.end())
{
m_sDatabase = settings["Database"];
@@ -211,7 +225,7 @@ void CMiddleWare::Report(const crash_context_t& pCrashContext,
database->SetReported(pCrashContext.m_sUUID, pCrashContext.m_sUID);
database->DisConnect();
}
-
+#include <iostream>
int CMiddleWare::SaveDebugDump(const std::string& pDebugDumpDir, crash_info_t& pCrashInfo)
{
CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase);
@@ -225,15 +239,25 @@ int CMiddleWare::SaveDebugDump(const std::string& pDebugDumpDir, crash_info_t& p
CDebugDump dd;
dd.Open(pDebugDumpDir);
- dd.LoadText(FILENAME_PACKAGE, package);
- dd.LoadText(FILENAME_TIME, time);
-
- if (package == "" ||
- m_setBlackList.find(package.substr(0, package.find("-"))) != m_setBlackList.end())
+ dd.LoadText(FILENAME_EXECUTABLE, executable);
+ package = m_RPMInfo.GetPackage(executable);
+ std::string packageName = package.substr(0, package.rfind("-", package.rfind("-") - 1));
+ if (packageName == "" ||
+ (m_setBlackList.find(packageName) != m_setBlackList.end()))
{
- dd.Delete(pDebugDumpDir);
+ dd.Delete();
return 0;
}
+ if (m_bOpenGPGCheck)
+ {
+ if (!m_RPMInfo.CheckFingerprint(packageName) ||
+ !m_RPMInfo.CheckHash(packageName, executable))
+ {
+ dd.Delete();
+ return 0;
+ }
+ }
+ dd.SaveText(FILENAME_PACKAGE, package);
if (dd.Exist(FILENAME_APPLICATION))
{
@@ -252,8 +276,8 @@ int CMiddleWare::SaveDebugDump(const std::string& pDebugDumpDir, crash_info_t& p
throw std::string("CMiddleWare::SaveDebugDumpToDataBase(): Wrong UUID.");
}
+ dd.LoadText(FILENAME_TIME, time);
dd.LoadText(FILENAME_UID, UID);
- dd.LoadText(FILENAME_EXECUTABLE, executable);
database_row_t row;
database->Connect();
@@ -263,12 +287,12 @@ int CMiddleWare::SaveDebugDump(const std::string& pDebugDumpDir, crash_info_t& p
if (row.m_sReported == "1")
{
- dd.Delete(pDebugDumpDir);
+ dd.Delete();
return 0;
}
if (row.m_sCount != "1")
{
- dd.Delete(pDebugDumpDir);
+ dd.Delete();
}
dd.Close();
@@ -300,6 +324,7 @@ vector_crash_infos_t CMiddleWare::GetCrashInfos(const std::string& pUID)
info.m_sUUID = rows[ii].m_sUUID;
info.m_sUID = rows[ii].m_sUID;
info.m_sCount = rows[ii].m_sCount;
+ info.m_sTime = rows[ii].m_sTime;
dd.Open(rows[ii].m_sDebugDumpDir);
dd.LoadText(FILENAME_EXECUTABLE, data);