diff options
author | Roman Beranek <roman.beranek@prusa3d.com> | 2020-11-17 05:37:58 +0100 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-11-18 03:16:57 +0900 |
commit | 07e4a8dc2353e410020245aa5f448f41a4ef2b57 (patch) | |
tree | 497a5dc0db5164d2b53fcea53067ae3aff09ceea /src/resolve/resolved-bus.c | |
parent | 478f5aac079ee29d59887d08c03962dd4ee42cc2 (diff) | |
download | systemd-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.c | 9 |
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; |