From: Zbigniew Jędrzejewski-Szmek Date: Mon, 30 Dec 2013 16:21:56 +0000 (-0500) Subject: core/service: check if mainpid matches only if it is set X-Git-Tag: v209~571 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=da13d4d20f8ca12e86863abbae5ed47bca936828 core/service: check if mainpid matches only if it is set https://bugzilla.redhat.com/show_bug.cgi?id=1047304 --- diff --git a/src/core/service.c b/src/core/service.c index eb9cd234a..ea47a5e32 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -3343,6 +3343,9 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) { assert(u); + log_debug_unit(u->id, "%s: Got notification message from PID %lu (%s...)", + u->id, (unsigned long) pid, tags && *tags ? tags[0] : "(empty)"); + if (s->notify_access == NOTIFY_NONE) { log_warning_unit(u->id, "%s: Got notification message from PID %lu, but reception is disabled.", @@ -3350,15 +3353,13 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) { return; } - if (s->notify_access == NOTIFY_MAIN && pid != s->main_pid) { + if (s->notify_access == NOTIFY_MAIN && s->main_pid != 0 && pid != s->main_pid) { log_warning_unit(u->id, "%s: Got notification message from PID %lu, but reception only permitted for PID %lu", u->id, (unsigned long) pid, (unsigned long) s->main_pid); return; } - log_debug_unit(u->id, "%s: Got message", u->id); - /* Interpret MAINPID= */ if ((e = strv_find_prefix(tags, "MAINPID=")) && (s->state == SERVICE_START ||