From 70b422d0fbc9c6c4fd4607ac9aabe51c5ec6554e Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Fri, 17 Apr 2009 18:30:25 +0000 Subject: 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 --- libssh/keys.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libssh/keys.c b/libssh/keys.c index 04ddcd0..d25cda3 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) { -- cgit