basic: introduce *_to_string_with_check() functions
They are used in later commits.
This commit is contained in:
@@ -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.
|
||||
@@ -28,3 +29,6 @@
|
||||
|
||||
const char *errno_to_name(int id);
|
||||
int errno_from_name(const char *name);
|
||||
static inline bool errno_is_valid(int n) {
|
||||
return n > 0 && n <= ERRNO_MAX;
|
||||
}
|
||||
|
||||
@@ -283,7 +283,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;
|
||||
|
||||
@@ -137,6 +137,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);
|
||||
}
|
||||
|
||||
int ioprio_parse_priority(const char *s, int *ret);
|
||||
|
||||
pid_t getpid_cached(void);
|
||||
|
||||
@@ -24,6 +24,14 @@
|
||||
|
||||
int secure_bits_to_string_alloc(int i, char **s);
|
||||
int secure_bits_from_string(const char *s);
|
||||
|
||||
static inline bool secure_bits_is_valid(int i) {
|
||||
return ((SECURE_ALL_BITS | SECURE_ALL_LOCKS) & i) == i;
|
||||
}
|
||||
|
||||
static inline int secure_bits_to_string_alloc_with_check(int n, char **s) {
|
||||
if (!secure_bits_is_valid(n))
|
||||
return -EINVAL;
|
||||
|
||||
return secure_bits_to_string_alloc(n, s);
|
||||
}
|
||||
|
||||
@@ -55,3 +55,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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user