]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Fix a few memory leaks.
authorSimon Tatham <anakin@pobox.com>
Sun, 26 Apr 2015 09:49:24 +0000 (10:49 +0100)
committerSimon Tatham <anakin@pobox.com>
Sun, 26 Apr 2015 09:49:24 +0000 (10:49 +0100)
Patch due to Chris Staite.

ssh.c
sshpubk.c

diff --git a/ssh.c b/ssh.c
index eb797589b6833cdf2ce48aef3123521d50c49c81..0cc27c93e41fade32d0e9be12397cba3f263e7dc 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -9538,6 +9538,8 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
                     logevent("Sent public key signature");
                    s->type = AUTH_TYPE_PUBLICKEY;
                    key->alg->freekey(key->data);
+                    sfree(key->comment);
+                    sfree(key);
                }
 
 #ifndef NO_GSSAPI
index 11182283f53f7a84db0cfe22d331982ed3a86f37..8b80f389959c25de251bcde25e6dd4837cfbaa3a 100644 (file)
--- a/sshpubk.c
+++ b/sshpubk.c
@@ -843,7 +843,7 @@ unsigned char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
     int public_blob_len;
     int i;
     const char *error = NULL;
-    char *comment;
+    char *comment = NULL;
 
     public_blob = NULL;
 
@@ -868,11 +868,10 @@ unsigned char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
        goto error;
     /* Select key algorithm structure. */
     alg = find_pubkey_alg(b);
+    sfree(b);
     if (!alg) {
-       sfree(b);
        goto error;
     }
-    sfree(b);
 
     /* Read the Encryption header line. */
     if (!read_header(fp, header) || 0 != strcmp(header, "Encryption"))
@@ -919,6 +918,10 @@ unsigned char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
        sfree(public_blob);
     if (errorstr)
        *errorstr = error;
+    if (comment && commentptr) {
+        sfree(comment);
+        *commentptr = NULL;
+    }
     return NULL;
 }