summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2012-04-06 21:45:16 +0200
committerStephen Gallagher <sgallagh@redhat.com>2012-04-18 10:43:22 -0400
commit5543c787465d903a53a8ca0d01398c08b954f7e6 (patch)
tree27ad686661cebb4d383d501ac2991614879e8f1c
parentdff2de091d8d787dd786265cec7090d388896cf9 (diff)
downloadsssd_unused-5543c787465d903a53a8ca0d01398c08b954f7e6.tar.gz
sssd_unused-5543c787465d903a53a8ca0d01398c08b954f7e6.tar.xz
sssd_unused-5543c787465d903a53a8ca0d01398c08b954f7e6.zip
pam_sss: improve error handling in SELinux code
-rw-r--r--src/sss_client/pam_sss.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/sss_client/pam_sss.c b/src/sss_client/pam_sss.c
index 4fe4613a..8778fe19 100644
--- a/src/sss_client/pam_sss.c
+++ b/src/sss_client/pam_sss.c
@@ -1198,6 +1198,7 @@ static int send_and_receive(pam_handle_t *pamh, struct pam_items *pi,
oldmask = umask(022);
fd = mkstemp(tmp_path);
+ umask(oldmask);
if (fd < 0) {
logger(pamh, LOG_ERR, "creating the temp file for SELinux "
"data failed. %s", tmp_path);
@@ -1223,9 +1224,6 @@ static int send_and_receive(pam_handle_t *pamh, struct pam_items *pi,
close(fd);
rename(tmp_path, path);
- free(path);
- free(tmp_path);
- umask(oldmask);
#endif /* HAVE_SELINUX */
break;
case SSS_PAM_SETCRED:
@@ -1242,6 +1240,10 @@ done:
free(buf);
}
free(repbuf);
+#ifdef HAVE_SELINUX
+ free(path);
+ free(tmp_path);
+#endif /* HAVE_SELINUX */
return pam_status;
}