X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fvfs%2Facls.c;h=d5deb1651c6b9d3dc678cfbe75e7dacd8aaeaed0;hb=HEAD;hp=52c802c64c17e028c3cdf12b0ca9937958060b8a;hpb=8bc40333b1401d7616b225945fee53d972c2f418;p=tpg%2Facess2.git diff --git a/Kernel/vfs/acls.c b/Kernel/vfs/acls.c deleted file mode 100644 index 52c802c6..00000000 --- a/Kernel/vfs/acls.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Acess Micro VFS - */ -#include -#include "vfs.h" -#include "vfs_int.h" - -// === GLOBALS === -tVFS_ACL gVFS_ACL_EveryoneRWX = { {0,-1}, {0,VFS_PERM_ALL} }; -tVFS_ACL gVFS_ACL_EveryoneRW = { {0,-1}, {0,VFS_PERM_ALL^VFS_PERM_EXECUTE} }; -tVFS_ACL gVFS_ACL_EveryoneRX = { {0,-1}, {0,VFS_PERM_READ|VFS_PERM_EXECUTE} }; -tVFS_ACL gVFS_ACL_EveryoneRO = { {0,-1}, {0,VFS_PERM_READ} }; - -// === CODE === -/** - * \fn int VFS_CheckACL(tVFS_Node *Node, Uint Permissions) - * \brief Checks the permissions on a file - */ -int VFS_CheckACL(tVFS_Node *Node, Uint Permissions) -{ - int i; - int uid = Proc_GetUID(); - int gid = Proc_GetGID(); - - // Root can do anything - if(uid == 0) return 1; - - // Root only file?, fast return - if( Node->NumACLs == 0 ) return 0; - - // Check Deny Permissions - for(i=0;iNumACLs;i++) - { - if(!Node->ACLs[i].Inv) continue; // Ignore ALLOWs - if(Node->ACLs[i].ID != -1) - { - if(!Node->ACLs[i].Group && Node->ACLs[i].ID != uid) continue; - if(Node->ACLs[i].Group && Node->ACLs[i].ID != gid) continue; - } - - if(Node->ACLs[i].Perms & Permissions) return 0; - } - - // Check for allow permissions - for(i=0;iNumACLs;i++) - { - if(Node->ACLs[i].Inv) continue; // Ignore DENYs - if(Node->ACLs[i].ID != -1) - { - if(!Node->ACLs[i].Group && Node->ACLs[i].ID != uid) continue; - if(Node->ACLs[i].Group && Node->ACLs[i].ID != gid) continue; - } - - if((Node->ACLs[i].Perms & Permissions) == Permissions) return 1; - } - - return 0; -}