Fix various segfaults and heap trashes. Thanks to Andrew Mobbs.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 9 Feb 1999 15:39:08 +0000 (15:39 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 9 Feb 1999 15:39:08 +0000 (15:39 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@29 cda61777-01e9-0310-a592-d414129be87e

noise.c
ssh.c
windlg.c
window.c

diff --git a/noise.c b/noise.c
index cf9bba5..3ff00be 100644 (file)
--- a/noise.c
+++ b/noise.c
@@ -73,7 +73,7 @@ void noise_get_heavy(void (*func) (void *, int)) {
                       FILE_SHARE_READ | FILE_SHARE_WRITE,
                       NULL, OPEN_EXISTING, 0, NULL);
 
-    if (seedf) {
+    if (seedf != INVALID_HANDLE_VALUE) {
        while (1) {
            char buf[1024];
            DWORD len;
@@ -96,7 +96,7 @@ void random_save_seed(void) {
     seedf = CreateFile(seedpath, GENERIC_WRITE, 0,
                       NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
-    if (seedf) {
+    if (seedf != INVALID_HANDLE_VALUE) {
        int len;
        DWORD lenwritten;
        void *data;
diff --git a/ssh.c b/ssh.c
index 3fae152..633453d 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -174,8 +174,8 @@ static void s_wrpkt_start(int type, int len) {
     pktout.length = len-5;
     if (pktout.maxlen < biglen) {
        pktout.maxlen = biglen;
-       pktout.data = (pktout.data == NULL ? malloc(biglen) :
-                      realloc(pktout.data, biglen));
+       pktout.data = (pktout.data == NULL ? malloc(biglen+4) :
+                      realloc(pktout.data, biglen+4));
        if (!pktout.data)
            fatalbox("Out of memory");
     }
index 6fe11bb..d15ebb2 100644 (file)
--- a/windlg.c
+++ b/windlg.c
@@ -116,7 +116,6 @@ static void save_settings (char *section, int do_host) {
     
     if (RegCreateKey(HKEY_CURRENT_USER, puttystr, &subkey1)!=ERROR_SUCCESS ||
        RegCreateKey(subkey1, p, &sesskey) != ERROR_SUCCESS) {
-       free(p);
        sesskey = NULL;
     }
 
@@ -221,7 +220,6 @@ static void load_settings (char *section, int do_host) {
     
     if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &subkey1) != ERROR_SUCCESS ||
        RegOpenKey(subkey1, p, &sesskey) != ERROR_SUCCESS) {
-       free(p);
        sesskey = NULL;
     }
 
index 3cd719a..456f1ef 100644 (file)
--- a/window.c
+++ b/window.c
@@ -1347,7 +1347,8 @@ void set_sbar (int total, int start, int page) {
     si.nMax = total - 1;
     si.nPage = page;
     si.nPos = start;
-    SetScrollInfo (hwnd, SB_VERT, &si, TRUE);
+    if (hwnd)
+        SetScrollInfo (hwnd, SB_VERT, &si, TRUE);
 }
 
 Context get_ctx() {