Save full cmd_line 64/186564/6
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 10 Aug 2018 08:41:39 +0000 (10:41 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Wed, 22 Aug 2018 05:51:37 +0000 (07:51 +0200)
Change-Id: I98ac10c8931a0e1c0b586c6e116279faa6ef9d44

src/crash-manager/crash-manager.c

index 6ecb416..922f99e 100644 (file)
@@ -94,7 +94,7 @@ static struct crash_info {
        char *pid_info;
        char *tid_info;
        char *sig_info;
-       char cmd_name[FILENAME_MAX];
+       char cmd_line[PATH_MAX];
        char cmd_path[PATH_MAX];
        char time_info[80];
        char temp_dir[PATH_MAX];
@@ -236,8 +236,9 @@ static int get_cmd_info(struct crash_info *cinfo)
                goto error;
        }
 
-       snprintf(cinfo->cmd_name, sizeof(cinfo->cmd_name), "%s",
-                basename(cmdline));
+       cmdline[ret] = '\0';
+
+       strncpy(cinfo->cmd_line, cmdline, sizeof(cinfo->cmd_line));
 
        snprintf(exe_link, sizeof(exe_link),
                "/proc/%s/exe", cinfo->pid_info);
@@ -347,7 +348,7 @@ static int set_crash_info(int argc, char *argv[])
        }
 
        ret = snprintf(crash_info.name, sizeof(crash_info.name), "%s_%s_%s",
-                       crash_info.cmd_name,
+                       basename(crash_info.cmd_line),
                        crash_info.pid_info,
                        crash_info.time_info);
        if (ret < 0) {
@@ -405,7 +406,7 @@ static int set_crash_info(int argc, char *argv[])
        ret = snprintf(crash_info.sysassert_cs_path,
                        sizeof(crash_info.sysassert_cs_path),
                       "/tmp/crash_stack/%s_%s.info",
-                      crash_info.cmd_name, crash_info.pid_info);
+                      basename(crash_info.cmd_line), crash_info.pid_info);
        if (ret < 0) {
                _E("Failed to snprintf for sys-assert callstack path");
                goto rm_temp;
@@ -472,7 +473,7 @@ static void launch_crash_popup(void)
        builder = g_variant_builder_new(G_VARIANT_TYPE("a{ss}"));
        g_variant_builder_add(builder, "{ss}", "_SYSPOPUP_CONTENT_", "crash");
        g_variant_builder_add(builder, "{ss}", "_PROCESS_NAME_",
-                       crash_info.cmd_name);
+                       basename(crash_info.cmd_line));
        g_variant_builder_add(builder, "{ss}", "_EXEPATH_", crash_info.cmd_path);
        parameters = g_variant_new("(a{ss})", builder);
        g_variant_builder_unref(builder);