From acb0e4f401440ca325e441064d2cb4b896fb9a3d Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 17 Oct 2018 17:32:54 +0200 Subject: [PATCH 5/8] examples: Explicitly track auth state in samplesshd-kbdint Signed-off-by: Andreas Schneider (cherry picked from commit 0ff566b6dde5cd27653aa35280feceefad5d5224) Signed-off-by: Kevin Darbyshire-Bryant --- examples/samplesshd-kbdint.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) --- a/examples/samplesshd-kbdint.c +++ b/examples/samplesshd-kbdint.c @@ -23,6 +23,7 @@ clients must be made or how a client sho #include #include #include +#include #define SSHD_USER "libssh" #define SSHD_PASSWORD "libssh" @@ -36,6 +37,7 @@ clients must be made or how a client sho #endif static int port = 22; +static bool authenticated = false; #ifdef WITH_PCAP static const char *pcap_file = "debug.server.pcap"; @@ -61,11 +63,20 @@ static void cleanup_pcap(void) { #endif -static int auth_password(const char *user, const char *password){ - if(strcmp(user, SSHD_USER)) +static int auth_password(const char *user, const char *password) +{ + int cmp; + + cmp = strcmp(user, SSHD_USER); + if (cmp != 0) { return 0; - if(strcmp(password, SSHD_PASSWORD)) + } + cmp = strcmp(password, SSHD_PASSWORD); + if (cmp != 0) { return 0; + } + + authenticated = true; return 1; // authenticated } #ifdef HAVE_ARGP_H @@ -200,6 +211,7 @@ static int kbdint_check_response(ssh_ses return 0; } + authenticated = true; return 1; } @@ -328,7 +340,7 @@ int main(int argc, char **argv){ /* proceed to authentication */ auth = authenticate(session); - if(!auth){ + if (!auth || !authenticated) { printf("Authentication error: %s\n", ssh_get_error(session)); ssh_disconnect(session); return 1;