From ad517ce5b33eb59873ec8468af704f43867cd8cb Mon Sep 17 00:00:00 2001 From: David Dykstra Date: Wed, 24 Mar 1999 16:39:07 +0000 Subject: [PATCH] The "pid file" was getting created mode 666, not applying the umask because at that point in the program the umask is set to 0. Now creating the file with mode (666 & ~orig_umask). --- clientserver.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/clientserver.c b/clientserver.c index 9e79538e..ace360b4 100644 --- a/clientserver.c +++ b/clientserver.c @@ -417,6 +417,7 @@ static int start_daemon(int fd) int daemon_main(void) { extern char *config_file; + extern int orig_umask; char *pid_file; if (is_a_socket(STDIN_FILENO)) { @@ -447,16 +448,19 @@ int daemon_main(void) rprintf(FINFO,"rsyncd version %s starting\n",VERSION); if (((pid_file = lp_pid_file()) != NULL) && (*pid_file != '\0')) { - FILE *f; + char pidbuf[16]; + int fd; int pid = (int) getpid(); cleanup_set_pid(pid); - if ((f = fopen(lp_pid_file(), "w")) == NULL) { + if ((fd = do_open(lp_pid_file(), O_WRONLY|O_CREAT|O_TRUNC, + 0666 & ~orig_umask)) == -1) { cleanup_set_pid(0); fprintf(stderr,"failed to create pid file %s\n", pid_file); exit_cleanup(RERR_FILEIO); } - fprintf(f, "%d\n", pid); - fclose(f); + slprintf(pidbuf, sizeof(pidbuf), "%d\n", pid); + write(fd, pidbuf, strlen(pidbuf)); + close(fd); } start_accept_loop(rsync_port, start_daemon); -- 2.34.1