Date: 28 Jun 1999 18:28:24 +0200 From: Dag-Erling Smorgrav <des@flood.ping.uio.no> To: Pierre Beyssac <pb@FreeBSD.org> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/usr.sbin/vipw pw_util.c vipw.c Message-ID: <xzpogi01e8n.fsf@flood.ping.uio.no> In-Reply-To: Pierre Beyssac's message of "Sat, 26 Jun 1999 05:15:45 -0700 (PDT)" References: <199906261215.FAA18022@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Pierre Beyssac <pb@FreeBSD.org> writes:
> Log:
> Force umask to 077 (instead of 000) during the edit phase, to get
> secure permissions in case the user attempts to save something to
> a file of his own.
Wrong fix. The correct fix is to save and restore the original umask.
See attached patch.
DES
--
Dag-Erling Smorgrav - des@flood.ping.uio.no
Index: vipw.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/vipw/vipw.c,v
retrieving revision 1.8
diff -u -r1.8 vipw.c
--- vipw.c 1999/06/26 12:15:39 1.8
+++ vipw.c 1999/06/28 16:27:50
@@ -72,6 +72,7 @@
int pfd, tfd;
struct stat begin, end;
int ch;
+ mode_t um;
while ((ch = getopt(argc, argv, "d:")) != -1)
switch (ch) {
@@ -101,13 +102,13 @@
pw_init();
/* Create with exact permissions. */
- (void)umask(0);
+ um = umask(0);
pfd = pw_lock();
tfd = pw_tmp();
copyfile(pfd, tfd);
(void)close(tfd);
/* Force umask for partial writes made in the edit phase */
- (void)umask(077);
+ (void)umask(um);
for (;;) {
if (stat(tempname, &begin))
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzpogi01e8n.fsf>
