From d3eb74f8f844cf3dc7913d861070ffda66035933 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 18 Oct 2023 14:03:36 +0200 Subject: [PATCH] fd-util: add new helper close_many_unset() --- src/basic/fd-util.c | 7 +++++++ src/basic/fd-util.h | 1 + src/core/execute.c | 3 +-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index 33c4a057ad..5fdbf8f269 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -99,6 +99,13 @@ void close_many(const int fds[], size_t n_fd) { safe_close(fds[i]); } +void close_many_unset(int fds[], size_t n_fd) { + assert(fds || n_fd <= 0); + + for (size_t i = 0; i < n_fd; i++) + fds[i] = safe_close(fds[i]); +} + void close_many_and_free(int *fds, size_t n_fds) { assert(fds || n_fds <= 0); diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h index 1f5ed828b7..b2efdc9c23 100644 --- a/src/basic/fd-util.h +++ b/src/basic/fd-util.h @@ -30,6 +30,7 @@ static inline int safe_close_above_stdio(int fd) { } void close_many(const int fds[], size_t n_fd); +void close_many_unset(int fds[], size_t n_fd); void close_many_and_free(int *fds, size_t n_fds); int fclose_nointr(FILE *f); diff --git a/src/core/execute.c b/src/core/execute.c index ce947a7a52..46fb8805b3 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -2251,8 +2251,7 @@ void exec_params_serialized_done(ExecParameters *p) { if (!p) return; - for (size_t i = 0; p->fds && i < p->n_socket_fds + p->n_storage_fds; i++) - p->fds[i] = safe_close(p->fds[i]); + close_many_unset(p->fds, p->n_socket_fds + p->n_storage_fds); p->cgroup_path = mfree(p->cgroup_path); -- 2.25.1