diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2018-10-17 17:32:54 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-10-19 14:10:02 +0200 |
commit | acb0e4f401440ca325e441064d2cb4b896fb9a3d (patch) | |
tree | 4a113d21c6186b83ff3a9a2d89a55122c16dd22d | |
parent | 3fe7510b261098e3937ab5417935916a46e6727b (diff) | |
download | libssh-acb0e4f401440ca325e441064d2cb4b896fb9a3d.tar.gz libssh-acb0e4f401440ca325e441064d2cb4b896fb9a3d.tar.xz libssh-acb0e4f401440ca325e441064d2cb4b896fb9a3d.zip |
examples: Explicitly track auth state in samplesshd-kbdint
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 0ff566b6dde5cd27653aa35280feceefad5d5224)
-rw-r--r-- | examples/samplesshd-kbdint.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/examples/samplesshd-kbdint.c b/examples/samplesshd-kbdint.c index 5c2c461e..522aebd6 100644 --- a/examples/samplesshd-kbdint.c +++ b/examples/samplesshd-kbdint.c @@ -23,6 +23,7 @@ clients must be made or how a client should react. #include <stdlib.h> #include <string.h> #include <stdio.h> +#include <stdbool.h> #define SSHD_USER "libssh" #define SSHD_PASSWORD "libssh" @@ -36,6 +37,7 @@ clients must be made or how a client should react. #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_session session) { 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; |