From 254ba1b051bdc4f90b8210980ca80450d6d11159 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 23 Apr 2024 13:34:56 +1000 Subject: [PATCH] Test dns_name_fromregion with a large source region and a large target buffer, both larger than DNS_NAME_MAXWIRE. --- tests/dns/name_test.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/dns/name_test.c b/tests/dns/name_test.c index 6e9017c465..54078921a2 100644 --- a/tests/dns/name_test.c +++ b/tests/dns/name_test.c @@ -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)