diff options
| author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2018-03-02 07:38:28 +0900 |
|---|---|---|
| committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2018-03-02 07:38:28 +0900 |
| commit | d4f0412de47f843d650dc0d92eb9740a364ab801 (patch) | |
| tree | 3ede2f08a8070b1f602cbc8a1c360be012c4cd31 /src/sysusers | |
| parent | fb5dfbc2d85233490f0712364e2f4f6fac706dde (diff) | |
| download | systemd-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.c | 57 |
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; } } |
