[PATCH] ssh: set proctitle for mux master

Bert Wesarg bert.wesarg at googlemail.com
Tue Feb 8 08:11:58 EST 2011


Preserving the command line from the invoking ssh command doesn't
make much sense, so use setproctitle() to hide the arguments.
---
 ssh.c |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/ssh.c b/ssh.c
index d32ef78..8ebcc88 100644
--- a/ssh.c
+++ b/ssh.c
@@ -230,12 +230,25 @@ main(int ac, char **av)
 	struct servent *sp;
 	Forward fwd;
 
-	/* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
-	sanitise_stdfd();
-
 	__progname = ssh_get_progname(av[0]);
 	init_rng();
 
+#ifndef HAVE_SETPROCTITLE
+	/* Prepare for later setproctitle emulation */
+	{
+		/* Save argv. Duplicate so setproctitle emulation doesn't clobber it */
+		char **saved_argv = xcalloc(ac + 1, sizeof(*saved_argv));
+		for (i = 0; i < ac; i++)
+			saved_argv[i] = xstrdup(av[i]);
+		saved_argv[i] = NULL;
+		compat_init_setproctitle(ac, av);
+		av = saved_argv;
+	}
+#endif
+
+	/* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
+	sanitise_stdfd();
+
 	/*
 	 * Discard other fds that are hanging around. These can cause problem
 	 * with backgrounded ssh processes started by ControlPersist.
@@ -965,6 +978,7 @@ control_persist_detach(void)
 		if (devnull > STDERR_FILENO)
 			close(devnull);
 	}
+	setproctitle("%s [mux]", options.control_path);
 }
 
 /* Do fork() after authentication. Used by "ssh -f" */
-- 
1.7.3.3.1603.g7f137



More information about the openssh-unix-dev mailing list