]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tree-wide: go via user_record_gid() accessor for UserRecord's .gid field
authorLennart Poettering <lennart@poettering.net>
Mon, 17 Mar 2025 21:21:58 +0000 (22:21 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 17 Mar 2025 21:21:58 +0000 (22:21 +0100)
Sometimes we went for the field directly, where we really should go via
the accessor. Fix it.

src/home/homectl.c
src/home/homework.c
src/nspawn/nspawn-bind-user.c
src/shared/user-record-nss.c
src/shared/user-record-show.c

index 4d68bfd3dca7403924f63138a5f2c20b6ad2bcaf..c4c1ad9761f5d71dd202a1e006ffdcccab356863 100644 (file)
@@ -2664,7 +2664,7 @@ static int acquire_group_list(char ***ret) {
                                 if (r < 0 && r != -ESRCH)
                                         return log_debug_errno(r, "Failed to check if matching user exists for group '%s': %m", gr->group_name);
 
-                                if (r >= 0 && ur->gid == gr->gid)
+                                if (r >= 0 && user_record_gid(ur) == gr->gid)
                                         continue;
                         }
 
index 51adce5f3cd1b996ccce006fe7b7ed30f281edfe..93a4e8dc28b3b9568f67295859c059e333571f83 100644 (file)
@@ -1062,7 +1062,7 @@ static int copy_skel(UserRecord *h, int root_fd, const char *skel) {
         assert(h);
         assert(root_fd >= 0);
 
-        r = copy_tree_at(AT_FDCWD, skel, root_fd, ".", h->uid, h->gid, COPY_MERGE|COPY_REPLACE, NULL, NULL);
+        r = copy_tree_at(AT_FDCWD, skel, root_fd, ".", h->uid, user_record_gid(h), COPY_MERGE|COPY_REPLACE, NULL, NULL);
         if (r == -ENOENT) {
                 log_info("Skeleton directory %s missing, ignoring.", skel);
                 return 0;
index 4ec8393b02c57b76d71295beff3d53b0ffa5a3ce..61bef10b3a7fdb016fec22dd79fa9839bc3afba7 100644 (file)
@@ -93,7 +93,7 @@ static int convert_user(
 
         assert(u);
         assert(g);
-        assert(u->gid == g->gid);
+        assert(user_record_gid(u) == g->gid);
 
         r = check_etc_passwd_collisions(directory, u->user_name, UID_INVALID);
         if (r < 0)
@@ -250,7 +250,7 @@ int bind_user_prepare(
                 if (u->uid >= uid_shift && u->uid < uid_shift + uid_range)
                         return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "UID of user '%s' to map is already in container UID range, refusing.", u->user_name);
 
-                r = groupdb_by_gid(u->gid, /* match= */ NULL, USERDB_DONT_SYNTHESIZE_INTRINSIC|USERDB_DONT_SYNTHESIZE_FOREIGN, &g);
+                r = groupdb_by_gid(user_record_gid(u), /* match= */ NULL, USERDB_DONT_SYNTHESIZE_INTRINSIC|USERDB_DONT_SYNTHESIZE_FOREIGN, &g);
                 if (r < 0)
                         return log_error_errno(r, "Failed to resolve group of user '%s': %m", u->user_name);
 
index 9223a2e6caa6fe18e16a517502f45e0165e2f483..9797c25fa4471a3df34c2802d1a6455915067e07 100644 (file)
@@ -141,7 +141,7 @@ int nss_passwd_to_user_record(
                         &hr->json,
                         SD_JSON_BUILD_PAIR("userName", SD_JSON_BUILD_STRING(hr->user_name)),
                         SD_JSON_BUILD_PAIR("uid", SD_JSON_BUILD_UNSIGNED(hr->uid)),
-                        SD_JSON_BUILD_PAIR("gid", SD_JSON_BUILD_UNSIGNED(hr->gid)),
+                        SD_JSON_BUILD_PAIR("gid", SD_JSON_BUILD_UNSIGNED(user_record_gid(hr))),
                         SD_JSON_BUILD_PAIR_CONDITION(!!hr->real_name, "realName", SD_JSON_BUILD_STRING(hr->real_name)),
                         SD_JSON_BUILD_PAIR_CONDITION(!!hr->home_directory, "homeDirectory", SD_JSON_BUILD_STRING(hr->home_directory)),
                         SD_JSON_BUILD_PAIR_CONDITION(!!hr->shell, "shell", SD_JSON_BUILD_STRING(hr->shell)),
index 5f8ad9ca0bf6dabb4c489d7a423e50b52079b32c..ad0c345bd970356960be734db8dc78648cd01e4c 100644 (file)
@@ -216,18 +216,18 @@ void user_record_show(UserRecord *hr, bool show_full_group_info) {
         }
         if (uid_is_valid(hr->uid))
                 printf("         UID: " UID_FMT "\n", hr->uid);
-        if (gid_is_valid(hr->gid)) {
+        if (gid_is_valid(user_record_gid(hr))) {
                 if (show_full_group_info) {
                         _cleanup_(group_record_unrefp) GroupRecord *gr = NULL;
 
-                        r = groupdb_by_gid(hr->gid, /* match= */ NULL, /* flags= */ 0, &gr);
+                        r = groupdb_by_gid(user_record_gid(hr), /* match= */ NULL, /* flags= */ 0, &gr);
                         if (r < 0) {
                                 errno = -r;
-                                printf("         GID: " GID_FMT " (unresolvable: %m)\n", hr->gid);
+                                printf("         GID: " GID_FMT " (unresolvable: %m)\n", user_record_gid(hr));
                         } else
-                                printf("         GID: " GID_FMT " (%s)\n", hr->gid, gr->group_name);
+                                printf("         GID: " GID_FMT " (%s)\n", user_record_gid(hr), gr->group_name);
                 } else
-                        printf("         GID: " GID_FMT "\n", hr->gid);
+                        printf("         GID: " GID_FMT "\n", user_record_gid(hr));
         } else if (uid_is_valid(hr->uid)) /* Show UID as GID if not separately configured */
                 printf("         GID: " GID_FMT "\n", (gid_t) hr->uid);