From: Mark Andrews Date: Mon, 23 Dec 2019 21:43:45 +0000 (+1100) Subject: exercise dns_rdata_checknames X-Git-Tag: v9.15.8~12^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3c1b2a869f407a35d0c29162c1005304c5beb40;p=thirdparty%2Fbind9.git exercise dns_rdata_checknames --- diff --git a/lib/dns/tests/rdata_test.c b/lib/dns/tests/rdata_test.c index fb67d033f39..1f93cf213f3 100644 --- a/lib/dns/tests/rdata_test.c +++ b/lib/dns/tests/rdata_test.c @@ -196,6 +196,44 @@ rdata_additionadata(dns_rdata_t *rdata) { return (dns_rdata_additionaldata(rdata, additionaldata_cb, NULL)); } +/* + * Call dns_rdata_checknames() with various owner names chosen to + * match well known forms. + * + * We are currently only checking that the calls do not trigger + * assertion failures. + * + * XXXMPA A future extention could be to record the expected + * result and the expected value of 'bad'. + */ +static void +rdata_checknames(dns_rdata_t *rdata) { + dns_fixedname_t fixed, bfixed; + dns_name_t *name, *bad; + isc_result_t result; + + name = dns_fixedname_initname(&fixed); + bad = dns_fixedname_initname(&bfixed); + + (void) dns_rdata_checknames(rdata, dns_rootname, NULL); + (void) dns_rdata_checknames(rdata, dns_rootname, bad); + + result = dns_name_fromstring(name, "example.net", 0, NULL); + assert_int_equal(result, ISC_R_SUCCESS); + (void) dns_rdata_checknames(rdata, name, NULL); + (void) dns_rdata_checknames(rdata, name, bad); + + result = dns_name_fromstring(name, "in-addr.arpa", 0, NULL); + assert_int_equal(result, ISC_R_SUCCESS); + (void) dns_rdata_checknames(rdata, name, NULL); + (void) dns_rdata_checknames(rdata, name, bad); + + result = dns_name_fromstring(name, "ip6.arpa", 0, NULL); + assert_int_equal(result, ISC_R_SUCCESS); + (void) dns_rdata_checknames(rdata, name, NULL); + (void) dns_rdata_checknames(rdata, name, bad); +} + /* * Test whether converting rdata to a type-specific struct and then back to * rdata results in the same uncompressed wire form. This checks whether @@ -328,6 +366,11 @@ check_text_ok_single(const text_ok_t *text_ok, dns_rdataclass_t rdclass, result = rdata_additionadata(&rdata); assert_int_equal(result, ISC_R_SUCCESS); + /* + * Exercise checknames_*(). + */ + rdata_checknames(&rdata); + /* * Perform two-way conversion checks between uncompressed wire form and * type-specific struct. @@ -491,6 +534,11 @@ check_wire_ok_single(const wire_ok_t *wire_ok, dns_rdataclass_t rdclass, */ result = rdata_additionadata(&rdata); assert_int_equal(result, ISC_R_SUCCESS); + + /* + * Exercise checknames_*(). + */ + rdata_checknames(&rdata); } /*