- djm@cvs.openbsd.org 2014/07/03 03:11:03

[ssh-agent.c]
     Only cleanup agent socket in the main agent process and not in any
     subprocesses it may have started (e.g. forked askpass). Fixes
     agent sockets being zapped when askpass processes fatal();
     bz#2236 patch from Dmitry V. Levin
This commit is contained in:
Damien Miller 2014-07-03 21:22:40 +10:00
parent 61e28e55c3
commit b1e967c8d7
2 changed files with 15 additions and 1 deletions

View File

@ -8,6 +8,12 @@
[sshkey.c] [sshkey.c]
make Ed25519 keys' title fit properly in the randomart border; bz#2247 make Ed25519 keys' title fit properly in the randomart border; bz#2247
based on patch from Christian Hesse based on patch from Christian Hesse
- djm@cvs.openbsd.org 2014/07/03 03:11:03
[ssh-agent.c]
Only cleanup agent socket in the main agent process and not in any
subprocesses it may have started (e.g. forked askpass). Fixes
agent sockets being zapped when askpass processes fatal();
bz#2236 patch from Dmitry V. Levin
20140702 20140702
- OpenBSD CVS Sync - OpenBSD CVS Sync

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ssh-agent.c,v 1.186 2014/06/24 01:13:21 djm Exp $ */ /* $OpenBSD: ssh-agent.c,v 1.187 2014/07/03 03:11:03 djm Exp $ */
/* /*
* Author: Tatu Ylonen <ylo@cs.hut.fi> * Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -126,6 +126,9 @@ int max_fd = 0;
pid_t parent_pid = -1; pid_t parent_pid = -1;
time_t parent_alive_interval = 0; time_t parent_alive_interval = 0;
/* pid of process for which cleanup_socket is applicable */
pid_t cleanup_pid = 0;
/* pathname and directory for AUTH_SOCKET */ /* pathname and directory for AUTH_SOCKET */
char socket_name[MAXPATHLEN]; char socket_name[MAXPATHLEN];
char socket_dir[MAXPATHLEN]; char socket_dir[MAXPATHLEN];
@ -976,6 +979,9 @@ after_select(fd_set *readset, fd_set *writeset)
static void static void
cleanup_socket(void) cleanup_socket(void)
{ {
if (cleanup_pid != 0 && getpid() != cleanup_pid)
return;
debug("%s: cleanup", __func__);
if (socket_name[0]) if (socket_name[0])
unlink(socket_name); unlink(socket_name);
if (socket_dir[0]) if (socket_dir[0])
@ -1244,6 +1250,8 @@ main(int ac, char **av)
skip: skip:
cleanup_pid = getpid();
#ifdef ENABLE_PKCS11 #ifdef ENABLE_PKCS11
pkcs11_init(0); pkcs11_init(0);
#endif #endif