Fix a segfault on abrupt X connection shutdown.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Thu, 15 Mar 2001 11:19:59 +0000 (11:19 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Thu, 15 Mar 2001 11:19:59 +0000 (11:19 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@998 cda61777-01e9-0310-a592-d414129be87e

ssh.c
x11fwd.c

diff --git a/ssh.c b/ssh.c
index 3af4ba9..c7b724b 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -1982,7 +1982,7 @@ static int do_ssh1_login(unsigned char *in, int inlen, int ispkt)
 }
 
 void sshfwd_close(struct ssh_channel *c) {
-    if (c) {
+    if (c && !c->closes) {
         if (ssh_version == 1) {
             send_packet(SSH1_MSG_CHANNEL_CLOSE, PKT_INT, c->remoteid, PKT_END);
         } else {
index 8ace77d..2b4a6bc 100644 (file)
--- a/x11fwd.c
+++ b/x11fwd.c
@@ -189,7 +189,10 @@ char *x11_init (Socket *s, char *display, void *c) {
 }
 
 void x11_close (Socket s) {
-    struct X11Private *pr = (struct X11Private *)sk_get_private_ptr(s);
+    struct X11Private *pr;\r
+       if (!s)\r
+               return;\r
+       pr = (struct X11Private *)sk_get_private_ptr(s);
 
     if (pr->auth_protocol) {
         sfree(pr->auth_protocol);