summaryrefslogtreecommitdiff
path: root/authfd.c
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 /authfd.c
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@
Diffstat (limited to 'authfd.c')
-rw-r--r--authfd.c20
1 files changed, 19 insertions, 1 deletions
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