]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sysusers: do not create duplicated groups when create users
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 1 Mar 2018 18:27:34 +0000 (03:27 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 1 Mar 2018 22:12:38 +0000 (07:12 +0900)
The commit e2c2060f7b3b11fa3cca8899d80963b7a05cc4ab introduces
the issue #8315.

Fixes #8315.

src/sysusers/sysusers.c

index fab54b50402aa718a318a9c126cde15738bc141e..80a033054b8c7131fa30d11ca970fc48e69cb7a6 100644 (file)
@@ -1209,12 +1209,25 @@ static int process_item(Item *i) {
 
         switch (i->type) {
 
-        case ADD_USER:
-                r = add_group(i);
-                if (r < 0)
-                        return r;
+        case ADD_USER: {
+                Item *j;
+
+                j = ordered_hashmap_get(groups, i->name);
+                if (j && j->todo_group) {
+                        /* When the group with the same name is already in queue,
+                         * use the information about the group and do not create
+                         * duplicated group entry. */
+                        i->gid_set = j->gid_set;
+                        i->gid = j->gid;
+                        i->id_set_strict = true;
+                } else {
+                        r = add_group(i);
+                        if (r < 0)
+                                return r;
+                }
 
                 return add_user(i);
+        }
 
         case ADD_GROUP:
                 return add_group(i);