summaryrefslogtreecommitdiffstats
path: root/login-utils/su.c
diff options
context:
space:
mode:
Diffstat (limited to 'login-utils/su.c')
-rw-r--r--login-utils/su.c4
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. */