[openssh-commits] [openssh] 08/08: upstream: make ssh-add open it's connection to the agent after it
git+noreply at mindrot.org
git+noreply at mindrot.org
Mon Jun 29 12:21:35 AEST 2026
This is an automated email from the git hooks/post-receive script.
djm pushed a commit to branch master
in repository openssh.
commit d6a589d3c8530375c2d56bcfb914575a7fcd3715
Author: djm at openbsd.org <djm at openbsd.org>
AuthorDate: Mon Jun 29 02:13:05 2026 +0000
upstream: make ssh-add open it's connection to the agent after it
has finished getopt() processing and not before. This allows the -v flag to
work properly.
ok jca@
OpenBSD-Commit-ID: b9ac820018875aeb5b43ae2119a70c16a5cd2aef
---
authfd.c | 4 ++--
ssh-add.c | 33 +++++++++++++++++----------------
2 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/authfd.c b/authfd.c
index 1f2151b56..2b7c561b3 100644
--- a/authfd.c
+++ b/authfd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: authfd.c,v 1.142 2026/06/14 03:59:34 djm Exp $ */
+/* $OpenBSD: authfd.c,v 1.143 2026/06/29 02:13:05 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo at cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
@@ -205,7 +205,7 @@ ssh_request_reply_decode(int sock, struct sshbuf *request)
void
ssh_close_authentication_socket(int sock)
{
- if (getenv(SSH_AUTHSOCKET_ENV_NAME))
+ if (sock != -1 && getenv(SSH_AUTHSOCKET_ENV_NAME) != NULL)
close(sock);
}
diff --git a/ssh-add.c b/ssh-add.c
index 1e9eddf90..7ce451036 100644
--- a/ssh-add.c
+++ b/ssh-add.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-add.c,v 1.186 2026/03/05 05:44:15 djm Exp $ */
+/* $OpenBSD: ssh-add.c,v 1.187 2026/06/29 02:13:05 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo at cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
@@ -813,7 +813,7 @@ main(int argc, char **argv)
{
extern char *optarg;
extern int optind;
- int agent_fd;
+ int agent_fd = -1;
char *pkcs11provider = NULL, *skprovider = NULL;
char **dest_constraint_strings = NULL, **hostkey_files = NULL;
int r, i, ch, deleting = 0, ret = 0, key_only = 0, cert_only = 0;
@@ -835,19 +835,6 @@ main(int argc, char **argv)
setvbuf(stdout, NULL, _IOLBF, 0);
- /* First, get a connection to the authentication agent. */
- switch (r = ssh_get_authentication_socket(&agent_fd)) {
- case 0:
- break;
- case SSH_ERR_AGENT_NOT_PRESENT:
- fprintf(stderr, "Could not open a connection to your "
- "authentication agent.\n");
- exit(2);
- default:
- fprintf(stderr, "Error connecting to agent: %s\n", ssh_err(r));
- exit(2);
- }
-
skprovider = getenv("SSH_SK_PROVIDER");
while ((ch = getopt(argc, argv, "vkKlLNCcdDTxXE:e:h:H:M:m:Qqs:S:t:")) != -1) {
@@ -943,7 +930,21 @@ main(int argc, char **argv)
if ((xflag != 0) + (lflag != 0) + (Dflag != 0) + (Qflag != 0) > 1)
fatal("Invalid combination of actions");
- else if (xflag) {
+
+ /* First, get a connection to the authentication agent. */
+ switch (r = ssh_get_authentication_socket(&agent_fd)) {
+ case 0:
+ break;
+ case SSH_ERR_AGENT_NOT_PRESENT:
+ fprintf(stderr, "Could not open a connection to your "
+ "authentication agent.\n");
+ exit(2);
+ default:
+ fprintf(stderr, "Error connecting to agent: %s\n", ssh_err(r));
+ exit(2);
+ }
+
+ if (xflag) {
if (lock_agent(agent_fd, xflag == 'x' ? 1 : 0) == -1)
ret = 1;
goto done;
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list