if (NULL != cp || i != FIELDS)
return NULL;
- sgroup.sg_name = fields[0];
+ sgroup.sg_namp = fields[0];
sgroup.sg_passwd = fields[1];
free(sgroup.sg_adm);
setsgent ();
while ((sgrp = getsgent ()) != NULL) {
- if (streq(name, sgrp->sg_name)) {
+ if (streq(name, sgrp->sg_namp)) {
break;
}
}
}
/* calculate the required buffer size */
- size = strlen (sgrp->sg_name) + strlen (sgrp->sg_passwd) + 10;
+ size = strlen (sgrp->sg_namp) + strlen (sgrp->sg_passwd) + 10;
for (i = 0; (NULL != sgrp->sg_adm) && (NULL != sgrp->sg_adm[i]); i++) {
size += strlen (sgrp->sg_adm[i]) + 1;
}
/*
* Copy the group name and passwd.
*/
- cp = stpcpy(stpcpy(cp, sgrp->sg_name), ":");
+ cp = stpcpy(stpcpy(cp, sgrp->sg_namp), ":");
cp = stpcpy(stpcpy(cp, sgrp->sg_passwd), ":");
/*
*/
struct sgrp {
- char *sg_name; /* group name */
+ char *sg_namp; /* group name */
char *sg_passwd; /* group password */
char **sg_adm; /* group administrator list */
char **sg_mem; /* group membership list */
/* Do the same as the other _dup function, even if we know the
* structure. */
/*@-mustfreeonly@*/
- sg->sg_name = strdup (sgent->sg_name);
+ sg->sg_namp = strdup (sgent->sg_namp);
/*@=mustfreeonly@*/
- if (NULL == sg->sg_name) {
+ if (NULL == sg->sg_namp) {
free (sg);
return NULL;
}
sg->sg_passwd = strdup (sgent->sg_passwd);
/*@=mustfreeonly@*/
if (NULL == sg->sg_passwd) {
- free (sg->sg_name);
+ free (sg->sg_namp);
free (sg);
return NULL;
}
/*@=mustfreeonly@*/
if (NULL == sg->sg_adm) {
free (sg->sg_passwd);
- free (sg->sg_name);
+ free (sg->sg_namp);
free (sg);
return NULL;
}
}
free (sg->sg_adm);
free (sg->sg_passwd);
- free (sg->sg_name);
+ free (sg->sg_namp);
free (sg);
return NULL;
}
}
free (sg->sg_adm);
free (sg->sg_passwd);
- free (sg->sg_name);
+ free (sg->sg_namp);
free (sg);
return NULL;
}
}
free (sg->sg_adm);
free (sg->sg_passwd);
- free (sg->sg_name);
+ free (sg->sg_namp);
free (sg);
return NULL;
}
sgr_free(/*@only@*/struct sgrp *sgent)
{
size_t i;
- free (sgent->sg_name);
+ free (sgent->sg_namp);
if (NULL != sgent->sg_passwd)
free(strzero(sgent->sg_passwd));
{
const struct sgrp *gr = ent;
- return gr->sg_name;
+ return gr->sg_namp;
}
static void *gshadow_parse (const char *line)
const struct sgrp *sg = ent;
if ( (NULL == sg)
- || (valid_field (sg->sg_name, ":\n") == -1)
+ || (valid_field (sg->sg_namp, ":\n") == -1)
|| (valid_field (sg->sg_passwd, ":\n") == -1)) {
return -1;
}
* group, but there are no entries in
* gshadow, create one.
*/
- newsg.sg_name = name;
+ newsg.sg_namp = name;
/* newsg.sg_passwd = NULL; will be set later */
newsg.sg_adm = ∅
newsg.sg_mem = dup_list (gr->gr_mem);
if (sgr_update (&newsg) == 0) {
fprintf (stderr,
_("%s: line %jd: failed to prepare the new %s entry '%s'\n"),
- Prog, line, sgr_dbname (), newsg.sg_name);
+ Prog, line, sgr_dbname (), newsg.sg_namp);
errors = true;
continue;
}
if (is_shadowgrp && (sgr_update (sg) == 0)) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), sg->sg_name);
+ Prog, sgr_dbname (), sg->sg_namp);
exit (1);
}
#endif /* SHADOWGRP */
tmpsg = sgr_locate (group);
if (NULL != tmpsg) {
*sg = *tmpsg;
- sg->sg_name = xstrdup (tmpsg->sg_name);
+ sg->sg_namp = xstrdup (tmpsg->sg_namp);
sg->sg_passwd = xstrdup (tmpsg->sg_passwd);
sg->sg_mem = dup_list (tmpsg->sg_mem);
sg->sg_adm = dup_list (tmpsg->sg_adm);
} else {
- sg->sg_name = xstrdup (group);
+ sg->sg_namp = xstrdup (group);
sg->sg_passwd = gr->gr_passwd;
gr->gr_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */
static void new_sgent (struct sgrp *sgent)
{
memzero (sgent, sizeof *sgent);
- sgent->sg_name = group_name;
+ sgent->sg_namp = group_name;
if (pflg) {
sgent->sg_passwd = group_passwd;
} else {
if (is_shadow_grp && (sgr_update (&sgrp) == 0)) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), sgrp.sg_name);
+ Prog, sgr_dbname (), sgrp.sg_namp);
exit (E_GRP_UPDATE);
}
#endif /* SHADOWGRP */
if (NULL == sg) {
/* Create a shadow group based on this group */
static struct sgrp sgrent;
- sgrent.sg_name = xstrdup (newgrp->gr_name);
+ sgrent.sg_namp = xstrdup (newgrp->gr_name);
sgrent.sg_mem = dup_list (newgrp->gr_mem);
sgrent.sg_adm = XMALLOC(1, char *);
sgrent.sg_adm[0] = NULL;
if (sgr_update (newsg) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), newsg->sg_name);
+ Prog, sgr_dbname (), newsg->sg_namp);
fail_exit (13);
}
}
if (NULL == sg) {
/* Create a shadow group based on this group */
static struct sgrp sgrent;
- sgrent.sg_name = xstrdup (newgrp->gr_name);
+ sgrent.sg_namp = xstrdup (newgrp->gr_name);
sgrent.sg_mem = dup_list (newgrp->gr_mem);
sgrent.sg_adm = XMALLOC(1, char *);
sgrent.sg_adm[0] = NULL;
if (sgr_update (newsg) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), newsg->sg_name);
+ Prog, sgr_dbname (), newsg->sg_namp);
fail_exit (13);
}
}
if (NULL == sg) {
/* Create a shadow group based on this group */
static struct sgrp sgrent;
- sgrent.sg_name = xstrdup (newgrp->gr_name);
+ sgrent.sg_namp = xstrdup (newgrp->gr_name);
sgrent.sg_mem = XMALLOC(1, char *);
sgrent.sg_mem[0] = NULL;
sgrent.sg_adm = XMALLOC(1, char *);
if (sgr_update (newsg) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), newsg->sg_name);
+ Prog, sgr_dbname (), newsg->sg_namp);
fail_exit (13);
}
}
static void new_sgent (struct sgrp *sgent)
{
if (nflg) {
- sgent->sg_name = xstrdup (group_newname);
+ sgent->sg_namp = xstrdup (group_newname);
}
/* Always update the shadowed password if there is a shadow entry
* gshadow entry when a new password is requested.
*/
bzero(&sgrp, sizeof sgrp);
- sgrp.sg_name = xstrdup (grp.gr_name);
+ sgrp.sg_namp = xstrdup (grp.gr_name);
sgrp.sg_passwd = xstrdup (grp.gr_passwd);
sgrp.sg_adm = ∅
sgrp.sg_mem = dup_list (grp.gr_mem);
if (sgr_update (&sgrp) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), sgrp.sg_name);
+ Prog, sgr_dbname (), sgrp.sg_namp);
exit (E_GRP_UPDATE);
}
if (nflg && (sgr_remove (group_name) == 0)) {
struct group gr;
static char *empty = NULL;
- sg.sg_name = grp->gr_name;
+ sg.sg_namp = grp->gr_name;
sg.sg_passwd = grp->gr_passwd;
sg.sg_adm = ∅
sg.sg_mem = grp->gr_mem;
if (sgr_update (&sg) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), sg.sg_name);
+ Prog, sgr_dbname (), sg.sg_namp);
fail_exit (E_CANT_UPDATE);
}
/* remove password from /etc/group */
continue;
}
- if (!streq(sgr->sg_name, ent->sg_name)) {
+ if (!streq(sgr->sg_namp, ent->sg_namp)) {
continue;
}
/*
* Make sure this entry exists in the /etc/group file.
*/
- grp = gr_locate (sgr->sg_name);
+ grp = gr_locate (sgr->sg_namp);
if (grp == NULL) {
printf (_("no matching group file entry in %s\n"),
grp_file);
* Verify that the all members defined in /etc/gshadow are also
* present in /etc/group.
*/
- compare_members_lists (sgr->sg_name,
+ compare_members_lists (sgr->sg_namp,
sgr->sg_mem, grp->gr_mem,
sgr_file, grp_file);
}
/*
* Make sure each administrator exists
*/
- if (check_members (sgr->sg_name, sgr->sg_adm,
+ if (check_members (sgr->sg_namp, sgr->sg_adm,
_("shadow group %s: no administrative user %s\n"),
_("delete administrative member '%s'? "),
"delete admin '%s' from shadow group '%s'",
/*
* Make sure each member exists
*/
- if (check_members (sgr->sg_name, sgr->sg_mem,
+ if (check_members (sgr->sg_namp, sgr->sg_mem,
_("shadow group %s: no user %s\n"),
_("delete member '%s'? "),
"delete member '%s' from shadow group '%s'",
*/
(void) sgr_rewind ();
while ((sg = sgr_next ()) != NULL) {
- if (gr_locate (sg->sg_name) != NULL) {
+ if (gr_locate (sg->sg_namp) != NULL) {
continue;
}
- if (sgr_remove (sg->sg_name) == 0) {
+ if (sgr_remove (sg->sg_namp) == 0) {
/*
* This shouldn't happen (the entry exists) but...
*/
fprintf (stderr,
_("%s: cannot remove entry '%s' from %s\n"),
- Prog, sg->sg_name, sgr_dbname ());
+ Prog, sg->sg_namp, sgr_dbname ());
fail_exit (3);
}
(void) sgr_rewind ();
/* add new shadow group entry */
bzero(&sgent, sizeof sgent);
- sgent.sg_name = gr->gr_name;
+ sgent.sg_namp = gr->gr_name;
sgent.sg_passwd = gr->gr_passwd;
sgent.sg_adm = ∅
}
if (sgr_update (&sgent) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), sgent.sg_name);
+ Prog, sgr_dbname (), sgent.sg_namp);
fail_exit (3);
}
/* remove password from /etc/group */
if (is_shadow_grp) {
struct sgrp sgrent;
char *admins[1];
- sgrent.sg_name = grent.gr_name;
+ sgrent.sg_namp = grent.gr_name;
sgrent.sg_passwd = "*"; /* XXX warning: const */
grent.gr_passwd = "x"; /* XXX warning: const */
admins[0] = NULL;
* user_groups. All these groups should be checked
* for existence with gr_locate already.
*/
- if (gr_locate (sgrp->sg_name) == NULL) {
+ if (gr_locate (sgrp->sg_namp) == NULL) {
continue;
}
- if (!is_on_list (user_groups, sgrp->sg_name)) {
+ if (!is_on_list (user_groups, sgrp->sg_namp)) {
continue;
}
if (sgr_update (nsgrp) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), nsgrp->sg_name);
+ Prog, sgr_dbname (), nsgrp->sg_namp);
SYSLOG ((LOG_ERR, "failed to prepare the new %s entry '%s'", sgr_dbname (), user_name));
#ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_USER, Prog,
#endif
SYSLOG ((LOG_INFO,
"add '%s' to shadow group '%s'",
- user_name, nsgrp->sg_name));
+ user_name, nsgrp->sg_namp));
}
#endif /* SHADOWGRP */
}
static void new_sgent (struct sgrp *sgent)
{
memzero (sgent, sizeof *sgent);
- sgent->sg_name = (char *) user_name;
+ sgent->sg_namp = (char *) user_name;
sgent->sg_passwd = "!"; /* XXX warning: const */
sgent->sg_adm = &empty_list;
sgent->sg_mem = &empty_list;
if (is_shadow_grp && (sgr_update (&sgrp) == 0)) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), sgrp.sg_name);
+ Prog, sgr_dbname (), sgrp.sg_namp);
#ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_GROUP, Prog,
"adding group",
if (sgr_update (nsgrp) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), nsgrp->sg_name);
+ Prog, sgr_dbname (), nsgrp->sg_namp);
exit (E_GRP_UPDATE);
}
#ifdef WITH_AUDIT
user_name, user_id, SHADOW_AUDIT_SUCCESS);
#endif /* WITH_AUDIT */
SYSLOG ((LOG_INFO, "delete '%s' from shadow group '%s'\n",
- user_name, nsgrp->sg_name));
+ user_name, nsgrp->sg_namp));
}
#endif /* SHADOWGRP */
}
* concurrent groups.
*/
is_member = Gflg && ( (was_member && aflg)
- || is_on_list (user_groups, sgrp->sg_name));
+ || is_on_list (user_groups, sgrp->sg_namp));
if (!was_member && !was_admin && !is_member)
return;
#endif
SYSLOG ((LOG_INFO,
"change admin '%s' to '%s' in shadow group '%s'",
- user_name, user_newname, nsgrp->sg_name));
+ user_name, user_newname, nsgrp->sg_namp));
}
if (was_member) {
SYSLOG ((LOG_INFO,
"change '%s' to '%s' in shadow group '%s'",
user_name, user_newname,
- nsgrp->sg_name));
+ nsgrp->sg_namp));
}
} else {
/* User was a member but is no more a
#endif
SYSLOG ((LOG_INFO,
"delete '%s' from shadow group '%s'",
- user_name, nsgrp->sg_name));
+ user_name, nsgrp->sg_namp));
}
} else if (is_member) {
/* User was not a member but is now a member this
user_newname, AUDIT_NO_ID, 1);
#endif
SYSLOG ((LOG_INFO, "add '%s' to shadow group '%s'",
- user_newname, nsgrp->sg_name));
+ user_newname, nsgrp->sg_namp));
}
if (!changed)
goto free_nsgrp;
if (sgr_update (nsgrp) == 0) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry '%s'\n"),
- Prog, sgr_dbname (), nsgrp->sg_name);
+ Prog, sgr_dbname (), nsgrp->sg_namp);
SYSLOG ((LOG_WARN, "failed to prepare the new %s entry '%s'",
- sgr_dbname (), nsgrp->sg_name));
+ sgr_dbname (), nsgrp->sg_namp));
fail_exit (E_GRP_UPDATE);
}