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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user