[PATCH] fix memory leak in mux_client_request_stdio_fwd
    Boris Tonofa 
    boris.afonot at gmail.com
       
    Sat Jun 14 06:23:39 AEST 2025
    
    
  
Hi,
This patch fixes a memory leak in mux_client_request_stdio_fwd().
If mux_client_read_packet() returned early due to EPIPE or EINTR, the 
function exited without freeing the buffer allocated with sshbuf_new(). 
This patch ensures the sshbuf is always freed on all return paths.
The patch applies cleanly to current master and passes all CI tests.
GitHub mirror PR (with CI results):
   https://github.com/openssh/openssh-portable/pull/575
Please review.
Thanks,
Boris
 From 65fcdc9253518912d859bd6427a9c24d786da4e2 Mon Sep 17 00:00:00 2001
From: Boris Tonofa <b.tonofa at ideco.ru>
Date: Fri, 13 Jun 2025 00:06:32 +0300
Subject: [PATCH] fix memory leak in mux_client_request_stdio_fwd
---
  mux.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mux.c b/mux.c
index 415024f74..1069e3df4 100644
--- a/mux.c
+++ b/mux.c
@@ -2202,8 +2202,10 @@ mux_client_request_stdio_fwd(int fd)
  	sshbuf_reset(m);
  	if (mux_client_read_packet(fd, m) != 0) {
  		if (errno == EPIPE ||
-		    (errno == EINTR && muxclient_terminate != 0))
+		    (errno == EINTR && muxclient_terminate != 0)) {
+			sshbuf_free(m);
  			return 0;
+		}
  		fatal_f("mux_client_read_packet: %s", strerror(errno));
  	}
  	fatal_f("master returned unexpected message %u", type);
-- 
2.47.0
    
    
More information about the openssh-unix-dev
mailing list