core/service: use switch in service_notify_message_authorized()

This commit is contained in:
Mike Yuan
2024-07-21 22:48:54 +02:00
parent 7d6e1293b2
commit d3d0e36156
+16 -8
View File
@@ -4345,24 +4345,31 @@ static bool service_notify_message_authorized(Service *s, pid_t pid) {
assert(s);
assert(pid_is_valid(pid));
NotifyAccess notify_access = service_get_notify_access(s);
switch (service_get_notify_access(s)) {
if (notify_access == NOTIFY_NONE) {
case NOTIFY_NONE:
/* Warn level only if no notifications are expected */
log_unit_warning(UNIT(s), "Got notification message from PID "PID_FMT", but reception is disabled", pid);
return false;
}
if (notify_access == NOTIFY_MAIN && pid != s->main_pid.pid) {
case NOTIFY_ALL:
return true;
case NOTIFY_MAIN:
if (pid == s->main_pid.pid)
return true;
if (pidref_is_set(&s->main_pid))
log_unit_debug(UNIT(s), "Got notification message from PID "PID_FMT", but reception only permitted for main PID "PID_FMT, pid, s->main_pid.pid);
else
log_unit_debug(UNIT(s), "Got notification message from PID "PID_FMT", but reception only permitted for main PID which is currently not known", pid);
return false;
}
if (notify_access == NOTIFY_EXEC && pid != s->main_pid.pid && pid != s->control_pid.pid) {
case NOTIFY_EXEC:
if (pid == s->main_pid.pid || pid == s->control_pid.pid)
return true;
if (pidref_is_set(&s->main_pid) && pidref_is_set(&s->control_pid))
log_unit_debug(UNIT(s), "Got notification message from PID "PID_FMT", but reception only permitted for main PID "PID_FMT" and control PID "PID_FMT,
pid, s->main_pid.pid, s->control_pid.pid);
@@ -4374,9 +4381,10 @@ static bool service_notify_message_authorized(Service *s, pid_t pid) {
log_unit_debug(UNIT(s), "Got notification message from PID "PID_FMT", but reception only permitted for main PID and control PID which are currently not known", pid);
return false;
}
return true;
default:
assert_not_reached();
}
}
static void service_notify_message(