2005-06-01 01:20:38

by NeilBrown

[permalink] [raw]
Subject: [PATCH kNFSd 001 of 2] Don't drop setuid on directories when ownership changed by NFSd


..as setuid means something totally different on directories.


Signed-off-by: Neil Brown <[email protected]>

### Diffstat output
./fs/nfsd/vfs.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)

diff ./fs/nfsd/vfs.c~current~ ./fs/nfsd/vfs.c
--- ./fs/nfsd/vfs.c~current~ 2005-06-01 10:36:09.000000000 +1000
+++ ./fs/nfsd/vfs.c 2005-06-01 10:36:09.000000000 +1000
@@ -280,13 +280,17 @@ nfsd_setattr(struct svc_rqst *rqstp, str
}

/* Revoke setuid/setgid bit on chown/chgrp */
- if ((iap->ia_valid & ATTR_UID) && (imode & S_ISUID)
- && iap->ia_uid != inode->i_uid) {
+ if ((iap->ia_valid & ATTR_UID)
+ && (imode & S_ISUID)
+ && !S_ISDIR(imode)
+ && iap->ia_uid != inode->i_uid) {
iap->ia_valid |= ATTR_MODE;
iap->ia_mode = imode &= ~S_ISUID;
}
- if ((iap->ia_valid & ATTR_GID) && (imode & S_ISGID)
- && iap->ia_gid != inode->i_gid) {
+ if ((iap->ia_valid & ATTR_GID)
+ && (imode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)
+ && !S_ISDIR(imode)
+ && iap->ia_gid != inode->i_gid) {
iap->ia_valid |= ATTR_MODE;
iap->ia_mode = imode &= ~S_ISGID;
}


-------------------------------------------------------
This SF.Net email is sponsored by Yahoo.
Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
Search APIs Find out how you can build Yahoo! directly into your own
Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs