From 378607cc3e9d2d90c0158d40fcecd6834351dd80 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 2 Mar 2020 12:24:31 -0500 Subject: passwd: Make earlier entries override later ones --- passwd.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/passwd.c b/passwd.c index ffb7b8c..2640c70 100644 --- a/passwd.c +++ b/passwd.c @@ -79,7 +79,9 @@ struct bfs_users *bfs_parse_users(void) { struct passwd *entry = users->entries + i; struct trie_leaf *leaf = trie_insert_str(&users->by_name, entry->pw_name); if (leaf) { - leaf->value = entry; + if (!leaf->value) { + leaf->value = entry; + } } else { error = errno; goto fail_free; @@ -87,7 +89,9 @@ struct bfs_users *bfs_parse_users(void) { leaf = trie_insert_mem(&users->by_uid, &entry->pw_uid, sizeof(entry->pw_uid)); if (leaf) { - leaf->value = entry; + if (!leaf->value) { + leaf->value = entry; + } } else { error = errno; goto fail_free; @@ -209,7 +213,9 @@ struct bfs_groups *bfs_parse_groups(void) { struct group *entry = groups->entries + i; struct trie_leaf *leaf = trie_insert_str(&groups->by_name, entry->gr_name); if (leaf) { - leaf->value = entry; + if (!leaf->value) { + leaf->value = entry; + } } else { error = errno; goto fail_free; @@ -217,7 +223,9 @@ struct bfs_groups *bfs_parse_groups(void) { leaf = trie_insert_mem(&groups->by_gid, &entry->gr_gid, sizeof(entry->gr_gid)); if (leaf) { - leaf->value = entry; + if (!leaf->value) { + leaf->value = entry; + } } else { error = errno; goto fail_free; -- cgit v1.2.3