]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/execute: serialize fd_names only if there're fds to pass
authorMike Yuan <me@yhndnzj.com>
Thu, 30 Oct 2025 14:20:33 +0000 (15:20 +0100)
committerMike Yuan <me@yhndnzj.com>
Thu, 30 Oct 2025 16:47:29 +0000 (17:47 +0100)
src/core/execute-serialize.c
src/core/execute.c

index b7667b00a7181bd4aeb963196c95496ebfb3eb50..e8bc55462d0b19f64a1aced1714ee8dbdeb164e0 100644 (file)
@@ -1105,11 +1105,11 @@ static int exec_parameters_serialize(const ExecParameters *p, const ExecContext
                 r = serialize_fd_many(f, fds, "exec-parameters-fds", p->fds, p->n_socket_fds + p->n_storage_fds + p->n_extra_fds);
                 if (r < 0)
                         return r;
-        }
 
-        r = serialize_strv(f, "exec-parameters-fd-names", p->fd_names);
-        if (r < 0)
-                return r;
+                r = serialize_strv(f, "exec-parameters-fd-names", p->fd_names);
+                if (r < 0)
+                        return r;
+        }
 
         if (p->flags != 0) {
                 r = serialize_item_format(f, "exec-parameters-flags", "%u", (unsigned) p->flags);
index db91bc0a58cdd97b39584a73de9c4c9825bcf989..e0c0421a21eac90350915b5eb79b34ea8e2fabb0 100644 (file)
@@ -487,7 +487,7 @@ int exec_spawn(
         assert(context);
         assert(params);
         assert(!params->fds || FLAGS_SET(params->flags, EXEC_PASS_FDS));
-        assert(params->fds || (params->n_socket_fds + params->n_storage_fds + params->n_extra_fds == 0));
+        assert(params->fds || (params->n_socket_fds + params->n_storage_fds + params->n_extra_fds == 0 && !params->fd_names));
         assert(!params->files_env); /* We fill this field, ensure it comes NULL-initialized to us */
         assert(ret);