summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2012-02-27 06:57:06 -0500
committerStephen Gallagher <sgallagh@redhat.com>2012-02-27 11:52:50 -0500
commit293c73c93a790c08b429f461ab30ab1b809152d6 (patch)
tree91963a587933d2b8e4bad595861752d02243299d
parentf75a00dc8d365c5191d8eb386e4262b37d4ca911 (diff)
downloadsssd-293c73c93a790c08b429f461ab30ab1b809152d6.tar.gz
sssd-293c73c93a790c08b429f461ab30ab1b809152d6.tar.xz
sssd-293c73c93a790c08b429f461ab30ab1b809152d6.zip
SSH: Use fchmod instead of chmod on known_hosts file
-rw-r--r--src/responder/ssh/sshsrv_cmd.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/responder/ssh/sshsrv_cmd.c b/src/responder/ssh/sshsrv_cmd.c
index 40d9c5201..33f042a35 100644
--- a/src/responder/ssh/sshsrv_cmd.c
+++ b/src/responder/ssh/sshsrv_cmd.c
@@ -476,6 +476,7 @@ ssh_host_pubkeys_update_known_hosts(struct ssh_cmd_ctx *cmd_ctx)
fd = mkstemp(filename);
if (fd == -1) {
+ filename = NULL;
ret = errno;
goto done;
}
@@ -547,10 +548,7 @@ ssh_host_pubkeys_update_known_hosts(struct ssh_cmd_ctx *cmd_ctx)
dom = dom->next;
}
- close(fd);
- fd = -1;
-
- ret = chmod(filename, 0644);
+ ret = fchmod(fd, 0644);
if (ret == -1) {
ret = errno;
goto done;
@@ -565,10 +563,8 @@ ssh_host_pubkeys_update_known_hosts(struct ssh_cmd_ctx *cmd_ctx)
ret = EOK;
done:
- if (fd != -1) {
- close(fd);
- unlink(filename);
- }
+ if (fd != -1) close(fd);
+ if (ret != EOK && filename) unlink(filename);
talloc_free(tmp_ctx);
return ret;