From 42e9967baf78030af67448c42a6e92dae142c409 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Mon, 17 Jun 2024 16:39:59 +0200 Subject: [PATCH 1/3] core/socket: use FOREACH_ARRAY at one more place --- src/core/socket.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/core/socket.c b/src/core/socket.c index 339d77fb975..4be308265a7 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -272,12 +272,10 @@ static int socket_add_default_dependencies(Socket *s) { } static bool socket_has_exec(Socket *s) { - unsigned i; - assert(s); - for (i = 0; i < _SOCKET_EXEC_COMMAND_MAX; i++) - if (s->exec_command[i]) + FOREACH_ARRAY(i, s->exec_command, _SOCKET_EXEC_COMMAND_MAX) + if (*i) return true; return false; From 42fdb14286a457fcad99a1e718e0b7b2ae6c9a8f Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Mon, 17 Jun 2024 07:21:43 +0200 Subject: [PATCH 2/3] core: cast ignored retval of deserialize_* to void Fixes CID#1547098 --- src/core/service.c | 12 ++++++------ src/core/socket.c | 3 +-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index 1e26a443646..92ce26c234c 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -3286,11 +3286,11 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, else s->main_exec_status.status = i; } else if (streq(key, "main-exec-status-start")) - deserialize_dual_timestamp(value, &s->main_exec_status.start_timestamp); + (void) deserialize_dual_timestamp(value, &s->main_exec_status.start_timestamp); else if (streq(key, "main-exec-status-exit")) - deserialize_dual_timestamp(value, &s->main_exec_status.exit_timestamp); + (void) deserialize_dual_timestamp(value, &s->main_exec_status.exit_timestamp); else if (streq(key, "main-exec-status-handoff")) - deserialize_dual_timestamp(value, &s->main_exec_status.handoff_timestamp); + (void) deserialize_dual_timestamp(value, &s->main_exec_status.handoff_timestamp); else if (STR_IN_SET(key, "main-command", "control-command")) { r = service_deserialize_exec_command(u, key, value); if (r < 0) @@ -3371,15 +3371,15 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, s->status_errno = i; } else if (streq(key, "watchdog-timestamp")) - deserialize_dual_timestamp(value, &s->watchdog_timestamp); + (void) deserialize_dual_timestamp(value, &s->watchdog_timestamp); else if (streq(key, "watchdog-original-usec")) - deserialize_usec(value, &s->watchdog_original_usec); + (void) deserialize_usec(value, &s->watchdog_original_usec); else if (streq(key, "watchdog-override-usec")) { if (deserialize_usec(value, &s->watchdog_override_usec) >= 0) s->watchdog_override_enable = true; } else if (streq(key, "reload-begin-usec")) - deserialize_usec(value, &s->reload_begin_usec); + (void) deserialize_usec(value, &s->reload_begin_usec); else log_unit_debug(u, "Unknown serialization key: %s", key); diff --git a/src/core/socket.c b/src/core/socket.c index 4be308265a7..63c4c1a7aa6 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -2823,8 +2823,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, log_unit_debug(u, "No matching ffs socket found: %s", value); } else if (streq(key, "trigger-ratelimit")) - deserialize_ratelimit(&s->trigger_limit, key, value); - + (void) deserialize_ratelimit(&s->trigger_limit, key, value); else log_unit_debug(UNIT(s), "Unknown serialization key: %s", key); From 9f5d8c3da4f505346bd1edfae907a2abcdbdc578 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Mon, 17 Jun 2024 07:47:20 +0200 Subject: [PATCH 3/3] core/service: fix accept-socket deserialization Follow-up for 45b1017488cef2a5bacdf82028ce900a311c9a1c --- src/core/service.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index 92ce26c234c..f37a941a6d4 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1363,7 +1363,7 @@ static int service_coldplug(Unit *u) { service_start_watchdog(s); if (UNIT_ISSET(s->accept_socket)) { - Socket* socket = SOCKET(UNIT_DEREF(s->accept_socket)); + Socket *socket = SOCKET(UNIT_DEREF(s->accept_socket)); if (socket->max_connections_per_source > 0) { SocketPeer *peer; @@ -3217,8 +3217,8 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, } else if (streq(key, "accept-socket")) { Unit *socket; - if (u->type != UNIT_SOCKET) { - log_unit_debug(u, "Failed to deserialize accept-socket: unit is not a socket"); + if (unit_name_to_type(value) != UNIT_SOCKET) { + log_unit_debug(u, "Deserialized accept-socket is not a socket unit, ignoring: %s", value); return 0; } @@ -3227,7 +3227,7 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, log_unit_debug_errno(u, r, "Failed to load accept-socket unit '%s': %m", value); else { unit_ref_set(&s->accept_socket, u, socket); - SOCKET(socket)->n_connections++; + ASSERT_PTR(SOCKET(socket))->n_connections++; } } else if (streq(key, "socket-fd")) {