summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Routhier <sar@isc.org>2014-04-28 14:56:19 -0700
committerShawn Routhier <sar@isc.org>2014-04-28 14:56:19 -0700
commit3820f50b5dd1c31ccd52de926b9f12b1aceb1036 (patch)
treefe0a337a83dd0229da30f70bb54a5abc55017c14
parentf7ab0b62e9eb22ec80f176533d7a9e26803c2155 (diff)
downloadisc-dhcp-3820f50b5dd1c31ccd52de926b9f12b1aceb1036.tar.gz
[v4_2] Add a better warning about multiple key definitions
-rw-r--r--RELNOTES7
-rw-r--r--common/parse.c38
2 files changed, 27 insertions, 18 deletions
diff --git a/RELNOTES b/RELNOTES
index 97175e76..46ab6f5e 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,5 +1,5 @@
Internet Systems Consortium DHCP Distribution
- Version 4.2.6
+ Version 4.2.7-pre-beta
3 February 2014
Release Notes
@@ -61,6 +61,11 @@ by Eric Young (eay@cryptsoft.com).
- Remove an extra set of the msg_controllen variable.
[ISC-Bugs #21035]
+- Add a more understandable error message if a configuration attempts
+ to add multiple keys for a single zone. Thanks to a patch from Jiri
+ Popelka at Red Hat.
+ [ISC-Bugs #31892]
+
Changes since 4.2.6rc1
- None
diff --git a/common/parse.c b/common/parse.c
index db2e1d0d..5333704f 100644
--- a/common/parse.c
+++ b/common/parse.c
@@ -2872,27 +2872,31 @@ int parse_zone (struct dns_zone *zone, struct parse *cfile)
break;
case KEY:
- skip_token(&val, (unsigned *)0, cfile);
- token = peek_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, NULL, cfile);
+ token = peek_token(&val, NULL, cfile);
if (token == STRING) {
- skip_token(&val, (unsigned *)0, cfile);
- key_name = (char *)0;
+ skip_token(&val, NULL, cfile);
+ key_name = NULL;
} else {
- key_name = parse_host_name (cfile);
+ key_name = parse_host_name(cfile);
if (!key_name) {
- parse_warn (cfile, "expecting key name.");
- skip_to_semi (cfile);
- return 0;
+ parse_warn(cfile, "expecting key name.");
+ skip_to_semi(cfile);
+ return (0);
}
val = key_name;
}
- if (omapi_auth_key_lookup_name (&zone -> key, val) !=
+ if (zone->key) {
+ log_fatal("Multiple key definitions for zone %s.",
+ zone->name);
+ }
+ if (omapi_auth_key_lookup_name(&zone->key, val) !=
ISC_R_SUCCESS)
- parse_warn (cfile, "unknown key %s", val);
+ parse_warn(cfile, "unknown key %s", val);
if (key_name)
- dfree (key_name, MDL);
- if (!parse_semi (cfile))
- return 0;
+ dfree(key_name, MDL);
+ if (!parse_semi(cfile))
+ return (0);
break;
default:
@@ -2901,12 +2905,12 @@ int parse_zone (struct dns_zone *zone, struct parse *cfile)
}
} while (!done);
- token = next_token (&val, (unsigned *)0, cfile);
+ token = next_token(&val, NULL, cfile);
if (token != RBRACE) {
- parse_warn (cfile, "expecting right brace.");
- return 0;
+ parse_warn(cfile, "expecting right brace.");
+ return (0);
}
- return 1;
+ return (1);
}
/* key-statements :== key-statement |