summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2013-02-25 14:19:19 +0100
committerJakub Hrozek <jhrozek@redhat.com>2013-03-01 13:31:01 +0100
commit82ce93d893af337ee015a7fc75b32dffa615e502 (patch)
treed5ba84622d3f93b09ecf47d9e48f9810dd2763da
parentf5fb94519172463c3c97753c5dafcee6a5591162 (diff)
downloadsssd-82ce93d893af337ee015a7fc75b32dffa615e502.tar.gz
sssd-82ce93d893af337ee015a7fc75b32dffa615e502.tar.xz
sssd-82ce93d893af337ee015a7fc75b32dffa615e502.zip
if selinux is disabled, ignore that selogin dir is missing
https://fedorahosted.org/sssd/ticket/1817
-rw-r--r--src/responder/pam/pamsrv_cmd.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c
index 426964220..6f2d0202c 100644
--- a/src/responder/pam/pamsrv_cmd.c
+++ b/src/responder/pam/pamsrv_cmd.c
@@ -378,6 +378,7 @@ static errno_t write_selinux_login_file(const char *username, char *string)
mode_t oldmask;
TALLOC_CTX *tmp_ctx;
char *full_string = NULL;
+ int enforce;
errno_t ret = EOK;
len = strlen(string);
@@ -405,11 +406,22 @@ static errno_t write_selinux_login_file(const char *username, char *string)
oldmask = umask(022);
fd = mkstemp(tmp_path);
+ ret = errno;
umask(oldmask);
if (fd < 0) {
- DEBUG(SSSDBG_OP_FAILURE, ("creating the temp file for SELinux "
- "data failed. %s", tmp_path));
- ret = EIO;
+ if (ret == ENOENT) {
+ /* if selinux is disabled and selogin dir does not exist,
+ * just ignore the error */
+ if (selinux_getenforcemode(&enforce) == 0 && enforce == -1) {
+ ret = EOK;
+ goto done;
+ }
+
+ /* continue if we can't get enforce mode or selinux is enabled */
+ }
+
+ DEBUG(SSSDBG_OP_FAILURE, ("unable to create temp file [%s] "
+ "for SELinux data [%d]: %s\n", tmp_path, ret, strerror(ret)));
goto done;
}