aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2014-02-02 20:50:36 +0100
committerAris Adamantiadis <aris@0xbadc0de.be>2014-02-04 16:04:45 +0100
commit99f8b2b80354987f314bf0de4421f05de9ffeea8 (patch)
treed62f2825f6b9c383a08ec34d2e762df3d367a662
parent22edaf43ee594e6bc27c3cc4592ca48c0ac4658a (diff)
downloadlibssh-99f8b2b80354987f314bf0de4421f05de9ffeea8.tar.gz
libssh-99f8b2b80354987f314bf0de4421f05de9ffeea8.tar.xz
libssh-99f8b2b80354987f314bf0de4421f05de9ffeea8.zip
Kex: fix coverity warning + edge case
-rw-r--r--src/kex.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/kex.c b/src/kex.c
index fa3ed9f8..670ac515 100644
--- a/src/kex.c
+++ b/src/kex.c
@@ -397,14 +397,18 @@ int set_client_kex(ssh_session session){
if (methods & (1 << prefered_hostkeys[i])){
if (verify_existing_algo(SSH_HOSTKEYS, ssh_key_type_to_char(prefered_hostkeys[i]))){
if(needcoma)
- strcat(methods_buffer,",");
- strcat(methods_buffer, ssh_key_type_to_char(prefered_hostkeys[i]));
+ strncat(methods_buffer,",",sizeof(methods_buffer)-strlen(methods_buffer)-1);
+ strncat(methods_buffer, ssh_key_type_to_char(prefered_hostkeys[i]), sizeof(methods_buffer)-strlen(methods_buffer)-1);
needcoma = 1;
}
}
}
- SSH_LOG(SSH_LOG_DEBUG, "Changing host key method to \"%s\"", methods_buffer);
- session->opts.wanted_methods[SSH_HOSTKEYS] = strdup(methods_buffer);
+ if(strlen(methods_buffer) > 0){
+ SSH_LOG(SSH_LOG_DEBUG, "Changing host key method to \"%s\"", methods_buffer);
+ session->opts.wanted_methods[SSH_HOSTKEYS] = strdup(methods_buffer);
+ } else {
+ SSH_LOG(SSH_LOG_DEBUG, "No supported kex method for existing key in known_hosts file");
+ }
}
}