From 72cfcb1fa636017611ce0aeddbe2970003a01cfa Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 2 Sep 2020 10:05:54 -0400 Subject: pwcache: Fix an invalid free if strdup()ing the group name fails --- pwcache.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pwcache.c b/pwcache.c index d488625..70869bb 100644 --- a/pwcache.c +++ b/pwcache.c @@ -193,16 +193,17 @@ struct bfs_groups *bfs_parse_groups(void) { error = errno; goto fail_end; } - ent = groups->entries + darray_length(groups->entries) - 1; + + void *members = ent->gr_mem; + ent->gr_mem = NULL; + ent->gr_name = strdup(ent->gr_name); if (!ent->gr_name) { error = errno; goto fail_end; } - void *members = ent->gr_mem; - ent->gr_mem = NULL; for (char *mem = next_gr_mem(&members); mem; mem = next_gr_mem(&members)) { char *dup = strdup(mem); if (!dup) { -- cgit v1.2.3