From cfea89fb7c7fe8482e3a6fadbd6595f2d552ed87 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 2 Apr 2009 12:26:44 +0000 Subject: [PATCH] Improve ssh_options_default_known_hosts_file(). git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@362 7dcaeef0-15fb-0310-b436-a5af3365683c --- libssh/options.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/libssh/options.c b/libssh/options.c index aab835f1..ede7ebfd 100644 --- a/libssh/options.c +++ b/libssh/options.c @@ -591,14 +591,24 @@ int ssh_options_default_ssh_dir(SSH_OPTIONS *opt) { return 0; } -int ssh_options_default_known_hosts_file(SSH_OPTIONS *opt){ - char buffer[1024]; - if(opt->known_hosts_file) - return 0; - ssh_options_default_ssh_dir(opt); - snprintf(buffer,1024,"%s/known_hosts",opt->ssh_dir); - opt->known_hosts_file=strdup(buffer); +int ssh_options_default_known_hosts_file(SSH_OPTIONS *opt) { + char buffer[1024] = {0}; + + if (opt->known_hosts_file) { return 0; + } + + if (ssh_options_default_ssh_dir(opt) < 0) { + return -1; + } + + snprintf(buffer, 1024, "%s/known_hosts", opt->ssh_dir); + opt->known_hosts_file = strdup(buffer); + if (opt->known_hosts_file == NULL) { + return -1; + } + + return 0; } /** During ssh_connect(), libssh will call the callback with status from