From b48ab08732a76b7337628e1e716f11c687000903 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 5 Aug 2024 10:46:41 +0900 Subject: [PATCH] resolve: refuse invalid service without type field Fixes Fixes #33935. --- src/resolve/resolved-bus.c | 5 +++++ src/resolve/resolved-varlink.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index d6d2273dc9d..847bb6bc6ec 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -1148,6 +1148,11 @@ static void resolve_service_all_complete(DnsQuery *query) { if (r < 0) goto finish; + if (isempty(type)) { + r = reply_method_errorf(q, BUS_ERROR_NO_SUCH_SERVICE, "'%s' does not provide valid service", dns_query_string(q)); + goto finish; + } + r = sd_bus_message_append( reply, "ssst", diff --git a/src/resolve/resolved-varlink.c b/src/resolve/resolved-varlink.c index 6708159323d..f2fbf7a5232 100644 --- a/src/resolve/resolved-varlink.c +++ b/src/resolve/resolved-varlink.c @@ -828,6 +828,11 @@ static void resolve_service_all_complete(DnsQuery *query) { if (r < 0) goto finish; + if (isempty(type)) { + r = sd_varlink_error(q->varlink_request, "io.systemd.Resolve.ServiceNotProvided", NULL); + goto finish; + } + r = sd_varlink_replybo( query->varlink_request, SD_JSON_BUILD_PAIR("services", SD_JSON_BUILD_VARIANT(srv)), -- 2.47.3