dns-domain: make dns_name_change_suffix() work with an empty/null suffix

This commit is contained in:
Lennart Poettering
2025-10-13 11:34:24 +02:00
parent 970bedb6d8
commit e5dc5821ff
2 changed files with 10 additions and 4 deletions

View File

@@ -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];

View File

@@ -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) {