Make sure secrets file is not other-accessible, and owned by root if the
[rsync/rsync.git] / cleanup.c
index abd7b0d..be79503 100644 (file)
--- a/cleanup.c
+++ b/cleanup.c
@@ -31,7 +31,7 @@ static int cleanup_fd1, cleanup_fd2;
 static struct map_struct *cleanup_buf;
 static int cleanup_pid = 0;
 
-void exit_cleanup(int code)
+void _exit_cleanup(int code, const char *file, int line)
 {
        extern int keep_partial;
 
@@ -51,8 +51,15 @@ void exit_cleanup(int code)
        if (code) {
                kill_all(SIGUSR1);
        }
-       if ((cleanup_pid != 0) && (cleanup_pid == (int) getpid()))
-               unlink(lp_pid_file());
+       if ((cleanup_pid != 0) && (cleanup_pid == (int) getpid())) {
+               char *pidf = lp_pid_file();
+               if (pidf && *pidf) {
+                       unlink(lp_pid_file());
+               }
+       }
+
+       if (code) log_exit(code, file, line);
+
        exit(code);
 }