* Compilation fix for PAM support (pamh needs to be

global since the function split).
* End the PAM transaction in fail_exit().
* Document check_flags().
This commit is contained in:
nekral-guest 2007-12-30 21:48:55 +00:00
parent d1bee8b593
commit 3b7497b063
2 changed files with 28 additions and 2 deletions

View File

@ -1,4 +1,11 @@
2007-12-29 Nicolas François <nicolas.francois@centraliens.net>
2007-12-30 Nicolas François <nicolas.francois@centraliens.net>
* src/groupadd.c: Compilation fix for PAM support (pamh needs to be
global since the function split).
* src/groupadd.c: End the PAM transaction in fail_exit().
* src/groupadd.c: Document check_flags().
2007-12-30 Nicolas François <nicolas.francois@centraliens.net>
* src/vipw.c: Compilation fix for non-gshadow support.

View File

@ -76,6 +76,10 @@ static int oflg = 0; /* permit non-unique group ID to be specified with -g */
static int gflg = 0; /* ID value for the new group */
static int fflg = 0; /* if group already exists, do nothing and exit(0) */
#ifdef USE_PAM
static pam_handle_t *pamh = NULL;
#endif
/* local function prototypes */
static void usage (void);
static void new_grent (struct group *grent);
@ -341,6 +345,15 @@ static void fail_exit (int code)
group_name, -1, 0);
}
#endif
#ifdef USE_PAM
if (NULL != pamh) {
/* If there is a PAM error, fail_exit is not called.
* We always end the pam transaction with PAM_SUCCESS here.
*/
pam_end (pamh, PAM_SUCCESS);
}
#endif
exit (code);
}
@ -443,6 +456,11 @@ static void process_flags (int argc, char **argv)
check_flags ();
}
/*
* check_flags - check flags and parameters consistency
*
* It will not return if an error is encountered.
*/
static void check_flags (void)
{
/* -o does not make sense without -g */
@ -493,11 +511,12 @@ static void check_flags (void)
* non-root users to groups.
* Without PAM support, only users who can write in the group databases
* can add groups.
*
* It will not return if the user is not allowed.
*/
static void check_perms (void)
{
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
int retval = PAM_SUCCESS;
struct passwd *pampw;