fix channel mux_ctx leak

Moritz Buhl mbuhl at openbsd.org
Wed Sep 1 22:44:13 AEST 2021


Hi,

I noticed that the channel mux_ctx leak reported in May 2020 is back.
https://marc.info/?l=openssh-unix-dev&m=159001768606068

The reproducer from the previous thread should work. Otherwise
here are my scripts: https://github.com/moritzbuhl/ssh-leak

mbuhl

Index: channels.c
===================================================================
RCS file: /mount/openbsd/cvs/src/usr.bin/ssh/channels.c,v
retrieving revision 1.407
diff -u -p -r1.407 channels.c
--- channels.c	19 May 2021 01:24:05 -0000	1.407
+++ channels.c	1 Sep 2021 11:17:00 -0000
@@ -619,9 +619,11 @@ channel_free(struct ssh *ssh, Channel *c
 	debug("channel %d: free: %s, nchannels %u", c->self,
 	    c->remote_name ? c->remote_name : "???", n);
 
-	if (c->type == SSH_CHANNEL_MUX_CLIENT)
+	if (c->type == SSH_CHANNEL_MUX_CLIENT) {
 		mux_remove_remote_forwardings(ssh, c);
-	else if (c->type == SSH_CHANNEL_MUX_LISTENER) {
+		free(c->mux_ctx);
+		c->mux_ctx = NULL;
+	} else if (c->type == SSH_CHANNEL_MUX_LISTENER) {
 		free(c->mux_ctx);
 		c->mux_ctx = NULL;
 	}



More information about the openssh-unix-dev mailing list