diff options
author | iedowse <iedowse@FreeBSD.org> | 2002-01-22 22:54:52 +0000 |
---|---|---|
committer | iedowse <iedowse@FreeBSD.org> | 2002-01-22 22:54:52 +0000 |
commit | 388c7f4272f68ebbfc45db8da9ef09528d8d6b90 (patch) | |
tree | ba33f49bc224de3fe69f8df2b33b4c12363a9425 /usr.sbin | |
parent | 8a9a43ad04f6a60f7ff87931188f94aa821569bf (diff) | |
download | FreeBSD-src-388c7f4272f68ebbfc45db8da9ef09528d8d6b90.zip FreeBSD-src-388c7f4272f68ebbfc45db8da9ef09528d8d6b90.tar.gz |
The mode of files created by ctm_rmail was always 0600, even if the
umask was less restrictive. This was caused by the use of mkstemp()
which internally passes a mode of 0600 to open(). Fix this by
explicitly chmod'ing the files to (0666 & ~umask).
PR: bin/16119
Submitted by: Sascha Blank <blank@uni-trier.de>
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/ctm/ctm_rmail/ctm_rmail.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/usr.sbin/ctm/ctm_rmail/ctm_rmail.c b/usr.sbin/ctm/ctm_rmail/ctm_rmail.c index 464f733..a46a58aa 100644 --- a/usr.sbin/ctm/ctm_rmail/ctm_rmail.c +++ b/usr.sbin/ctm/ctm_rmail/ctm_rmail.c @@ -33,6 +33,7 @@ char *base_dir = NULL; /* The tree to apply deltas to. */ int delete_after = 0; /* Delete deltas after ctm applies them. */ int apply_verbose = 0; /* Run with '-v' */ int set_time = 0; /* Set the time of the files that is changed. */ +int mask = 0; /* The current umask */ void apply_complete(void); int read_piece(char *input_file); @@ -62,6 +63,9 @@ main(int argc, char **argv) int status = 0; int fork_ctm = 0; + mask = umask(0); + umask(mask); + err_prog_name(argv[0]); OPTIONS("[-Dfuv] [-p piecedir] [-d deltadir] [-b basedir] [-l log] [file ...]") @@ -444,6 +448,7 @@ combine_if_complete(char *delta, int pce, int npieces) mk_piece_name(pname, delta, 1, 1); if (rename(pname, dname) == 0) { + chmod(dname, 0666 & ~mask); err("%s complete", delta); return 1; } @@ -555,6 +560,7 @@ combine(char *delta, int npieces, char *dname, char *pname, char *tname) unlink(tname); return 0; } + chmod(dname, 0666 & ~mask); /* * Throw the pieces away. |