summaryrefslogtreecommitdiff
path: root/cli-auth.c
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2004-08-02 04:25:05 +0000
committerMatt Johnston <matt@ucc.asn.au>2004-08-02 04:25:05 +0000
commitd1860b09afccfa5c2079e0d781a16e98df0f9692 (patch)
tree131de6789951cd6e957f7d2e32dda48ed0b18265 /cli-auth.c
parentcdc04148c0be8213e56f7b1241c2d51a6b6b789c (diff)
downloaddropbear-d1860b09afccfa5c2079e0d781a16e98df0f9692.tar.gz
Banner printing
Diffstat (limited to 'cli-auth.c')
-rw-r--r--cli-auth.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/cli-auth.c b/cli-auth.c
index e081587..549349e 100644
--- a/cli-auth.c
+++ b/cli-auth.c
@@ -35,6 +35,48 @@ void cli_auth_getmethods() {
}
+void recv_msg_userauth_banner() {
+
+ unsigned char* banner = NULL;
+ unsigned int bannerlen;
+ unsigned int i, linecount;
+
+ TRACE(("enter recv_msg_userauth_banner"));
+ if (ses.authstate.authdone) {
+ TRACE(("leave recv_msg_userauth_banner: banner after auth done"));
+ return;
+ }
+
+ banner = buf_getstring(ses.payload, &bannerlen);
+ buf_eatstring(ses.payload); /* The language string */
+
+ if (bannerlen > MAX_BANNER_SIZE) {
+ TRACE(("recv_msg_userauth_banner: bannerlen too long: %d", bannerlen));
+ goto out;
+ }
+
+ cleantext(banner);
+
+ /* Limit to 25 lines */
+ linecount = 1;
+ for (i = 0; i < bannerlen; i++) {
+ if (banner[i] == '\n') {
+ if (linecount >= MAX_BANNER_LINES) {
+ banner[i] = '\0';
+ break;
+ }
+ linecount++;
+ }
+ }
+
+ printf("%s\n", banner);
+
+out:
+ m_free(banner);
+ TRACE(("leave recv_msg_userauth_banner"));
+}
+
+
void recv_msg_userauth_failure() {
unsigned char * methods = NULL;