aboutsummaryrefslogtreecommitdiff
path: root/src/auth.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2018-05-07 20:32:13 +0200
committerAndreas Schneider <asn@cryptomilk.org>2018-05-07 20:32:13 +0200
commit22a92da30dd11356153959e56bc3680dbea5fd80 (patch)
tree17406fa5ecc2438bf29fcf552b306a769c065bc6 /src/auth.c
parent362b20a0bc02330949bf49da5973228e875fc0b0 (diff)
downloadlibssh-22a92da30dd11356153959e56bc3680dbea5fd80.tar.gz
libssh-22a92da30dd11356153959e56bc3680dbea5fd80.tar.xz
libssh-22a92da30dd11356153959e56bc3680dbea5fd80.zip
auth: Handle SSH_AUTH_PARTIAL in agent auth correctly
Thanks to Orion Poplawski. Fixes T82 Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/auth.c')
-rw-r--r--src/auth.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/auth.c b/src/auth.c
index 6462086f..69f69141 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -842,7 +842,7 @@ int ssh_userauth_agent(ssh_session session,
return rc;
ssh_string_free_char(state->comment);
state->comment = NULL;
- if (rc == SSH_AUTH_ERROR) {
+ if (rc == SSH_AUTH_ERROR || rc == SSH_AUTH_PARTIAL) {
ssh_agent_state_free (session->agent_state);
session->agent_state = NULL;
return rc;
@@ -943,7 +943,9 @@ int ssh_userauth_publickey_auto(ssh_session session,
#ifndef _WIN32
/* Try authentication with ssh-agent first */
rc = ssh_userauth_agent(session, username);
- if (rc == SSH_AUTH_SUCCESS || rc == SSH_AUTH_AGAIN) {
+ if (rc == SSH_AUTH_SUCCESS ||
+ rc == SSH_AUTH_PARTIAL ||
+ rc == SSH_AUTH_AGAIN ) {
return rc;
}
#endif