From 6b43b25a56e14807360b3596715d20ce4e842e4d Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Thu, 22 Nov 2018 18:49:36 +0100 Subject: [PATCH 01/16] Drop unused service files This commit removes unused service files originally disabled in commit 9ef91ff21 ("Fix bugs [..] - Do not install unused services: tizen-debug-on/off"). Change-Id: Icb41586586106a427524f1c8eddfdedc23d53f93 --- CMakeLists.txt | 1 - data/CMakeLists.txt | 10 ---------- data/tizen-debug-off.service.in | 15 --------------- data/tizen-debug-on.service.in | 15 --------------- src/crash-manager/99-crash-manager-debug.conf.in | 4 ---- src/crash-manager/CMakeLists.txt | 8 +------- 6 files changed, 1 insertion(+), 52 deletions(-) delete mode 100644 data/CMakeLists.txt delete mode 100644 data/tizen-debug-off.service.in delete mode 100644 data/tizen-debug-on.service.in delete mode 100644 src/crash-manager/99-crash-manager-debug.conf.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f3222d..0a14531 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,5 @@ ADD_SUBDIRECTORY(src/crash-stack) ADD_SUBDIRECTORY(src/dump_systemstate) ADD_SUBDIRECTORY(src/log_dump) -#ADD_SUBDIRECTORY(data) ADD_SUBDIRECTORY(tests) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt deleted file mode 100644 index 681894d..0000000 --- a/data/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURE_FILE(tizen-debug-on.service.in tizen-debug-on.service @ONLY) -CONFIGURE_FILE(tizen-debug-off.service.in tizen-debug-off.service @ONLY) - -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tizen-debug-on.service DESTINATION /usr/lib/systemd/system - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tizen-debug-off.service DESTINATION /usr/lib/systemd/system - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) diff --git a/data/tizen-debug-off.service.in b/data/tizen-debug-off.service.in deleted file mode 100644 index c589bbb..0000000 --- a/data/tizen-debug-off.service.in +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=tizen debug off -DefaultDependencies=no -After=opt.mount tizen-debug-on.service -Before=sysinit.target - -[Service] -SmackProcessLabel=System -Type=oneshot -RemainAfterExit=yes -ExecStart=/bin/rm -f @DEBUGMODE_PATH@ -ExecStart=/sbin/sysctl -p /usr/lib/sysctl.d/99-crash-manager.conf - -[Install] -WantedBy=sysinit.target diff --git a/data/tizen-debug-on.service.in b/data/tizen-debug-on.service.in deleted file mode 100644 index e72ca2a..0000000 --- a/data/tizen-debug-on.service.in +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=tizen debug on -DefaultDependencies=no -After=opt.mount -Before=sysinit.target - -[Service] -SmackProcessLabel=System -Type=oneshot -RemainAfterExit=yes -ExecStart=/bin/touch -f @DEBUGMODE_PATH@ -ExecStart=/sbin/sysctl -p /usr/lib/sysctl.d/99-crash-manager.conf - -[Install] -WantedBy=sysinit.target diff --git a/src/crash-manager/99-crash-manager-debug.conf.in b/src/crash-manager/99-crash-manager-debug.conf.in deleted file mode 100644 index 3fa5692..0000000 --- a/src/crash-manager/99-crash-manager-debug.conf.in +++ /dev/null @@ -1,4 +0,0 @@ -# Tizen crash-manager -kernel.core_pattern=|/usr/bin/crash-manager %p %u %g %s %t %i -kernel.core_pipe_limit=10 -fs.suid_dumpable=1 diff --git a/src/crash-manager/CMakeLists.txt b/src/crash-manager/CMakeLists.txt index ee04dd0..5c36d30 100644 --- a/src/crash-manager/CMakeLists.txt +++ b/src/crash-manager/CMakeLists.txt @@ -34,13 +34,7 @@ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) CONFIGURE_FILE(500.${PROJECT_NAME}-upgrade.sh.in 500.${PROJECT_NAME}-upgrade.sh @ONLY) - -IF(USE_COREDUMP_CONF) - CONFIGURE_FILE(99-${PROJECT_NAME}-debug.conf.in 99-${PROJECT_NAME}.conf @ONLY) -ELSE() - CONFIGURE_FILE(99-${PROJECT_NAME}.conf.in 99-${PROJECT_NAME}.conf @ONLY) -ENDIF(USE_COREDUMP_CONF) - +CONFIGURE_FILE(99-${PROJECT_NAME}.conf.in 99-${PROJECT_NAME}.conf @ONLY) INSTALL(FILES ${CMAKE_SOURCE_DIR}/src/${PROJECT_NAME}/crash-manager.conf DESTINATION /etc -- 2.7.4 From 93bfd1fea3fe36feead530837c1e305ce0af505b Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Fri, 23 Nov 2018 17:04:11 +0100 Subject: [PATCH 02/16] Release 5.5.3 This release brings full suite of system tests, verified on TM1, Odroid, 32-bit emulator. Addtionaly, this commit sets fs.suid_dumpable=2 sysctl to ensure all processes are subject to core dumping. Change-Id: I0d7142a42ef580ce1cb11c9d246c267438fb299c --- packaging/crash-worker.spec | 2 +- packaging/crash-worker_system-tests.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/crash-worker.spec b/packaging/crash-worker.spec index 97ebb24..3a221ce 100644 --- a/packaging/crash-worker.spec +++ b/packaging/crash-worker.spec @@ -10,7 +10,7 @@ Name: crash-worker Summary: Crash-manager -Version: 5.5.2 +Version: 5.5.3 Release: 1 Group: Framework/system License: Apache-2.0 and BSD diff --git a/packaging/crash-worker_system-tests.spec b/packaging/crash-worker_system-tests.spec index f891d6c..68f521e 100644 --- a/packaging/crash-worker_system-tests.spec +++ b/packaging/crash-worker_system-tests.spec @@ -6,7 +6,7 @@ Name: crash-worker_system-tests Summary: Package with binaries and scripts for crash-worker system tests -Version: 5.5.2 +Version: 5.5.3 Release: 1 Group: Framework/system License: Apache-2.0 and BSD -- 2.7.4 From 90533436899d8fb09cd880facb1fe6c61cba50bb Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Thu, 22 Nov 2018 20:34:17 +0100 Subject: [PATCH 03/16] crash-manager: Do not force system to wait for crash-popup to complete Calling crash-popup is synchronous, meaning that call has to complete for crash-manager to complete, releasing core pipe descriptor - which allows another crash to be handled. This commit releases the core pipe descriptor allowing another crash to be handled before popup is shown. Change-Id: Iea08efc6318960ee43bb5494eaff42636529ec17 --- src/crash-manager/crash-manager.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/crash-manager/crash-manager.c b/src/crash-manager/crash-manager.c index c48e29a..7768284 100644 --- a/src/crash-manager/crash-manager.c +++ b/src/crash-manager/crash-manager.c @@ -1286,9 +1286,6 @@ int main(int argc, char *argv[]) } move_dump_data(cinfo.info_path, &cinfo); } - /* launch crash-popup only if the .debugmode file is exist*/ - if (debug_mode) - launch_crash_popup(&cinfo); struct NotifyParams notify_params = { .prstatus_fd = cinfo.prstatus_fd, @@ -1303,6 +1300,23 @@ int main(int argc, char *argv[]) send_notify(¬ify_params); + /* Release the core pipe as passed by kernel, allowing another + * coredump to be handled. + * + * Due to usage of core_pipe_limit there is limited number of + * crash-manager processes that kernel is going to invoke + * concurrently. As the next and last step is a _synchronous_ + * call to crash-popup we close the descriptor here. + * + * Note: for VIP processes this will likely cause the system + * to reboot without showing popup. + */ + close(STDIN_FILENO); + + /* launch crash-popup only if the .debugmode file exists */ + if (debug_mode) + launch_crash_popup(&cinfo); + exit: close(cinfo.prstatus_fd); free(crash_temp_path); -- 2.7.4 From 61b7db69a6bee619857a8339fa9c9d4a28b67b9f Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Fri, 7 Dec 2018 11:02:06 +0100 Subject: [PATCH 04/16] Make disk-usage functions use off_t The off_t is the same type that stat(2) uses and it's widest type that can actually hold information real disk usage. Change-Id: Id4b5d1160bdecafb065cf6792274c255619817fc --- src/crash-manager/crash-manager.c | 8 ++++---- src/shared/util.c | 4 ++-- src/shared/util.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/crash-manager/crash-manager.c b/src/crash-manager/crash-manager.c index 7768284..215904b 100644 --- a/src/crash-manager/crash-manager.c +++ b/src/crash-manager/crash-manager.c @@ -94,7 +94,7 @@ enum { struct file_info { bool isdir; - int size; + size_t size; time_t mtime; char *path; }; @@ -906,7 +906,7 @@ static int mtime_cmp(const void *_a, const void *_b) return 0; } -static int scan_dump(struct file_info **dump_list, size_t *usage) +static int scan_dump(struct file_info **dump_list, off_t *usage) { struct file_info *temp_list; struct dirent **scan_list = NULL; @@ -1026,7 +1026,7 @@ static void clean_dump(void) { struct file_info *dump_list = NULL; int i, scan_num, dump_num, remove_flag; - size_t usage = 0; + off_t usage = 0; time_t cur_time; scan_num = scan_dump(&dump_list, &usage); @@ -1065,7 +1065,7 @@ static void clean_dump(void) dump_list[i].path); break; case USAGE_EXCEED: - _I("Reached the maximum disk usage %d/%d kb, so remove (%s)", + _I("Reached the maximum disk usage %lld/%d kb, so remove (%s)", usage / 1024, system_max_use, dump_list[i].path); break; diff --git a/src/shared/util.c b/src/shared/util.c index 85879d6..564d276 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -651,12 +651,12 @@ int get_file_count(char *path) return count; } -int get_directory_usage(char *path) +off_t get_directory_usage(char *path) { DIR *dir; struct dirent *de; struct stat st; - size_t usage = 0; + off_t usage = 0; int fd = -1; fd = open(path, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW|O_NOATIME); diff --git a/src/shared/util.h b/src/shared/util.h index 819a19c..c45bf3c 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -59,7 +59,7 @@ int get_exec_pid(const char *execpath); int get_file_count(char *path); -int get_directory_usage(char *path); +off_t get_directory_usage(char *path); int log_kmsg(char *fmt, ...); -- 2.7.4 From 770ef44c466bf977da8d63ac4b5153f926bdf7a8 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Fri, 7 Dec 2018 11:02:24 +0100 Subject: [PATCH 05/16] crash-stack: Fix format specifier Change-Id: Ifdc4a229275b866f5718f0779b1a9cba01d7b1ea --- src/crash-stack/proc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/crash-stack/proc.c b/src/crash-stack/proc.c index fd346c6..da21663 100644 --- a/src/crash-stack/proc.c +++ b/src/crash-stack/proc.c @@ -472,8 +472,8 @@ static int copy_memory_proc_mem(int pid, struct mem_data_chunk **frames, ssize_t rd = pread(fd, to, count, from); if (rd == -1) { - _E("pread() at %s:0x%lx (#%d) failed: %m [%d]", - fname, from, i, errno); + _E("pread() at %s:0x%llx (#%d) failed: %m [%d]", + fname, from, i, errno); goto proc_mem_end; } -- 2.7.4 From ac711afc73c2b8db9b6f2a673da9bbee9869d882 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Fri, 14 Dec 2018 16:08:46 +0100 Subject: [PATCH 06/16] Release 5.5.4 This release brings following fixes: - fix DLog format specifier (needed if DLog start enforcing valid printf-formats) - fix: Make disk-usage functions use off_t - relability fix: crash-manager: Do not force system to wait for crash-popup to complete Change-Id: I733f09298c34c1c7824f57dfa156f23cf9196947 --- packaging/crash-worker.spec | 2 +- packaging/crash-worker_system-tests.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/crash-worker.spec b/packaging/crash-worker.spec index 3a221ce..587c925 100644 --- a/packaging/crash-worker.spec +++ b/packaging/crash-worker.spec @@ -10,7 +10,7 @@ Name: crash-worker Summary: Crash-manager -Version: 5.5.3 +Version: 5.5.4 Release: 1 Group: Framework/system License: Apache-2.0 and BSD diff --git a/packaging/crash-worker_system-tests.spec b/packaging/crash-worker_system-tests.spec index 68f521e..6e814f0 100644 --- a/packaging/crash-worker_system-tests.spec +++ b/packaging/crash-worker_system-tests.spec @@ -6,7 +6,7 @@ Name: crash-worker_system-tests Summary: Package with binaries and scripts for crash-worker system tests -Version: 5.5.3 +Version: 5.5.4 Release: 1 Group: Framework/system License: Apache-2.0 and BSD -- 2.7.4 From 2f379db2c637bda9c84b8606fdc9bbb2b721e5f8 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Tue, 18 Dec 2018 12:15:40 +0100 Subject: [PATCH 07/16] Fix DLog format specifier for 64-bit architecures Change-Id: I3f29eb0dc3e5081843f0c982dab92cd45aad1364 --- src/crash-manager/crash-manager.c | 5 +++-- src/crash-stack/proc.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/crash-manager/crash-manager.c b/src/crash-manager/crash-manager.c index 215904b..1cba5ee 100644 --- a/src/crash-manager/crash-manager.c +++ b/src/crash-manager/crash-manager.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -976,7 +977,7 @@ static int scan_dump(struct file_info **dump_list, off_t *usage) *usage = 0; for (i = 0; i < dump_num; i++) { - _D("[%d] path: %s(%s), size: %d kb, mtime: %s", + _D("[%d] path: %s(%s), size: %zu kb, mtime: %s", i, temp_list[i].path, temp_list[i].isdir ? "DIR" : "FILE", @@ -1065,7 +1066,7 @@ static void clean_dump(void) dump_list[i].path); break; case USAGE_EXCEED: - _I("Reached the maximum disk usage %lld/%d kb, so remove (%s)", + _I("Reached the maximum disk usage %" PRId64 "/%d kb, so remove (%s)", usage / 1024, system_max_use, dump_list[i].path); break; diff --git a/src/crash-stack/proc.c b/src/crash-stack/proc.c index da21663..46f40e1 100644 --- a/src/crash-stack/proc.c +++ b/src/crash-stack/proc.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -472,7 +473,7 @@ static int copy_memory_proc_mem(int pid, struct mem_data_chunk **frames, ssize_t rd = pread(fd, to, count, from); if (rd == -1) { - _E("pread() at %s:0x%llx (#%d) failed: %m [%d]", + _E("pread() at %s:0x%" PRIx64 " (#%d) failed: %m [%d]", fname, from, i, errno); goto proc_mem_end; } -- 2.7.4 From d233538e2b50d3fe644a64096945ea35fe65495d Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Tue, 18 Dec 2018 12:25:56 +0100 Subject: [PATCH 08/16] Release 5.5.5 This release brings one change - DLog format specifier fixes for 64-bit architecures. Change-Id: I443faa5a06afb9c272c953360e0f85cbf913f7db --- packaging/crash-worker.spec | 2 +- packaging/crash-worker_system-tests.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/crash-worker.spec b/packaging/crash-worker.spec index 587c925..287cfbd 100644 --- a/packaging/crash-worker.spec +++ b/packaging/crash-worker.spec @@ -10,7 +10,7 @@ Name: crash-worker Summary: Crash-manager -Version: 5.5.4 +Version: 5.5.5 Release: 1 Group: Framework/system License: Apache-2.0 and BSD diff --git a/packaging/crash-worker_system-tests.spec b/packaging/crash-worker_system-tests.spec index 6e814f0..c57473b 100644 --- a/packaging/crash-worker_system-tests.spec +++ b/packaging/crash-worker_system-tests.spec @@ -6,7 +6,7 @@ Name: crash-worker_system-tests Summary: Package with binaries and scripts for crash-worker system tests -Version: 5.5.4 +Version: 5.5.5 Release: 1 Group: Framework/system License: Apache-2.0 and BSD -- 2.7.4 From 11f80fbdbf633b1f396e87d87c08de757fdb1bd4 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Thu, 17 Jan 2019 12:38:48 +0100 Subject: [PATCH 09/16] svace: fix closing potentially negative fd This commit fixes following issue reported by svace: "Variable 'cinfo.prstatus_fd', which may receive negative value at crash-manager.c:588 by calling function 'set_crash_info' at crash-manager.c:1267, is used at crash-manager.c:1332 by calling function 'close'." Change-Id: Ie625bc8ac5eb16a84bb7b139b569c6189e1a5e25 --- src/crash-manager/crash-manager.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/crash-manager/crash-manager.c b/src/crash-manager/crash-manager.c index 1cba5ee..e2c6a0f 100644 --- a/src/crash-manager/crash-manager.c +++ b/src/crash-manager/crash-manager.c @@ -1202,7 +1202,7 @@ static void free_crash_info(struct crash_info *cinfo) int main(int argc, char *argv[]) { - struct crash_info cinfo = {0}; + struct crash_info cinfo = {.prstatus_fd = -1}; /* Execute dump_systemstate in parallel */ static int dump_state_pid; @@ -1319,7 +1319,8 @@ int main(int argc, char *argv[]) launch_crash_popup(&cinfo); exit: - close(cinfo.prstatus_fd); + if (cinfo.prstatus_fd >= 0) + close(cinfo.prstatus_fd); free(crash_temp_path); free(crash_root_path); free(crash_crash_path); -- 2.7.4 From 9501909d076fa49b299c69dd4175abb2cb1a764f Mon Sep 17 00:00:00 2001 From: Mateusz Moscicki Date: Mon, 14 Jan 2019 13:41:50 +0100 Subject: [PATCH 10/16] Add support for tpk packages Change-Id: Ic625678478e3dc888bea786bb203ef021c579228 --- src/crash-manager/so-info.c | 121 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/src/crash-manager/so-info.c b/src/crash-manager/so-info.c index 07032b5..554edc4 100644 --- a/src/crash-manager/so-info.c +++ b/src/crash-manager/so-info.c @@ -284,9 +284,116 @@ char* get_rpm_info(rpmts ts, const char* filename) return rpm_info; } +struct rpm_file { + char *pkg_name; + char *file_name; +}; + +GSList* create_tpk_list(rpmts ts) +{ + GSList *tpk_list = NULL; + + rpmdbMatchIterator mi = rpmtsInitIterator(ts, RPMTAG_NAME, NULL, 0); + if (mi == NULL) { + _E("Failed to init rpmdb match iterator"); + goto end; + } + + for (Header h = rpmdbNextIterator(mi); h; h = rpmdbNextIterator(mi)) { + const char *pkg_name = headerGetString(h, RPMTAG_NAME); + if (pkg_name == NULL) + continue; + rpmfi fi = rpmfiNew(NULL, h, RPMTAG_FILENAMES, 0); + + while (rpmfiNext(fi) != -1) { + const char *file_name = rpmfiFN(fi); + size_t file_name_len = strlen(file_name); + + if (file_name_len < 4 || + strcmp(&file_name[file_name_len-4], ".tpk") != 0) + continue; + + struct rpm_file *rpm = (struct rpm_file*)malloc(sizeof(rpm)); + if (rpm == NULL) { + _E("malloc() error (%m). Report (*.so_info) may be incomplete."); + continue; + } + + const char *version = headerGetString(h, RPMTAG_VERSION); + const char *release = headerGetString(h, RPMTAG_RELEASE); + const char *arch = headerGetString(h, RPMTAG_ARCH); + + if (version == NULL || release == NULL || arch == NULL) + continue; + + if (asprintf(&rpm->pkg_name, "%s;%s;%s;%s", + pkg_name, version, release, arch) == -1) { + _E("asprintf() error: %m"); + free(rpm); + continue; + } + rpm->file_name = strdup(file_name); + if (rpm->file_name == NULL) { + _E("strdup() error: %m"); + free(rpm->pkg_name); + free(rpm); + continue; + } + tpk_list = g_slist_append(tpk_list, rpm); + } + } + rpmdbFreeIterator(mi); + + if (tpk_list == NULL) + _E("No RPM packages containing *.tpk files found"); +end: + return tpk_list; +} + +char* get_app_name_from_path(const char *file_path) +{ + static const char *prefix[] = {"/usr/apps/", + "/opt/usr/globalapps/", + NULL}; + + for (size_t i = 0; i < ARRAY_SIZE(prefix); i++) { + if (strncmp(file_path, prefix[i], strlen(prefix[i])) != 0) + continue; + + const char *app_name = &file_path[strlen(prefix[i])]; + + char *end_of_name = strchr(app_name, '/'); + if (end_of_name != NULL) + return strndup(app_name, end_of_name - app_name); + } + return NULL; +} + +char* get_rpm_info_for_tpk(GSList *tpk_list, const char *file_path) +{ + char *app_name = get_app_name_from_path(file_path); + if (app_name == NULL) + return NULL; + + char *res = NULL; + + for (GSList *iterator = tpk_list; iterator; iterator = iterator->next) { + struct rpm_file *rpm_pkg = (struct rpm_file *)iterator->data; + + if (strstr(rpm_pkg->file_name, app_name) != NULL) { + res = strdup(rpm_pkg->pkg_name); + break; + } + } + + free(app_name); + return res; +} + void get_and_save_so_info(char *map_path, char *out_path) { GSList *file_list = get_filepaths(map_path); + GSList *tpk_list = NULL; char *rpm_info; FILE *f = fopen(out_path, "w"); @@ -306,6 +413,12 @@ void get_and_save_so_info(char *map_path, char *out_path) int fret; rpm_info = get_rpm_info(ts, file_path); + if (rpm_info == NULL) { + if (tpk_list == NULL) + tpk_list = create_tpk_list(ts); + if (tpk_list != NULL) + rpm_info = get_rpm_info_for_tpk(tpk_list, file_path); + } if (rpm_info == NULL) fret = fprintf(f, "%s %s\n", file_path, build_id); else { @@ -326,7 +439,15 @@ void get_and_save_so_info(char *map_path, char *out_path) for (GSList *iterator = file_list; iterator; iterator = iterator->next) free(iterator->data); + for (GSList *iterator = tpk_list; iterator; iterator = iterator->next) { + struct rpm_file *rpm = (struct rpm_file*)iterator->data; + free(rpm->file_name); + free(rpm->pkg_name); + free(rpm); + } + g_slist_free(file_list); + g_slist_free(tpk_list); free_rpm(ts); } -- 2.7.4 From 69d34b239dca0725a5cb48917698ebbd75abe729 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Thu, 17 Jan 2019 16:20:23 +0100 Subject: [PATCH 11/16] Release 5.5.6 This release adds information about crashed application (.tpk) to .so_info file. Additionally, one svace issue is fixed. Change-Id: I0ce18e1c47906df26bc996960681685a33f88c89 --- packaging/crash-worker.spec | 2 +- packaging/crash-worker_system-tests.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/crash-worker.spec b/packaging/crash-worker.spec index 287cfbd..e77648b 100644 --- a/packaging/crash-worker.spec +++ b/packaging/crash-worker.spec @@ -10,7 +10,7 @@ Name: crash-worker Summary: Crash-manager -Version: 5.5.5 +Version: 5.5.6 Release: 1 Group: Framework/system License: Apache-2.0 and BSD diff --git a/packaging/crash-worker_system-tests.spec b/packaging/crash-worker_system-tests.spec index c57473b..58ee9ca 100644 --- a/packaging/crash-worker_system-tests.spec +++ b/packaging/crash-worker_system-tests.spec @@ -6,7 +6,7 @@ Name: crash-worker_system-tests Summary: Package with binaries and scripts for crash-worker system tests -Version: 5.5.5 +Version: 5.5.6 Release: 1 Group: Framework/system License: Apache-2.0 and BSD -- 2.7.4 From f1c251b1ebb9e8857438068c4018c56d514e2a7c Mon Sep 17 00:00:00 2001 From: Sunmin Lee Date: Fri, 1 Feb 2019 17:22:58 +0900 Subject: [PATCH 12/16] log_dump: change permission of service file The systemd service file should be set to root ownership. Change-Id: I27978116c0b6f1c782285a604e30ee093999166b Signed-off-by: Sunmin Lee --- packaging/crash-worker.spec | 2 +- src/log_dump/CMakeLists.txt | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packaging/crash-worker.spec b/packaging/crash-worker.spec index e77648b..904e238 100644 --- a/packaging/crash-worker.spec +++ b/packaging/crash-worker.spec @@ -172,7 +172,7 @@ sed -i "/${pattern}/D" %{_sysconfdir}/ld.so.preload %dir %{crash_all_log} %{crash_dump_gen}/* %attr(0750,system_fw,system_fw) %{_bindir}/* -%{_unitdir}/log_dump.service +%attr(-,root,root) %{_unitdir}/log_dump.service %{_sysconfdir}/crash-manager.conf %attr(-,root,root) %{_sysconfdir}/dbus-1/system.d/log_dump.conf %attr(-,root,root) %{_prefix}/lib/sysctl.d/99-crash-manager.conf diff --git a/src/log_dump/CMakeLists.txt b/src/log_dump/CMakeLists.txt index fcceff5..e43654d 100644 --- a/src/log_dump/CMakeLists.txt +++ b/src/log_dump/CMakeLists.txt @@ -39,8 +39,7 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/log_dump.conf DESTINATION /etc/dbus-1/system.d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/log_dump.service DESTINATION /usr/lib/systemd/system - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE -- 2.7.4 From 330d32ec418d5e4f6fedfeaef36d586b96c0cf11 Mon Sep 17 00:00:00 2001 From: Mateusz Moscicki Date: Tue, 12 Feb 2019 14:48:10 +0100 Subject: [PATCH 13/16] Fix allocation size mismatch Change-Id: Iee761aafd7f7cb63d12acc48345519faba821536 --- src/crash-manager/so-info.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/crash-manager/so-info.c b/src/crash-manager/so-info.c index 554edc4..cab1398 100644 --- a/src/crash-manager/so-info.c +++ b/src/crash-manager/so-info.c @@ -313,12 +313,6 @@ GSList* create_tpk_list(rpmts ts) strcmp(&file_name[file_name_len-4], ".tpk") != 0) continue; - struct rpm_file *rpm = (struct rpm_file*)malloc(sizeof(rpm)); - if (rpm == NULL) { - _E("malloc() error (%m). Report (*.so_info) may be incomplete."); - continue; - } - const char *version = headerGetString(h, RPMTAG_VERSION); const char *release = headerGetString(h, RPMTAG_RELEASE); const char *arch = headerGetString(h, RPMTAG_ARCH); @@ -326,6 +320,12 @@ GSList* create_tpk_list(rpmts ts) if (version == NULL || release == NULL || arch == NULL) continue; + struct rpm_file *rpm = (struct rpm_file*)malloc(sizeof(*rpm)); + if (rpm == NULL) { + _E("malloc() error (%m). Report (*.so_info) may be incomplete."); + continue; + } + if (asprintf(&rpm->pkg_name, "%s;%s;%s;%s", pkg_name, version, release, arch) == -1) { _E("asprintf() error: %m"); -- 2.7.4 From 6aa1ef3902205d1c00fe48d2b88601f41a62de5f Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Thu, 14 Feb 2019 15:41:44 +0100 Subject: [PATCH 14/16] Release 5.5.7 This release brings following changes: - Fix allocation size mismatch (SVACE fix) - log_dump: change permission of service file Change-Id: I8ca897471a727b811d62baa323c7a166ff40412a --- packaging/crash-worker.spec | 2 +- packaging/crash-worker_system-tests.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/crash-worker.spec b/packaging/crash-worker.spec index 904e238..1816bef 100644 --- a/packaging/crash-worker.spec +++ b/packaging/crash-worker.spec @@ -10,7 +10,7 @@ Name: crash-worker Summary: Crash-manager -Version: 5.5.6 +Version: 5.5.7 Release: 1 Group: Framework/system License: Apache-2.0 and BSD diff --git a/packaging/crash-worker_system-tests.spec b/packaging/crash-worker_system-tests.spec index 58ee9ca..080009f 100644 --- a/packaging/crash-worker_system-tests.spec +++ b/packaging/crash-worker_system-tests.spec @@ -6,7 +6,7 @@ Name: crash-worker_system-tests Summary: Package with binaries and scripts for crash-worker system tests -Version: 5.5.6 +Version: 5.5.7 Release: 1 Group: Framework/system License: Apache-2.0 and BSD -- 2.7.4 From 13a13714bda94399ed425d6491dd02d50fe8d566 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Tue, 19 Feb 2019 13:04:34 +0100 Subject: [PATCH 15/16] crash-manager: Fix error checking for pkgmgrinfo*() invocation This commit fixes 'unchecked return value' as reported by coverity. Change-Id: I8c31504fd03826862f85df5ff24d7752a12262e9 --- src/crash-manager/crash-manager.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/crash-manager/crash-manager.c b/src/crash-manager/crash-manager.c index e2c6a0f..dee6e62 100644 --- a/src/crash-manager/crash-manager.c +++ b/src/crash-manager/crash-manager.c @@ -143,13 +143,11 @@ static int appinfo_get_appid_func(pkgmgrinfo_appinfo_h handle, void *user_data) { char *str = NULL; - int ret = PMINFO_R_ERROR; - pkgmgrinfo_appinfo_get_appid(handle, &str); - if (str) { + int ret = pkgmgrinfo_appinfo_get_appid(handle, &str); + if (ret == PMINFO_R_OK && str) (*(char **)user_data) = strdup(str); - ret = PMINFO_R_OK; - } + return ret; } -- 2.7.4 From 14cd1b8dea941c694af29f24330b32629c94065a Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Tue, 19 Feb 2019 13:23:59 +0100 Subject: [PATCH 16/16] Release 5.5.8 This change brings on Coverity fix. Change-Id: I8da5e50276189c609a70712d3d652f44237346d5 --- packaging/crash-worker.spec | 2 +- packaging/crash-worker_system-tests.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/crash-worker.spec b/packaging/crash-worker.spec index 1816bef..42835d6 100644 --- a/packaging/crash-worker.spec +++ b/packaging/crash-worker.spec @@ -10,7 +10,7 @@ Name: crash-worker Summary: Crash-manager -Version: 5.5.7 +Version: 5.5.8 Release: 1 Group: Framework/system License: Apache-2.0 and BSD diff --git a/packaging/crash-worker_system-tests.spec b/packaging/crash-worker_system-tests.spec index 080009f..efbee08 100644 --- a/packaging/crash-worker_system-tests.spec +++ b/packaging/crash-worker_system-tests.spec @@ -6,7 +6,7 @@ Name: crash-worker_system-tests Summary: Package with binaries and scripts for crash-worker system tests -Version: 5.5.7 +Version: 5.5.8 Release: 1 Group: Framework/system License: Apache-2.0 and BSD -- 2.7.4