ReactOS  0.4.14-dev-342-gdc047f9
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 
20 int 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 }
#define Ext2IsOtherReadOnly(m)
Definition: ext2fs.h:421
#define Ext2FileCanRead
Definition: ext2fs.h:426
#define Ext2FileCanExecute
Definition: ext2fs.h:428
#define Ext2IsGroupReadOnly(m)
Definition: ext2fs.h:417
long uid_t
Definition: various.h:8
Definition: fs.h:78
UINT gid_t
Definition: types.h:89
#define IsFlagOn(a, b)
Definition: ext2fs.h:177
#define Ext2IsOtherWritable(m)
Definition: ext2fs.h:419
PEXT2_GLOBAL Ext2Global
Definition: init.c:16
int Ext2CheckInodeAccess(PEXT2_VCB Vcb, struct inode *in, int attempt)
Definition: access.c:20
#define Vcb
Definition: cdprocs.h:1425
#define VCB_USER_EIDS
Definition: ext2fs.h:786
GLuint in
Definition: glext.h:9616
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
Definition: fatprocs.h:334
#define Ext2IsGroupWritable(m)
Definition: ext2fs.h:415
int Ext2CheckFileAccess(PEXT2_VCB Vcb, PEXT2_MCB Mcb, int attempt)
Definition: access.c:51
#define Ext2FileCanWrite
Definition: ext2fs.h:427