core: reorder systemd arguments on reexec
This commit is contained in:
parent
7ca90a9df1
commit
9dc63aca66
56
SOURCES/9000-core-reorder-systemd-arguments-on-reexec.patch
Normal file
56
SOURCES/9000-core-reorder-systemd-arguments-on-reexec.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From 06afda6b38d5d730fca3c65449096425933272bc Mon Sep 17 00:00:00 2001
|
||||
From: Frantisek Sumsal <frantisek@sumsal.cz>
|
||||
Date: Thu, 29 Jun 2023 13:31:19 +0200
|
||||
Subject: [PATCH] core: reorder systemd arguments on reexec
|
||||
|
||||
When reexecuting system let's put our arguments carrying deserialization
|
||||
info first followed by any existing arguments to make sure they get
|
||||
parsed in case we get weird stuff from the kernel cmdline (like --).
|
||||
|
||||
See: https://github.com/systemd/systemd/issues/28184
|
||||
---
|
||||
src/core/main.c | 6 +++++-
|
||||
test/TEST-01-BASIC/test.sh | 5 +++++
|
||||
2 files changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/core/main.c b/src/core/main.c
|
||||
index 208d22f4f3..3f78f035d0 100644
|
||||
--- a/src/core/main.c
|
||||
+++ b/src/core/main.c
|
||||
@@ -1860,12 +1860,16 @@ static int do_reexecute(
|
||||
xsprintf(sfd, "--deserialize=%i", fileno(arg_serialization));
|
||||
|
||||
i = 1; /* Leave args[0] empty for now. */
|
||||
- filter_args(args, &i, argv, argc);
|
||||
|
||||
+ /* Put our stuff first to make sure it always gets parsed in case
|
||||
+ * we get weird stuff from the kernel cmdline (like --) */
|
||||
if (IN_SET(objective, MANAGER_SWITCH_ROOT, MANAGER_SOFT_REBOOT))
|
||||
args[i++] = "--switched-root";
|
||||
args[i++] = runtime_scope_cmdline_option_to_string(arg_runtime_scope);
|
||||
args[i++] = sfd;
|
||||
+
|
||||
+ filter_args(args, &i, argv, argc);
|
||||
+
|
||||
args[i++] = NULL;
|
||||
|
||||
assert(i <= args_size);
|
||||
diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh
|
||||
index cc6d0651c1..d0e714ac30 100755
|
||||
--- a/test/TEST-01-BASIC/test.sh
|
||||
+++ b/test/TEST-01-BASIC/test.sh
|
||||
@@ -8,6 +8,11 @@ RUN_IN_UNPRIVILEGED_CONTAINER=${RUN_IN_UNPRIVILEGED_CONTAINER:-yes}
|
||||
TEST_REQUIRE_INSTALL_TESTS=0
|
||||
TEST_SUPPORTING_SERVICES_SHOULD_BE_MASKED=0
|
||||
|
||||
+# Check if we can correctly deserialize if the kernel cmdline contains "weird" stuff
|
||||
+# like an invalid argument, "end of arguments" separator, or a sysvinit argument (-z)
|
||||
+# See: https://github.com/systemd/systemd/issues/28184
|
||||
+KERNEL_APPEND="foo -- -z bar --- baz $KERNEL_APPEND"
|
||||
+
|
||||
# shellcheck source=test/test-functions
|
||||
. "${TEST_BASE_DIR:?}/test-functions"
|
||||
|
||||
--
|
||||
2.43.5
|
||||
|
@ -823,6 +823,7 @@ Patch0731: 0731-bootspec-fix-null-dereference-read.patch
|
||||
Patch0732: 0732-generator-uninline-generator_open_unit_file-and-gene.patch
|
||||
|
||||
# Downstream-only patches (9000–9999)
|
||||
Patch9000: 9000-core-reorder-systemd-arguments-on-reexec.patch
|
||||
|
||||
%ifarch %{ix86} x86_64 aarch64
|
||||
%global have_gnu_efi 1
|
||||
@ -1700,6 +1701,9 @@ systemd-hwdb update &>/dev/null || :
|
||||
%{_prefix}/lib/dracut/modules.d/70rhel-net-naming-sysattrs/*
|
||||
|
||||
%changelog
|
||||
* Thu Oct 17 2024 Andrew Lukoshko <alukoshko@almalinux.org> - 252-32.7.alma.1
|
||||
- core: reorder systemd arguments on reexec
|
||||
|
||||
* Thu Jul 18 2024 systemd maintenance team <systemd-maint@redhat.com> - 252-32.7
|
||||
- generator: "uninline" generator_open_unit_file and generator_add_symlink (RHEL-49495)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user