From: David Dykstra Date: Wed, 24 Mar 1999 16:39:07 +0000 (+0000) Subject: The "pid file" was getting created mode 666, not applying the umask X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/ad517ce5b33eb59873ec8468af704f43867cd8cb 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). --- 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);