summaryrefslogtreecommitdiff
path: root/src/conf_parser.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/conf_parser.y')
-rw-r--r--src/conf_parser.y51
1 files changed, 28 insertions, 23 deletions
diff --git a/src/conf_parser.y b/src/conf_parser.y
index d1d7495..0bc1e70 100644
--- a/src/conf_parser.y
+++ b/src/conf_parser.y
@@ -56,6 +56,8 @@
#include <openssl/dh.h>
#endif
+#include "rsa.h"
+
int yylex(void);
static struct
@@ -495,7 +497,7 @@ serverinfo_ssl_certificate_file: SSL_CERTIFICATE_FILE '=' QSTRING ';'
{
if (!ServerInfo.rsa_private_key_file)
{
- yyerror("No rsa_private_key_file specified, SSL disabled");
+ conf_error_report("No rsa_private_key_file specified, SSL disabled");
break;
}
@@ -504,7 +506,8 @@ serverinfo_ssl_certificate_file: SSL_CERTIFICATE_FILE '=' QSTRING ';'
SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
SSL_FILETYPE_PEM) <= 0)
{
- yyerror(ERR_lib_error_string(ERR_get_error()));
+ report_crypto_errors();
+ conf_error_report("Could not open/read certificate file");
break;
}
@@ -513,14 +516,16 @@ serverinfo_ssl_certificate_file: SSL_CERTIFICATE_FILE '=' QSTRING ';'
SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
SSL_FILETYPE_PEM) <= 0)
{
- yyerror(ERR_lib_error_string(ERR_get_error()));
+ report_crypto_errors();
+ conf_error_report("Could not read RSA private key");
break;
}
if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
!SSL_CTX_check_private_key(ServerInfo.client_ctx))
{
- yyerror(ERR_lib_error_string(ERR_get_error()));
+ report_crypto_errors("Could not read RSA private key");
+ conf_error_report(ERR_lib_error_string(ERR_get_error()));
break;
}
}
@@ -550,7 +555,7 @@ serverinfo_rsa_private_key_file: RSA_PRIVATE_KEY_FILE '=' QSTRING ';'
if ((file = BIO_new_file(yylval.string, "r")) == NULL)
{
- yyerror("File open failed, ignoring");
+ conf_error_report("File open failed, ignoring");
break;
}
@@ -561,7 +566,7 @@ serverinfo_rsa_private_key_file: RSA_PRIVATE_KEY_FILE '=' QSTRING ';'
if (ServerInfo.rsa_private_key == NULL)
{
- yyerror("Couldn't extract key, ignoring");
+ conf_error_report("Couldn't extract key, ignoring");
break;
}
@@ -570,7 +575,7 @@ serverinfo_rsa_private_key_file: RSA_PRIVATE_KEY_FILE '=' QSTRING ';'
RSA_free(ServerInfo.rsa_private_key);
ServerInfo.rsa_private_key = NULL;
- yyerror("Invalid key, ignoring");
+ conf_error_report("Invalid key, ignoring");
break;
}
@@ -580,7 +585,7 @@ serverinfo_rsa_private_key_file: RSA_PRIVATE_KEY_FILE '=' QSTRING ';'
RSA_free(ServerInfo.rsa_private_key);
ServerInfo.rsa_private_key = NULL;
- yyerror("Not a 2048 bit key, ignoring");
+ conf_error_report("Not a 2048 bit key, ignoring");
}
}
#endif
@@ -603,7 +608,7 @@ serverinfo_ssl_dh_param_file: SSL_DH_PARAM_FILE '=' QSTRING ';'
if (dh)
{
if (DH_size(dh) < 128)
- ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
+ conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
else
SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
@@ -631,7 +636,7 @@ serverinfo_name: NAME '=' QSTRING ';'
ServerInfo.name = xstrdup(yylval.string);
else
{
- ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
+ conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
exit(0);
}
}
@@ -646,7 +651,7 @@ serverinfo_sid: IRCD_SID '=' QSTRING ';'
ServerInfo.sid = xstrdup(yylval.string);
else
{
- ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
+ conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
exit(0);
}
}
@@ -752,7 +757,7 @@ serverinfo_max_clients: T_MAX_CLIENTS '=' NUMBER ';'
char buf[IRCD_BUFSIZE];
snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
- yyerror(buf);
+ conf_error_report(buf);
ServerInfo.max_clients = MAXCLIENTS_MIN;
}
else if ($3 > MAXCLIENTS_MAX)
@@ -760,7 +765,7 @@ serverinfo_max_clients: T_MAX_CLIENTS '=' NUMBER ';'
char buf[IRCD_BUFSIZE];
snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
- yyerror(buf);
+ conf_error_report(buf);
ServerInfo.max_clients = MAXCLIENTS_MAX;
}
else
@@ -1007,12 +1012,12 @@ oper_entry: OPERATOR
if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
{
- yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
+ conf_error_report("Ignoring rsa_public_key_file -- file doesn't exist");
break;
}
if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
- yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
+ conf_error_report("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
conf->rsa_public_key = pkey;
BIO_set_close(file, BIO_CLOSE);
@@ -1435,7 +1440,7 @@ port_item: NUMBER
if (!ServerInfo.server_ctx)
#endif
{
- yyerror("SSL not available - port closed");
+ conf_error_report("SSL not available - port closed");
break;
}
add_listener($1, block_state.addr.buf, block_state.flags.value);
@@ -1451,7 +1456,7 @@ port_item: NUMBER
if (!ServerInfo.server_ctx)
#endif
{
- yyerror("SSL not available - port closed");
+ conf_error_report("SSL not available - port closed");
break;
}
@@ -1977,9 +1982,9 @@ connect_send_password: SEND_PASSWORD '=' QSTRING ';'
break;
if ($3[0] == ':')
- yyerror("Server passwords cannot begin with a colon");
+ conf_error_report("Server passwords cannot begin with a colon");
else if (strchr($3, ' ') != NULL)
- yyerror("Server passwords cannot contain spaces");
+ conf_error_report("Server passwords cannot contain spaces");
else
strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
};
@@ -1990,9 +1995,9 @@ connect_accept_password: ACCEPT_PASSWORD '=' QSTRING ';'
break;
if ($3[0] == ':')
- yyerror("Server passwords cannot begin with a colon");
+ conf_error_report("Server passwords cannot begin with a colon");
else if (strchr($3, ' ') != NULL)
- yyerror("Server passwords cannot contain spaces");
+ conf_error_report("Server passwords cannot contain spaces");
else
strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
};
@@ -2067,7 +2072,7 @@ connect_ssl_cipher_list: T_SSL_CIPHER_LIST '=' QSTRING ';'
strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
#else
if (conf_parser_ctx.pass == 2)
- yyerror("Ignoring connect::ciphers -- no OpenSSL support");
+ conf_error_report("Ignoring connect::ciphers -- no OpenSSL support");
#endif
};
@@ -2279,7 +2284,7 @@ gecos_entry: GECOS
conf = conf_make(CONF_RXLINE);
conf->regexuser = exp_p;
#else
- ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
+ conf_error_report("Failed to add regular expression based X-Line: no PCRE support");
break;
#endif
}