2018-02-06 10:33:37 +00:00
|
|
|
Index: shadow-4.5/src/grpconv.c
|
|
|
|
===================================================================
|
|
|
|
--- shadow-4.5.orig/src/grpconv.c
|
|
|
|
+++ shadow-4.5/src/grpconv.c
|
2012-06-18 11:38:31 +00:00
|
|
|
@@ -143,6 +143,7 @@ int main (int argc, char **argv)
|
|
|
|
struct group grent;
|
|
|
|
const struct sgrp *sg;
|
|
|
|
struct sgrp sgent;
|
|
|
|
+ char *np;
|
|
|
|
|
|
|
|
Prog = Basename (argv[0]);
|
|
|
|
|
|
|
|
@@ -184,20 +185,25 @@ int main (int argc, char **argv)
|
|
|
|
* Remove /etc/gshadow entries for groups not in /etc/group.
|
|
|
|
*/
|
|
|
|
(void) sgr_rewind ();
|
|
|
|
- while ((sg = sgr_next ()) != NULL) {
|
|
|
|
- if (gr_locate (sg->sg_name) != NULL) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (sgr_remove (sg->sg_name) == 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 ());
|
|
|
|
- fail_exit (3);
|
|
|
|
+ sg = sgr_next ();
|
|
|
|
+ np=NULL;
|
|
|
|
+ while (sg != NULL) {
|
|
|
|
+ np = strdup(sg->sg_name);
|
|
|
|
+ sg = sgr_next ();
|
|
|
|
+
|
|
|
|
+ if(gr_locate (np) == NULL) {
|
|
|
|
+ if (sgr_remove (np) == 0) {
|
|
|
|
+ /*
|
|
|
|
+ * This shouldn't happen (the entry exists) but...
|
|
|
|
+ */
|
|
|
|
+ fprintf (stderr,
|
|
|
|
+ _("%s: cannot remove entry '%s' from %s\n"),
|
|
|
|
+ Prog, np, sgr_dbname ());
|
|
|
|
+ free(np);
|
|
|
|
+ fail_exit (3);
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
+ free(np);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
2018-02-06 10:33:37 +00:00
|
|
|
Index: shadow-4.5/src/pwconv.c
|
|
|
|
===================================================================
|
|
|
|
--- shadow-4.5.orig/src/pwconv.c
|
|
|
|
+++ shadow-4.5/src/pwconv.c
|
2012-06-18 11:38:31 +00:00
|
|
|
@@ -173,6 +173,7 @@ int main (int argc, char **argv)
|
|
|
|
struct passwd pwent;
|
|
|
|
const struct spwd *sp;
|
|
|
|
struct spwd spent;
|
|
|
|
+ char *np;
|
|
|
|
|
|
|
|
Prog = Basename (argv[0]);
|
|
|
|
|
|
|
|
@@ -223,20 +224,25 @@ int main (int argc, char **argv)
|
|
|
|
* Remove /etc/shadow entries for users not in /etc/passwd.
|
|
|
|
*/
|
|
|
|
(void) spw_rewind ();
|
|
|
|
- while ((sp = spw_next ()) != NULL) {
|
|
|
|
- if (pw_locate (sp->sp_namp) != NULL) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (spw_remove (sp->sp_namp) == 0) {
|
|
|
|
- /*
|
|
|
|
- * This shouldn't happen (the entry exists) but...
|
|
|
|
- */
|
|
|
|
- fprintf (stderr,
|
|
|
|
- _("%s: cannot remove entry '%s' from %s\n"),
|
|
|
|
- Prog, sp->sp_namp, spw_dbname ());
|
|
|
|
- fail_exit (E_FAILURE);
|
|
|
|
+ sp = spw_next ();
|
|
|
|
+ np = NULL;
|
|
|
|
+ while (sp != NULL) {
|
|
|
|
+ np = strdup(sp->sp_namp);
|
|
|
|
+ sp = spw_next ();
|
|
|
|
+
|
|
|
|
+ if (pw_locate (np) == NULL) {
|
|
|
|
+ if (spw_remove (np) == 0) {
|
|
|
|
+ /*
|
|
|
|
+ * This shouldn't happen (the entry exists) but...
|
|
|
|
+ */
|
|
|
|
+ fprintf (stderr,
|
|
|
|
+ _("%s: cannot remove entry '%s' from %s\n"),
|
|
|
|
+ Prog, np, spw_dbname ());
|
|
|
|
+ free(np);
|
|
|
|
+ fail_exit (E_FAILURE);
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
+ free(np);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|