aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorIan Dowse <iedowse@FreeBSD.org>2002-01-22 22:54:52 +0000
committerIan Dowse <iedowse@FreeBSD.org>2002-01-22 22:54:52 +0000
commit673158816b3d4beb0e5529db771806f46af283b5 (patch)
treeba33f49bc224de3fe69f8df2b33b4c12363a9425 /usr.sbin
parentbe44fce4fa625d364840c43683a672c345b73a84 (diff)
downloadsrc-673158816b3d4beb0e5529db771806f46af283b5.tar.gz
src-673158816b3d4beb0e5529db771806f46af283b5.zip
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>
Notes
Notes: svn path=/head/; revision=89675
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/ctm/ctm_rmail/ctm_rmail.c6
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 464f7331909d..a46a58aa8734 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.