Init user groups before PAM credentials

This commit is contained in:
Niverton 2017-08-31 20:17:19 +02:00
parent a8d94316e3
commit 0571e63c8a
1 changed files with 23 additions and 0 deletions

View File

@ -12,10 +12,12 @@
#include <sys/types.h>
#include <linux/limits.h>
#include <grp.h>
#include <pwd.h>
#include <signal.h>
#include <X11/Xlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
/* ncurses */
#include <form.h>
/* pam */
@ -204,6 +206,27 @@ const char* de_command, enum deserv_t display_server)
return 1;
}
/* Initialise user groups */
/* Get pwd structure for the user to get his group id */
struct passwd* pw = getpwnam(username);
if (!pw)
{
error_print(strerror(errno));
pam_end(login_handle, pam_result);
return 1;
}
int grp_result = initgroups(username, pw->pw_gid);
if (grp_result == -1)
{
error_print(strerror(errno));
pam_end(login_handle, pam_result);
return 1;
}
/* pam_setcred and error handling */
pam_result = pam_setcred(login_handle, PAM_ESTABLISH_CRED);