diff options
| author | Andreas Schneider <mail@cynapses.org> | 2009-04-16 07:56:16 +0000 |
|---|---|---|
| committer | Andreas Schneider <mail@cynapses.org> | 2009-04-16 07:56:16 +0000 |
| commit | ea729492ecc6b9eadc5b6d9555c234006cfcb60d (patch) | |
| tree | 989ee4111a8bbea0c3002b0399b7016e5a986d21 /libssh/client.c | |
| parent | 160f6a08d0ee6804ab355d38bbc351b73bd6318a (diff) | |
| download | libssh-ea729492ecc6b9eadc5b6d9555c234006cfcb60d.tar.gz libssh-ea729492ecc6b9eadc5b6d9555c234006cfcb60d.tar.xz libssh-ea729492ecc6b9eadc5b6d9555c234006cfcb60d.zip | |
Reformat an document ssh_analyze_banner().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@484 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/client.c')
| -rw-r--r-- | libssh/client.c | 75 |
1 files changed, 47 insertions, 28 deletions
diff --git a/libssh/client.c b/libssh/client.c index b04f2cad..e570b6ff 100644 --- a/libssh/client.c +++ b/libssh/client.c @@ -80,34 +80,53 @@ char *ssh_get_banner(SSH_SESSION *session) { return NULL; } -static int ssh_analyze_banner(SSH_SESSION *session, int *ssh1, int *ssh2){ - char *banner=session->serverbanner; - if(strncmp(banner,"SSH-",4)!=0){ - ssh_set_error(session,SSH_FATAL,"Protocol mismatch: %s",banner); - return -1; - } - /* a typical banner is : - * SSH-1.5-blah - * SSH-1.99-blah - * SSH-2.0-blah - */ - switch(banner[4]){ - case '1': - *ssh1=1; - if(banner[6]=='9') - *ssh2=1; - else - *ssh2=0; - break; - case '2': - *ssh1=0; - *ssh2=1; - break; - default: - ssh_set_error(session,SSH_FATAL,"Protocol mismatch: %s",banner); - return -1; - } - return 0; +/** + * @internal + * + * @brief Analyze the SSH banner to find out if we have a SSHv1 or SSHv2 + * server. + * + * @param session The session to analyze the banner from. + * @param ssh1 The variable which is set if it is a SSHv1 server. + * @param ssh2 The variable which is set if it is a SSHv2 server. + * + * @return 0 on success, < 0 on error. + * + * @see ssh_get_banner() + */ +static int ssh_analyze_banner(SSH_SESSION *session, int *ssh1, int *ssh2) { + char *banner = session->serverbanner; + + if (strncmp(banner, "SSH-", 4) != 0) { + ssh_set_error(session, SSH_FATAL, "Protocol mismatch: %s", banner); + return -1; + } + + /* + * Typical banners e.g. are: + * SSH-1.5-blah + * SSH-1.99-blah + * SSH-2.0-blah + */ + switch(banner[4]) { + case '1': + *ssh1 = 1; + if (banner[6] == '9') { + *ssh2 = 1; + } else { + *ssh2 = 0; + } + break; + case '2': + *ssh1 = 0; + *ssh2 = 1; + break; + default: + ssh_set_error(session, SSH_FATAL, "Protocol mismatch: %s", banner); + return -1; + } + + return 0; } /** @internal |
