Test dns_name_fromregion

with a large source region and a large target buffer, both
larger than DNS_NAME_MAXWIRE.
This commit is contained in:
Mark Andrews
2024-04-23 13:34:56 +10:00
parent 63b93ccda2
commit 254ba1b051

View File

@@ -452,6 +452,32 @@ ISC_RUN_TEST_IMPL(collision) {
dns_compress_invalidate(&cctx);
}
ISC_RUN_TEST_IMPL(fromregion) {
dns_name_t name;
isc_buffer_t b;
isc_region_t r;
/*
* target and source need to be bigger than DNS_NAME_MAXWIRE to
* exercise 'len > DNS_NAME_MAXWIRE' test in dns_name_fromwire
*/
unsigned char target[DNS_NAME_MAXWIRE + 10];
unsigned char source[DNS_NAME_MAXWIRE + 10] = { '\007', 'e', 'x', 'a',
'm', 'p', 'l', 'e' };
/*
* Extract the fully qualified name at the beginning of 'source'
* into 'name' where 'name.ndata' points to the buffer 'target'.
*/
isc_buffer_init(&b, target, sizeof(target));
dns_name_init(&name, NULL);
dns_name_setbuffer(&name, &b);
r.base = source;
r.length = sizeof(source);
dns_name_fromregion(&name, &r);
assert_int_equal(9, name.length);
assert_ptr_equal(target, name.ndata);
assert_true(dns_name_isabsolute(&name));
}
/* is trust-anchor-telemetry test */
ISC_RUN_TEST_IMPL(istat) {
dns_fixedname_t fixed;
@@ -942,6 +968,7 @@ ISC_TEST_LIST_START
ISC_TEST_ENTRY(fullcompare)
ISC_TEST_ENTRY(compression)
ISC_TEST_ENTRY(collision)
ISC_TEST_ENTRY(fromregion)
ISC_TEST_ENTRY(istat)
ISC_TEST_ENTRY(init)
ISC_TEST_ENTRY(invalidate)