From 8c904eff93d7c038855f2c1cee8ea54bdb4dae52 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 20 Jul 2023 16:09:04 +0000 Subject: More bigfuxes! Signed-off-by: Laurent Bercot --- src/utilities/s6-dns-hosts-compile.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'src/utilities') diff --git a/src/utilities/s6-dns-hosts-compile.c b/src/utilities/s6-dns-hosts-compile.c index 554a569..1f9e85d 100644 --- a/src/utilities/s6-dns-hosts-compile.c +++ b/src/utilities/s6-dns-hosts-compile.c @@ -47,10 +47,25 @@ int main (int argc, char const *const *argv) fdw = mkstemp(tmp) ; if (fdw == -1) strerr_diefu2sys(111, "create ", tmp) ; if (!s6dns_hosts_compile(fdr, fdw)) - strerr_diefu4sys(111, "compile ", ifile, " to ", tmp) ; - if (fsync(fdw) == -1) strerr_diefu2sys(111, "fsync ", tmp) ; - if (fchmod(fdw, 0644) == -1) strerr_diefu2sys(111, "fchmod ", tmp) ; - if (rename(tmp, ofile) == -1) strerr_diefu4sys(111, "rename ", tmp, " to ", ofile) ; + { + unlink_void(tmp) ; + strerr_diefu2sys(111, "compile ", ifile) ; + } + if (fsync(fdw) == -1) + { + unlink_void(tmp) ; + strerr_diefu2sys(111, "fsync ", tmp) ; + } + if (fchmod(fdw, 0644) == -1) + { + unlink_void(tmp) ; + strerr_diefu2sys(111, "fchmod ", tmp) ; + } + if (rename(tmp, ofile) == -1) + { + unlink_void(tmp) ; + strerr_diefu4sys(111, "rename ", tmp, " to ", ofile) ; + } } return 0 ; } -- cgit v1.2.3