From: Baptiste Assmann Date: Mon, 2 Nov 2015 21:55:49 +0000 (+0100) Subject: BUG/MINOR: dns: check for duplicate nameserver id in a resolvers section was missing X-Git-Tag: v1.7-dev1~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a315c5534eeebaf33f0a5a0e1fa4a37b50d761ab;p=thirdparty%2Fhaproxy.git BUG/MINOR: dns: check for duplicate nameserver id in a resolvers section was missing Current resolvers section parsing function is permissive on nameserver id and two nameservers may have the same id. It's a shame, since we don't know for example, whose statistics belong to which nameserver... From now, configuration with duplicated nameserver id in a resolvers section are considered as broken and returns a fatal error when parsing. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 610e165bab..f4bc5033ef 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -2262,6 +2262,15 @@ int cfg_parse_resolvers(const char *file, int linenum, char **args, int kwm) goto out; } + list_for_each_entry(newnameserver, &curr_resolvers->nameserver_list, list) { + /* Error if two resolvers owns the same name */ + if (strcmp(newnameserver->id, args[1]) == 0) { + Alert("Parsing [%s:%d]: nameserver '%s' has same name as another nameserver (declared at %s:%d).\n", + file, linenum, args[1], curr_resolvers->conf.file, curr_resolvers->conf.line); + err_code |= ERR_ALERT | ERR_FATAL; + } + } + if ((newnameserver = (struct dns_nameserver *)calloc(1, sizeof(struct dns_nameserver))) == NULL) { Alert("parsing [%s:%d] : out of memory.\n", file, linenum); err_code |= ERR_ALERT | ERR_ABORT;