resolve: if both A and AAAA are refused, do not resolve address when resolving service
Similarly, set NO_TXT flag if TXT is filtered.
Follow-up for 81ae2237c1.
Fixes https://github.com/systemd/systemd/pull/36353#issuecomment-2659558382.
This commit is contained in:
@@ -1484,5 +1484,16 @@ int validate_and_mangle_query_flags(
|
||||
if (name && FLAGS_SET(ok, SD_RESOLVED_NO_SEARCH) && dns_name_dot_suffixed(name) > 0)
|
||||
*flags |= SD_RESOLVED_NO_SEARCH;
|
||||
|
||||
/* If both A and AAAA are refused, set SD_RESOLVED_NO_ADDRESS flag if it is allowed. */
|
||||
if (set_contains(manager->refuse_record_types, INT_TO_PTR(DNS_TYPE_A)) &&
|
||||
set_contains(manager->refuse_record_types, INT_TO_PTR(DNS_TYPE_AAAA)) &&
|
||||
FLAGS_SET(ok, SD_RESOLVED_NO_ADDRESS))
|
||||
*flags |= SD_RESOLVED_NO_ADDRESS;
|
||||
|
||||
/* Similarly, if TXT is refused, set SD_RESOLVED_NO_TXT flag if it is allowed. */
|
||||
if (set_contains(manager->refuse_record_types, INT_TO_PTR(DNS_TYPE_TXT)) &&
|
||||
FLAGS_SET(ok, SD_RESOLVED_NO_TXT))
|
||||
*flags |= SD_RESOLVED_NO_TXT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user