ReactOS 0.4.16-dev-197-g92996da
access.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYRIGHT.TXT
3 * PROJECT: Ext2 File System Driver for WinNT/2K/XP
4 * FILE: access.c
5 * PROGRAMMER: Matt Wu <mattwu@163.com>
6 * HOMEPAGE: http://www.ext2fsd.com
7 * UPDATE HISTORY:
8 */
9
10/* INCLUDES *****************************************************************/
11
12#include "ext2fs.h"
13
14/* GLOBALS ***************************************************************/
15
17
18/* DEFINITIONS *************************************************************/
19
20int Ext2CheckInodeAccess(PEXT2_VCB Vcb, struct inode *in, int attempt)
21{
22 int granted = 0;
23
24 uid_t uid = Vcb->uid;
25 gid_t gid = Vcb->gid;
26
27 if (IsFlagOn(Vcb->Flags, VCB_USER_EIDS)) {
28 uid = Vcb->euid;
29 gid = Vcb->egid;
30 }
31
32 if (!uid || uid == in->i_uid) {
33 /* grant all access for inode owner or root */
35 } else if (gid == in->i_gid) {
36 if (Ext2IsGroupReadOnly(in->i_mode))
38 else if (Ext2IsGroupWritable(in->i_mode))
40 } else {
41 if (Ext2IsOtherReadOnly(in->i_mode))
43 else if (Ext2IsOtherWritable(in->i_mode))
45
46 }
47
48 return IsFlagOn(granted, attempt);
49}
50
52{
53 return Ext2CheckInodeAccess(Vcb, &Mcb->Inode, attempt);
54}
long uid_t
Definition: various.h:8
UINT gid_t
Definition: types.h:89
PEXT2_GLOBAL Ext2Global
Definition: init.c:16
int Ext2CheckInodeAccess(PEXT2_VCB Vcb, struct inode *in, int attempt)
Definition: access.c:20
int Ext2CheckFileAccess(PEXT2_VCB Vcb, PEXT2_MCB Mcb, int attempt)
Definition: access.c:51
#define Ext2FileCanWrite
Definition: ext2fs.h:432
#define Ext2FileCanRead
Definition: ext2fs.h:431
#define Ext2IsGroupReadOnly(m)
Definition: ext2fs.h:422
#define Ext2IsGroupWritable(m)
Definition: ext2fs.h:420
#define Ext2IsOtherWritable(m)
Definition: ext2fs.h:424
#define Ext2FileCanExecute
Definition: ext2fs.h:433
#define Ext2IsOtherReadOnly(m)
Definition: ext2fs.h:426
#define VCB_USER_EIDS
Definition: ext2fs.h:795
#define IsFlagOn(a, b)
Definition: ext2fs.h:177
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
Definition: fatprocs.h:349
GLuint in
Definition: glext.h:9616
#define Vcb
Definition: cdprocs.h:1415
Definition: fs.h:78