aboutsummaryrefslogtreecommitdiff
path: root/libssh/keys.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-17 18:30:25 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-17 18:30:25 +0000
commit70b422d0fbc9c6c4fd4607ac9aabe51c5ec6554e (patch)
treec3623adacb0b5ad927800358de41894e4e36b63b /libssh/keys.c
parent91afe0de8a5541c30146c54de64f2dafa33f2d04 (diff)
downloadlibssh-70b422d0fbc9c6c4fd4607ac9aabe51c5ec6554e.tar.gz
libssh-70b422d0fbc9c6c4fd4607ac9aabe51c5ec6554e.tar.xz
libssh-70b422d0fbc9c6c4fd4607ac9aabe51c5ec6554e.zip
Don't leak memory in publickey_make_* functions.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@532 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/keys.c')
-rw-r--r--libssh/keys.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libssh/keys.c b/libssh/keys.c
index 04ddcd09..d25cda3d 100644
--- a/libssh/keys.c
+++ b/libssh/keys.c
@@ -75,6 +75,7 @@ PUBLIC_KEY *publickey_make_dss(SSH_SESSION *session, BUFFER *buffer) {
key = malloc(sizeof(PUBLIC_KEY));
if (key == NULL) {
+ buffer_free(buffer);
return NULL;
}
@@ -148,7 +149,7 @@ error:
string_free(pubkey);
publickey_free(key);
- return key;
+ return NULL;
}
PUBLIC_KEY *publickey_make_rsa(SSH_SESSION *session, BUFFER *buffer,
@@ -159,6 +160,7 @@ PUBLIC_KEY *publickey_make_rsa(SSH_SESSION *session, BUFFER *buffer,
key = malloc(sizeof(PUBLIC_KEY));
if (key == NULL) {
+ buffer_free(buffer);
return NULL;
}
@@ -171,6 +173,7 @@ PUBLIC_KEY *publickey_make_rsa(SSH_SESSION *session, BUFFER *buffer,
key->type_c = type;
e = buffer_get_ssh_string(buffer);
n = buffer_get_ssh_string(buffer);
+
buffer_free(buffer); /* we don't need it anymore */
if(e == NULL || n == NULL) {