[Pkg-shadow-commits] r1890 - in upstream/trunk: . src
nekral-guest at alioth.debian.org
nekral-guest at alioth.debian.org
Sat Mar 8 21:13:55 UTC 2008
Author: nekral-guest
Date: 2008-03-08 21:13:54 +0000 (Sat, 08 Mar 2008)
New Revision: 1890
Modified:
upstream/trunk/ChangeLog
upstream/trunk/NEWS
upstream/trunk/src/groupdel.c
Log:
* NEWS, src/groupdel.c: Make sure the group, and gshadow files are
unlocked on exit. Add function fail_exit(). Use fail_exit()
instead of exit().
* src/groupdel.c: Fail immediately instead of increasing errors.
Better handling of error cases, like locked group or gshadow file.
Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog 2008-03-08 21:04:31 UTC (rev 1889)
+++ upstream/trunk/ChangeLog 2008-03-08 21:13:54 UTC (rev 1890)
@@ -1,5 +1,13 @@
2008-03-08 Nicolas François <nicolas.francois at centraliens.net>
+ * NEWS, src/groupdel.c: Make sure the group, and gshadow files are
+ unlocked on exit. Add function fail_exit(). Use fail_exit()
+ instead of exit().
+ * src/groupdel.c: Fail immediately instead of increasing errors.
+ Better handling of error cases, like locked group or gshadow file.
+
+2008-03-08 Nicolas François <nicolas.francois at centraliens.net>
+
* NEWS, src/newusers.c: Make sure the passwd, group, shadow, and
gshadow files are unlocked on exit. Add function fail_exit(). Use
fail_exit() instead of exit().
Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS 2008-03-08 21:04:31 UTC (rev 1889)
+++ upstream/trunk/NEWS 2008-03-08 21:13:54 UTC (rev 1890)
@@ -35,6 +35,7 @@
- groupdel
* Do not fail if the group does not exist in the gshadow file.
* Do not rewrite the group or gshadow file in case of error.
+ * Make sure the group and gshadow files are unlocked on exit.
- groupmems
* Fix buffer overflow when adding an user to a group. Thanks to Peter Vrabec.
- groupmod
Modified: upstream/trunk/src/groupdel.c
===================================================================
--- upstream/trunk/src/groupdel.c 2008-03-08 21:04:31 UTC (rev 1889)
+++ upstream/trunk/src/groupdel.c 2008-03-08 21:13:54 UTC (rev 1890)
@@ -70,6 +70,7 @@
/* local function prototypes */
static void usage (void);
+static void fail_exit (int);
static void grp_update (void);
static void close_files (void);
static void open_files (void);
@@ -85,6 +86,26 @@
}
/*
+ * fail_exit - exit with a failure code after unlocking the files
+ */
+static void fail_exit (int code)
+{
+ (void) gr_unlock ();
+#ifdef SHADOWGRP
+ if (is_shadow_grp) {
+ sgr_unlock ();
+ }
+#endif
+
+#ifdef WITH_AUDIT
+ audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "deleting group",
+ group_name, -1, 0);
+#endif
+
+ exit (code);
+}
+
+/*
* grp_update - update group file entries
*
* grp_update() writes the new records to the group files.
@@ -93,7 +114,7 @@
{
if (!gr_remove (group_name)) {
fprintf (stderr, _("%s: error removing group entry\n"), Prog);
- errors++;
+ fail_exit (E_GRP_UPDATE);
}
#ifdef SHADOWGRP
/*
@@ -104,7 +125,7 @@
fprintf (stderr,
_("%s: error removing shadow group entry\n"),
Prog);
- errors++;
+ fail_exit (E_GRP_UPDATE);
}
}
#endif /* SHADOWGRP */
@@ -127,14 +148,14 @@
if (!gr_close ()) {
fprintf (stderr, _("%s: cannot rewrite group file\n"), Prog);
- errors++;
+ fail_exit (E_GRP_UPDATE);
}
gr_unlock ();
#ifdef SHADOWGRP
if (is_shadow_grp && !sgr_close ()) {
fprintf (stderr,
_("%s: cannot rewrite shadow group file\n"), Prog);
- errors++;
+ fail_exit (E_GRP_UPDATE);
}
if (is_shadow_grp)
sgr_unlock ();
@@ -150,22 +171,22 @@
{
if (!gr_lock ()) {
fprintf (stderr, _("%s: unable to lock group file\n"), Prog);
- exit (E_GRP_UPDATE);
+ fail_exit (E_GRP_UPDATE);
}
if (!gr_open (O_RDWR)) {
fprintf (stderr, _("%s: unable to open group file\n"), Prog);
- exit (E_GRP_UPDATE);
+ fail_exit (E_GRP_UPDATE);
}
#ifdef SHADOWGRP
if (is_shadow_grp && !sgr_lock ()) {
fprintf (stderr,
_("%s: unable to lock shadow group file\n"), Prog);
- exit (E_GRP_UPDATE);
+ fail_exit (E_GRP_UPDATE);
}
if (is_shadow_grp && !sgr_open (O_RDWR)) {
fprintf (stderr,
_("%s: unable to open shadow group file\n"), Prog);
- exit (E_GRP_UPDATE);
+ fail_exit (E_GRP_UPDATE);
}
#endif /* SHADOWGRP */
}
@@ -202,7 +223,7 @@
* Can't remove the group.
*/
fprintf (stderr, _("%s: cannot remove user's primary group.\n"), Prog);
- exit (E_GROUP_BUSY);
+ fail_exit (E_GROUP_BUSY);
}
/*
@@ -340,21 +361,16 @@
open_files ();
grp_update ();
- if (errors == 0) {
- close_files ();
- nscd_flush_cache ("group");
- }
+ close_files ();
+
+ nscd_flush_cache ("group");
+
#ifdef USE_PAM
if (retval == PAM_SUCCESS)
pam_end (pamh, PAM_SUCCESS);
#endif /* USE_PAM */
- if (errors != 0)
-#ifdef WITH_AUDIT
- audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "deleting group",
- group_name, -1, 0);
-#endif
- exit (errors == 0 ? E_SUCCESS : E_GRP_UPDATE);
- /* NOT REACHED */
- return 0;
+
+ return E_SUCCESS;
}
+
More information about the Pkg-shadow-commits
mailing list