]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Test dns_name_fromregion
authorMark Andrews <marka@isc.org>
Tue, 23 Apr 2024 03:34:56 +0000 (13:34 +1000)
committerMark Andrews <marka@isc.org>
Wed, 24 Apr 2024 01:38:14 +0000 (01:38 +0000)
with a large source region and a large target buffer, both
larger than DNS_NAME_MAXWIRE.

tests/dns/name_test.c

index 6e9017c465d753dc7e901159e11e86f72243efb5..54078921a213af8a974f65237692628c38b91f8f 100644 (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)