mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
- Fix #734 [FR] enable unbound-checkconf to detect more (basic)
errors.
This commit is contained in:
parent
fbe8e3b0b2
commit
ef57f8bd51
7 changed files with 2763 additions and 3414 deletions
|
|
@ -1,3 +1,7 @@
|
|||
5 August 2022: Wouter
|
||||
- Fix #734 [FR] enable unbound-checkconf to detect more (basic)
|
||||
errors.
|
||||
|
||||
4 August 2022: Wouter
|
||||
- Fix ratelimit inconsistency, for ip-ratelimits the value is the
|
||||
amount allowed, like for ratelimits.
|
||||
|
|
|
|||
|
|
@ -1302,6 +1302,7 @@ create_cfg_parser(struct config_file* cfg, char* filename, const char* chroot)
|
|||
cfg_parser->errors = 0;
|
||||
cfg_parser->cfg = cfg;
|
||||
cfg_parser->chroot = chroot;
|
||||
cfg_parser->started_toplevel = 0;
|
||||
init_cfg_parse();
|
||||
}
|
||||
|
||||
|
|
@ -1800,6 +1801,9 @@ void ub_c_error_msg(const char* fmt, ...)
|
|||
void ub_c_error(const char *str)
|
||||
{
|
||||
cfg_parser->errors++;
|
||||
if(strcmp(str, "syntax error")==0 && cfg_parser->started_toplevel ==0)
|
||||
str = "syntax error, is there no section start after an "
|
||||
"include-toplevel directive perhaps.";
|
||||
fprintf(stderr, "%s:%d: error: %s\n", cfg_parser->filename,
|
||||
cfg_parser->line, str);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1262,6 +1262,8 @@ struct config_parser_state {
|
|||
struct config_file* cfg;
|
||||
/** the current chroot dir (or NULL if none) */
|
||||
const char* chroot;
|
||||
/** if we are started in a toplevel, or not, after a force_toplevel */
|
||||
int started_toplevel;
|
||||
};
|
||||
|
||||
/** global config parser object used during config parsing */
|
||||
|
|
|
|||
4569
util/configlexer.c
4569
util/configlexer.c
File diff suppressed because it is too large
Load diff
1566
util/configparser.c
1566
util/configparser.c
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,4 @@
|
|||
/* A Bison parser, made by GNU Bison 3.8.2. */
|
||||
/* A Bison parser, made by GNU Bison 3.7.6. */
|
||||
|
||||
/* Bison interface for Yacc-like parsers in C
|
||||
|
||||
|
|
@ -721,7 +721,7 @@ union YYSTYPE
|
|||
|
||||
char* str;
|
||||
|
||||
#line 725 "./util/configparser.h"
|
||||
#line 725 "util/configparser.h"
|
||||
|
||||
};
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
|
|
@ -732,8 +732,6 @@ typedef union YYSTYPE YYSTYPE;
|
|||
|
||||
extern YYSTYPE yylval;
|
||||
|
||||
|
||||
int yyparse (void);
|
||||
|
||||
|
||||
#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */
|
||||
|
|
|
|||
|
|
@ -204,12 +204,14 @@ toplevelvar: serverstart contents_server | stubstart contents_stub |
|
|||
force_toplevel: VAR_FORCE_TOPLEVEL
|
||||
{
|
||||
OUTYY(("\nP(force-toplevel)\n"));
|
||||
cfg_parser->started_toplevel = 0;
|
||||
}
|
||||
;
|
||||
/* server: declaration */
|
||||
serverstart: VAR_SERVER
|
||||
{
|
||||
OUTYY(("\nP(server:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
}
|
||||
;
|
||||
contents_server: contents_server content_server
|
||||
|
|
@ -320,6 +322,7 @@ stubstart: VAR_STUB_ZONE
|
|||
{
|
||||
struct config_stub* s;
|
||||
OUTYY(("\nP(stub_zone:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
|
||||
if(s) {
|
||||
s->next = cfg_parser->cfg->stubs;
|
||||
|
|
@ -338,6 +341,7 @@ forwardstart: VAR_FORWARD_ZONE
|
|||
{
|
||||
struct config_stub* s;
|
||||
OUTYY(("\nP(forward_zone:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
|
||||
if(s) {
|
||||
s->next = cfg_parser->cfg->forwards;
|
||||
|
|
@ -356,6 +360,7 @@ viewstart: VAR_VIEW
|
|||
{
|
||||
struct config_view* s;
|
||||
OUTYY(("\nP(view:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
s = (struct config_view*)calloc(1, sizeof(struct config_view));
|
||||
if(s) {
|
||||
s->next = cfg_parser->cfg->views;
|
||||
|
|
@ -376,6 +381,7 @@ authstart: VAR_AUTH_ZONE
|
|||
{
|
||||
struct config_auth* s;
|
||||
OUTYY(("\nP(auth_zone:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
|
||||
if(s) {
|
||||
s->next = cfg_parser->cfg->auths;
|
||||
|
|
@ -474,6 +480,7 @@ rpzstart: VAR_RPZ
|
|||
{
|
||||
struct config_auth* s;
|
||||
OUTYY(("\nP(rpz:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
|
||||
if(s) {
|
||||
s->next = cfg_parser->cfg->auths;
|
||||
|
|
@ -3103,6 +3110,7 @@ view_first: VAR_VIEW_FIRST STRING_ARG
|
|||
rcstart: VAR_REMOTE_CONTROL
|
||||
{
|
||||
OUTYY(("\nP(remote-control:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
}
|
||||
;
|
||||
contents_rc: contents_rc content_rc
|
||||
|
|
@ -3175,6 +3183,7 @@ rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG
|
|||
dtstart: VAR_DNSTAP
|
||||
{
|
||||
OUTYY(("\nP(dnstap:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
}
|
||||
;
|
||||
contents_dt: contents_dt content_dt
|
||||
|
|
@ -3357,6 +3366,7 @@ dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MES
|
|||
pythonstart: VAR_PYTHON
|
||||
{
|
||||
OUTYY(("\nP(python:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
}
|
||||
;
|
||||
contents_py: contents_py content_py
|
||||
|
|
@ -3372,6 +3382,7 @@ py_script: VAR_PYTHON_SCRIPT STRING_ARG
|
|||
dynlibstart: VAR_DYNLIB
|
||||
{
|
||||
OUTYY(("\nP(dynlib:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
}
|
||||
;
|
||||
contents_dl: contents_dl content_dl
|
||||
|
|
@ -3421,6 +3432,7 @@ server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG
|
|||
dnscstart: VAR_DNSCRYPT
|
||||
{
|
||||
OUTYY(("\nP(dnscrypt:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
}
|
||||
;
|
||||
contents_dnsc: contents_dnsc content_dnsc
|
||||
|
|
@ -3530,6 +3542,7 @@ dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG
|
|||
cachedbstart: VAR_CACHEDB
|
||||
{
|
||||
OUTYY(("\nP(cachedb:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
}
|
||||
;
|
||||
contents_cachedb: contents_cachedb content_cachedb
|
||||
|
|
@ -3629,6 +3642,7 @@ server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG
|
|||
ipsetstart: VAR_IPSET
|
||||
{
|
||||
OUTYY(("\nP(ipset:)\n"));
|
||||
cfg_parser->started_toplevel = 1;
|
||||
}
|
||||
;
|
||||
contents_ipset: contents_ipset content_ipset
|
||||
|
|
|
|||
Loading…
Reference in a new issue