allow NULL compression context in dns_name_towire()

passing NULL as the compression context to dns_name_towire()
copies the uncompressed name data directly into the target buffer.
This commit is contained in:
Evan Hunt
2025-02-21 23:37:49 -08:00
parent afb424c9b6
commit 2f7e6eb019
3 changed files with 28 additions and 6 deletions

View File

@@ -158,17 +158,23 @@ compress_test(const dns_name_t *name1, const dns_name_t *name2,
ISC_R_SUCCESS);
} else {
/* Owner name compression */
dns_compress_setmultiuse(cctx, true);
if (cctx != NULL) {
dns_compress_setmultiuse(cctx, true);
}
assert_int_equal(dns_name_towire(name1, cctx, &source),
ISC_R_SUCCESS);
dns_compress_setmultiuse(cctx, true);
if (cctx != NULL) {
dns_compress_setmultiuse(cctx, true);
}
assert_int_equal(dns_name_towire(name2, cctx, &source),
ISC_R_SUCCESS);
assert_int_equal(dns_name_towire(name2, cctx, &source),
ISC_R_SUCCESS);
dns_compress_setmultiuse(cctx, true);
if (cctx != NULL) {
dns_compress_setmultiuse(cctx, true);
}
assert_int_equal(dns_name_towire(name3, cctx, &source),
ISC_R_SUCCESS);
}
@@ -254,6 +260,12 @@ ISC_RUN_TEST_IMPL(compression) {
r.length = sizeof(plain3);
dns_name_fromregion(&name4, &r);
/* Test 0: no compression context */
compress_test(&name1, &name2, &name3, plain, sizeof(plain), plain,
sizeof(plain), NULL, DNS_DECOMPRESS_NEVER, true);
compress_test(&name1, &name2, &name3, plain, sizeof(plain), plain,
sizeof(plain), NULL, DNS_DECOMPRESS_NEVER, false);
/* Test 1: off, rdata */
permitted = false;
dns_compress_init(&cctx, mctx, 0);