Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Dec 1996 00:30:01 -0800 (PST)
From:      J Wunsch <j@uriah.heep.sax.de>
To:        freebsd-bugs
Subject:   Re: bin/2291: Race condition in pw_lock (vipw, chpass, etc....)
Message-ID:  <199612270830.AAA10070@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/2291; it has been noted by GNATS.

From: J Wunsch <j@uriah.heep.sax.de>
To: dillon@backplane.com
Cc: FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/2291: Race condition in pw_lock (vipw, chpass, etc....)
Date: Fri, 27 Dec 1996 09:20:55 +0100 (MET)

 As Matthew Dillon wrote:
 
 >         /*
 >          * If the master password file doesn't exist, the system is hosed.
 >          * Might as well try to build one.  Set the close-on-exec bit so
 >          * that users can't get at the encrypted passwords while editing.
 >          * Open should allow flock'ing the file; see 4.4BSD.    XXX
                                                    ^^^^^^^^^^
 >          */
 >         lockfd = open(_PATH_MASTERPASSWD, O_RDONLY, 0);
 >         if (lockfd < 0 || fcntl(lockfd, F_SETFD, 1) == -1)
 >                 err(1, "%s", _PATH_MASTERPASSWD); 
 >         if (flock(lockfd, LOCK_EX|LOCK_NB))
 >                 errx(1, "the password db file is busy"); 
 >         return (lockfd);
 > } 
 > 
 > 	There is a race condition between the open() call and the flock()
 > 	call whereby one program may get access to the master.passwd file,
 
 > 	The fix is simple.
 
 Why not using the O_EXLOCK flag in open(2)?
 
 -- 
 cheers, J"org
 
 joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
 Never trust an operating system you don't have sources for. ;-)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199612270830.AAA10070>