mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 22:15:20 +00:00
Record types which support a empty rdata field were not handling the empty rdata field case.
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,3 +1,6 @@
|
|||||||
|
5070. [bug] Record types which support a empty rdata field were
|
||||||
|
not handling the empty rdata field case. [GL #638]
|
||||||
|
|
||||||
5069. [bug] Fix a hang on in RPZ when named is shutdown during RPZ
|
5069. [bug] Fix a hang on in RPZ when named is shutdown during RPZ
|
||||||
zone update. [GL !907]
|
zone update. [GL !907]
|
||||||
|
|
||||||
|
@@ -57,6 +57,28 @@ while (<FILE1>) {
|
|||||||
} else {
|
} else {
|
||||||
$entry{"$name ; $class.$type ; $value"} = $_;
|
$entry{"$name ; $class.$type ; $value"} = $_;
|
||||||
}
|
}
|
||||||
|
} elsif (/^(\S+)\s+\S+\s+(\S+)\s+(\S+)\s*$/) {
|
||||||
|
$name = $1;
|
||||||
|
$class = $2;
|
||||||
|
$type = $3;
|
||||||
|
$value = "";
|
||||||
|
if ($lc) {
|
||||||
|
$name = lc($name);
|
||||||
|
$value = lc($value);
|
||||||
|
}
|
||||||
|
if ($type eq "SOA") {
|
||||||
|
$firstname = $name if ($firstname eq "");
|
||||||
|
if ($name eq $firstname) {
|
||||||
|
$name = "$name$count";
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($entry{"$name ; $class.$type ; $value"} ne "") {
|
||||||
|
$line = $entry{"$name ; $class.$type ; $value"};
|
||||||
|
print("Duplicate entry in $file1:\n> $_\n< $line\n");
|
||||||
|
} else {
|
||||||
|
$entry{"$name ; $class.$type ; $value"} = $_;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(FILE1);
|
close(FILE1);
|
||||||
@@ -93,6 +115,28 @@ while (<FILE2>) {
|
|||||||
$printed++;
|
$printed++;
|
||||||
$status = 1;
|
$status = 1;
|
||||||
}
|
}
|
||||||
|
} elsif (/^(\S+)\s+\S+\s+(\S+)\s+(\S+)\s*$/) {
|
||||||
|
$name = $1;
|
||||||
|
$class = $2;
|
||||||
|
$type = $3;
|
||||||
|
$value = "";
|
||||||
|
if ($lc) {
|
||||||
|
$name = lc($name);
|
||||||
|
$value = lc($value);
|
||||||
|
}
|
||||||
|
if (($name eq $firstname) && ($type eq "SOA")) {
|
||||||
|
$count--;
|
||||||
|
$name = "$name$count";
|
||||||
|
}
|
||||||
|
if ($entry{"$name ; $class.$type ; $value"} ne "") {
|
||||||
|
$entry{"$name ; $class.$type ; $value"} = "";
|
||||||
|
} else {
|
||||||
|
print("Only in $file2 (missing from $file1):\n")
|
||||||
|
if ($printed == 0);
|
||||||
|
print("> $_\n");
|
||||||
|
$printed++;
|
||||||
|
$status = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(FILE2);
|
close(FILE2);
|
||||||
|
@@ -236,6 +236,7 @@ sink02 SINK 8 0 2 l4ik
|
|||||||
|
|
||||||
; type 42
|
; type 42
|
||||||
apl01 APL !1:10.0.0.1/32 1:10.0.0.0/24
|
apl01 APL !1:10.0.0.1/32 1:10.0.0.0/24
|
||||||
|
apl02 APL
|
||||||
|
|
||||||
; type 43
|
; type 43
|
||||||
ds01 DS 12892 5 2 26584835CA80C81C91999F31CFAF2A0E89D4FF1C8FAFD0DDB31A85C7 19277C13
|
ds01 DS 12892 5 2 26584835CA80C81C91999F31CFAF2A0E89D4FF1C8FAFD0DDB31A85C7 19277C13
|
||||||
|
@@ -12,6 +12,7 @@ aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
|
|||||||
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
|
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
|
||||||
afsdb02.example. 3600 IN AFSDB 65535 .
|
afsdb02.example. 3600 IN AFSDB 65535 .
|
||||||
apl01.example. 3600 IN APL !1:10.0.0.1/32 1:10.0.0.0/24
|
apl01.example. 3600 IN APL !1:10.0.0.1/32 1:10.0.0.0/24
|
||||||
|
apl02.example. 3600 IN APL
|
||||||
atma01.example. 3600 IN ATMA +61200000000
|
atma01.example. 3600 IN ATMA +61200000000
|
||||||
atma02.example. 3600 IN ATMA +61200000000
|
atma02.example. 3600 IN ATMA +61200000000
|
||||||
atma03.example. 3600 IN ATMA 1234567890abcdef
|
atma03.example. 3600 IN ATMA 1234567890abcdef
|
||||||
|
@@ -12,6 +12,7 @@ aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
|
|||||||
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
|
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
|
||||||
afsdb02.example. 3600 IN AFSDB 65535 .
|
afsdb02.example. 3600 IN AFSDB 65535 .
|
||||||
apl01.example. 3600 IN APL !1:10.0.0.1/32 1:10.0.0.1/24
|
apl01.example. 3600 IN APL !1:10.0.0.1/32 1:10.0.0.1/24
|
||||||
|
apl02.example. 3600 IN APL
|
||||||
atma01.example. 3600 IN ATMA +61200000000
|
atma01.example. 3600 IN ATMA +61200000000
|
||||||
atma02.example. 3600 IN ATMA +61200000000
|
atma02.example. 3600 IN ATMA +61200000000
|
||||||
atma03.example. 3600 IN ATMA 1234567890abcdef
|
atma03.example. 3600 IN ATMA 1234567890abcdef
|
||||||
|
@@ -933,7 +933,7 @@ dns_rdata_fromtext(dns_rdata_t *rdata, dns_rdataclass_t rdclass,
|
|||||||
callback = default_fromtext_callback;
|
callback = default_fromtext_callback;
|
||||||
|
|
||||||
result = isc_lex_getmastertoken(lexer, &token, isc_tokentype_qstring,
|
result = isc_lex_getmastertoken(lexer, &token, isc_tokentype_qstring,
|
||||||
false);
|
true);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
name = isc_lex_getsourcename(lexer);
|
name = isc_lex_getsourcename(lexer);
|
||||||
line = isc_lex_getsourceline(lexer);
|
line = isc_lex_getsourceline(lexer);
|
||||||
|
@@ -482,7 +482,7 @@ dns_test_rdatafromstring(dns_rdata_t *rdata, dns_rdataclass_t rdclass,
|
|||||||
* Parse input string, determining result.
|
* Parse input string, determining result.
|
||||||
*/
|
*/
|
||||||
result = dns_rdata_fromtext(rdata, rdclass, rdtype, lex, dns_rootname,
|
result = dns_rdata_fromtext(rdata, rdclass, rdtype, lex, dns_rootname,
|
||||||
0, NULL, &target, NULL);
|
0, mctx, &target, NULL);
|
||||||
|
|
||||||
destroy_lexer:
|
destroy_lexer:
|
||||||
isc_lex_destroy(&lex);
|
isc_lex_destroy(&lex);
|
||||||
|
@@ -346,6 +346,64 @@ check_rdata(const text_ok_t *text_ok, const wire_ok_t *wire_ok,
|
|||||||
***** Individual unit tests
|
***** Individual unit tests
|
||||||
*****/
|
*****/
|
||||||
|
|
||||||
|
ATF_TC(apl);
|
||||||
|
ATF_TC_HEAD(apl, tc) {
|
||||||
|
atf_tc_set_md_var(tc, "descr", "APL RDATA manipulations");
|
||||||
|
}
|
||||||
|
ATF_TC_BODY(apl, tc) {
|
||||||
|
text_ok_t text_ok[] = {
|
||||||
|
/* empty list */
|
||||||
|
TEXT_VALID(""),
|
||||||
|
/* min,max prefix IPv4 */
|
||||||
|
TEXT_VALID("1:0.0.0.0/0"),
|
||||||
|
TEXT_VALID("1:127.0.0.1/32"),
|
||||||
|
/* min,max prefix IPv6 */
|
||||||
|
TEXT_VALID("2:::/0"),
|
||||||
|
TEXT_VALID("2:::1/128"),
|
||||||
|
/* negated */
|
||||||
|
TEXT_VALID("!1:0.0.0.0/0"),
|
||||||
|
TEXT_VALID("!1:127.0.0.1/32"),
|
||||||
|
TEXT_VALID("!2:::/0"),
|
||||||
|
TEXT_VALID("!2:::1/128"),
|
||||||
|
/* bits set after prefix length - not disallowed */
|
||||||
|
TEXT_VALID("1:127.0.0.0/0"),
|
||||||
|
TEXT_VALID("2:8000::/0"),
|
||||||
|
/* multiple */
|
||||||
|
TEXT_VALID("1:0.0.0.0/0 1:127.0.0.1/32"),
|
||||||
|
TEXT_VALID("1:0.0.0.0/0 !1:127.0.0.1/32"),
|
||||||
|
/* family 0, prefix 0, positive */
|
||||||
|
TEXT_VALID("\\# 4 00000000"),
|
||||||
|
/* family 0, prefix 0, negative */
|
||||||
|
TEXT_VALID("\\# 4 00000080"),
|
||||||
|
/* prefix too long */
|
||||||
|
TEXT_INVALID("1:0.0.0.0/33"),
|
||||||
|
TEXT_INVALID("2:::/129"),
|
||||||
|
/*
|
||||||
|
* Sentinel.
|
||||||
|
*/
|
||||||
|
TEXT_SENTINEL()
|
||||||
|
};
|
||||||
|
wire_ok_t wire_ok[] = {
|
||||||
|
/* zero length */
|
||||||
|
WIRE_VALID(),
|
||||||
|
/* prefix too big IPv4 */
|
||||||
|
WIRE_INVALID(0x00, 0x01, 33U, 0x00),
|
||||||
|
/* prefix too big IPv6 */
|
||||||
|
WIRE_INVALID(0x00, 0x02, 129U, 0x00),
|
||||||
|
/* trailing zero octet in afdpart */
|
||||||
|
WIRE_INVALID(0x00, 0x00, 0x00, 0x01, 0x00),
|
||||||
|
/*
|
||||||
|
* Sentinel.
|
||||||
|
*/
|
||||||
|
WIRE_SENTINEL()
|
||||||
|
};
|
||||||
|
|
||||||
|
UNUSED(tc);
|
||||||
|
|
||||||
|
check_rdata(text_ok, wire_ok, true, dns_rdataclass_in,
|
||||||
|
dns_rdatatype_apl, sizeof(dns_rdata_in_apl_t));
|
||||||
|
}
|
||||||
|
|
||||||
ATF_TC(atma);
|
ATF_TC(atma);
|
||||||
ATF_TC_HEAD(atma, tc) {
|
ATF_TC_HEAD(atma, tc) {
|
||||||
atf_tc_set_md_var(tc, "descr", "ATMA RDATA manipulations");
|
atf_tc_set_md_var(tc, "descr", "ATMA RDATA manipulations");
|
||||||
@@ -1372,6 +1430,7 @@ ATF_TC_BODY(wks, tc) {
|
|||||||
*****/
|
*****/
|
||||||
|
|
||||||
ATF_TP_ADD_TCS(tp) {
|
ATF_TP_ADD_TCS(tp) {
|
||||||
|
ATF_TP_ADD_TC(tp, apl);
|
||||||
ATF_TP_ADD_TC(tp, atma);
|
ATF_TP_ADD_TC(tp, atma);
|
||||||
ATF_TP_ADD_TC(tp, csync);
|
ATF_TP_ADD_TC(tp, csync);
|
||||||
ATF_TP_ADD_TC(tp, doa);
|
ATF_TP_ADD_TC(tp, doa);
|
||||||
|
Reference in New Issue
Block a user