Fix a few more memory and resource leaks.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 22 Jul 2013 19:55:55 +0000 (19:55 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 22 Jul 2013 19:55:55 +0000 (19:55 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@9968 cda61777-01e9-0310-a592-d414129be87e

proxy.c
psftp.c
windows/winpgen.c

diff --git a/proxy.c b/proxy.c
index 70da38c..13a5071 100644 (file)
--- a/proxy.c
+++ b/proxy.c
@@ -474,6 +474,7 @@ Socket new_connection(SockAddr addr, char *hostname,
        if (sk_addr_error(proxy_addr) != NULL) {
            ret->error = "Proxy error: Unable to resolve proxy host name";
             sfree(pplug);
+            sk_addr_free(proxy_addr);
            return (Socket)ret;
        }
        sfree(proxy_canonical_name);
diff --git a/psftp.c b/psftp.c
index 6dd733d..8ed2343 100644 (file)
--- a/psftp.c
+++ b/psftp.c
@@ -1258,7 +1258,9 @@ int sftp_general_get(struct sftp_command *cmd, int restart, int multiple)
            fname = canonify(origwfname);
 
            if (!fname) {
+                sftp_finish_wildcard_matching(swcm);
                printf("%s: canonify: %s\n", origwfname, fxp_error());
+               sfree(origwfname);
                sfree(unwcfname);
                return 0;
            }
@@ -2720,6 +2722,7 @@ static int psftp_connect(char *userhost, char *user, int portnumber)
            /* Use `host' as a bare hostname. */
            conf_set_str(conf, CONF_host, host);
        }
+        conf_free(conf2);
     } else {
        /* Patch in hostname `host' to session details. */
        conf_set_str(conf, CONF_host, host);
index 9fa35af..33d76c6 100644 (file)
@@ -954,8 +954,11 @@ static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
        /*
         * Load a key file if one was provided on the command line.
         */
-       if (cmdline_keyfile)
-           load_key_file(hwnd, state, filename_from_str(cmdline_keyfile), 0);
+       if (cmdline_keyfile) {
+            Filename *fn = filename_from_str(cmdline_keyfile);
+           load_key_file(hwnd, state, fn, 0);
+            filename_free(fn);
+        }
 
        return 1;
       case WM_MOUSEMOVE: