XenevaOS
Loading...
Searching...
No Matches
Macros | Functions
cred.c File Reference
#include <Cred/group.h>
#include <Cred/user.h>
#include <Cred/cred.h>
#include <string.h>
#include <process.h>
#include <Fs/vfs.h>
#include <Drivers/uart.h>
#include <Hal/AA64/aa64lowlevel.h>
#include <aucon.h>
Include dependency graph for cred.c:

Macros

#define GID_GROUP_NET_MIN   0x1000
 
#define GID_GROUP_NET_MAX   0x1FFF
 
#define GID_GROUP_IPC_MIN   0x2000
 
#define GID_GROUP_IPC_MAX   0x2FFF
 
#define GID_GROUP_MISC_MIN   0x3000
 
#define GID_GROUP_MISC_MAX   0x3FFF
 

Functions

void AuCredGroupInitialize ()
 AuCredGroupInitialize – initialize default global group id's.
 
int AuCredGroupAdd (uint8_t category, GID_NUM value)
 
uint8_t AuCredGetGroupCategory (const char *string)
 AuCredGetGroupCategory – get a group category number by looking it name.
 
GID_NUM AuCredGetGroupID (uint8_t category)
 AuCredGetGroupID – return a group id number.
 
int AuCredChangeID (int fd, UID_NUM uid, GID_NUM gid)
 AuCredChangeID – change credential ids.
 
int AuCredAddSGroup (int proc_id, int sgid)
 AuCredAddSGroup – add supplimentary gid to process.
 
int AuCredSetCap (int proc_id, int cap)
 
int AuCredGetCap (int proc_id)
 
int AuCredCheckPermissions (AuVFSNode *node, AuProcCredentials *cred)
 AuCredCheckPermissions – before giving permission, check all credentials, enei aru access koriba dibi neki, ji pai take korba nori tu.
 
int AuSetUID (int proc_id, UID_NUM uid)
 AuSetUID – change user id of a process.
 
int AuSetGID (int proc_id, GID_NUM gid)
 AuSetGID – change user id of a process.
 

Detailed Description

BSD 2-Clause License

Copyright (c) 2022-2026, Manas Kamal Choudhury All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Macro Definition Documentation

◆ GID_GROUP_IPC_MAX

#define GID_GROUP_IPC_MAX   0x2FFF

◆ GID_GROUP_IPC_MIN

#define GID_GROUP_IPC_MIN   0x2000

◆ GID_GROUP_MISC_MAX

#define GID_GROUP_MISC_MAX   0x3FFF

◆ GID_GROUP_MISC_MIN

#define GID_GROUP_MISC_MIN   0x3000

◆ GID_GROUP_NET_MAX

#define GID_GROUP_NET_MAX   0x1FFF

◆ GID_GROUP_NET_MIN

#define GID_GROUP_NET_MIN   0x1000

Function Documentation

◆ AuCredAddSGroup()

int AuCredAddSGroup ( int  proc_id,
int  sgid 
)

AuCredAddSGroup – add supplimentary gid to process.

Parameters
proc_id– process id number
sgid– sgid number

check capabilities

◆ AuCredChangeID()

int AuCredChangeID ( int  fd,
UID_NUM  uid,
GID_NUM  gid 
)

AuCredChangeID – change credential ids.

Parameters
fd– file descriptor
uid– user id
gid– groupd id number

check capabilities

◆ AuCredCheckPermissions()

int AuCredCheckPermissions ( AuVFSNode node,
AuProcCredentials cred 
)

AuCredCheckPermissions – before giving permission, check all credentials, enei aru access koriba dibi neki, ji pai take korba nori tu.

Parameters
node– File node
cred– Process's credential

root get access to everything

maybe this process's user, created the file and owner of this file

maybe this process directly belong to the group

now search for supplimentary gids

sorry,kela, no access to the file

◆ AuCredGetCap()

int AuCredGetCap ( int  proc_id)

AuCredGetCap – get capabilities of desired process

Parameters
proc_id– process id, zero for current process

check capabilities

◆ AuCredGetGroupCategory()

uint8_t AuCredGetGroupCategory ( const char *  string)

AuCredGetGroupCategory – get a group category number by looking it name.

Parameters
string– name of the group

◆ AuCredGetGroupID()

GID_NUM AuCredGetGroupID ( uint8_t  category)

AuCredGetGroupID – return a group id number.

Parameters
string– group name

◆ AuCredGroupAdd()

int AuCredGroupAdd ( uint8_t  category,
GID_NUM  value 
)

AuCredGroupAdd – add group value to a category

Parameters
category– category number
value– value to add

could not add value

◆ AuCredGroupInitialize()

void AuCredGroupInitialize ( )

AuCredGroupInitialize – initialize default global group id's.

AuCredGroupInitialize – initialize default group id's which is zero.

fill up the IPC group gid

fill up the MISC group gid

◆ AuCredSetCap()

int AuCredSetCap ( int  proc_id,
int  cap 
)

AuCredSetCap – add capability to a process

Parameters
proc_id– process id, zero for current process
cap– capability to add

check capabilities

◆ AuSetGID()

int AuSetGID ( int  proc_id,
GID_NUM  gid 
)

AuSetGID – change user id of a process.

Parameters
proc– Process id to change their uid
uid– User id

don't allow root process to change it's uid/gid, in Xeneva the root process get process id of one

◆ AuSetUID()

int AuSetUID ( int  proc_id,
UID_NUM  uid 
)

AuSetUID – change user id of a process.

Parameters
proc– Process id to change their uid
uid– User id

don't allow root process to change it's uid/gid, in Xeneva the root process get process id of one