summaryrefslogtreecommitdiffstats
path: root/libssh
diff options
context:
space:
mode:
Diffstat (limited to 'libssh')
-rw-r--r--libssh/client.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libssh/client.c b/libssh/client.c
index c248083f..12ebf598 100644
--- a/libssh/client.c
+++ b/libssh/client.c
@@ -110,13 +110,15 @@ static int ssh_analyze_banner(ssh_session session, int *ssh1, int *ssh2) {
const char *banner = session->serverbanner;
const char *openssh;
- ssh_log(session, SSH_LOG_RARE, "Analyzing banner: %s", banner);
-
- if (strncmp(banner, "SSH-", 4) != 0) {
+ if (banner == NULL ||
+ strlen(banner) <= 4 ||
+ strncmp(banner, "SSH-", 4) != 0) {
ssh_set_error(session, SSH_FATAL, "Protocol mismatch: %s", banner);
return -1;
}
+ ssh_log(session, SSH_LOG_RARE, "Analyzing banner: %s", banner);
+
/*
* Typical banners e.g. are:
* SSH-1.5-blah