diff options
Diffstat (limited to 'login-utils/su.c')
-rw-r--r-- | login-utils/su.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/login-utils/su.c b/login-utils/su.c index 944d6558e..0f535b9b7 100644 --- a/login-utils/su.c +++ b/login-utils/su.c @@ -153,6 +153,8 @@ static struct pam_conv conv = static void cleanup_pam (int retcode) { + int saved_errno = errno; + if (_pam_session_opened) pam_close_session (pamh, 0); @@ -160,6 +162,8 @@ cleanup_pam (int retcode) pam_setcred (pamh, PAM_DELETE_CRED | PAM_SILENT); pam_end(pamh, retcode); + + errno = saved_errno; } /* Signal handler for parent process. */ |