From: Lennart Poettering Date: Mon, 1 Feb 2021 16:50:56 +0000 (+0100) Subject: copy: simplify error paths when creating temporary files X-Git-Tag: v248-rc3~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e1aec57dd19e875c4a06105716859213a875601a;p=thirdparty%2Fsystemd.git copy: simplify error paths when creating temporary files --- 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);