summaryrefslogtreecommitdiffstats
path: root/src/Daemon/MiddleWare.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Daemon/MiddleWare.cpp')
-rw-r--r--src/Daemon/MiddleWare.cpp34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp
index 1ed13e8..770ed92 100644
--- a/src/Daemon/MiddleWare.cpp
+++ b/src/Daemon/MiddleWare.cpp
@@ -654,19 +654,41 @@ static mw_result_t SavePackageDescriptionToDebugDump(
{
std::string package;
std::string packageName;
+ std::string component;
std::string scriptName; /* only if "interpreter /path/to/script" */
if (strcmp(pExecutable, "kernel") == 0)
{
- packageName = package = "kernel";
+ component = packageName = package = "kernel";
}
else
{
char *rpm_pkg = GetPackage(pExecutable);
if (rpm_pkg == NULL)
{
- log("Executable '%s' doesn't belong to any package", pExecutable);
- return MW_PACKAGE_ERROR;
+ if (g_settings_bProcessUnpackaged)
+ {
+ VERB2 log("Crash in unpackaged executable '%s', proceeding without packaging information", pExecutable);
+ try
+ {
+ CDebugDump dd;
+ dd.Open(pDebugDumpDir);
+ dd.SaveText(FILENAME_PACKAGE, "");
+ dd.SaveText(FILENAME_COMPONENT, "");
+ dd.SaveText(FILENAME_DESCRIPTION, "Crashed executable does not belong to any installed package");
+ return MW_OK;
+ }
+ catch (CABRTException& e)
+ {
+ error_msg("%s", e.what());
+ return MW_ERROR;
+ }
+ }
+ else
+ {
+ log("Executable '%s' doesn't belong to any package", pExecutable);
+ return MW_PACKAGE_ERROR;
+ }
}
/* Check well-known interpreter names */
@@ -738,19 +760,17 @@ static mw_result_t SavePackageDescriptionToDebugDump(
}
*/
}
+ component = GetComponent(pExecutable);
}
std::string description = GetDescription(packageName.c_str());
- std::string component = GetComponent(pExecutable);
try
{
CDebugDump dd;
dd.Open(pDebugDumpDir);
dd.SaveText(FILENAME_PACKAGE, package.c_str());
dd.SaveText(FILENAME_DESCRIPTION, description.c_str());
- /* For oopses, pExecutable == "kernel" gives "" here. Don't write it */
- if (component.size() != 0)
- dd.SaveText(FILENAME_COMPONENT, component.c_str());
+ dd.SaveText(FILENAME_COMPONENT, component.c_str());
}
catch (CABRTException& e)
{