]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/exec-invoke: never override acquired user cred with fallback one
authorMike Yuan <me@yhndnzj.com>
Tue, 8 Apr 2025 14:43:28 +0000 (16:43 +0200)
committerMike Yuan <me@yhndnzj.com>
Wed, 9 Apr 2025 17:30:17 +0000 (19:30 +0200)
src/core/exec-invoke.c

index 7e2cdd8c46cc15ef269fb2be72d1c9b85bbf51bf..1c01a466159a86fee950045435fb2c4cc0795b96 100644 (file)
@@ -1973,7 +1973,9 @@ static int build_environment(
          * could cause problem for e.g. getty, since login doesn't override $HOME, and $LOGNAME and $SHELL don't
          * really make much sense since we're not logged in. Hence we conditionalize the three based on
          * SetLoginEnvironment= switch. */
-        if (!c->user && !c->dynamic_user && p->runtime_scope == RUNTIME_SCOPE_SYSTEM) {
+        if (!username && !c->dynamic_user && p->runtime_scope == RUNTIME_SCOPE_SYSTEM) {
+                assert(!c->user);
+
                 r = get_fixed_user("root", &username, NULL, NULL, &home, &shell);
                 if (r < 0)
                         return log_exec_debug_errno(c,