diff --git a/src/nss-systemd/userdb-glue.c b/src/nss-systemd/userdb-glue.c index 5bc89d5f9b..dbe2c40d4d 100644 --- a/src/nss-systemd/userdb-glue.c +++ b/src/nss-systemd/userdb-glue.c @@ -229,6 +229,8 @@ int nss_pack_group_record( assert(g->group_name); required = strlen(g->group_name) + 1; + required += strlen(PASSWORD_SEE_SHADOW) + 1; + STRV_FOREACH(m, g->members) { required += sizeof(char*); /* space for ptr array entry */ required += strlen(*m) + 1; @@ -267,12 +269,14 @@ int nss_pack_group_record( array[n] = NULL; *gr = (struct group) { - .gr_name = strcpy(p, g->group_name), + .gr_name = p, .gr_gid = g->gid, - .gr_passwd = (char*) PASSWORD_SEE_SHADOW, .gr_mem = array, }; + gr->gr_passwd = stpcpy(gr->gr_name, g->group_name) + 1; + strcpy(gr->gr_passwd, PASSWORD_SEE_SHADOW); + return 0; }