1 From 62a06cd95f58060a59359f8769c3f35cd680d4fd Mon Sep 17 00:00:00 2001
2 From: Matt Johnston <matt@ucc.asn.au>
3 Date: Sun, 23 Jul 2023 21:01:48 +0800
4 Subject: Make banner reading failure non-fatal
7 svr-runopts.c | 45 ++++++++++++++++++++++++++++-----------------
8 1 file changed, 28 insertions(+), 17 deletions(-)
12 @@ -38,6 +38,7 @@ static void printhelp(const char * progn
13 static void addportandaddress(const char* spec);
14 static void loadhostkey(const char *keyfile, int fatal_duplicate);
15 static void addhostkey(const char *keyfile);
16 +static void load_banner();
18 static void printhelp(const char * progname) {
20 @@ -382,23 +383,7 @@ void svr_getopts(int argc, char ** argv)
23 if (svr_opts.bannerfile) {
25 - if (stat(svr_opts.bannerfile, &buf) != 0) {
26 - dropbear_exit("Error opening banner file '%s'",
27 - svr_opts.bannerfile);
30 - if (buf.st_size > MAX_BANNER_SIZE) {
31 - dropbear_exit("Banner file too large, max is %d bytes",
35 - svr_opts.banner = buf_new(buf.st_size);
36 - if (buf_readfile(svr_opts.banner, svr_opts.bannerfile)!=DROPBEAR_SUCCESS) {
37 - dropbear_exit("Error reading banner file '%s'",
38 - svr_opts.bannerfile);
40 - buf_setpos(svr_opts.banner, 0);
44 #ifdef HAVE_GETGROUPLIST
45 @@ -715,3 +700,29 @@ void load_all_hostkeys() {
46 dropbear_exit("No hostkeys available. 'dropbear -R' may be useful or run dropbearkey.");
50 +static void load_banner() {
52 + if (stat(svr_opts.bannerfile, &buf) != 0) {
53 + dropbear_log(LOG_WARNING, "Error opening banner file '%s'",
54 + svr_opts.bannerfile);
58 + if (buf.st_size > MAX_BANNER_SIZE) {
59 + dropbear_log(LOG_WARNING, "Banner file too large, max is %d bytes",
64 + svr_opts.banner = buf_new(buf.st_size);
65 + if (buf_readfile(svr_opts.banner, svr_opts.bannerfile) != DROPBEAR_SUCCESS) {
66 + dropbear_log(LOG_WARNING, "Error reading banner file '%s'",
67 + svr_opts.bannerfile);
68 + buf_free(svr_opts.banner);
69 + svr_opts.banner = NULL;
72 + buf_setpos(svr_opts.banner, 0);