aboutsummaryrefslogtreecommitdiff
path: root/libssh/keyfiles.c
diff options
context:
space:
mode:
Diffstat (limited to 'libssh/keyfiles.c')
-rw-r--r--libssh/keyfiles.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libssh/keyfiles.c b/libssh/keyfiles.c
index eb876059..a0b71a40 100644
--- a/libssh/keyfiles.c
+++ b/libssh/keyfiles.c
@@ -938,6 +938,7 @@ int ssh_write_knownhost(SSH_SESSION *session){
unsigned char *pubkey_64;
STRING *pubkey=session->current_crypto->server_pubkey;
char buffer[4096];
+ size_t len = 0;
FILE *file;
ssh_options_default_known_hosts_file(session->options);
if(!session->options->host){
@@ -992,7 +993,11 @@ int ssh_write_knownhost(SSH_SESSION *session){
snprintf(buffer,sizeof(buffer),"%s %s %s\n",session->options->host,session->current_crypto->server_pubkey_type,pubkey_64);
free(pubkey_64);
}
- fwrite(buffer,strlen(buffer),1,file);
+ len = strlen(buffer);
+ if (fwrite(buffer, len, 1, file) != len || ferror(file)) {
+ fclose(file);
+ return -1;
+ }
fclose(file);
return 0;
}