Free alloc'd memory.
This commit is contained in:
parent
74e1f57a1d
commit
d2fd406c75
18
configure.ac
18
configure.ac
@ -111,6 +111,11 @@ AC_ARG_WITH(init_dir,
|
|||||||
AM_CONDITIONAL([ENABLE_INIT], [test "x${init_dir}" != "x"])
|
AM_CONDITIONAL([ENABLE_INIT], [test "x${init_dir}" != "x"])
|
||||||
AC_SUBST(init_dir)
|
AC_SUBST(init_dir)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(ssh_agent,
|
||||||
|
[AS_HELP_STRING([--enable-ssh-agent],
|
||||||
|
[enable built-in ssh-agent])
|
||||||
|
],enable_ssh_agent=yes)
|
||||||
|
|
||||||
#
|
#
|
||||||
# libssl
|
# libssl
|
||||||
#
|
#
|
||||||
@ -570,18 +575,23 @@ then
|
|||||||
[], [have_ssh_agent=no],
|
[], [have_ssh_agent=no],
|
||||||
[[#include <libssh2.h>]])
|
[[#include <libssh2.h>]])
|
||||||
|
|
||||||
AM_CONDITIONAL([ENABLE_SSH_AGENT], [test "x${have_ssh_agent}" = "xyes"])
|
AM_CONDITIONAL([ENABLE_SSH_AGENT],
|
||||||
|
[test "x${have_ssh_agent}" = "xyes" \
|
||||||
|
-a "x${enable_ssh_agent}" = "xyes"])
|
||||||
|
|
||||||
|
if test "x${enable_ssh_agent}" = "xyes"
|
||||||
|
then
|
||||||
if test "x${have_ssh_agent}" = "xno"
|
if test "x${have_ssh_agent}" = "xno"
|
||||||
then
|
then
|
||||||
AC_MSG_WARN([
|
AC_MSG_ERROR([
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
No agent forwarding found in libssh2.
|
Agent forwarding support was requested but no such support was found
|
||||||
Support for agent forwarding will not be built.
|
in libssh2.
|
||||||
--------------------------------------------])
|
--------------------------------------------])
|
||||||
else
|
else
|
||||||
AC_DEFINE([ENABLE_SSH_AGENT])
|
AC_DEFINE([ENABLE_SSH_AGENT])
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -235,6 +235,9 @@ static LIBSSH2_SESSION* __guac_ssh_create_session(guac_client* client) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Free addrinfo */
|
||||||
|
freeaddrinfo(addresses);
|
||||||
|
|
||||||
/* Open SSH session */
|
/* Open SSH session */
|
||||||
LIBSSH2_SESSION* session = libssh2_session_init_ex(NULL, NULL,
|
LIBSSH2_SESSION* session = libssh2_session_init_ex(NULL, NULL,
|
||||||
NULL, client);
|
NULL, client);
|
||||||
|
@ -127,19 +127,29 @@ ssh_key* ssh_key_alloc(char* data, int length, char* passphrase) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Otherwise, unsupported type */
|
/* Otherwise, unsupported type */
|
||||||
else
|
else {
|
||||||
|
BIO_free(key_bio);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Copy private key to structure */
|
/* Copy private key to structure */
|
||||||
key->private_key_length = length;
|
key->private_key_length = length;
|
||||||
key->private_key = malloc(length);
|
key->private_key = malloc(length);
|
||||||
memcpy(key->private_key, data, length);
|
memcpy(key->private_key, data, length);
|
||||||
|
|
||||||
|
BIO_free(key_bio);
|
||||||
return key;
|
return key;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ssh_key_free(ssh_key* key) {
|
void ssh_key_free(ssh_key* key) {
|
||||||
|
|
||||||
|
/* Free key-specific data */
|
||||||
|
if (key->type == SSH_KEY_RSA)
|
||||||
|
RSA_free(key->rsa);
|
||||||
|
else if (key->type == SSH_KEY_DSA)
|
||||||
|
DSA_free(key->dsa);
|
||||||
|
|
||||||
free(key->public_key);
|
free(key->public_key);
|
||||||
free(key);
|
free(key);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user