From a35fcc8b3fc340a6b874440b2a87e155c807ece5 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Thu, 12 Dec 2024 02:54:13 +0000 Subject: automatic import of systemd --- ...re-escape-spaces-when-serializing-as-well.patch | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 backport-core-escape-spaces-when-serializing-as-well.patch (limited to 'backport-core-escape-spaces-when-serializing-as-well.patch') diff --git a/backport-core-escape-spaces-when-serializing-as-well.patch b/backport-core-escape-spaces-when-serializing-as-well.patch new file mode 100644 index 0000000..7d3328e --- /dev/null +++ b/backport-core-escape-spaces-when-serializing-as-well.patch @@ -0,0 +1,77 @@ +From 5b1aa0e19a6df603336894604a85df74204d04f9 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Mon, 12 Feb 2024 18:32:03 +0100 +Subject: [PATCH] core: escape spaces when serializing as well + +Otherwise they might get stripped when reading the serialized data back. + +Resolves: #31214 + +Conflict:NA +Reference:https://github.com/systemd/systemd/commit/5b1aa0e19a6df603336894604a85df74204d04f9 + +--- + src/shared/serialize.c | 2 +- + test/units/testsuite-07.exec-context.sh | 33 +++++++++++++++++++++++++ + 2 files changed, 34 insertions(+), 1 deletion(-) + +diff --git a/src/shared/serialize.c b/src/shared/serialize.c +index 7099f67f92..483cbc7419 100644 +--- a/src/shared/serialize.c ++++ b/src/shared/serialize.c +@@ -46,7 +46,7 @@ int serialize_item_escaped(FILE *f, const char *key, const char *value) { + if (!value) + return 0; + +- c = cescape(value); ++ c = xescape(value, " "); + if (!c) + return log_oom(); + +diff --git a/test/units/testsuite-07.exec-context.sh b/test/units/testsuite-07.exec-context.sh +index dd63163008..e1e4367cc6 100755 +--- a/test/units/testsuite-07.exec-context.sh ++++ b/test/units/testsuite-07.exec-context.sh +@@ -338,6 +338,39 @@ if [[ ! -v ASAN_OPTIONS ]] && systemctl --version | grep "+BPF_FRAMEWORK" && ker + (! systemd-run --wait --pipe -p RestrictFileSystems="~proc devtmpfs sysfs" ls /sys) + fi + ++# Make sure we properly (de)serialize various string arrays, including whitespaces ++# See: https://github.com/systemd/systemd/issues/31214 ++systemd-run --wait --pipe -p Environment="FOO='bar4 '" \ ++ bash -xec '[[ $FOO == "bar4 " ]]' ++systemd-run --wait --pipe -p Environment="FOO='bar4 ' BAR='\n\n'" \ ++ bash -xec "[[ \$FOO == 'bar4 ' && \$BAR == $'\n\n' ]]" ++systemd-run --wait --pipe -p Environment='FOO="bar4 \\ "' -p Environment="BAR='\n\t'" \ ++ bash -xec "[[ \$FOO == 'bar4 \\ ' && \$BAR == $'\n\t' ]]" ++TEST_ENV_FILE="/tmp/test-env-file-$RANDOM- " ++cat >"$TEST_ENV_FILE" <