diff --git a/src/login.c b/src/login.c index 9e0cf3d..a1d050b 100644 --- a/src/login.c +++ b/src/login.c @@ -12,10 +12,12 @@ #include #include #include +#include #include #include #include #include +#include /* ncurses */ #include /* pam */ @@ -204,6 +206,26 @@ 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); diff --git a/src/ncui.c b/src/ncui.c index 953c2f1..39eefbf 100644 --- a/src/ncui.c +++ b/src/ncui.c @@ -53,7 +53,7 @@ void init_form(struct ncform* form, char** list, int max_de, int* de_id) { if(fgets(line, sizeof(line), file)) { - snprintf(user, sizeof(file), "%s", line); + strcpy(user, line); } if(fgets(line, sizeof(line), file))