Index: TortoisePlink/SSHDSS.C

===================================================================

--- TortoisePlink/SSHDSS.C	(revision 22780)

+++ TortoisePlink/SSHDSS.C	(working copy)

@@ -293,6 +293,8 @@

     freebn(v);
     freebn(r);
     freebn(s);
+	freebn(u1);
+	freebn(u2);
 
     return ret;
 }
@@ -375,6 +377,7 @@

     SHA_State s;
     unsigned char digest[20];
     Bignum ytest;
+	int not_equals;
 
     dss = dss_newkey((char *) pub_blob, pub_len);
     dss->x = getmp(&pb, &priv_len);
@@ -400,11 +403,13 @@

      * Now ensure g^x mod p really is y.
      */
     ytest = modpow(dss->g, dss->x, dss->p);
-    if (0 != bignum_cmp(ytest, dss->y)) {
+    not_equals = (0 != bignum_cmp(ytest, dss->y));
+	freebn(ytest);
+
+	if (not_equals) {
 	dss_freekey(dss);
 	return NULL;
     }
-    freebn(ytest);
 
     return dss;
 }
Index: TortoisePlink/SSHRSA.C

===================================================================

--- TortoisePlink/SSHRSA.C	(revision 22780)

+++ TortoisePlink/SSHRSA.C	(working copy)

@@ -424,7 +424,11 @@

     cmp = bignum_cmp(ed, One);
     sfree(ed);
     if (cmp != 0)
-	return 0;
+	{
+		sfree(pm1);
+		sfree(qm1);
+		return 0;
+	}
 
     /*
      * Ensure p > q.
@@ -449,7 +453,10 @@

     n = modmul(key->iqmp, key->q, key->p);
     cmp = bignum_cmp(n, One);
     sfree(n);
-    if (cmp != 0)
+	sfree(pm1);
+	sfree(qm1);
+    
+	if (cmp != 0)
 	return 0;
 
     return 1;
Index: TortoisePlink/Windows/winjump.c

===================================================================

--- TortoisePlink/Windows/winjump.c	(revision 22780)

+++ TortoisePlink/Windows/winjump.c	(working copy)

@@ -382,7 +382,7 @@

                                    const char *sessionname)
 {
     IShellLink *ret;
-    char *app_path, *param_string, *desc_string;
+    char *app_path = NULL, *param_string, *desc_string;
     void *psettings_tmp;
     IPropertyStore *pPS;
     PROPVARIANT pv;
@@ -411,7 +411,10 @@

     if (sessionname) {
         psettings_tmp = open_settings_r(sessionname);
         if (!psettings_tmp)
+		{
+			sfree(app_path);
             return NULL;
+		}
         close_settings_r(psettings_tmp);
     }
 
@@ -419,7 +422,10 @@

     if (!SUCCEEDED(CoCreateInstance(&CLSID_ShellLink, NULL,
                                     CLSCTX_INPROC_SERVER,
                                     COMPTR(IShellLink, &ret))))
+	{
+		sfree(app_path);
         return NULL;
+	}
 
     /* Set path, parameters, icon and description. */
     ret->lpVtbl->SetPath(ret, app_path);
Index: TortoisePlink/Windows/WINPGNTC.C

===================================================================

--- TortoisePlink/Windows/WINPGNTC.C	(revision 22780)

+++ TortoisePlink/Windows/WINPGNTC.C	(working copy)

@@ -210,7 +210,10 @@

     filemap = CreateFileMapping(INVALID_HANDLE_VALUE, psa, PAGE_READWRITE,
 				0, AGENT_MAX_MSGLEN, mapname);
     if (filemap == NULL || filemap == INVALID_HANDLE_VALUE)
-	return 1;		       /* *out == NULL, so failure */
+	{
+		sfree(mapname);
+		return 1;		       /* *out == NULL, so failure */
+	}
     p = MapViewOfFile(filemap, FILE_MAP_WRITE, 0, 0, 0);
     memcpy(p, in, inlen);
     cds.dwData = AGENT_COPYDATA_ID;
Index: TortoisePlink/Windows/WINPROXY.C

===================================================================

--- TortoisePlink/Windows/WINPROXY.C	(revision 22780)

+++ TortoisePlink/Windows/WINPROXY.C	(working copy)

@@ -172,6 +172,7 @@

     sa.bInheritHandle = TRUE;
     if (!CreatePipe(&us_from_cmd, &cmd_to_us, &sa, 0)) {
 	ret->error = dupprintf("Unable to create pipes for proxy command");
+	sfree(cmd);
 	return (Socket)ret;
     }
 
@@ -179,6 +180,7 @@

 	CloseHandle(us_from_cmd);
 	CloseHandle(cmd_to_us);
 	ret->error = dupprintf("Unable to create pipes for proxy command");
+	sfree(cmd);
 	return (Socket)ret;
     }
 
Index: TortoisePlink/Windows/WINSTORE.C

===================================================================

--- TortoisePlink/Windows/WINSTORE.C	(revision 22780)

+++ TortoisePlink/Windows/WINSTORE.C	(working copy)

@@ -327,7 +327,11 @@

 
     if (RegOpenKey(HKEY_CURRENT_USER, PUTTY_REG_POS "\\SshHostKeys",
 		   &rkey) != ERROR_SUCCESS)
-	return 1;		       /* key does not exist in registry */
+	{
+		sfree(otherstr);
+		sfree(regname);
+		return 1;		       /* key does not exist in registry */
+	}
 
     readlen = len;
     ret = RegQueryValueEx(rkey, regname, NULL, &type, otherstr, &readlen);
@@ -392,6 +396,8 @@

 		RegSetValueEx(rkey, regname, 0, REG_SZ, otherstr,
 			      strlen(otherstr) + 1);
 	}
+
+	sfree(oldstyle);
     }
 
     RegCloseKey(rkey);
Index: TortoisePlink/X11FWD.C

===================================================================

--- TortoisePlink/X11FWD.C	(revision 22780)

+++ TortoisePlink/X11FWD.C	(working copy)

@@ -172,6 +172,7 @@

 	    sk_addr_free(disp->addr);
 	    sfree(disp->hostname);
 	    sfree(disp->unixsocketpath);
+		sfree(disp);
 	    return NULL;	       /* FIXME: report an error */
 	}
     }
Index: TortoiseProc/RepositoryBrowser.cpp

===================================================================

--- TortoiseProc/RepositoryBrowser.cpp	(revision 22780)

+++ TortoiseProc/RepositoryBrowser.cpp	(working copy)

@@ -1447,8 +1447,8 @@

                         tvitem.cChildren = 1;
                         m_RepoTree.SetItem(&tvitem);
                     }
-                    CItem * manualItem = new CItem(currentPath.Mid (currentPath.ReverseFind ('/') + 1), L"", svn_node_dir, 0, true, false, -1, 0, L"", L"", L"", L"", false, 0, 0, currentPath, pTreeItem->repository);
-                    node = AutoInsert (node, *manualItem);
+                    CItem manualItem(currentPath.Mid (currentPath.ReverseFind ('/') + 1), L"", svn_node_dir, 0, true, false, -1, 0, L"", L"", L"", L"", false, 0, 0, currentPath, pTreeItem->repository);
+                    node = AutoInsert (node, manualItem);
                 }
                 else
                     return NULL;
Index: Utils/MiscUI/XMessageBox.cpp

===================================================================

--- Utils/MiscUI/XMessageBox.cpp	(revision 22780)

+++ Utils/MiscUI/XMessageBox.cpp	(working copy)

@@ -1853,6 +1853,7 @@

                         (FARPROC&)pHtmlHelp = GetProcAddress(hInstHtmlHelp, "HtmlHelpW");
                         if (pHtmlHelp)
                             hHelp = pHtmlHelp(hwnd, Me->m_szHelpPath, HH_DISPLAY_TOPIC, NULL);
+						FreeLibrary(hInstHtmlHelp);
                     }
                     if (hHelp == NULL)
                         ::MessageBox(hwnd, _T("could not show help file"), _T("Help"), MB_ICONERROR);

