aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTilo Eckert <tilo.eckert@flam.de>2015-06-11 16:43:27 +0200
committerAndreas Schneider <asn@cryptomilk.org>2015-06-29 11:11:26 +0200
commit63a8f333b8dd800b5927c9d5e3e3387fa8baaa07 (patch)
tree60347fd96199f126ecce8a7ddb3422c3c2b6b8ca
parent57fd8e3187a7812b9000394d5c1335a9d499c5f9 (diff)
downloadlibssh-63a8f333b8dd800b5927c9d5e3e3387fa8baaa07.tar.gz
libssh-63a8f333b8dd800b5927c9d5e3e3387fa8baaa07.tar.xz
libssh-63a8f333b8dd800b5927c9d5e3e3387fa8baaa07.zip
SSH_AUTH_PARTIAL is now correctly passed to the caller of ssh_userauth_publickey_auto().
Implicitly fixed unsafe return code handling that could result in use-after-free. Signed-off-by: Tilo Eckert <tilo.eckert@flam.de> Reviewed-by: Andreas Schneider <asn@cryptomilk.org> (cherry picked from commit 0423057424ce5af157e56defb129ad0607953985)
-rwxr-xr-x[-rw-r--r--]src/auth.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/auth.c b/src/auth.c
index f4563734..77b99a73 100644..100755
--- a/src/auth.c
+++ b/src/auth.c
@@ -1045,15 +1045,14 @@ int ssh_userauth_publickey_auto(ssh_session session,
ssh_key_free(state->privkey);
ssh_key_free(state->pubkey);
SAFE_FREE(session->auth_auto_state);
- }
- if (rc == SSH_AUTH_ERROR) {
- return rc;
- } else if (rc == SSH_AUTH_SUCCESS) {
- SSH_LOG(SSH_LOG_INFO,
- "Successfully authenticated using %s",
- privkey_file);
+ if (rc == SSH_AUTH_SUCCESS) {
+ SSH_LOG(SSH_LOG_INFO,
+ "Successfully authenticated using %s",
+ privkey_file);
+ }
return rc;
- } else if (rc == SSH_AUTH_AGAIN){
+ }
+ if (rc == SSH_AUTH_AGAIN){
return rc;
}