aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2014-02-05 08:07:45 +0100
committerAris Adamantiadis <aris@0xbadc0de.be>2014-02-05 08:08:31 +0100
commitdca415a38e571bd4f4f289ad5be3f299903461e9 (patch)
treea5fe8fc80de75b46a3aa3bbc14226c82aa54735a
parent56f86cd4a1d774353b2095aebfdbdd73fa4276ba (diff)
downloadlibssh-dca415a38e571bd4f4f289ad5be3f299903461e9.tar.gz
libssh-dca415a38e571bd4f4f289ad5be3f299903461e9.tar.xz
libssh-dca415a38e571bd4f4f289ad5be3f299903461e9.zip
knownhosts: resolve leaks found by coverity
-rw-r--r--src/kex.c4
-rw-r--r--src/known_hosts.c13
2 files changed, 8 insertions, 9 deletions
diff --git a/src/kex.c b/src/kex.c
index 8bf66231..f19beb81 100644
--- a/src/kex.c
+++ b/src/kex.c
@@ -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);