From: Ludwig Nussel Date: Tue, 5 Jun 2012 13:31:24 +0000 (+0200) Subject: su: preserve errno in cleanup_pam() X-Git-Tag: v2.22-rc1~316 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8ce7dfa341fa969ba08438f97b0d875dbb78d75d;p=thirdparty%2Futil-linux.git su: preserve errno in cleanup_pam() Signed-off-by: Ludwig Nussel --- diff --git a/login-utils/su.c b/login-utils/su.c index 944d6558e8..0f535b9b72 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. */