diff options
Diffstat (limited to 'authfd.c')
-rw-r--r-- | authfd.c | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -35,7 +35,7 @@ | |||
35 | */ | 35 | */ |
36 | 36 | ||
37 | #include "includes.h" | 37 | #include "includes.h" |
38 | RCSID("$OpenBSD: authfd.c,v 1.56 2002/06/25 16:22:42 markus Exp $"); | 38 | RCSID("$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 | ||
56 | static int agent_present = 0; | ||
57 | |||
56 | /* helper */ | 58 | /* helper */ |
57 | int decode_reply(int type); | 59 | int 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 | ||
66 | int | ||
67 | ssh_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 | ||
66 | int | 83 | int |
@@ -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 | ||