diff options
Diffstat (limited to 'src/basic')
-rw-r--r-- | src/basic/errno-list.h | 4 | ||||
-rw-r--r-- | src/basic/parse-util.c | 3 | ||||
-rw-r--r-- | src/basic/process-util.h | 7 | ||||
-rw-r--r-- | src/basic/signal-util.h | 7 |
4 files changed, 20 insertions, 1 deletions
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 <http://www.gnu.org/licenses/>. ***/ +//#include <stdbool.h> /* * 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); +} |