From e1aec57dd19e875c4a06105716859213a875601a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 1 Feb 2021 17:50:56 +0100 Subject: [PATCH] copy: simplify error paths when creating temporary files --- src/basic/copy.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/basic/copy.c b/src/basic/copy.c index 6bb02c03a66..b77a1769c6f 100644 --- a/src/basic/copy.c +++ b/src/basic/copy.c @@ -1147,24 +1147,24 @@ int copy_file_atomic_full( * writing it. */ if (copy_flags & COPY_REPLACE) { - r = tempfn_random(to, NULL, &t); + _cleanup_free_ char *f = NULL; + + r = tempfn_random(to, NULL, &f); if (r < 0) return r; if (copy_flags & COPY_MAC_CREATE) { r = mac_selinux_create_file_prepare(to, S_IFREG); - if (r < 0) { - t = mfree(t); + if (r < 0) return r; - } } - fdt = open(t, O_CREAT|O_EXCL|O_NOFOLLOW|O_NOCTTY|O_WRONLY|O_CLOEXEC, 0600); + fdt = open(f, O_CREAT|O_EXCL|O_NOFOLLOW|O_NOCTTY|O_WRONLY|O_CLOEXEC, 0600); if (copy_flags & COPY_MAC_CREATE) mac_selinux_create_file_clear(); - if (fdt < 0) { - t = mfree(t); + if (fdt < 0) return -errno; - } + + t = TAKE_PTR(f); } else { if (copy_flags & COPY_MAC_CREATE) { r = mac_selinux_create_file_prepare(to, S_IFREG); -- 2.39.2