Bug Summary

File:build-scan/../src/resolve/resolved-dnssd.c
Warning:line 79, column 24
Potential leak of memory pointed to by 'service'

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-unknown-linux-gnu -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name resolved-dnssd.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model static -mframe-pointer=all -relaxed-aliasing -menable-no-infs -menable-no-nans -menable-unsafe-fp-math -fno-signed-zeros -mreassociate -freciprocal-math -fdenormal-fp-math=preserve-sign,preserve-sign -ffp-contract=fast -fno-rounding-math -ffast-math -ffinite-math-only -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -fno-split-dwarf-inlining -debugger-tuning=gdb -resource-dir /usr/lib64/clang/12.0.0 -include config.h -I systemd-resolved.p -I . -I .. -I src/basic -I ../src/basic -I src/shared -I ../src/shared -I src/systemd -I ../src/systemd -I src/journal -I ../src/journal -I src/journal-remote -I ../src/journal-remote -I src/nspawn -I ../src/nspawn -I src/resolve -I ../src/resolve -I src/timesync -I ../src/timesync -I ../src/time-wait-sync -I src/login -I ../src/login -I src/udev -I ../src/udev -I src/libudev -I ../src/libudev -I src/core -I ../src/core -I ../src/libsystemd/sd-bus -I ../src/libsystemd/sd-device -I ../src/libsystemd/sd-hwdb -I ../src/libsystemd/sd-id128 -I ../src/libsystemd/sd-netlink -I ../src/libsystemd/sd-network -I src/libsystemd-network -I ../src/libsystemd-network -I /usr/include/p11-kit-1 -D _FILE_OFFSET_BITS=64 -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wwrite-strings -Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-result -Wno-format-signedness -Wno-error=nonnull -std=gnu99 -fconst-strings -fdebug-compilation-dir /home/mrc0mmand/repos/@redhat-plumbers/systemd-rhel8/build-scan -ferror-limit 19 -fvisibility hidden -stack-protector 2 -fgnuc-version=4.2.1 -fcolor-diagnostics -analyzer-output=html -faddrsig -o /tmp/scan-build-2021-07-16-221226-1465241-1 -x c ../src/resolve/resolved-dnssd.c
1
2#include "conf-files.h"
3#include "conf-parser.h"
4#include "resolved-dnssd.h"
5#include "resolved-dns-rr.h"
6#include "resolved-manager.h"
7#include "specifier.h"
8#include "strv.h"
9
10const char* const dnssd_service_dirs[] = {
11 "/etc/systemd/dnssd",
12 "/run/systemd/dnssd",
13 "/usr/lib/systemd/dnssd",
14#ifdef HAVE_SPLIT_USR0
15 "/lib/systemd/dnssd",
16#endif
17 NULL((void*)0)
18};
19
20DnssdTxtData *dnssd_txtdata_free(DnssdTxtData *txt_data) {
21 if (!txt_data)
22 return NULL((void*)0);
23
24 dns_resource_record_unref(txt_data->rr);
25 dns_txt_item_free_all(txt_data->txt);
26
27 return mfree(txt_data);
28}
29
30DnssdTxtData *dnssd_txtdata_free_all(DnssdTxtData *txt_data) {
31 DnssdTxtData *next;
32
33 if (!txt_data)
34 return NULL((void*)0);
35
36 next = txt_data->items_next;
37
38 dnssd_txtdata_free(txt_data);
39
40 return dnssd_txtdata_free_all(next);
41}
42
43DnssdService *dnssd_service_free(DnssdService *service) {
44 if (!service)
45 return NULL((void*)0);
46
47 if (service->manager)
48 hashmap_remove(service->manager->dnssd_services, service->name);
49
50 dns_resource_record_unref(service->ptr_rr);
51 dns_resource_record_unref(service->srv_rr);
52
53 dnssd_txtdata_free_all(service->txt_data_items);
54
55 free(service->filename);
56 free(service->name);
57 free(service->type);
58 free(service->name_template);
59
60 return mfree(service);
61}
62
63static int dnssd_service_load(Manager *manager, const char *filename) {
64 _cleanup_(dnssd_service_freep)__attribute__((cleanup(dnssd_service_freep))) DnssdService *service = NULL((void*)0);
65 _cleanup_(dnssd_txtdata_freep)__attribute__((cleanup(dnssd_txtdata_freep))) DnssdTxtData *txt_data = NULL((void*)0);
66 char *d;
67 const char *dropin_dirname;
68 int r;
69
70 assert(manager)do { if ((__builtin_expect(!!(!(manager)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("manager"), "../src/resolve/resolved-dnssd.c"
, 70, __PRETTY_FUNCTION__); } while (0)
;
12
Taking false branch
13
Loop condition is false. Exiting loop
71 assert(filename)do { if ((__builtin_expect(!!(!(filename)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("filename"), "../src/resolve/resolved-dnssd.c"
, 71, __PRETTY_FUNCTION__); } while (0)
;
14
Assuming 'filename' is non-null
15
Taking false branch
16
Loop condition is false. Exiting loop
72
73 service = new0(DnssdService, 1)((DnssdService*) calloc((1), sizeof(DnssdService)));
17
Memory is allocated
74 if (!service)
18
Assuming 'service' is non-null
19
Taking false branch
75 return log_oom()log_oom_internal(LOG_REALM_SYSTEMD, "../src/resolve/resolved-dnssd.c"
, 75, __func__)
;
76
77 service->filename = strdup(filename);
78 if (!service->filename)
20
Assuming field 'filename' is null
21
Taking true branch
79 return log_oom()log_oom_internal(LOG_REALM_SYSTEMD, "../src/resolve/resolved-dnssd.c"
, 79, __func__)
;
22
Potential leak of memory pointed to by 'service'
80
81 service->name = strdup(basename(filename));
82 if (!service->name)
83 return log_oom()log_oom_internal(LOG_REALM_SYSTEMD, "../src/resolve/resolved-dnssd.c"
, 83, __func__)
;
84
85 d = endswith(service->name, ".dnssd");
86 if (!d)
87 return -EINVAL22;
88
89 assert(streq(d, ".dnssd"))do { if ((__builtin_expect(!!(!((strcmp((d),(".dnssd")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(d, \".dnssd\")"
), "../src/resolve/resolved-dnssd.c", 89, __PRETTY_FUNCTION__
); } while (0)
;
90
91 *d = '\0';
92
93 dropin_dirname = strjoina(service->name, ".dnssd.d")({ const char *_appendees_[] = { service->name, ".dnssd.d"
}; char *_d_, *_p_; size_t _len_ = 0; size_t _i_; for (_i_ =
0; _i_ < __extension__ (__builtin_choose_expr( !__builtin_types_compatible_p
(typeof(_appendees_), typeof(&*(_appendees_))), sizeof(_appendees_
)/sizeof((_appendees_)[0]), ((void)0))) && _appendees_
[_i_]; _i_++) _len_ += strlen(_appendees_[_i_]); _p_ = _d_ = __builtin_alloca
(_len_ + 1); for (_i_ = 0; _i_ < __extension__ (__builtin_choose_expr
( !__builtin_types_compatible_p(typeof(_appendees_), typeof(&
*(_appendees_))), sizeof(_appendees_)/sizeof((_appendees_)[0]
), ((void)0))) && _appendees_[_i_]; _i_++) _p_ = stpcpy
(_p_, _appendees_[_i_]); *_p_ = 0; _d_; })
;
94
95 r = config_parse_many(filename, dnssd_service_dirs, dropin_dirname,
96 "Service\0",
97 config_item_perf_lookup, resolved_dnssd_gperf_lookup,
98 false0, service);
99 if (r < 0)
100 return r;
101
102 if (!service->name_template) {
103 log_error("%s doesn't define service instance name", service->name)({ int _level = (((3))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD
); (log_get_max_level_realm(_realm) >= ((_level) & 0x07
)) ? log_internal_realm(((_realm) << 10 | (_level)), _e
, "../src/resolve/resolved-dnssd.c", 103, __func__, "%s doesn't define service instance name"
, service->name) : -abs(_e); })
;
104 return -EINVAL22;
105 }
106
107 if (!service->type) {
108 log_error("%s doesn't define service type", service->name)({ int _level = (((3))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD
); (log_get_max_level_realm(_realm) >= ((_level) & 0x07
)) ? log_internal_realm(((_realm) << 10 | (_level)), _e
, "../src/resolve/resolved-dnssd.c", 108, __func__, "%s doesn't define service type"
, service->name) : -abs(_e); })
;
109 return -EINVAL22;
110 }
111
112 if (LIST_IS_EMPTY(service->txt_data_items)(!(service->txt_data_items))) {
113 txt_data = new0(DnssdTxtData, 1)((DnssdTxtData*) calloc((1), sizeof(DnssdTxtData)));
114 if (!txt_data)
115 return log_oom()log_oom_internal(LOG_REALM_SYSTEMD, "../src/resolve/resolved-dnssd.c"
, 115, __func__)
;
116
117 r = dns_txt_item_new_empty(&txt_data->txt);
118 if (r < 0)
119 return r;
120
121 LIST_PREPEND(items, service->txt_data_items, txt_data)do { typeof(*(service->txt_data_items)) **_head = &(service
->txt_data_items), *_item = (txt_data); do { if ((__builtin_expect
(!!(!(_item)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD,
("_item"), "../src/resolve/resolved-dnssd.c", 121, __PRETTY_FUNCTION__
); } while (0); if ((_item->items_next = *_head)) _item->
items_next->items_prev = _item; _item->items_prev = ((void
*)0); *_head = _item; } while (0)
;
122 txt_data = NULL((void*)0);
123 }
124
125 r = hashmap_ensure_allocated(&manager->dnssd_services, &string_hash_ops)internal_hashmap_ensure_allocated(&manager->dnssd_services
, &string_hash_ops )
;
126 if (r < 0)
127 return r;
128
129 r = hashmap_put(manager->dnssd_services, service->name, service);
130 if (r < 0)
131 return r;
132
133 service->manager = manager;
134
135 r = dnssd_update_rrs(service);
136 if (r < 0)
137 return r;
138
139 service = NULL((void*)0);
140
141 return 0;
142}
143
144static int specifier_dnssd_host_name(char specifier, void *data, void *userdata, char **ret) {
145 DnssdService *s = (DnssdService *) userdata;
146 char *n;
147
148 assert(s)do { if ((__builtin_expect(!!(!(s)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s"), "../src/resolve/resolved-dnssd.c",
148, __PRETTY_FUNCTION__); } while (0)
;
149 assert(s->manager)do { if ((__builtin_expect(!!(!(s->manager)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s->manager"), "../src/resolve/resolved-dnssd.c"
, 149, __PRETTY_FUNCTION__); } while (0)
;
150 assert(s->manager->llmnr_hostname)do { if ((__builtin_expect(!!(!(s->manager->llmnr_hostname
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("s->manager->llmnr_hostname"
), "../src/resolve/resolved-dnssd.c", 150, __PRETTY_FUNCTION__
); } while (0)
;
151
152 n = strdup(s->manager->llmnr_hostname);
153 if (!n)
154 return -ENOMEM12;
155
156 *ret = n;
157 return 0;
158}
159
160int dnssd_render_instance_name(DnssdService *s, char **ret_name) {
161 static const Specifier specifier_table[] = {
162 { 'b', specifier_boot_id, NULL((void*)0) },
163 { 'H', specifier_dnssd_host_name, NULL((void*)0) },
164 { 'm', specifier_machine_id, NULL((void*)0) },
165 { 'v', specifier_kernel_release, NULL((void*)0) },
166 {}
167 };
168 _cleanup_free___attribute__((cleanup(freep))) char *name = NULL((void*)0);
169 int r;
170
171 assert(s)do { if ((__builtin_expect(!!(!(s)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s"), "../src/resolve/resolved-dnssd.c",
171, __PRETTY_FUNCTION__); } while (0)
;
172 assert(s->name_template)do { if ((__builtin_expect(!!(!(s->name_template)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s->name_template"), "../src/resolve/resolved-dnssd.c"
, 172, __PRETTY_FUNCTION__); } while (0)
;
173
174 r = specifier_printf(s->name_template, specifier_table, s, &name);
175 if (r < 0)
176 return log_debug_errno(r, "Failed to replace specifiers: %m")({ int _level = ((7)), _e = ((r)), _realm = (LOG_REALM_SYSTEMD
); (log_get_max_level_realm(_realm) >= ((_level) & 0x07
)) ? log_internal_realm(((_realm) << 10 | (_level)), _e
, "../src/resolve/resolved-dnssd.c", 176, __func__, "Failed to replace specifiers: %m"
) : -abs(_e); })
;
177
178 if (!dns_service_name_is_valid(name)) {
179 log_debug("Service instance name '%s' is invalid.", name)({ int _level = (((7))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD
); (log_get_max_level_realm(_realm) >= ((_level) & 0x07
)) ? log_internal_realm(((_realm) << 10 | (_level)), _e
, "../src/resolve/resolved-dnssd.c", 179, __func__, "Service instance name '%s' is invalid."
, name) : -abs(_e); })
;
180 return -EINVAL22;
181 }
182
183 *ret_name = TAKE_PTR(name)({ typeof(name) _ptr_ = (name); (name) = ((void*)0); _ptr_; }
)
;
184
185 return 0;
186}
187
188int dnssd_load(Manager *manager) {
189 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **files = NULL((void*)0);
190 char **f;
191 int r;
192
193 assert(manager)do { if ((__builtin_expect(!!(!(manager)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("manager"), "../src/resolve/resolved-dnssd.c"
, 193, __PRETTY_FUNCTION__); } while (0)
;
1
Assuming 'manager' is non-null
2
Taking false branch
3
Loop condition is false. Exiting loop
194
195 if (manager->mdns_support != RESOLVE_SUPPORT_YES)
4
Assuming field 'mdns_support' is equal to RESOLVE_SUPPORT_YES
5
Taking false branch
196 return 0;
197
198 r = conf_files_list_strv(&files, ".dnssd", NULL((void*)0), 0, dnssd_service_dirs);
199 if (r < 0)
6
Assuming 'r' is >= 0
7
Taking false branch
200 return log_error_errno(r, "Failed to enumerate .dnssd files: %m")({ int _level = ((3)), _e = ((r)), _realm = (LOG_REALM_SYSTEMD
); (log_get_max_level_realm(_realm) >= ((_level) & 0x07
)) ? log_internal_realm(((_realm) << 10 | (_level)), _e
, "../src/resolve/resolved-dnssd.c", 200, __func__, "Failed to enumerate .dnssd files: %m"
) : -abs(_e); })
;
201
202 STRV_FOREACH_BACKWARDS(f, files)for (f = ({ char **_l = files; _l ? _l + strv_length(_l) - 1U
: ((void*)0); }); (files) && ((f) >= (files)); (f
)--)
{
8
Assuming '_l' is non-null
9
'?' condition is true
10
Loop condition is true. Entering loop body
203 r = dnssd_service_load(manager, *f);
11
Calling 'dnssd_service_load'
204 if (r < 0)
205 log_warning_errno(r, "Failed to load '%s': %m", *f)({ int _level = ((4)), _e = ((r)), _realm = (LOG_REALM_SYSTEMD
); (log_get_max_level_realm(_realm) >= ((_level) & 0x07
)) ? log_internal_realm(((_realm) << 10 | (_level)), _e
, "../src/resolve/resolved-dnssd.c", 205, __func__, "Failed to load '%s': %m"
, *f) : -abs(_e); })
;;
206 }
207
208 return 0;
209}
210
211int dnssd_update_rrs(DnssdService *s) {
212 _cleanup_free___attribute__((cleanup(freep))) char *n = NULL((void*)0);
213 _cleanup_free___attribute__((cleanup(freep))) char *service_name = NULL((void*)0);
214 _cleanup_free___attribute__((cleanup(freep))) char *full_name = NULL((void*)0);
215 DnssdTxtData *txt_data;
216 int r;
217
218 assert(s)do { if ((__builtin_expect(!!(!(s)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s"), "../src/resolve/resolved-dnssd.c",
218, __PRETTY_FUNCTION__); } while (0)
;
219 assert(s->txt_data_items)do { if ((__builtin_expect(!!(!(s->txt_data_items)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s->txt_data_items"), "../src/resolve/resolved-dnssd.c"
, 219, __PRETTY_FUNCTION__); } while (0)
;
220 assert(s->manager)do { if ((__builtin_expect(!!(!(s->manager)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s->manager"), "../src/resolve/resolved-dnssd.c"
, 220, __PRETTY_FUNCTION__); } while (0)
;
221
222 s->ptr_rr = dns_resource_record_unref(s->ptr_rr);
223 s->srv_rr = dns_resource_record_unref(s->srv_rr);
224 LIST_FOREACH(items, txt_data, s->txt_data_items)for ((txt_data) = (s->txt_data_items); (txt_data); (txt_data
) = (txt_data)->items_next)
225 txt_data->rr = dns_resource_record_unref(txt_data->rr);
226
227 r = dnssd_render_instance_name(s, &n);
228 if (r < 0)
229 return r;
230
231 r = dns_name_concat(s->type, "local", &service_name);
232 if (r < 0)
233 return r;
234 r = dns_name_concat(n, service_name, &full_name);
235 if (r < 0)
236 return r;
237
238 LIST_FOREACH(items, txt_data, s->txt_data_items)for ((txt_data) = (s->txt_data_items); (txt_data); (txt_data
) = (txt_data)->items_next)
{
239 txt_data->rr = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_TXT,
240 full_name);
241 if (!txt_data->rr)
242 goto oom;
243
244 txt_data->rr->ttl = MDNS_DEFAULT_TTL(120);
245 txt_data->rr->txt.items = dns_txt_item_copy(txt_data->txt);
246 if (!txt_data->rr->txt.items)
247 goto oom;
248 }
249
250 s->ptr_rr = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_PTR,
251 service_name);
252 if (!s->ptr_rr)
253 goto oom;
254
255 s->ptr_rr->ttl = MDNS_DEFAULT_TTL(120);
256 s->ptr_rr->ptr.name = strdup(full_name);
257 if (!s->ptr_rr->ptr.name)
258 goto oom;
259
260 s->srv_rr = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_SRV,
261 full_name);
262 if (!s->srv_rr)
263 goto oom;
264
265 s->srv_rr->ttl = MDNS_DEFAULT_TTL(120);
266 s->srv_rr->srv.priority = s->priority;
267 s->srv_rr->srv.weight = s->weight;
268 s->srv_rr->srv.port = s->port;
269 s->srv_rr->srv.name = strdup(s->manager->mdns_hostname);
270 if (!s->srv_rr->srv.name)
271 goto oom;
272
273 return 0;
274
275oom:
276 LIST_FOREACH(items, txt_data, s->txt_data_items)for ((txt_data) = (s->txt_data_items); (txt_data); (txt_data
) = (txt_data)->items_next)
277 txt_data->rr = dns_resource_record_unref(txt_data->rr);
278 s->ptr_rr = dns_resource_record_unref(s->ptr_rr);
279 s->srv_rr = dns_resource_record_unref(s->srv_rr);
280 return -ENOMEM12;
281}
282
283int dnssd_txt_item_new_from_string(const char *key, const char *value, DnsTxtItem **ret_item) {
284 size_t length;
285 DnsTxtItem *i;
286
287 length = strlen(key);
288
289 if (!isempty(value))
290 length += strlen(value) + 1; /* length of value plus '=' */
291
292 i = malloc0(offsetof(DnsTxtItem, data) + length + 1)(calloc(1, (__builtin_offsetof(DnsTxtItem, data) + length + 1
)))
; /* for safety reasons we add an extra NUL byte */
293 if (!i)
294 return -ENOMEM12;
295
296 memcpy(i->data, key, strlen(key));
297 if (!isempty(value)) {
298 memcpy(i->data + strlen(key), "=", 1);
299 memcpy(i->data + strlen(key) + 1, value, strlen(value));
300 }
301 i->length = length;
302
303 *ret_item = TAKE_PTR(i)({ typeof(i) _ptr_ = (i); (i) = ((void*)0); _ptr_; });
304
305 return 0;
306}
307
308int dnssd_txt_item_new_from_data(const char *key, const void *data, const size_t size, DnsTxtItem **ret_item) {
309 size_t length;
310 DnsTxtItem *i;
311
312 length = strlen(key);
313
314 if (size > 0)
315 length += size + 1; /* size of date plus '=' */
316
317 i = malloc0(offsetof(DnsTxtItem, data) + length + 1)(calloc(1, (__builtin_offsetof(DnsTxtItem, data) + length + 1
)))
; /* for safety reasons we add an extra NUL byte */
318 if (!i)
319 return -ENOMEM12;
320
321 memcpy(i->data, key, strlen(key));
322 if (size > 0) {
323 memcpy(i->data + strlen(key), "=", 1);
324 memcpy(i->data + strlen(key) + 1, data, size);
325 }
326 i->length = length;
327
328 *ret_item = TAKE_PTR(i)({ typeof(i) _ptr_ = (i); (i) = ((void*)0); _ptr_; });
329
330 return 0;
331}
332
333void dnssd_signal_conflict(Manager *manager, const char *name) {
334 Iterator i;
335 DnssdService *s;
336 int r;
337
338 HASHMAP_FOREACH(s, manager->dnssd_services, i)for ((i) = ((Iterator) { .idx = ((2147483647 *2U +1U) - 1), .
next_key = ((void*)0) }); hashmap_iterate((manager->dnssd_services
), &(i), (void**)&(s), ((void*)0)); )
{
339 if (s->withdrawn)
340 continue;
341
342 if (dns_name_equal(dns_resource_key_name(s->srv_rr->key), name)) {
343 _cleanup_free___attribute__((cleanup(freep))) char *path = NULL((void*)0);
344
345 s->withdrawn = true1;
346
347 r = sd_bus_path_encode("/org/freedesktop/resolve1/dnssd", s->name, &path);
348 if (r < 0) {
349 log_error_errno(r, "Can't get D-BUS object path: %m")({ int _level = ((3)), _e = ((r)), _realm = (LOG_REALM_SYSTEMD
); (log_get_max_level_realm(_realm) >= ((_level) & 0x07
)) ? log_internal_realm(((_realm) << 10 | (_level)), _e
, "../src/resolve/resolved-dnssd.c", 349, __func__, "Can't get D-BUS object path: %m"
) : -abs(_e); })
;
350 return;
351 }
352
353 r = sd_bus_emit_signal(manager->bus,
354 path,
355 "org.freedesktop.resolve1.DnssdService",
356 "Conflicted",
357 NULL((void*)0));
358 if (r < 0) {
359 log_error_errno(r, "Cannot emit signal: %m")({ int _level = ((3)), _e = ((r)), _realm = (LOG_REALM_SYSTEMD
); (log_get_max_level_realm(_realm) >= ((_level) & 0x07
)) ? log_internal_realm(((_realm) << 10 | (_level)), _e
, "../src/resolve/resolved-dnssd.c", 359, __func__, "Cannot emit signal: %m"
) : -abs(_e); })
;
360 return;
361 }
362
363 break;
364 }
365 }
366}