diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-02-01 18:00:01 +0100 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-02-04 16:04:26 +0100 |
commit | 497bd313642232b8f680384f758eeb3b4fbf8524 (patch) | |
tree | f5c5db6f17053f5a89ab31e440cabc0df3be10f8 | |
parent | 8ed0c0b3c87ae7e9865ea68495657f646565fd84 (diff) | |
download | libssh-497bd313642232b8f680384f758eeb3b4fbf8524.tar.gz libssh-497bd313642232b8f680384f758eeb3b4fbf8524.tar.xz libssh-497bd313642232b8f680384f758eeb3b4fbf8524.zip |
server: allow custom server banners (bug #83)
-rw-r--r-- | include/libssh/session.h | 1 | ||||
-rw-r--r-- | src/bind.c | 3 | ||||
-rw-r--r-- | src/client.c | 10 |
3 files changed, 12 insertions, 2 deletions
diff --git a/include/libssh/session.h b/include/libssh/session.h index 8a94daa5..c360a70c 100644 --- a/include/libssh/session.h +++ b/include/libssh/session.h @@ -175,6 +175,7 @@ struct ssh_session_struct { char *knownhosts; char *wanted_methods[10]; char *ProxyCommand; + char *custombanner; unsigned long timeout; /* seconds */ unsigned long timeout_usec; unsigned int port; @@ -413,7 +413,8 @@ int ssh_bind_accept_fd(ssh_bind sshbind, ssh_session session, socket_t fd){ } session->common.log_verbosity = sshbind->common.log_verbosity; - + if(sshbind->banner != NULL) + session->opts.custombanner = strdup(sshbind->banner); ssh_socket_free(session->socket); session->socket = ssh_socket_new(session); if (session->socket == NULL) { diff --git a/src/client.c b/src/client.c index 18bf9cb5..2abb12ea 100644 --- a/src/client.c +++ b/src/client.c @@ -152,7 +152,15 @@ int ssh_send_banner(ssh_session session, int server) { banner = session->version == 1 ? CLIENTBANNER1 : CLIENTBANNER2; if (server) { - session->serverbanner = strdup(banner); + if(session->opts.custombanner == NULL){ + session->serverbanner = strdup(banner); + } else { + session->serverbanner = malloc(strlen(session->opts.custombanner) + 9); + if(!session->serverbanner) + goto end; + strcpy(session->serverbanner, "SSH-2.0-"); + strcat(session->serverbanner, session->opts.custombanner); + } if (session->serverbanner == NULL) { goto end; } |