From: Lennart Poettering Date: Mon, 13 Oct 2025 09:34:24 +0000 (+0200) Subject: dns-domain: make dns_name_change_suffix() work with an empty/null suffix X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e5dc5821ff8852241d3842da95694a3a9433cfbf;p=thirdparty%2Fsystemd.git dns-domain: make dns_name_change_suffix() work with an empty/null suffix --- diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c index c9788989d83..d45fbc63438 100644 --- a/src/shared/dns-domain.c +++ b/src/shared/dns-domain.c @@ -27,7 +27,12 @@ int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags f int r = 0; assert(name); - assert(*name); + + if (isempty(*name)) { + if (dest && sz >= 1) + dest[0] = 0; + return 0; + } n = *name; d = dest; @@ -649,12 +654,10 @@ int dns_name_change_suffix(const char *name, const char *old_suffix, const char int r, q; assert(name); - assert(old_suffix); - assert(new_suffix); assert(ret); n = name; - s = old_suffix; + s = strempty(old_suffix); for (;;) { char ln[DNS_LABEL_MAX+1], ls[DNS_LABEL_MAX+1]; diff --git a/src/test/test-dns-domain.c b/src/test/test-dns-domain.c index f1d11305c1d..ae73725c8ee 100644 --- a/src/test/test-dns-domain.c +++ b/src/test/test-dns-domain.c @@ -654,6 +654,9 @@ TEST(dns_name_change_suffix) { test_dns_name_change_suffix_one("", "", "piff.paff", 1, "piff.paff"); test_dns_name_change_suffix_one("", "", "", 1, "."); test_dns_name_change_suffix_one("a", "b", "c", 0, NULL); + test_dns_name_change_suffix_one("wau.wau", "wau", NULL, 1, "wau"); + test_dns_name_change_suffix_one("wau.wau", NULL, "wau", 1, "wau.wau.wau"); + test_dns_name_change_suffix_one("wau.wau", NULL, NULL, 1, "wau.wau"); } static void test_dns_name_suffix_one(const char *name, unsigned n_labels, const char *result, int ret) {