From 8f78169a524fd1c1aaba7e1191cdb322c9706ece Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Sun, 26 Apr 2009 17:11:38 +0000 Subject: [PATCH] * src/newgrp.c: Close the databases before changing the UDI and GID. --- ChangeLog | 5 +++++ src/newgrp.c | 20 +++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8915493a..c6ce60a4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-04-26 Nicolas François + + * src/newgrp.c: Close the databases before changing the UDI and + GID. + 2009-04-26 Nicolas François * libmisc/myname.c: Updated splint annotations. diff --git a/src/newgrp.c b/src/newgrp.c index 51c2045d..e8169b4e 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -671,6 +671,19 @@ int main (int argc, char **argv) } #endif + /* + * Close all files before changing the user/group IDs. + * + * The needed structure should have been copied before, or + * permission to read the database will be required. + */ + endspent (); +#ifdef SHADOWGRP + endsgent (); +#endif + endpwent (); + endgrent (); + /* * Set the effective GID to the new group id and the effective UID * to the real UID. For root, this also sets the real GID to the @@ -750,13 +763,6 @@ int main (int argc, char **argv) */ cp = Basename ((char *) prog); - endspent (); -#ifdef SHADOWGRP - endsgent (); -#endif - endpwent (); - endgrent (); - /* * Switch back to her home directory if i am doing login * initialization.