diff --git a/backport-core-transaction-make-merge_unit_ids-always-return-N.patch b/backport-core-transaction-make-merge_unit_ids-always-return-N.patch index c63a4e0..86558c2 100644 --- a/backport-core-transaction-make-merge_unit_ids-always-return-N.patch +++ b/backport-core-transaction-make-merge_unit_ids-always-return-N.patch @@ -15,24 +15,22 @@ Fixes #26872. (cherry picked from commit 7002c5c210a7ae3607bd8a424112e9f8789bc5f9) (cherry picked from commit 89f780969b4436cf766eb9c0d6412362fc85f042) -Conflict:keep variable unit_id and job_type to solve compilation failure +Conflict:keep variable unit_id and job_type to solve compilation failure and keep pairs as (char **) Reference:https://github.com/systemd/systemd-stable/commit/1ece85e7d4af7517aa9cfe12b21cde1d82fa3167 --- - src/core/transaction.c | 18 +++++++++++------- - 1 file changed, 11 insertions(+), 7 deletions(-) + src/core/transaction.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/core/transaction.c b/src/core/transaction.c -index ebe5f19..9532531 100644 +index ebe5f19..aca3c4e 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c -@@ -328,22 +328,26 @@ _pure_ static bool unit_matters_to_anchor(Unit *u, Job *j) { - return false; +@@ -329,21 +329,25 @@ _pure_ static bool unit_matters_to_anchor(Unit *u, Job *j) { } --static char* merge_unit_ids(const char* unit_log_field, char **pairs) { + static char* merge_unit_ids(const char* unit_log_field, char **pairs) { - char **unit_id, **job_type, *ans = NULL; - size_t size = 0, next; -+static char* merge_unit_ids(const char* unit_log_field, char * const* pairs) { + char **unit_id, **job_type = NULL; + _cleanup_free_ char *ans = NULL; + size_t size = 0; diff --git a/process-util-log-more-information-when-runnin.patch b/process-util-log-more-information-when-runnin.patch index 059ef8d..122889d 100644 --- a/process-util-log-more-information-when-runnin.patch +++ b/process-util-log-more-information-when-runnin.patch @@ -14,10 +14,10 @@ Subject: [PATCH] process-util: log more information when running 4 files changed, 66 insertions(+) diff --git a/src/basic/process-util.c b/src/basic/process-util.c -index 5452edd..f137ba0 100644 +index 018cbb5..8d56a69 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c -@@ -42,6 +42,7 @@ +@@ -44,6 +44,7 @@ #include "stdio-util.h" #include "string-table.h" #include "string-util.h" @@ -25,11 +25,11 @@ index 5452edd..f137ba0 100644 #include "terminal-util.h" #include "user-util.h" #include "utf8.h" -@@ -189,6 +190,36 @@ int get_process_cmdline(pid_t pid, size_t max_columns, ProcessCmdlineFlags flags +@@ -256,6 +257,36 @@ int get_process_cmdline(pid_t pid, size_t max_columns, ProcessCmdlineFlags flags return 0; } -+int print_process_cmdline_with_arg(pid_t pid, int argc, char *argv[], char *filter[]) { ++int print_process_cmdline_with_arg(pid_t pid, int argc, char *argv[], const char * const *filter) { + bool is_filtered = false; + int r; + const char *arg_cmdline = "["; @@ -41,7 +41,7 @@ index 5452edd..f137ba0 100644 + return r; + } else { + for (int i = 0; i < argc; i++ ) { -+ if (filter && strv_find(filter, argv[i])) { ++ if (filter && strv_find((char * const *) filter, argv[i])) { + is_filtered = true; + break; + } @@ -63,22 +63,22 @@ index 5452edd..f137ba0 100644 static int can_do = -1; diff --git a/src/basic/process-util.h b/src/basic/process-util.h -index 41d4759..4d8147e 100644 +index 6f9b577..687c7c1 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h -@@ -38,6 +38,7 @@ typedef enum ProcessCmdlineFlags { +@@ -41,6 +41,7 @@ typedef enum ProcessCmdlineFlags { int get_process_comm(pid_t pid, char **name); int get_process_cmdline(pid_t pid, size_t max_columns, ProcessCmdlineFlags flags, char **line); -+int print_process_cmdline_with_arg(pid_t pid, int argc, char *argv[], char *filter[]); ++int print_process_cmdline_with_arg(pid_t pid, int argc, char *argv[], const char * const *filter); int get_process_exe(pid_t pid, char **name); int get_process_uid(pid_t pid, uid_t *uid); int get_process_gid(pid_t pid, gid_t *gid); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index 1c01914..dd5bee9 100644 +index 2f6f581..a2d5a67 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c -@@ -12,6 +12,7 @@ +@@ -2,6 +2,7 @@ #include #include @@ -86,12 +86,12 @@ index 1c01914..dd5bee9 100644 #include #include "sd-daemon.h" -@@ -9272,6 +9273,14 @@ static int logind_cancel_shutdown(void) { +@@ -1113,6 +1114,14 @@ static int systemctl_main(int argc, char *argv[]) { static int run(int argc, char *argv[]) { int r; + pid_t ppid; -+ char *filter[] = { ++ const char * const filter[] = { + "status", "show", "cat", + "is-active", "is-failed", "is-enabled", "is-system-running", + "list-units", "list-sockets", "list-timers", "list-dependencies", @@ -101,7 +101,7 @@ index 1c01914..dd5bee9 100644 setlocale(LC_ALL, ""); log_parse_environment(); -@@ -9291,6 +9300,9 @@ static int run(int argc, char *argv[]) { +@@ -1127,6 +1136,9 @@ static int run(int argc, char *argv[]) { if (r <= 0) goto finish; @@ -112,38 +112,38 @@ index 1c01914..dd5bee9 100644 if (!arg_quiet) log_info("Running in chroot, ignoring request."); diff --git a/src/test/test-process-util.c b/src/test/test-process-util.c -index 8dc9fdd..1cb4ee2 100644 +index 8c76392..1dc1eb3 100644 --- a/src/test/test-process-util.c +++ b/src/test/test-process-util.c -@@ -601,6 +601,27 @@ static void test_ioprio_class_from_to_string(void) { +@@ -874,6 +874,27 @@ static void test_get_process_ppid(void) { } } +static void test_print_process_cmdline_with_arg(pid_t pid) { -+ char *arg_filter_empty[] = {"", NULL}; -+ char *arg_filter_1_in[] = {"status", NULL}; -+ char *arg_filter_1_no[] = {"stop", NULL}; -+ char *arg_filter_2_in[] = {"restart", "status", NULL}; -+ char *arg_filter_2_no[] = {"restart", "stop", NULL}; -+ char *arg_var_1[1] = {"systemctl"}; -+ char *arg_var_10[10] = {"systemctl", "restart", "1", "2", "3", "4", "5", "6", "7", "8"}; -+ char *arg_var_filter[3] = {"systemctl", "status", "dbus.service"}; ++ const char * const arg_filter_empty[] = {"", NULL}; ++ const char * const arg_filter_1_in[] = {"status", NULL}; ++ const char * const arg_filter_1_no[] = {"stop", NULL}; ++ const char * const arg_filter_2_in[] = {"restart", "status", NULL}; ++ const char * const arg_filter_2_no[] = {"restart", "stop", NULL}; ++ const char *arg_var_1[1] = {"systemctl"}; ++ const char *arg_var_10[10] = {"systemctl", "restart", "1", "2", "3", "4", "5", "6", "7", "8"}; ++ const char *arg_var_filter[3] = {"systemctl", "status", "dbus.service"}; + assert_se(print_process_cmdline_with_arg(pid, 0, NULL, NULL) >=0); -+ assert_se(print_process_cmdline_with_arg(pid, 1, arg_var_1, NULL) >= 0); -+ assert_se(print_process_cmdline_with_arg(pid, 10, arg_var_10, NULL) >= 0); -+ assert_se(print_process_cmdline_with_arg(897349, 1, arg_var_1, NULL) < 0); -+ assert_se(print_process_cmdline_with_arg(897349, 10, arg_var_10, NULL) < 0); -+ assert_se(print_process_cmdline_with_arg(pid, 3, arg_var_filter, arg_filter_empty) >= 0); -+ assert_se(print_process_cmdline_with_arg(pid, 3, arg_var_filter, arg_filter_1_in) >= 0); -+ assert_se(print_process_cmdline_with_arg(pid, 3, arg_var_filter, arg_filter_1_no) >= 0); -+ assert_se(print_process_cmdline_with_arg(pid, 3, arg_var_filter, arg_filter_2_in) >= 0); -+ assert_se(print_process_cmdline_with_arg(pid, 3, arg_var_filter, arg_filter_2_no) >= 0); ++ assert_se(print_process_cmdline_with_arg(pid, 1, (char **) arg_var_1, NULL) >= 0); ++ assert_se(print_process_cmdline_with_arg(pid, 10, (char **) arg_var_10, NULL) >= 0); ++ assert_se(print_process_cmdline_with_arg(897349, 1, (char **) arg_var_1, NULL) < 0); ++ assert_se(print_process_cmdline_with_arg(897349, 10, (char **) arg_var_10, NULL) < 0); ++ assert_se(print_process_cmdline_with_arg(pid, 3, (char **) arg_var_filter, arg_filter_empty) >= 0); ++ assert_se(print_process_cmdline_with_arg(pid, 3, (char **) arg_var_filter, arg_filter_1_in) >= 0); ++ assert_se(print_process_cmdline_with_arg(pid, 3, (char **) arg_var_filter, arg_filter_1_no) >= 0); ++ assert_se(print_process_cmdline_with_arg(pid, 3, (char **) arg_var_filter, arg_filter_2_in) >= 0); ++ assert_se(print_process_cmdline_with_arg(pid, 3, (char **) arg_var_filter, arg_filter_2_no) >= 0); +} + int main(int argc, char *argv[]) { log_show_color(true); test_setup_logging(LOG_INFO); -@@ -627,6 +648,7 @@ int main(int argc, char *argv[]) { +@@ -904,6 +925,7 @@ int main(int argc, char *argv[]) { test_ioprio_class_from_to_string(); test_setpriority_closest(); test_get_process_ppid(); @@ -152,5 +152,5 @@ index 8dc9fdd..1cb4ee2 100644 return 0; } -- -2.23.0 +2.33.0 diff --git a/systemd.spec b/systemd.spec index 2d75d9b..b31ea37 100644 --- a/systemd.spec +++ b/systemd.spec @@ -21,7 +21,7 @@ Name: systemd Url: https://www.freedesktop.org/wiki/Software/systemd Version: 249 -Release: 70 +Release: 71 License: MIT and LGPLv2+ and GPLv2+ Summary: System and Service Manager @@ -2135,6 +2135,9 @@ grep -q -E '^KEYMAP="?fi-latin[19]"?' /etc/vconsole.conf 2>/dev/null && %{_libdir}/security/pam_systemd.so %changelog +* Thu Feb 29 2024 licunlong - 249-71 +- fix the compilation warning caused by misusing const + * Wed Feb 28 2024 huyubiao - 249-70 - Type:bugfix - CVE:NA