diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2012-08-05 22:03:11 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2012-08-16 13:30:58 +0200 |
commit | 79402313dc0d7f854b4334dd427e03b7baf0b9db (patch) | |
tree | f08cf039ee45ae4bb47deb5f19af024eec9e146b /src | |
parent | af824bac568ebe8a03273f73246ac78b415ea756 (diff) | |
download | sssd-79402313dc0d7f854b4334dd427e03b7baf0b9db.tar.gz sssd-79402313dc0d7f854b4334dd427e03b7baf0b9db.tar.xz sssd-79402313dc0d7f854b4334dd427e03b7baf0b9db.zip |
Do not try to remove the temp login file if already renamed
write_selinux_string() would try to unlink the temporary file even after
it was renamed. Failure to unlink the file would not be fatal, but would
produce a confusing error message.
Also don't use "0" for the default fd number, that's reserved for stdin.
Using -1 is safer.
Diffstat (limited to 'src')
-rw-r--r-- | src/responder/pam/pamsrv_cmd.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c index 8c9dd9b55..944845a86 100644 --- a/src/responder/pam/pamsrv_cmd.c +++ b/src/responder/pam/pamsrv_cmd.c @@ -366,7 +366,7 @@ static errno_t write_selinux_string(const char *username, char *string) char *tmp_path = NULL; ssize_t written; int len; - int fd = 0; + int fd = -1; mode_t oldmask; TALLOC_CTX *tmp_ctx; char *full_string = NULL; @@ -437,9 +437,10 @@ static errno_t write_selinux_string(const char *username, char *string) } else { ret = EOK; } + fd = -1; done: - if (fd > 0) { + if (fd != -1) { close(fd); if (unlink(tmp_path) < 0) { DEBUG(SSSDBG_MINOR_FAILURE, ("Could not remove file [%s]", |