diff --git a/cli-auth.c b/cli-auth.c index 5d4f182e8aa260aa104ab3fe85b64c8d8a095e51..3914c58d2a1920fe1499edd4faebaddeaca8bcbc 100644 --- a/cli-auth.c +++ b/cli-auth.c @@ -78,6 +78,7 @@ void recv_msg_userauth_banner() { char* banner = NULL; unsigned int bannerlen; unsigned int i, linecount; + int truncated = 0; TRACE(("enter recv_msg_userauth_banner")) if (ses.authstate.authdone) { @@ -90,26 +91,29 @@ void recv_msg_userauth_banner() { 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; + truncated = 1; + } else { + cleantext(banner); + + /* Limit to 24 lines */ + linecount = 1; + for (i = 0; i < bannerlen; i++) { + if (banner[i] == '\n') { + if (linecount >= MAX_BANNER_LINES) { + banner[i] = '\0'; + truncated = 1; + break; + } + linecount++; } - linecount++; } + fprintf(stderr, "%s\n", banner); } - fprintf(stderr, "%s\n", banner); + if (truncated) { + fprintf(stderr, "[Banner from the server is too long]\n"); + } -out: m_free(banner); TRACE(("leave recv_msg_userauth_banner")) }