]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: tweak proctitle to include sshd arguments, as these are
authordjm@openbsd.org <djm@openbsd.org>
Fri, 24 Jan 2020 23:56:01 +0000 (23:56 +0000)
committerDamien Miller <djm@mindrot.org>
Sat, 25 Jan 2020 00:27:29 +0000 (11:27 +1100)
frequently used to distinguish between multiple independent instances of the
server. New proctitle looks like this:

$ pgrep -lf sshd
12844 sshd: /usr/sbin/sshd -f /etc/ssh/sshd_config [listener] 0 of 10-100 startups

requested by sthen@ and aja@; ok aja@

OpenBSD-Commit-ID: cf235a561c655a3524a82003cf7244ecb48ccc1e

sshd.c

diff --git a/sshd.c b/sshd.c
index c447edfe1e6709ba052c95a531f7723c9075078a..46fdf7ee384a17907363fcbd43a5b40daf63fde4 100644 (file)
--- a/sshd.c
+++ b/sshd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshd.c,v 1.544 2020/01/23 07:10:22 dtucker Exp $ */
+/* $OpenBSD: sshd.c,v 1.545 2020/01/24 23:56:01 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -262,6 +262,8 @@ void destroy_sensitive_data(void);
 void demote_sensitive_data(void);
 static void do_ssh2_kex(struct ssh *);
 
+static char *listener_proctitle;
+
 /*
  * Close all listening sockets
  */
@@ -1087,9 +1089,9 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
         */
        for (;;) {
                if (ostartups != startups) {
-                       setproctitle("[listener] %d of %d-%d startups",
-                           startups, options.max_startups_begin,
-                           options.max_startups);
+                       setproctitle("%s [listener] %d of %d-%d startups",
+                           listener_proctitle, startups,
+                           options.max_startups_begin, options.max_startups);
                        ostartups = startups;
                }
                if (received_sighup) {
@@ -1435,6 +1437,17 @@ accumulate_host_timing_secret(struct sshbuf *server_cfg,
        sshbuf_free(buf);
 }
 
+static char *
+prepare_proctitle(int ac, char **av)
+{
+       char *ret = NULL;
+       int i;
+
+       for (i = 0; i < ac; i++)
+               xextendf(&ret, " ", "%s", av[i]);
+       return ret;
+}
+
 /*
  * Main program for the daemon.
  */
@@ -1911,6 +1924,7 @@ main(int ac, char **av)
                rexec_argv[rexec_argc] = "-R";
                rexec_argv[rexec_argc + 1] = NULL;
        }
+       listener_proctitle = prepare_proctitle(ac, av);
 
        /* Ensure that umask disallows at least group and world write */
        new_umask = umask(0077) | 0022;