From 54191eb3e74a8fa8bdd049471e630541c65e4f25 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 14 Jul 2017 18:57:54 +0200 Subject: [PATCH] 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. --- src/basic/parse-util.c | 2 +- src/basic/process-util.h | 4 ++++ src/login/logind-session.c | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c index 4532f222c8..89bb667c5f 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 17746b4ebf..b45d60dbd1 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 11d9e8ff5e..3778bb7d70 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))