]> granicus.if.org Git - shadow/commitdiff
* src/su.c: After prepare_pam_close_session() there is no need to
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Mon, 13 Jun 2011 18:27:46 +0000 (18:27 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Mon, 13 Jun 2011 18:27:46 +0000 (18:27 +0000)
close the session in the child. Added pam_setcred to
prepare_pam_close_session().

ChangeLog
src/su.c

index 5beed08e38d30931d58e5204d7380b073ce697b5..04cd67892f5a9897d66dc3384aeddb0c04bf0baa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,9 @@
        * src/su.c: Also drop the controlling terminal when PAM is not
        used.
        * src/su.c: Remove run_shell().
+       * src/su.c: After prepare_pam_close_session() there is no need to
+       close the session in the child. Added pam_setcred to
+       prepare_pam_close_session().
 
 2011-06-12  Nicolas François  <nicolas.francois@centraliens.net>
 
index 14483327afd2460a5b256396701dcb5de0d8e72e..e0a2c6d817ece50763d3669ff1a8e726e5345535 100644 (file)
--- a/src/su.c
+++ b/src/su.c
@@ -376,11 +376,10 @@ static void prepare_pam_close_session (void)
                SYSLOG ((LOG_ERR, "pam_close_session: %s",
                         pam_strerror (pamh, ret)));
                fprintf (stderr, _("%s: %s\n"), Prog, pam_strerror (pamh, ret));
-               (void) pam_end (pamh, ret);
-               exit (1);
        }
 
-       ret = pam_end (pamh, PAM_SUCCESS);
+       (void) pam_setcred (pamh, PAM_DELETE_CRED);
+       (void) pam_end (pamh, PAM_SUCCESS);
 
        if (0 != caught) {
                (void) signal (SIGALRM, kill_child);
@@ -1016,9 +1015,6 @@ int main (int argc, char **argv)
 
        /* become the new user */
        if (change_uid (pw) != 0) {
-               pam_close_session (pamh, 0);
-               pam_setcred (pamh, PAM_DELETE_CRED);
-               (void) pam_end (pamh, PAM_ABORT);
                exit (1);
        }
 #else                          /* !USE_PAM */