Complain when livecoredumper is needed and not installed 44/225544/2
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 13 Feb 2020 08:30:43 +0000 (09:30 +0100)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 21 Feb 2020 12:04:46 +0000 (13:04 +0100)
This brings back functionality dropped in 22a0cccdad ("Simplify
struct crash_info setup").

Change-Id: If5ddddee6b99784d7ada9a93e89d3ad975facb6b

src/crash-manager/crash-manager.c
src/crash-manager/crash-manager.h
src/crash-manager/main.c
src/crash-service/crash-service.c

index d8060da..f075ca6 100644 (file)
@@ -85,6 +85,11 @@ config_t config;
 static char* crash_dump_path;
 static char* crash_temp_path;
 
+bool have_livecoredumper(void)
+{
+       return access(LIVEDUMPER_BIN_PATH, X_OK) == 0;
+}
+
 /* pkgmgrinfo filter list function for getting application ID */
 static int appinfo_get_appid_func(pkgmgrinfo_appinfo_h handle,
                void *user_data)
index 7e284e8..6051f82 100644 (file)
@@ -54,4 +54,6 @@ bool crash_manager_direct(struct crash_info *cinfo);
 bool crash_manager_livedump_pid(pid_t pid, const char *dump_reason, char *report_path, size_t report_path_len);
 void crash_info_init(struct crash_info *cinfo);
 void crash_manager_free(struct crash_info *cinfo);
+
+bool have_livecoredumper(void);
 #endif
index 0b34d3b..26b8e95 100644 (file)
@@ -113,6 +113,11 @@ static bool parse_args(struct crash_info *cinfo, int argc, char *argv[])
                }
        }
 
+       if (cinfo->livedump && !have_livecoredumper()) {
+               printf("livecoredumper not available - can not perform livedump.\n");
+               return false;
+       }
+
        if (!pid_set || (!cinfo->livedump && (!gid_set || !uid_set || !sig_set))) {
                printf("Not enough parameters.\n\n");
                print_help(argv[0]);
index 7b0a798..0917fcb 100644 (file)
@@ -315,6 +315,11 @@ static bool dbus_init(void)
 
 int main(void)
 {
+       if (!have_livecoredumper()) {
+               _E("livecoredumper not available - can not provide livedump API. Terminating.\n");
+               return EXIT_FAILURE;
+       }
+
        loop = g_main_loop_new(NULL, false);
 
        if (!dbus_init()) {