Merge pull request #22231 from yuwata/resolve-synthesize
resolve: synthesize several filtered name
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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) ||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user