From 999c24862943ea7b01dedb0838777ee2139f045c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Feb 2021 15:10:14 +0100 Subject: [PATCH 1/6] resolved: fix minor memory leak Coverity 1446992 --- src/resolve/resolved-manager.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index ae46d2dcd8..34a9ce9711 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -548,7 +548,13 @@ static int manager_watch_hostname(Manager *m) { r = determine_hostname(&m->full_hostname, &m->llmnr_hostname, &m->mdns_hostname); if (r < 0) { - log_info("Defaulting to hostname '%s'.", fallback_hostname()); + _cleanup_free_ char *d = NULL; + + d = fallback_hostname(); + if (!d) + return log_oom(); + + log_info("Defaulting to hostname '%s'.", d); r = make_fallback_hostnames(&m->full_hostname, &m->llmnr_hostname, &m->mdns_hostname); if (r < 0) From d9119c00fa9c2937e8309cd3d145d6cb55a2a5a5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Feb 2021 15:11:07 +0100 Subject: [PATCH 2/6] dissect-image: initially fds[] array fully THe previous code wasn't wrong, but it's certainly nicer to avoid a partially uninitialized array here, hence Coverity has a point complaining about this. Coverity 1446731 --- src/shared/dissect-image.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 791d747136..6ad68584e5 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -2280,8 +2280,11 @@ int dissected_image_acquire_metadata(DissectedImage *m) { log_debug("No image name available, will skip extension-release metadata"); for (; n_meta_initialized < _META_MAX; n_meta_initialized ++) { - if (!paths[n_meta_initialized]) + if (!paths[n_meta_initialized]) { + fds[2*n_meta_initialized] = fds[2*n_meta_initialized+1] = -1; continue; + } + if (pipe2(fds + 2*n_meta_initialized, O_CLOEXEC) < 0) { r = -errno; goto finish; @@ -2435,11 +2438,8 @@ int dissected_image_acquire_metadata(DissectedImage *m) { strv_free_and_replace(m->extension_release, extension_release); finish: - for (k = 0; k < n_meta_initialized; k++) { - if (!paths[k]) - continue; + for (k = 0; k < n_meta_initialized; k++) safe_close_pair(fds + 2*k); - } return r; } From d9a650bbe80f88c656d1574ebca9b1c062cf4932 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Feb 2021 15:13:21 +0100 Subject: [PATCH 3/6] icmp6-util: add missing variable initialization Coverity 1446712 --- src/libsystemd-network/icmp6-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsystemd-network/icmp6-util.c b/src/libsystemd-network/icmp6-util.c index d079ad40e9..67c6b55d84 100644 --- a/src/libsystemd-network/icmp6-util.c +++ b/src/libsystemd-network/icmp6-util.c @@ -162,7 +162,7 @@ int icmp6_receive(int fd, void *buffer, size_t size, struct in6_addr *ret_dst, }; struct cmsghdr *cmsg; struct in6_addr addr = {}; - triple_timestamp t; + triple_timestamp t = {}; ssize_t len; iov = IOVEC_MAKE(buffer, size); From 3178014709074cc65ebbb4604f6da306e34e6ffb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Feb 2021 15:26:49 +0100 Subject: [PATCH 4/6] shared: fix memory leak in error path Coverity 1446676 --- src/shared/serialize.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/shared/serialize.c b/src/shared/serialize.c index 42fe5db3fa..23aac3ef52 100644 --- a/src/shared/serialize.c +++ b/src/shared/serialize.c @@ -175,7 +175,7 @@ int deserialize_dual_timestamp(const char *value, dual_timestamp *t) { } int deserialize_environment(const char *value, char ***list) { - char *unescaped; + _cleanup_free_ char *unescaped = NULL; int r; assert(value); @@ -187,9 +187,10 @@ int deserialize_environment(const char *value, char ***list) { if (r < 0) return log_error_errno(r, "Failed to unescape: %m"); - r = strv_env_replace_consume(list, unescaped); + r = strv_env_replace_consume(list, TAKE_PTR(unescaped)); if (r < 0) return log_error_errno(r, "Failed to append environment variable: %m"); + return 0; } From 013668db32fe41ad097ce52b4dff2960c4b64749 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Feb 2021 15:29:10 +0100 Subject: [PATCH 5/6] resolved: don't dereference ->scope unless set Coverity 1446388 --- src/resolve/resolved-dns-transaction.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index e337012351..590652e5d3 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -121,10 +121,10 @@ DnsTransaction* dns_transaction_free(DnsTransaction *t) { } LIST_REMOVE(transactions_by_scope, t->scope->transactions, t); - } - if (t->id != 0) - hashmap_remove(t->scope->manager->dns_transactions, UINT_TO_PTR(t->id)); + if (t->id != 0) + hashmap_remove(t->scope->manager->dns_transactions, UINT_TO_PTR(t->id)); + } while ((c = set_steal_first(t->notify_query_candidates))) set_remove(c->transactions, t); From f2550b9856f9b89bc65e19754cb573c0a19ed1a0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Feb 2021 15:43:19 +0100 Subject: [PATCH 6/6] core: fix memory leak in error path Coverity 1431998 --- src/core/execute.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index d27adbbba5..e5c80fb183 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -3202,11 +3202,16 @@ static int apply_mount_namespace( if (MANAGER_IS_SYSTEM(u->manager)) { propagate_dir = path_join("/run/systemd/propagate/", u->id); - if (!propagate_dir) - return -ENOMEM; + if (!propagate_dir) { + r = -ENOMEM; + goto finalize; + } + incoming_dir = strdup("/run/systemd/incoming"); - if (!incoming_dir) - return -ENOMEM; + if (!incoming_dir) { + r = -ENOMEM; + goto finalize; + } } r = setup_namespace(root_dir, root_image, context->root_image_options,