|
Michal Schmidt |
e43452 |
From 859dc200c20c5dd7e49e443bd29ab6c31dfb0b69 Mon Sep 17 00:00:00 2001
|
|
Michal Schmidt |
e43452 |
From: Michal Schmidt <mschmidt@redhat.com>
|
|
Michal Schmidt |
e43452 |
Date: Thu, 17 Nov 2011 00:16:22 +0100
|
|
Michal Schmidt |
f1996e |
Subject: [PATCH] execute: make setup_pam() return -errno when possible
|
|
Michal Schmidt |
e43452 |
|
|
Michal Schmidt |
e43452 |
The only caller currently checks if the result is non-zero,
|
|
Michal Schmidt |
e43452 |
so nothing changes there.
|
|
Michal Schmidt |
e43452 |
(cherry picked from commit 9ba353983adc026b75a503c1381f6e5c8062f3e0)
|
|
Michal Schmidt |
e43452 |
---
|
|
Michal Schmidt |
e43452 |
src/execute.c | 8 +++++++-
|
|
Michal Schmidt |
e43452 |
1 files changed, 7 insertions(+), 1 deletions(-)
|
|
Michal Schmidt |
e43452 |
|
|
Michal Schmidt |
e43452 |
diff --git a/src/execute.c b/src/execute.c
|
|
Michal Schmidt |
e43452 |
index 0651014..2039861 100644
|
|
Michal Schmidt |
e43452 |
--- a/src/execute.c
|
|
Michal Schmidt |
e43452 |
+++ b/src/execute.c
|
|
Michal Schmidt |
e43452 |
@@ -716,6 +716,7 @@ static int setup_pam(
|
|
Michal Schmidt |
e43452 |
pam_handle_t *handle = NULL;
|
|
Michal Schmidt |
e43452 |
sigset_t ss, old_ss;
|
|
Michal Schmidt |
e43452 |
int pam_code = PAM_SUCCESS;
|
|
Michal Schmidt |
e43452 |
+ int err;
|
|
Michal Schmidt |
e43452 |
char **e = NULL;
|
|
Michal Schmidt |
e43452 |
bool close_session = false;
|
|
Michal Schmidt |
e43452 |
pid_t pam_pid = 0, parent_pid;
|
|
Michal Schmidt |
e43452 |
@@ -835,6 +836,11 @@ static int setup_pam(
|
|
Michal Schmidt |
e43452 |
return 0;
|
|
Michal Schmidt |
e43452 |
|
|
Michal Schmidt |
e43452 |
fail:
|
|
Michal Schmidt |
e43452 |
+ if (pam_code != PAM_SUCCESS)
|
|
Michal Schmidt |
e43452 |
+ err = -EPERM; /* PAM errors do not map to errno */
|
|
Michal Schmidt |
e43452 |
+ else
|
|
Michal Schmidt |
e43452 |
+ err = -errno;
|
|
Michal Schmidt |
e43452 |
+
|
|
Michal Schmidt |
e43452 |
if (handle) {
|
|
Michal Schmidt |
e43452 |
if (close_session)
|
|
Michal Schmidt |
e43452 |
pam_code = pam_close_session(handle, PAM_DATA_SILENT);
|
|
Michal Schmidt |
e43452 |
@@ -851,7 +857,7 @@ fail:
|
|
Michal Schmidt |
e43452 |
kill(pam_pid, SIGCONT);
|
|
Michal Schmidt |
e43452 |
}
|
|
Michal Schmidt |
e43452 |
|
|
Michal Schmidt |
e43452 |
- return EXIT_PAM;
|
|
Michal Schmidt |
e43452 |
+ return err;
|
|
Michal Schmidt |
e43452 |
}
|
|
Michal Schmidt |
e43452 |
#endif
|
|
Michal Schmidt |
e43452 |
|