entry from /etc/gshadow, and set the password in /etc/group.
+2007-11-20 Nicolas François <nicolas.francois@centraliens.net>
+
+ * src/chgpasswd.c: If the shadow group file is not present, do not
+ try to locate the group entry from /etc/gshadow, and set the
+ password in /etc/group.
+
2007-11-20 Nicolas François <nicolas.francois@centraliens.net>
* libmisc/obscure.c, libmisc/salt.c, src/passwd.c: Match DES, MD5,
#endif
const struct group *gr;
+#ifndef SHADOWGRP
+ struct group newgr;
+#endif
int errors = 0;
int line = 0;
int ok;
pam_handle_t *pamh = NULL;
int retval;
#endif
-#ifndef SHADOWGRP
- struct group newgr;
-#endif
Prog = Basename (argv[0]);
continue;
}
#ifdef SHADOWGRP
- sg = sgr_locate (name);
+ if (is_shadow_grp)
+ sg = sgr_locate (name);
+ else
+ sg = NULL;
#endif
/*
* date is set to the current date.
*/
#ifdef SHADOWGRP
- newsg = *sg;
- newsg.sg_passwd = cp;
-#else
- newgr = *gr;
- newgr.gr_passwd = cp;
+ if (sg) {
+ newsg = *sg;
+ newsg.sg_passwd = cp;
+ } else
#endif
+ {
+ newgr = *gr;
+ newgr.gr_passwd = cp;
+ }
/*
* The updated password file entry is then put back and will
* other entries have been updated as well.
*/
#ifdef SHADOWGRP
- ok = sgr_update (&newsg);
-#else
- ok = gr_update (&newgr);
+ if (sg)
+ ok = sgr_update (&newsg);
+ else
#endif
+ ok = gr_update (&newgr);
if (!ok) {
fprintf (stderr,