upstream: tweak proctitle to include sshd arguments, as these are

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
This commit is contained in:
djm@openbsd.org 2020-01-24 23:56:01 +00:00 committed by Damien Miller
parent 8075fccbd4
commit a8c05c6408
1 changed files with 18 additions and 4 deletions

22
sshd.c
View File

@ -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;