summaryrefslogtreecommitdiff
path: root/ssh.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2011-06-03 12:10:22 +1000
committerDamien Miller <djm@mindrot.org>2011-06-03 12:10:22 +1000
commitea2c1a4dc6b0568ec1c74f94adee124ad8a60c68 (patch)
tree1f1f182f236559bebeea7638fafc6e2063bd4a5c /ssh.c
parentc3c7227ccc4443a0b9bf180ee660fef47a064cdf (diff)
- djm@cvs.openbsd.org 2011/06/03 00:54:38
[ssh.c] bz#1883 - setproctitle() to identify mux master; patch from Bert.Wesarg AT googlemail.com; ok dtucker@ NB. includes additional portability code to enable setproctitle emulation on platforms that don't support it.
Diffstat (limited to 'ssh.c')
-rw-r--r--ssh.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/ssh.c b/ssh.c
index e7e15cd65..900537581 100644
--- a/ssh.c
+++ b/ssh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh.c,v 1.361 2011/05/24 07:15:47 djm Exp $ */ 1/* $OpenBSD: ssh.c,v 1.362 2011/06/03 00:54:38 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -111,6 +111,11 @@
111 111
112extern char *__progname; 112extern char *__progname;
113 113
114/* Saves a copy of argv for setproctitle emulation */
115#ifndef HAVE_SETPROCTITLE
116static char **saved_av;
117#endif
118
114/* Flag indicating whether debug mode is on. May be set on the command line. */ 119/* Flag indicating whether debug mode is on. May be set on the command line. */
115int debug_flag = 0; 120int debug_flag = 0;
116 121
@@ -240,6 +245,7 @@ main(int ac, char **av)
240 int dummy, timeout_ms; 245 int dummy, timeout_ms;
241 extern int optind, optreset; 246 extern int optind, optreset;
242 extern char *optarg; 247 extern char *optarg;
248
243 struct servent *sp; 249 struct servent *sp;
244 Forward fwd; 250 Forward fwd;
245 251
@@ -248,6 +254,17 @@ main(int ac, char **av)
248 254
249 __progname = ssh_get_progname(av[0]); 255 __progname = ssh_get_progname(av[0]);
250 256
257#ifndef HAVE_SETPROCTITLE
258 /* Prepare for later setproctitle emulation */
259 /* Save argv so it isn't clobbered by setproctitle() emulation */
260 saved_av = xcalloc(ac + 1, sizeof(*saved_av));
261 for (i = 0; i < ac; i++)
262 saved_av[i] = xstrdup(av[i]);
263 saved_av[i] = NULL;
264 compat_init_setproctitle(ac, av);
265 av = saved_av;
266#endif
267
251 /* 268 /*
252 * Discard other fds that are hanging around. These can cause problem 269 * Discard other fds that are hanging around. These can cause problem
253 * with backgrounded ssh processes started by ControlPersist. 270 * with backgrounded ssh processes started by ControlPersist.
@@ -977,6 +994,7 @@ control_persist_detach(void)
977 if (devnull > STDERR_FILENO) 994 if (devnull > STDERR_FILENO)
978 close(devnull); 995 close(devnull);
979 } 996 }
997 setproctitle("%s [mux]", options.control_path);
980} 998}
981 999
982/* Do fork() after authentication. Used by "ssh -f" */ 1000/* Do fork() after authentication. Used by "ssh -f" */