diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-02-05 08:07:45 +0100 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-02-05 08:08:31 +0100 |
commit | dca415a38e571bd4f4f289ad5be3f299903461e9 (patch) | |
tree | a5fe8fc80de75b46a3aa3bbc14226c82aa54735a | |
parent | 56f86cd4a1d774353b2095aebfdbdd73fa4276ba (diff) | |
download | libssh-dca415a38e571bd4f4f289ad5be3f299903461e9.tar.gz libssh-dca415a38e571bd4f4f289ad5be3f299903461e9.tar.xz libssh-dca415a38e571bd4f4f289ad5be3f299903461e9.zip |
knownhosts: resolve leaks found by coverity
-rw-r--r-- | src/kex.c | 4 | ||||
-rw-r--r-- | src/known_hosts.c | 13 |
2 files changed, 8 insertions, 9 deletions
@@ -390,8 +390,10 @@ static char *ssh_client_select_hostkeys(ssh_session session){ int needcoma=0; methods = ssh_knownhosts_algorithms(session); - if (methods == NULL || methods[0] == NULL) + if (methods == NULL || methods[0] == NULL){ + SAFE_FREE(methods); return NULL; + } for (i=0;preferred_hostkeys[i] != NULL; ++i){ for (j=0; methods[j] != NULL; ++j){ diff --git a/src/known_hosts.c b/src/known_hosts.c index 21f6cf29..e80697d8 100644 --- a/src/known_hosts.c +++ b/src/known_hosts.c @@ -678,24 +678,21 @@ char **ssh_knownhosts_algorithms(ssh_session session) { } if (session->opts.host == NULL) { - return 0; + return NULL; } host = ssh_lowercase(session->opts.host); hostport = ssh_hostport(host, session->opts.port); - if (host == NULL || hostport == NULL) { + array = malloc(sizeof(char *) * KNOWNHOSTS_MAXTYPES); + + if (host == NULL || hostport == NULL || array == NULL) { ssh_set_error_oom(session); SAFE_FREE(host); SAFE_FREE(hostport); + SAFE_FREE(array); return NULL; } - array = malloc(sizeof(char *) * KNOWNHOSTS_MAXTYPES); - if (array==NULL){ - ssh_set_error_oom(session); - return NULL; - } - do { tokens = ssh_get_knownhost_line(&file, session->opts.knownhosts, &type); |