The check_mx() function in lib/ns/update.c incorrectly tests whether the DNS_RDATA_CHECKMX/DNS_RDATA_CHECKMXFAIL flags are set for each applied MX record update as these flags are never set in code paths related to dynamic updates; they can only be set when loading a zone from a master file (DNS_ZONEOPT_CHECKMX -> DNS_MASTER_CHECKMX -> DNS_RDATA_CHECKMX). This flaw allows MX records containing IP addresses to be added to a zone even when "check-mx fail;" is used. Ensure correct behavior by modifying the relevant tests in check_mx() so that they use DNS_ZONEOPT_CHECKMX/DNS_ZONEOPT_CHECKMXFAIL instead.
143 lines
2.8 KiB
Plaintext
143 lines
2.8 KiB
Plaintext
/*
|
|
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* See the COPYRIGHT file distributed with this work for additional
|
|
* information regarding copyright ownership.
|
|
*/
|
|
|
|
options {
|
|
query-source address 10.53.0.1 dscp 1;
|
|
notify-source 10.53.0.1 dscp 22;
|
|
transfer-source 10.53.0.1 dscp 3;
|
|
port @PORT@;
|
|
pid-file "named.pid";
|
|
session-keyfile "session.key";
|
|
listen-on { 10.53.0.1; 127.0.0.1; };
|
|
listen-on-v6 { none; };
|
|
recursion no;
|
|
notify yes;
|
|
minimal-responses no;
|
|
};
|
|
|
|
key rndc_key {
|
|
secret "1234abcd8765";
|
|
algorithm hmac-sha256;
|
|
};
|
|
|
|
controls {
|
|
inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
|
};
|
|
|
|
key altkey {
|
|
algorithm hmac-md5;
|
|
secret "1234abcd8765";
|
|
};
|
|
|
|
include "ddns.key";
|
|
|
|
zone "example.nil" {
|
|
type master;
|
|
file "example.db";
|
|
check-integrity no;
|
|
check-mx ignore;
|
|
update-policy {
|
|
grant ddns-key.example.nil subdomain example.nil ANY;
|
|
};
|
|
allow-transfer { any; };
|
|
};
|
|
|
|
zone "max-ttl.nil" {
|
|
type master;
|
|
file "max-ttl.db";
|
|
max-zone-ttl 300;
|
|
check-integrity no;
|
|
allow-update { any; };
|
|
allow-transfer { any; };
|
|
};
|
|
|
|
zone "other.nil" {
|
|
type master;
|
|
file "other.db";
|
|
check-integrity no;
|
|
check-mx warn;
|
|
update-policy local;
|
|
allow-query-on { 10.53.0.1; 127.0.0.1; };
|
|
allow-transfer { any; };
|
|
};
|
|
|
|
masters othermasters {
|
|
10.53.0.2 port @PORT@;
|
|
10.53.0.2 port @PORT@ key altkey;
|
|
};
|
|
|
|
zone "update.nil" {
|
|
type master;
|
|
file "update.db";
|
|
check-integrity no;
|
|
check-mx fail;
|
|
allow-update { any; };
|
|
allow-transfer { any; };
|
|
also-notify { othermasters; };
|
|
};
|
|
|
|
zone "unixtime.nil" {
|
|
type master;
|
|
file "unixtime.db";
|
|
check-integrity no;
|
|
allow-update { any; };
|
|
allow-transfer { any; };
|
|
serial-update-method unixtime;
|
|
};
|
|
|
|
zone "yyyymmddvv.nil" {
|
|
type master;
|
|
file "yyyymmddvv.db";
|
|
check-integrity no;
|
|
allow-update { any; };
|
|
allow-transfer { any; };
|
|
serial-update-method date;
|
|
};
|
|
|
|
include "md5.key";
|
|
include "sha1.key";
|
|
include "sha224.key";
|
|
include "sha256.key";
|
|
include "sha384.key";
|
|
include "sha512.key";
|
|
|
|
zone "keytests.nil" {
|
|
type master;
|
|
file "keytests.db";
|
|
update-policy {
|
|
grant md5-key name md5.keytests.nil. ANY;
|
|
grant sha1-key name sha1.keytests.nil. ANY;
|
|
grant sha224-key name sha224.keytests.nil. ANY;
|
|
grant sha256-key name sha256.keytests.nil. ANY;
|
|
grant sha384-key name sha384.keytests.nil. ANY;
|
|
grant sha512-key name sha512.keytests.nil. ANY;
|
|
};
|
|
};
|
|
|
|
zone "many.test" {
|
|
type master;
|
|
allow-update { any; };
|
|
file "many.test.db";
|
|
};
|
|
|
|
zone "sample" {
|
|
type master;
|
|
allow-update { any; };
|
|
file "sample.db";
|
|
};
|
|
|
|
zone "maxjournal.test" {
|
|
type master;
|
|
allow-update { any; };
|
|
file "maxjournal.db";
|
|
max-journal-size default;
|
|
};
|