From dbf13060e19e3a8f587ad9908a9bfeec23ba552c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 19 Feb 2026 15:02:48 +0100 Subject: [PATCH] uid-range: add uid_range_base() that returns the lowest entry --- src/basic/uid-range.c | 15 +++++++++++++++ src/basic/uid-range.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/basic/uid-range.c b/src/basic/uid-range.c index 81e736ef5af..c498b5afe1f 100644 --- a/src/basic/uid-range.c +++ b/src/basic/uid-range.c @@ -379,3 +379,18 @@ int uid_map_search_root(pid_t pid, UIDRangeUsernsMode mode, uid_t *ret) { } } } + +uid_t uid_range_base(const UIDRange *range) { + + /* Returns the lowest UID in the range (notw that elements are sorted, hence we just need to look at + * the first one that is populated. */ + + if (uid_range_is_empty(range)) + return UID_INVALID; + + FOREACH_ARRAY(e, range->entries, range->n_entries) + if (e->nr > 0) + return e->start; + + return UID_INVALID; +} diff --git a/src/basic/uid-range.h b/src/basic/uid-range.h index b74ab9d3323..c28b02fa7d1 100644 --- a/src/basic/uid-range.h +++ b/src/basic/uid-range.h @@ -54,3 +54,5 @@ int uid_range_load_userns_by_fd(int userns_fd, UIDRangeUsernsMode mode, UIDRange bool uid_range_overlaps(const UIDRange *range, uid_t start, uid_t nr); int uid_map_search_root(pid_t pid, UIDRangeUsernsMode mode, uid_t *ret); + +uid_t uid_range_base(const UIDRange *range); -- 2.47.3