Merge pull request #22231 from yuwata/resolve-synthesize

resolve: synthesize several filtered name
This commit is contained in:
Luca Boccassi
2022-01-24 12:11:29 +00:00
committed by GitHub
4 changed files with 16 additions and 10 deletions
-6
View File
@@ -433,9 +433,6 @@ static int bus_method_resolve_hostname(sd_bus_message *message, void *userdata,
if (r != 0)
return r;
if (dns_name_is_empty(hostname))
return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Empty hostname");
r = dns_name_is_valid(hostname);
if (r < 0)
return r;
@@ -743,9 +740,6 @@ static int bus_method_resolve_record(sd_bus_message *message, void *userdata, sd
if (ifindex < 0)
return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid interface index");
if (dns_name_is_empty(name))
return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Empty name");
r = dns_name_is_valid(name);
if (r < 0)
return r;
+4
View File
@@ -613,6 +613,10 @@ DnsScopeMatch dns_scope_good_domain(
if ((SD_RESOLVED_FLAGS_MAKE(s->protocol, s->family, false, false) & flags) == 0)
return DNS_SCOPE_NO;
/* Never resolve empty name. */
if (dns_name_is_empty(domain))
return DNS_SCOPE_NO;
/* Never resolve any loopback hostname or IP address via DNS, LLMNR or mDNS. Instead, always rely on
* synthesized RRs for these. */
if (is_localhost(domain) ||
+12 -1
View File
@@ -394,7 +394,18 @@ int dns_synthesize_answer(
name = dns_resource_key_name(key);
if (is_localhost(name)) {
if (dns_name_is_empty(name)) {
/* Do nothing. */
} else if (dns_name_endswith(name, "0.in-addr.arpa") > 0 ||
dns_name_equal(name, "255.255.255.255.in-addr.arpa") > 0 ||
dns_name_equal(name, "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa") > 0 ||
dns_name_endswith(name, "invalid") > 0) {
nxdomain = true;
continue;
} else if (is_localhost(name)) {
r = synthesize_localhost_rr(m, key, ifindex, &answer);
if (r < 0)
-3
View File
@@ -303,9 +303,6 @@ static int vl_method_resolve_hostname(Varlink *link, JsonVariant *parameters, Va
if (p.ifindex < 0)
return varlink_error_invalid_parameter(link, JSON_VARIANT_STRING_CONST("ifindex"));
if (dns_name_is_empty(p.name))
return varlink_error_invalid_parameter(link, JSON_VARIANT_STRING_CONST("name"));
r = dns_name_is_valid(p.name);
if (r < 0)
return r;