misc: Fixed a possible data overread and crash bug.

(backported from commit 30e22fed6e)
This commit is contained in:
Andreas Schneider
2010-09-29 11:35:08 +02:00
parent 31fdb4ecf6
commit 93f79c62ef

View File

@@ -110,13 +110,15 @@ static int ssh_analyze_banner(ssh_session session, int *ssh1, int *ssh2) {
const char *banner = session->serverbanner; const char *banner = session->serverbanner;
const char *openssh; const char *openssh;
ssh_log(session, SSH_LOG_RARE, "Analyzing banner: %s", banner); if (banner == NULL ||
strlen(banner) <= 4 ||
if (strncmp(banner, "SSH-", 4) != 0) { strncmp(banner, "SSH-", 4) != 0) {
ssh_set_error(session, SSH_FATAL, "Protocol mismatch: %s", banner); ssh_set_error(session, SSH_FATAL, "Protocol mismatch: %s", banner);
return -1; return -1;
} }
ssh_log(session, SSH_LOG_RARE, "Analyzing banner: %s", banner);
/* /*
* Typical banners e.g. are: * Typical banners e.g. are:
* SSH-1.5-blah * SSH-1.5-blah