aboutsummaryrefslogtreecommitdiff
path: root/src/pki_crypto.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2014-01-28 11:56:59 +0100
committerAndreas Schneider <asn@cryptomilk.org>2014-01-28 11:56:59 +0100
commit75be42df7599fa025ddab9c399e42313729fd8b2 (patch)
treebe85b1f44ceaa8f6250cb119ad3c4cfa78a8bc4f /src/pki_crypto.c
parent3224506fe0441388c1d1ba889fc8e5d5b9e0dfb2 (diff)
downloadlibssh-75be42df7599fa025ddab9c399e42313729fd8b2.tar.gz
libssh-75be42df7599fa025ddab9c399e42313729fd8b2.tar.xz
libssh-75be42df7599fa025ddab9c399e42313729fd8b2.zip
pki_crypto: Fix memory leak with EC_KEY_set_public_key().
BUG: https://red.libssh.org/issues/146
Diffstat (limited to 'src/pki_crypto.c')
-rw-r--r--src/pki_crypto.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pki_crypto.c b/src/pki_crypto.c
index 07bc7f99..77a115a8 100644
--- a/src/pki_crypto.c
+++ b/src/pki_crypto.c
@@ -200,9 +200,11 @@ int pki_pubkey_build_ecdsa(ssh_key key, int nid, ssh_string e)
return -1;
}
+ /* EC_KEY_set_public_key duplicates p */
ok = EC_KEY_set_public_key(key->ecdsa, p);
+ EC_POINT_free(p);
if (!ok) {
- EC_POINT_free(p);
+ return -1;
}
return 0;