From eb49bf4bfdf90278d3dadb40766e602a1756fc98 Mon Sep 17 00:00:00 2001 From: Aris Adamantiadis Date: Wed, 26 Jan 2011 22:37:04 +0100 Subject: [PATCH] SSH1: fix a few bugs that stopped the samplessh to work --- libssh/auth.c | 4 ++-- libssh/auth1.c | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/libssh/auth.c b/libssh/auth.c index e5f54f3e..e6cbefbb 100644 --- a/libssh/auth.c +++ b/libssh/auth.c @@ -226,7 +226,7 @@ int ssh_userauth_none(ssh_session session, const char *username) { #ifdef WITH_SSH1 if (session->version == 1) { - ssh_userauth1_none(session, username); + rc = ssh_userauth1_none(session, username); leave_function(); return rc; } @@ -332,7 +332,7 @@ int ssh_userauth_offer_pubkey(ssh_session session, const char *username, #ifdef WITH_SSH1 if (session->version == 1) { - ssh_userauth1_offer_pubkey(session, username, type, publickey); + rc = ssh_userauth1_offer_pubkey(session, username, type, publickey); leave_function(); return rc; } diff --git a/libssh/auth1.c b/libssh/auth1.c index c3d5b3f4..3fb5779f 100644 --- a/libssh/auth1.c +++ b/libssh/auth1.c @@ -35,38 +35,46 @@ #ifdef WITH_SSH1 static int wait_auth1_status(ssh_session session) { + enter_function(); /* wait for a packet */ if (packet_read(session) != SSH_OK) { + leave_function(); return SSH_AUTH_ERROR; } if(packet_translate(session) != SSH_OK) { + leave_function(); return SSH_AUTH_ERROR; } switch(session->in_packet.type) { case SSH_SMSG_SUCCESS: + leave_function(); return SSH_AUTH_SUCCESS; case SSH_SMSG_FAILURE: + leave_function(); return SSH_AUTH_DENIED; } ssh_set_error(session, SSH_FATAL, "Was waiting for a SUCCESS or " "FAILURE, got %d", session->in_packet.type); - + leave_function(); return SSH_AUTH_ERROR; } static int send_username(ssh_session session, const char *username) { ssh_string user = NULL; /* returns SSH_AUTH_SUCCESS or SSH_AUTH_DENIED */ + enter_function(); if(session->auth_service_asked) { + leave_function(); return session->auth_service_asked; } if (!username) { if(!(username = session->username)) { if (ssh_options_set(session, SSH_OPTIONS_USER, NULL) < 0) { + leave_function(); return session->auth_service_asked = SSH_AUTH_ERROR; } else { username = session->username; @@ -75,24 +83,30 @@ static int send_username(ssh_session session, const char *username) { } user = string_from_char(username); if (user == NULL) { + leave_function(); return SSH_AUTH_ERROR; } if (buffer_add_u8(session->out_buffer, SSH_CMSG_USER) < 0) { string_free(user); + leave_function(); return SSH_AUTH_ERROR; } if (buffer_add_ssh_string(session->out_buffer, user) < 0) { string_free(user); + leave_function(); return SSH_AUTH_ERROR; } string_free(user); if (packet_send(session) != SSH_OK) { + leave_function(); return SSH_AUTH_ERROR; } session->auth_service_asked = wait_auth1_status(session); - + if(session->auth_service_asked != SSH_AUTH_ERROR) + session->auth_methods=SSH_AUTH_METHOD_PASSWORD; + leave_function(); return session->auth_service_asked; }