core/exec-invoke: don't set $TMPDIR if sandboxing is disabled (#37637)

Follow-ups for #37271.
This commit is contained in:
Yu Watanabe
2025-05-28 09:46:06 +09:00
committed by GitHub
3 changed files with 15 additions and 1 deletions
+1 -1
View File
@@ -2193,7 +2193,7 @@ static int build_environment(
}
assert(c->private_var_tmp >= 0 && c->private_var_tmp < _PRIVATE_TMP_MAX);
if (c->private_tmp != c->private_var_tmp) {
if (needs_sandboxing && c->private_tmp != c->private_var_tmp) {
assert(c->private_tmp == PRIVATE_TMP_DISCONNECTED);
assert(c->private_var_tmp == PRIVATE_TMP_NO);
+4
View File
@@ -493,6 +493,10 @@ static void test_exec_privatetmp(Manager *m) {
test(m, "exec-privatetmp-yes.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_FAILURE : EXIT_NAMESPACE, CLD_EXITED);
test(m, "exec-privatetmp-disabled-by-prefix.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_FAILURE : EXIT_NAMESPACE, CLD_EXITED);
(void) unlink("/tmp/test-exec_privatetmp_disconnected");
test(m, "exec-privatetmp-disconnected-nodefaultdeps-nor-sandboxing.service", 0, CLD_EXITED);
ASSERT_OK_ERRNO(access("/tmp/test-exec_privatetmp_disconnected", F_OK));
FOREACH_STRING(s,
"exec-privatetmp-disconnected.service",
"exec-privatetmp-disconnected-defaultdependencies-no.service",
@@ -0,0 +1,10 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test for PrivateTmp=disconnected with DefaultDependencies=no + no sandboxing
DefaultDependencies=no
[Service]
ExecStart=+touch /tmp/test-exec_privatetmp_disconnected
ExecStart=+sh -x -c 'test x$$TMPDIR = x'
Type=oneshot
PrivateTmp=disconnected