Return to BSD News archive
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!spool.mu.edu!bloom-beacon.mit.edu!news.kei.com!ub!rutgers!headwall.Stanford.EDU!kithrup.com!sef
From: sef@kithrup.com (Sean Eric Fagan)
Newsgroups: comp.os.386bsd.bugs
Subject: bug with ufs file creation
Message-ID: <CCyLF6.n6@kithrup.com>
Date: 7 Sep 93 00:59:14 GMT
Organization: Kithrup Enterprises, Ltd.
Lines: 26
*I* consider this a bug. It exists in every Net/2-derived system I could
play with, including BSD4.4. When creating a file, the gid given to the
file is the gid of the directory it is in, and not the gid of the process
creating the file. The following patch fixes that; it will only use the
gid of the directory if the directory's SGID bit is set.
*** 1.10 1993/08/08 12:09:51
--- ufs_vnops.c 1993/09/07 00:15:51
***************
*** 1641,1647 ****
--- 1641,1655 ----
ip->i_di_spare[i] = (unsigned long)0L;
ip->i_fsize = (unsigned long)0L;
ip->i_uid = ndp->ni_cred->cr_uid;
+ /*
+ * If the SGID bit is set on the parent directory,
+ * use its GID for the file; otherwise, use the 'default
+ * group' of the creating process.
+ */
+ if (pdir->i_mode & S_ISGID)
ip->i_gid = pdir->i_gid;
+ else
+ ip->i_gid = ndp->ni_cred->cr_groups[0];
#ifdef QUOTA
if ((error = getinoquota(ip)) ||
(error = chkiq(ip, 1, ndp->ni_cred, 0))) {