diff options
author | Shawn Routhier <sar@isc.org> | 2014-04-28 14:56:19 -0700 |
---|---|---|
committer | Shawn Routhier <sar@isc.org> | 2014-04-28 14:56:19 -0700 |
commit | 3820f50b5dd1c31ccd52de926b9f12b1aceb1036 (patch) | |
tree | fe0a337a83dd0229da30f70bb54a5abc55017c14 | |
parent | f7ab0b62e9eb22ec80f176533d7a9e26803c2155 (diff) | |
download | isc-dhcp-3820f50b5dd1c31ccd52de926b9f12b1aceb1036.tar.gz |
[v4_2] Add a better warning about multiple key definitions
-rw-r--r-- | RELNOTES | 7 | ||||
-rw-r--r-- | common/parse.c | 38 |
2 files changed, 27 insertions, 18 deletions
@@ -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 | |