Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:lafenghu
libgnomesu
libgnomesu-reorder-pam-init.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File libgnomesu-reorder-pam-init.patch of Package libgnomesu
Index: libgnomesu-1.0.0/pam-backend/pam.c =================================================================== --- libgnomesu-1.0.0.orig/pam-backend/pam.c +++ libgnomesu-1.0.0/pam-backend/pam.c @@ -323,18 +323,25 @@ main (int argc, char *argv[]) char **command = argv + 4; pid_t pid; int exitCode = 1, status; + int setcred = 0; - modify_environment (pw); - #ifdef HAVE_SETFSUID - setfsuid (pw->pw_uid); - #endif /* HAVE_SETFSUID */ - change_identity (pw); + init_groups (pw); retval = pam_setcred (pamh, PAM_ESTABLISH_CRED); if (retval != PAM_SUCCESS) fprintf (stderr, "Warning: %s\n", pam_strerror (pamh, retval)); + else + setcred = 1; pam_open_session (pamh, 0); + + #ifdef HAVE_SETFSUID + setfsuid (pw->pw_uid); + #endif /* HAVE_SETFSUID */ + change_identity (pw); + + modify_environment (pw); + pid = fork (); switch (pid) { @@ -364,6 +371,8 @@ main (int argc, char *argv[]) break; } pam_close_session (pamh, 0); + if (setcred) + pam_setcred (pamh, PAM_DELETE_CRED | PAM_SILENT); close_pam (pamh, retval); /* evecvp() failed */ Index: libgnomesu-1.0.0/su-backend/common.c =================================================================== --- libgnomesu-1.0.0.orig/su-backend/common.c +++ libgnomesu-1.0.0/su-backend/common.c @@ -223,13 +223,18 @@ modify_environment (const struct passwd /* Become the user and group(s) specified by PW. */ void -change_identity (const struct passwd *pw) +init_groups (const struct passwd *pw) { #ifdef HAVE_INITGROUPS errno = 0; initgroups (pw->pw_name, pw->pw_gid); endgrent (); #endif +} + +void +change_identity (const struct passwd *pw) +{ if (setgid (pw->pw_gid)) perror ("cannot set group id"); if (setuid (pw->pw_uid)) Index: libgnomesu-1.0.0/su-backend/common.h =================================================================== --- libgnomesu-1.0.0.orig/su-backend/common.h +++ libgnomesu-1.0.0/su-backend/common.h @@ -30,6 +30,7 @@ char *concat (const char *s1, const char void xputenv (const char *val); void init_xauth (const struct passwd *pw); void setup_xauth (const struct passwd *pw); +void init_groups (const struct passwd *pw); void change_identity (const struct passwd *pw); void modify_environment (const struct passwd *pw); void *safe_memset (void *s, int c, size_t n); Index: libgnomesu-1.0.0/su-backend/su.c =================================================================== --- libgnomesu-1.0.0.orig/su-backend/su.c +++ libgnomesu-1.0.0/su-backend/su.c @@ -322,6 +322,7 @@ main (int argc, char **argv) init_xauth (pw); modify_environment (pw); + init_groups (pw); change_identity (pw); setup_xauth (pw);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor