summaryrefslogtreecommitdiff
path: root/src/resolve/resolved-bus.c
diff options
context:
space:
mode:
authorRoman Beranek <roman.beranek@prusa3d.com>2020-11-17 05:37:58 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-11-18 03:16:57 +0900
commit07e4a8dc2353e410020245aa5f448f41a4ef2b57 (patch)
tree497a5dc0db5164d2b53fcea53067ae3aff09ceea /src/resolve/resolved-bus.c
parent478f5aac079ee29d59887d08c03962dd4ee42cc2 (diff)
downloadsystemd-07e4a8dc2353e410020245aa5f448f41a4ef2b57.tar.gz
Revert "resolve: check DNSSD service name template before assigning it"
This reverts commit 34136e1503cf60852051adbd8b9a002d6282b750. Having the "%H" host name specifier in a DNSSD service name template triggers a failed assertion during name template instantiation as specifier_dnssd_host_name expects DnssdService in its userdata pointer but finds NULL instead.
Diffstat (limited to 'src/resolve/resolved-bus.c')
-rw-r--r--src/resolve/resolved-bus.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c
index 8912650d40..dca9b885fe 100644
--- a/src/resolve/resolved-bus.c
+++ b/src/resolve/resolved-bus.c
@@ -1795,6 +1795,7 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
_cleanup_(dnssd_service_freep) DnssdService *service = NULL;
_cleanup_(sd_bus_track_unrefp) sd_bus_track *bus_track = NULL;
_cleanup_free_ char *path = NULL;
+ _cleanup_free_ char *instance_name = NULL;
Manager *m = userdata;
DnssdService *s = NULL;
const char *name;
@@ -1835,10 +1836,6 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
if (!dnssd_srv_type_is_valid(type))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "DNS-SD service type '%s' is invalid", type);
- r = dnssd_render_instance_name(name_template, NULL);
- if (r < 0)
- return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "DNS-SD service name '%s' is invalid", name_template);
-
service->name = strdup(name);
if (!service->name)
return log_oom();
@@ -1851,6 +1848,10 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
if (!service->type)
return log_oom();
+ r = dnssd_render_instance_name(service, &instance_name);
+ if (r < 0)
+ return r;
+
r = sd_bus_message_enter_container(message, SD_BUS_TYPE_ARRAY, "a{say}");
if (r < 0)
return r;