From: Yu Watanabe Date: Fri, 29 Dec 2017 08:03:54 +0000 (+0900) Subject: basic: introduce *_to_string_with_check() functions X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=6c33853a2de7ada8d55d411f6a407ff1b69fa526;p=elogind.git basic: introduce *_to_string_with_check() functions They are used in later commits. --- diff --git a/src/basic/errno-list.h b/src/basic/errno-list.h index acd70950d..0f8716160 100644 --- a/src/basic/errno-list.h +++ b/src/basic/errno-list.h @@ -20,6 +20,7 @@ along with systemd; If not, see . ***/ +//#include /* * MAX_ERRNO is defined as 4095 in linux/err.h * We use the same value here. @@ -30,3 +31,6 @@ const char *errno_to_name(int id); int errno_from_name(const char *name); #if 0 /// UNNEEDED by elogind #endif // 0 +static inline bool errno_is_valid(int n) { + return n > 0 && n <= ERRNO_MAX; +} diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c index 37f6a08c3..ea902ed96 100644 --- a/src/basic/parse-util.c +++ b/src/basic/parse-util.c @@ -288,7 +288,8 @@ int parse_errno(const char *t) { if (r < 0) return r; - if (e < 0 || e > ERRNO_MAX) + /* 0 is also allowed here */ + if (!errno_is_valid(e) && e != 0) return -ERANGE; return e; diff --git a/src/basic/process-util.h b/src/basic/process-util.h index 9128d0b2c..efefbee4a 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -149,6 +149,13 @@ static inline bool pid_is_valid(pid_t p) { return p > 0; } +static inline int sched_policy_to_string_alloc_with_check(int n, char **s) { + if (!sched_policy_is_valid(n)) + return -EINVAL; + + return sched_policy_to_string_alloc(n, s); +} + #if 0 /// UNNEEDED by elogind int ioprio_parse_priority(const char *s, int *ret); #endif // 0 diff --git a/src/basic/signal-util.h b/src/basic/signal-util.h index 2343ca80f..a66699179 100644 --- a/src/basic/signal-util.h +++ b/src/basic/signal-util.h @@ -59,3 +59,10 @@ static inline void block_signals_reset(sigset_t *ss) { static inline bool SIGNAL_VALID(int signo) { return signo > 0 && signo < _NSIG; } + +static inline const char* signal_to_string_with_check(int n) { + if (!SIGNAL_VALID(n)) + return NULL; + + return signal_to_string(n); +}