diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-07-21 14:07:23 +0200 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-07-21 14:07:23 +0200 |
commit | b534bfc520282a533fabf72c36f554b035460d6d (patch) | |
tree | a43fcb14235e98944d74289ffc08e8c517d55a00 | |
parent | 41a8fb5810759118d93bee30a254ecf4863437b5 (diff) | |
download | libssh-b534bfc520282a533fabf72c36f554b035460d6d.tar.gz libssh-b534bfc520282a533fabf72c36f554b035460d6d.tar.xz libssh-b534bfc520282a533fabf72c36f554b035460d6d.zip |
Fix ssh_write_knownhost() which always returned -1.
fwrite() return the the number of items written not the size of the
buffer.
-rw-r--r-- | libssh/keyfiles.c | 2 | ||||
-rw-r--r-- | sample.c | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/libssh/keyfiles.c b/libssh/keyfiles.c index f944e818..ad456cdf 100644 --- a/libssh/keyfiles.c +++ b/libssh/keyfiles.c @@ -1576,7 +1576,7 @@ int ssh_write_knownhost(SSH_SESSION *session) { } len = strlen(buffer); - if (fwrite(buffer, len, 1, file) != len || ferror(file)) { + if (fwrite(buffer, len, 1, file) != 1 || ferror(file)) { fclose(file); return -1; } @@ -476,7 +476,6 @@ int main(int argc, char **argv){ /* fallback to SSH_SERVER_NOT_KNOWN behavior */ case SSH_SERVER_NOT_KNOWN: hexa = ssh_get_hexa(hash, hlen); - free(hash); fprintf(stderr,"The server is unknown. Do you trust the host key ?\n"); fprintf(stderr, "Public key hash: %s\n", hexa); free(hexa); @@ -488,8 +487,11 @@ int main(int argc, char **argv){ fprintf(stderr,"This new key will be written on disk for further usage. do you agree ?\n"); fgets(buf,sizeof(buf),stdin); if(strncasecmp(buf,"yes",3)==0){ - if(ssh_write_knownhost(session)) - fprintf(stderr,"error %s\n",ssh_get_error(session)); + if (ssh_write_knownhost(session) < 0) { + free(hash); + fprintf(stderr, "error %s\n", strerror(errno)); + exit(-1); + } } break; |