From: Lennart Poettering Date: Thu, 8 Apr 2010 01:48:52 +0000 (+0200) Subject: service: verify PID is valid when reading it from PID file X-Git-Tag: 0.git+20100605+dfd8ee-1~198 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b8c597d5d21e83966bdee8a701e6d994aaf650ee;p=systemd service: verify PID is valid when reading it from PID file --- diff --git a/service.c b/service.c index 3d840cbd..832c7b32 100644 --- a/service.c +++ b/service.c @@ -839,7 +839,13 @@ static int service_load_pid_file(Service *s) { if ((unsigned long) (pid_t) p != p) return -ERANGE; - s->main_pid = p; + if (kill((pid_t) p, 0) < 0 && errno != EPERM) { + log_warning("PID %llu read from file %s does not exist. Your service or init script might be broken.", + (unsigned long long) p, s->pid_file); + return -ESRCH; + } + + s->main_pid = (pid_t) p; s->main_pid_known = true; return 0;