summaryrefslogtreecommitdiff
path: root/src/sysusers
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-03-02 07:38:28 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2018-03-02 07:38:28 +0900
commitd4f0412de47f843d650dc0d92eb9740a364ab801 (patch)
tree3ede2f08a8070b1f602cbc8a1c360be012c4cd31 /src/sysusers
parentfb5dfbc2d85233490f0712364e2f4f6fac706dde (diff)
downloadsystemd-d4f0412de47f843d650dc0d92eb9740a364ab801.tar.gz
sysusers: do not implicitly create group by 'm' if 'u' with the same name exists
The commit e2c2060f7b3b11fa3cca8899d80963b7a05cc4ab makes 'm' lines disturb 'u' lines. This fixes the disturbance.
Diffstat (limited to 'src/sysusers')
-rw-r--r--src/sysusers/sysusers.c57
1 files changed, 26 insertions, 31 deletions
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
index 80a033054b..629bd883f1 100644
--- a/src/sysusers/sysusers.c
+++ b/src/sysusers/sysusers.c
@@ -1259,40 +1259,11 @@ static int add_implicit(void) {
int r;
/* Implicitly create additional users and groups, if they were listed in "m" lines */
-
ORDERED_HASHMAP_FOREACH_KEY(l, g, members, iterator) {
- Item *i;
char **m;
- i = ordered_hashmap_get(groups, g);
- if (!i) {
- _cleanup_(item_freep) Item *j = NULL;
-
- r = ordered_hashmap_ensure_allocated(&groups, &string_hash_ops);
- if (r < 0)
- return log_oom();
-
- j = new0(Item, 1);
- if (!j)
- return log_oom();
-
- j->type = ADD_GROUP;
- j->name = strdup(g);
- if (!j->name)
- return log_oom();
-
- r = ordered_hashmap_put(groups, j->name, j);
- if (r < 0)
- return log_oom();
-
- log_debug("Adding implicit group '%s' due to m line", j->name);
- j = NULL;
- }
-
- STRV_FOREACH(m, l) {
-
- i = ordered_hashmap_get(users, *m);
- if (!i) {
+ STRV_FOREACH(m, l)
+ if (!ordered_hashmap_get(users, *m)) {
_cleanup_(item_freep) Item *j = NULL;
r = ordered_hashmap_ensure_allocated(&users, &string_hash_ops);
@@ -1315,6 +1286,30 @@ static int add_implicit(void) {
log_debug("Adding implicit user '%s' due to m line", j->name);
j = NULL;
}
+
+ if (!(ordered_hashmap_get(users, g) ||
+ ordered_hashmap_get(groups, g))) {
+ _cleanup_(item_freep) Item *j = NULL;
+
+ r = ordered_hashmap_ensure_allocated(&groups, &string_hash_ops);
+ if (r < 0)
+ return log_oom();
+
+ j = new0(Item, 1);
+ if (!j)
+ return log_oom();
+
+ j->type = ADD_GROUP;
+ j->name = strdup(g);
+ if (!j->name)
+ return log_oom();
+
+ r = ordered_hashmap_put(groups, j->name, j);
+ if (r < 0)
+ return log_oom();
+
+ log_debug("Adding implicit group '%s' due to m line", j->name);
+ j = NULL;
}
}