util: add parse_uid_range() helper function
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user