From 03de302a31323739b454a5746795c0f4150b87e8 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 26 Jan 2020 21:51:12 +0900 Subject: [PATCH] util: add parse_uid_range() helper function --- src/basic/user-util.c | 23 +++++++++++++++++++++++ src/basic/user-util.h | 1 + 2 files changed, 24 insertions(+) diff --git a/src/basic/user-util.c b/src/basic/user-util.c index 6d22fe31c3d..a491f5505e2 100644 --- a/src/basic/user-util.c +++ b/src/basic/user-util.c @@ -62,6 +62,29 @@ int parse_uid(const char *s, uid_t *ret) { return 0; } +int parse_uid_range(const char *s, uid_t *ret_lower, uid_t *ret_upper) { + uint32_t u, l; + int r; + + assert(s); + assert(ret_lower); + assert(ret_upper); + + r = parse_range(s, &l, &u); + if (r < 0) + return r; + + if (l > u) + return -EINVAL; + + if (!uid_is_valid(l) || !uid_is_valid(u)) + return -ENXIO; + + *ret_lower = l; + *ret_upper = u; + return 0; +} + char* getlogname_malloc(void) { uid_t uid; struct stat st; diff --git a/src/basic/user-util.h b/src/basic/user-util.h index 714e83082c9..6796ac42c1d 100644 --- a/src/basic/user-util.h +++ b/src/basic/user-util.h @@ -19,6 +19,7 @@ static inline bool gid_is_valid(gid_t gid) { } int parse_uid(const char *s, uid_t* ret_uid); +int parse_uid_range(const char *s, uid_t *ret_lower, uid_t *ret_upper); static inline int parse_gid(const char *s, gid_t *ret_gid) { return parse_uid(s, (uid_t*) ret_gid); -- 2.47.3