From: Shawn Routhier Date: Mon, 28 Apr 2014 21:52:37 +0000 (-0700) Subject: [master] Add a better warning about multiple key definitions X-Git-Tag: v4_3_1b1~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db3f77999c0c4a6a508ab773f004ceda751541a9;p=thirdparty%2Fdhcp.git [master] Add a better warning about multiple key definitions --- diff --git a/RELNOTES b/RELNOTES index d323f2a62..ea32a3541 100644 --- a/RELNOTES +++ b/RELNOTES @@ -69,6 +69,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.3.0rc1 - None diff --git a/common/parse.c b/common/parse.c index 38d350f4e..2e363c2cc 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 |