summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2002-09-12 09:52:46 +1000
committerDamien Miller <djm@mindrot.org>2002-09-12 09:52:46 +1000
commit789e95dbe931bad60cb5f91d995470f433f4e02b (patch)
treefc7a3a6b129ee0b4ebfc64185765acfabe84f757
parentb5fdfaae13daa5340725ab9418943f1da3d9f7e8 (diff)
- stevesk@cvs.openbsd.org 2002/09/11 18:27:26
[authfd.c authfd.h ssh.c] don't connect to agent to test for presence if we've previously connected; ok markus@
-rw-r--r--ChangeLog6
-rw-r--r--authfd.c20
-rw-r--r--authfd.h3
-rw-r--r--ssh.c7
4 files changed, 28 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index d0ff109ae..055b18b6b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -18,6 +18,10 @@
18 - stevesk@cvs.openbsd.org 2002/09/11 17:55:03 18 - stevesk@cvs.openbsd.org 2002/09/11 17:55:03
19 [ssh.1] 19 [ssh.1]
20 add agent and X11 forwarding warning text from ssh_config.5; ok markus@ 20 add agent and X11 forwarding warning text from ssh_config.5; ok markus@
21 - stevesk@cvs.openbsd.org 2002/09/11 18:27:26
22 [authfd.c authfd.h ssh.c]
23 don't connect to agent to test for presence if we've previously
24 connected; ok markus@
21 25
2220020911 2620020911
23 - (djm) Sync openbsd-compat with OpenBSD -current 27 - (djm) Sync openbsd-compat with OpenBSD -current
@@ -1638,4 +1642,4 @@
1638 - (stevesk) entropy.c: typo in debug message 1642 - (stevesk) entropy.c: typo in debug message
1639 - (djm) ssh-keygen -i needs seeded RNG; report from markus@ 1643 - (djm) ssh-keygen -i needs seeded RNG; report from markus@
1640 1644
1641$Id: ChangeLog,v 1.2456 2002/09/11 23:52:03 djm Exp $ 1645$Id: ChangeLog,v 1.2457 2002/09/11 23:52:46 djm Exp $
diff --git a/authfd.c b/authfd.c
index 4c4552d52..f04e0858b 100644
--- a/authfd.c
+++ b/authfd.c
@@ -35,7 +35,7 @@
35 */ 35 */
36 36
37#include "includes.h" 37#include "includes.h"
38RCSID("$OpenBSD: authfd.c,v 1.56 2002/06/25 16:22:42 markus Exp $"); 38RCSID("$OpenBSD: authfd.c,v 1.57 2002/09/11 18:27:26 stevesk Exp $");
39 39
40#include <openssl/evp.h> 40#include <openssl/evp.h>
41 41
@@ -53,6 +53,8 @@ RCSID("$OpenBSD: authfd.c,v 1.56 2002/06/25 16:22:42 markus Exp $");
53#include "log.h" 53#include "log.h"
54#include "atomicio.h" 54#include "atomicio.h"
55 55
56static int agent_present = 0;
57
56/* helper */ 58/* helper */
57int decode_reply(int type); 59int decode_reply(int type);
58 60
@@ -61,6 +63,21 @@ int decode_reply(int type);
61 ((x == SSH_AGENT_FAILURE) || (x == SSH_COM_AGENT2_FAILURE) || \ 63 ((x == SSH_AGENT_FAILURE) || (x == SSH_COM_AGENT2_FAILURE) || \
62 (x == SSH2_AGENT_FAILURE)) 64 (x == SSH2_AGENT_FAILURE))
63 65
66int
67ssh_agent_present(void)
68{
69 int authfd;
70
71 if (agent_present)
72 return 1;
73 if ((authfd = ssh_get_authentication_socket()) == -1)
74 return 0;
75 else {
76 ssh_close_authentication_socket(authfd);
77 return 1;
78 }
79}
80
64/* Returns the number of the authentication fd, or -1 if there is none. */ 81/* Returns the number of the authentication fd, or -1 if there is none. */
65 82
66int 83int
@@ -90,6 +107,7 @@ ssh_get_authentication_socket(void)
90 close(sock); 107 close(sock);
91 return -1; 108 return -1;
92 } 109 }
110 agent_present = 1;
93 return sock; 111 return sock;
94} 112}
95 113
diff --git a/authfd.h b/authfd.h
index b2767e5c1..38ee49e88 100644
--- a/authfd.h
+++ b/authfd.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfd.h,v 1.30 2002/06/19 00:27:55 deraadt Exp $ */ 1/* $OpenBSD: authfd.h,v 1.31 2002/09/11 18:27:25 stevesk Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -66,6 +66,7 @@ typedef struct {
66 int howmany; 66 int howmany;
67} AuthenticationConnection; 67} AuthenticationConnection;
68 68
69int ssh_agent_present(void);
69int ssh_get_authentication_socket(void); 70int ssh_get_authentication_socket(void);
70void ssh_close_authentication_socket(int); 71void ssh_close_authentication_socket(int);
71 72
diff --git a/ssh.c b/ssh.c
index dcbf68d99..7cef5e5ac 100644
--- a/ssh.c
+++ b/ssh.c
@@ -40,7 +40,7 @@
40 */ 40 */
41 41
42#include "includes.h" 42#include "includes.h"
43RCSID("$OpenBSD: ssh.c,v 1.184 2002/08/29 19:49:42 stevesk Exp $"); 43RCSID("$OpenBSD: ssh.c,v 1.185 2002/09/11 18:27:26 stevesk Exp $");
44 44
45#include <openssl/evp.h> 45#include <openssl/evp.h>
46#include <openssl/err.h> 46#include <openssl/err.h>
@@ -829,11 +829,8 @@ check_agent_present(void)
829{ 829{
830 if (options.forward_agent) { 830 if (options.forward_agent) {
831 /* Clear agent forwarding if we don\'t have an agent. */ 831 /* Clear agent forwarding if we don\'t have an agent. */
832 int authfd = ssh_get_authentication_socket(); 832 if (!ssh_agent_present())
833 if (authfd < 0)
834 options.forward_agent = 0; 833 options.forward_agent = 0;
835 else
836 ssh_close_authentication_socket(authfd);
837 } 834 }
838} 835}
839 836