From 7ef6cb4584c8604b73cbc82d07162757217dc08c Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Sat, 25 Jun 2011 14:50:52 +0200 Subject: [PATCH] Check for redability of SSL-related files like for MOTD file Remove functions ssl_print_configvar() and ConfSSL_Puts(), introduce new function CheckFileReadable(). --- src/ngircd/conf.c | 60 ++++++++++++++--------------------------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index d19109fc..b79715d9 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -109,56 +109,24 @@ ConfSSL_Init(void) } /** - * Output SSL configuration variable containing a file name. - * And make sure that the given file is readable. + * Make sure that a configured file is readable. * - * @returns true when the file is readable. + * Currently, this function is only used for SSL-related options ... + * + * @param Var Configuration variable + * @param Filename Configured filename */ -static bool -ssl_print_configvar(const char *name, const char *file) +static void +CheckFileReadable(const char *Var, const char *Filename) { FILE *fp; - if (!file) { - printf(" %s =\n", name); - return true; - } - - fp = fopen(file, "r"); + fp = fopen(Filename, "r"); if (fp) fclose(fp); else - fprintf(stderr, "ERROR: %s \"%s\": %s\n", - name, file, strerror(errno)); - - printf(" %s = %s\n", name, file); - return fp != NULL; -} - -/** - * Output SSL-related configuration variables. - * - * @returns true when all SSL-related configuration variables are valid. - */ -static bool -ConfSSL_Puts(void) -{ - bool ret; - - ret = ssl_print_configvar("SSLKeyFile", Conf_SSLOptions.KeyFile); - - if (!ssl_print_configvar("SSLCertFile", Conf_SSLOptions.CertFile)) - ret = false; - - if (!ssl_print_configvar("SSLDHFile", Conf_SSLOptions.DHFile)) - ret = false; - - if (array_bytes(&Conf_SSLOptions.KeyFilePassword)) - puts(" SSLKeyFilePassword = "); - - array_free_wipe(&Conf_SSLOptions.KeyFilePassword); - - return ret; + Config_Error(LOG_ERR, "Can't read \"%s\" (\"%s\"): %s", + Filename, Var, strerror(errno)); } #endif @@ -977,6 +945,14 @@ Read_Config( bool ngircd_starting ) /* No MOTD phrase configured? (re)try motd file. */ if (array_bytes(&Conf_Motd) == 0) Read_Motd(Conf_MotdFile); + +#ifdef SSL_SUPPORT + /* Make sure that all SSL-related files are readable */ + CheckFileReadable("SSLCertFile", Conf_SSLOptions.CertFile); + CheckFileReadable("SSLDHFile", Conf_SSLOptions.DHFile); + CheckFileReadable("SSLKeyFile", Conf_SSLOptions.KeyFile); +#endif + return true; } -- 2.39.2