From: Lennart Poettering Date: Fri, 14 Jul 2017 16:57:54 +0000 (+0200) Subject: parse-util: introduce pid_is_valid() X-Git-Tag: v235~281^2~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=54191eb3e74a8fa8bdd049471e630541c65e4f25;p=thirdparty%2Fsystemd.git parse-util: introduce pid_is_valid() Checking for validity of a PID is relatively easy, but let's add a helper cal for this too, in order to make things more readable and more similar to uid_is_valid(), gid_is_valid() and friends. --- diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c index 4532f222c8a..89bb667c5fe 100644 --- a/src/basic/parse-util.c +++ b/src/basic/parse-util.c @@ -59,7 +59,7 @@ int parse_pid(const char *s, pid_t* ret_pid) { if ((unsigned long) pid != ul) return -ERANGE; - if (pid <= 0) + if (!pid_is_valid(pid)) return -ERANGE; *ret_pid = pid; diff --git a/src/basic/process-util.h b/src/basic/process-util.h index 17746b4ebfa..b45d60dbd14 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -118,6 +118,10 @@ static inline bool ioprio_priority_is_valid(int i) { return i >= 0 && i < IOPRIO_BE_NR; } +static inline bool pid_is_valid(pid_t p) { + return p > 0; +} + int ioprio_parse_priority(const char *s, int *ret); pid_t getpid_cached(void); diff --git a/src/login/logind-session.c b/src/login/logind-session.c index 11d9e8ff5e6..3778bb7d705 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -45,6 +45,7 @@ #include "terminal-util.h" #include "user-util.h" #include "util.h" +#include "process-util.h" #define RELEASE_USEC (20*USEC_PER_SEC) @@ -281,7 +282,7 @@ int session_save(Session *s) { if (!s->vtnr) fprintf(f, "POSITION=%u\n", s->position); - if (s->leader > 0) + if (pid_is_valid(s->leader)) fprintf(f, "LEADER="PID_FMT"\n", s->leader); if (audit_session_is_valid(s->audit_id))