]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
uid-range: make uid_map_search_root() take UIDRangeUsernsMode
authorMike Yuan <me@yhndnzj.com>
Wed, 8 Jan 2025 11:44:33 +0000 (12:44 +0100)
committerMike Yuan <me@yhndnzj.com>
Sat, 11 Jan 2025 14:53:15 +0000 (15:53 +0100)
src/basic/namespace-util.c
src/basic/uid-range.c
src/basic/uid-range.h

index 6ece5108dfb37fa13140fd20d1fc9b3c5a9829ce..8522123987777a6e631826a8050bec7d9479e817 100644 (file)
@@ -624,12 +624,12 @@ int userns_get_base_uid(int userns_fd, uid_t *ret_uid, gid_t *ret_gid) {
                 return r;
 
         uid_t uid;
-        r = uid_map_search_root(pid, "uid_map", &uid);
+        r = uid_map_search_root(pid, UID_RANGE_USERNS_OUTSIDE, &uid);
         if (r < 0)
                 return r;
 
         gid_t gid;
-        r = uid_map_search_root(pid, "gid_map", &gid);
+        r = uid_map_search_root(pid, GID_RANGE_USERNS_OUTSIDE, &gid);
         if (r < 0)
                 return r;
 
index cbae1bbf78a0fecc04e174b56944f780032810d6..99984d8a4e98bf04e138cf5db518be29e7be5a2c 100644 (file)
@@ -324,13 +324,13 @@ bool uid_range_equal(const UIDRange *a, const UIDRange *b) {
         return true;
 }
 
-int uid_map_search_root(pid_t pid, const char *filename, uid_t *ret) {
+int uid_map_search_root(pid_t pid, UIDRangeUsernsMode mode, uid_t *ret) {
         int r;
 
         assert(pid_is_valid(pid));
-        assert(filename);
+        assert(IN_SET(mode, UID_RANGE_USERNS_OUTSIDE, GID_RANGE_USERNS_OUTSIDE));
 
-        const char *p = procfs_file_alloca(pid, filename);
+        const char *p = procfs_file_alloca(pid, mode == UID_RANGE_USERNS_OUTSIDE ? "uid_map" : "gid_map");
         _cleanup_fclose_ FILE *f = fopen(p, "re");
         if (!f) {
                 if (errno != ENOENT)
index 41ca671dd66c0a3e6c603db9a5d03c57cde987ec..21e5c7a17b4ab0f318bba6165dd3e7007358189b 100644 (file)
@@ -15,7 +15,7 @@ typedef struct UIDRange {
         size_t n_entries;
 } UIDRange;
 
-UIDRange *uid_range_free(UIDRange *range);
+UIDRangeuid_range_free(UIDRange *range);
 DEFINE_TRIVIAL_CLEANUP_FUNC(UIDRange*, uid_range_free);
 
 int uid_range_add_internal(UIDRange **range, uid_t start, uid_t nr, bool coalesce);
@@ -77,4 +77,4 @@ 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, const char *filename, uid_t *ret);
+int uid_map_search_root(pid_t pid, UIDRangeUsernsMode mode, uid_t *ret);