diff --git a/ssh.c b/ssh.c index 3af4ba94..c7b724b9 100644 --- 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 { diff --git a/x11fwd.c b/x11fwd.c index 8ace77d5..2b4a6bc5 100644 --- 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; + if (!s) + return; + pr = (struct X11Private *)sk_get_private_ptr(s); if (pr->auth_protocol) { sfree(pr->auth_protocol);