From: Yu Watanabe Date: Sun, 26 Jan 2020 12:51:12 +0000 (+0900) Subject: util: add parse_uid_range() helper function X-Git-Tag: v245-rc1~38^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=03de302a31323739b454a5746795c0f4150b87e8;p=thirdparty%2Fsystemd.git util: add parse_uid_range() helper function --- 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);