include/parsec/pdp.h#
Functions Documentation#
function pdp2raw
#
void * pdp2raw (
const PDPL_T *l,
size_t *size
)
Получение бинарного представления метки безопасности
Parameters:
l
указатель на метку безопасностиsize
указатель на переменную, куда возвращается размер выделенного буфера (НЕ NULL)
Returns:
указатель на буфер, выделенный функцией malloc(), в случае ошибки NULL
function pdp_cat_from_text
#
Получение категорий из текстового представления
int pdp_cat_from_text (
const char *txt,
PDP_CAT_T *c
)
Parameters:
txt
текстовое представление категорий или NULL (в этом случае ф-ция вернет 0 и *c=0)c
указатель на категории
Returns:
0 в случа успеха
function pdp_cat_get_text
#
Получение текстового представдения категорий
char * pdp_cat_get_text (
PDP_CAT_T c,
int flags
)
Parameters:
c
категорииf
флаги
Returns:
указатель на строку, память под которую выделена посредством malloc(), в случае ошибки NULL
function pdp_cat_obstack
#
Вывод в объектный стек текстового представдения категорий метки безопасности
int pdp_cat_obstack (
PDP_CAT_T c,
struct obstack *os,
int flags
)
Parameters:
с
категории метки безопасностиos
объектный стекflags
флаги
Returns:
аналогично возвращаемому значению obstack_printf()
function pdp_get_current
#
Получение метки безопасности текущего процесса
static inline PDPL_T * pdp_get_current (
void
)
Returns:
аналогично pdp_get_pid
function pdp_get_current_ilev
#
Получение уровня целостности текущего процесса
PDP_ILEV_T pdp_get_current_ilev ()
Returns:
числовое значение уровня целостности
function pdp_get_fd
#
Получение метки безопасности файлового дескриптора
PDPL_T * pdp_get_fd (
int fd
)
Parameters:
fd
файловый дескриптор
Returns:
указатель на метку безопасности в случае успеха, иначе NULL
function pdp_get_ilevs
#
Получение списка числовых значений уровней целостности
int * pdp_get_ilevs (
int *count
)
Parameters:
count
указатель для получения числа уровней
Returns:
ссылка на статический массив целых чисел (уровней)
function pdp_get_lpath
#
Получение метки безопасности файла. Если это символическая ссылка - получение метки ссылки
PDPL_T * pdp_get_lpath (
const char *path
)
Parameters:
path
имя файла
Returns:
указатель на метку безопасности в случае успеха, иначе NULL
function pdp_get_max_ilev
#
Получение максимального уровня целостности в системе
PDP_ILEV_T pdp_get_max_ilev ()
Returns:
числовое значение уровня целостности
function pdp_get_path
#
Получение метки безопасности файла
PDPL_T * pdp_get_path (
const char *path
)
Parameters:
path
имя файла
Returns:
указатель на метку безопасности в случае успеха, иначе NULL
function pdp_get_peer_label
#
Получение метки безопасности процесса-клиента на другой стороне unix stream socket.
PDPL_T * pdp_get_peer_label (
int sockfd
)
Parameters:
sockfd
файловый дескриптор сокета
Returns:
указатель на метку безопасности в случае успеха, иначе NULL
function pdp_get_pid
#
Получение метки безопасности процесса
PDPL_T * pdp_get_pid (
pid_t pid
)
Parameters:
pid
идентификатор процесса
Returns:
указатель на метку безопасности в случае успеха, иначе NULL
function pdp_get_sys_max
#
Получение максимальной метки безопасности в системе
static inline PDPL_T * pdp_get_sys_max (
void
)
Returns:
аналогично pdp_get_path
function pdp_ilev_from_text
#
Получение уровня целостности из текстового представления
int pdp_ilev_from_text (
const char *txt,
PDP_ILEV_T *ilev
)
Parameters:
txt
текстовое представление уровня целостности или NULL (в этом случае ф-ция вернет 0 и *ilev=0)ilev
указатель на уровень целостности
Returns:
0 в случа успеха
function pdp_ilev_get_text
#
Получение текстового представдения уровня целостности
char * pdp_ilev_get_text (
PDP_ILEV_T il,
int flags
)
Parameters:
il
уровень целостностиf
флаги (на данный момент только PDPL_FMT_FORCE)
Returns:
указатель на строку, память под которую выделена посредством malloc(), в случае ошибки NULL
function pdp_ilev_obstack
#
Вывод в объектный стек текстового представдения уровня целостности
int pdp_ilev_obstack (
PDP_ILEV_T il,
struct obstack *os,
int flags
)
Parameters:
il
уровень целостностиos
объектный стекflags
флаги
Returns:
аналогично возвращаемому значению obstack_printf()
function pdp_init
#
Инициализация интерфейса подсистемы безопасности PDP.
int pdp_init (
void
)
Returns:
0 в случа успеха
function pdp_is_super_root
#
Возвращает 1 если текущий процесс привилегированный и его уровень целостности равен максимальному; иначе 0.
int pdp_is_super_root ()
function pdp_lev_from_text
#
Получение уровня конфиденциальности из текстового представления
int pdp_lev_from_text (
const char *txt,
PDP_LEV_T *lev
)
Parameters:
txt
текстовое представление уровня конфиденциальности или NULL (в этом случае ф-ция вернет 0 и *lev=0)lev
указатель на уровень конфиденциальности
Returns:
0 в случа успеха
function pdp_lev_get_text
#
Получение текстового представления уровня конфиденциальности
char * pdp_lev_get_text (
PDP_LEV_T l,
int flags
)
Parameters:
l
уровень конфиденциальностиf
флаги
Returns:
указатель на строку, память под которую выделена посредством malloc(), в случае ошибки NULL
function pdp_lev_obstack
#
Вывод в объектный стек текстового представдения уровня конф.
int pdp_lev_obstack (
PDP_LEV_T l,
struct obstack *os,
int flags
)
Parameters:
l
уровень конф.os
объектный стекflags
флаги
Returns:
аналогично возвращаемому значению obstack_printf()
function pdp_obstack_finish
#
Получение из стека непрерывной строки, которая должна быть освобождена free()
char * pdp_obstack_finish (
struct obstack *os
)
Parameters:
os
- стек
Returns:
указатель на строку или NULL
function pdp_release
#
Освобождение ресурсов интерфейса подсистемы безопасности PDP.
int pdp_release (
void
)
Returns:
0 в случа успеха
function pdp_set_EQU_fd
#
Установка нулевой метки безопасности с флагом PDPT_EHOLE на файл
static inline int pdp_set_EQU_fd (
int fd
)
Parameters:
fd
файловый дескриптор
Returns:
0 в случа успеха
function pdp_set_EQU_path
#
Установка нулевой метки безопасности с флагом PDPT_EHOLE на файл
static inline int pdp_set_EQU_path (
const char *path
)
Parameters:
path
имя файла
Returns:
0 в случа успеха
function pdp_set_current
#
Установка метки безопасности текущего процесса
static inline int pdp_set_current (
const PDPL_T *l
)
Parameters:
l
указатель на метку безопасности
Returns:
аналогично pdp_set_pid
function pdp_set_current_n
#
Установка метки безопасности текущего процесса для использования при монтировании сетевых ресурсов
static inline int pdp_set_current_n (
const PDPL_T *l
)
Parameters:
l
указатель на метку безопасности
Returns:
аналогично pdp_set_pid
function pdp_set_ehole
#
Установка нулевой метки безопасности с флагом PDPT_EHOLE на файл
int pdp_set_ehole (
const char *path
)
Parameters:
path
имя файла
Returns:
0 в случа успеха
function pdp_set_ehole_fd
#
Установка нулевой метки безопасности с флагом PDPT_EHOLE на файл
int pdp_set_ehole_fd (
int fd
)
Parameters:
fd
файловый дескриптор
Returns:
0 в случа успеха
function pdp_set_fd
#
Установка метки безопасности файлового дескриптора
int pdp_set_fd (
int fd,
const PDPL_T *l
)
Parameters:
fd
файловый дескрипторl
указатель на метку безопасности
Returns:
0 в случа успеха
function pdp_set_lpath
#
Установка метки безопасности на файл. Если это символическая ссылка - установка метки на ссылку
int pdp_set_lpath (
const char *path,
const PDPL_T *l
)
Parameters:
path
имя файлаl
указатель на метку безопасности
Returns:
0 в случа успеха
function pdp_set_path
#
Установка метки безопасности на файл
int pdp_set_path (
const char *path,
const PDPL_T *l
)
Parameters:
path
имя файлаl
указатель на метку безопасности
Returns:
0 в случа успеха
function pdp_set_pid
#
Установка метки безопасности вызывающего процесса
int pdp_set_pid (
pid_t pid,
const PDPL_T *l
)
Parameters:
pid
идентификатор процесса, только 0l
указатель на метку безопасности
Returns:
0 в случае успеха
function pdp_set_pid_n
#
Установка метки безопасности процесса для использования при монтировании сетевых ресурсов
int pdp_set_pid_n (
pid_t pid,
const PDPL_T *l
)
Parameters:
pid
идентификатор процессаl
указатель на метку безопасности
Returns:
0 в случа успеха
function pdp_set_pid_safe
#
Установка метки безопасности вызывающего процесса Для безопасного понижения целостности процесса более высокоцелостные файловые дескрипторы будут закрыты.
int pdp_set_pid_safe (
pid_t pid,
const PDPL_T *l
)
Parameters:
pid
идентификатор процесса, только 0l
указатель на метку безопасности
Returns:
0 в случае успеха
function pdp_set_sys_max_ccnr_path
#
Установка максимальной метки безопасности системы с нулевой целостностью и флагом ccnr на файл
int pdp_set_sys_max_ccnr_path (
const char *path
)
Parameters:
fd
имя файла
Returns:
0 в случа успеха
function pdp_set_sys_max_fd
#
Установка максимальной метки безопасности системы на директорию. Если дан файл - устанавливается нулевая метка
int pdp_set_sys_max_fd (
int fd
)
Parameters:
fd
имя файла
Returns:
0 в случа успеха
function pdp_set_sys_max_path
#
Установка максимальной метки безопасности системы на директорию. Если дан файл - устанавливается нулевая метка
int pdp_set_sys_max_path (
const char *path
)
Parameters:
path
имя файла
Returns:
0 в случа успеха
function pdp_type_from_text
#
Получение типа мандатной метки из текстового представления
int pdp_type_from_text (
const char *txt,
PDP_TYPE_T *type
)
Parameters:
txt
текстовое представление типа мандатной метки или NULL (в этом случае ф-ция вернет 0 и *type=0)type
указатель на тип мандатной метки
Returns:
0 в случа успеха
function pdp_type_get_text
#
Получение текстового представдения типа мандатной метки
char * pdp_type_get_text (
PDP_TYPE_T t,
int flags
)
Parameters:
t
тип мандатной меткиf
флаги (на данный момент только PDPL_FMT_TXT, PDPL_FMT_NO_FORCE)
Returns:
указатель на строку, память под которую выделена посредством malloc(), в случае ошибки NULL
function pdp_type_obstack
#
Вывод в объектный стек текстового представления типа метки безопасности
int pdp_type_obstack (
PDP_TYPE_T t,
struct obstack *os,
int flags
)
Parameters:
t
тип метки безопасностиos
объектный стекflags
флаги
Returns:
аналогично возвращаемому значению obstack_printf()
function pdpl_asprintf
#
Формирование текстового представления метки безопасности в виде строки в произвольном формате
char * pdpl_asprintf (
const PDPL_T *l,
const char *fmt,
...
)
Parameters:
l
указатель на метку безопасностиfmt
формат
Returns:
указатель на строку, память под которую выделена посредством malloc(), в случае ошибки NULL
function pdpl_get_from_text
#
Получение метки безопасности из текстового представления
PDPL_T * pdpl_get_from_text (
const char *text
)
Parameters:
text
указатель на строку
Returns:
указатель на метку безопасности
function pdpl_get_text
#
Получение текстового представления метки безопасности
char * pdpl_get_text (
const PDPL_T *l,
int f
)
Parameters:
l
указатель на метку безопасностиflags
флаги
Returns:
указатель на строку, память под которую выделена посредством malloc(), в случае ошибки NULL
function pdpl_obstack
#
Формирование текстового представления метки безопасности на стеке в формате “%F%Gm!%Gr”.
int pdpl_obstack (
const PDPL_T *l,
struct obstack *os,
int flags
)
Parameters:
l
указатель на метку безопасностиo
стекflags
флаги
Returns:
аналогично obstack_printf (количество байт в случае успеха, иначе -1)
function pdpl_obstack_printf
#
Формирование текстового представления метки безопасности на стеке в произвольном формате
int pdpl_obstack_printf (
const PDPL_T *l,
struct obstack *os,
const char *fmt,
...
)
Parameters:
l
указатель на метку безопасностиo
стекfmt
формат
Returns:
аналогично obstack_printf (количество байт в случае успеха, иначе -1)
function pdpl_supports_type
#
Проверяет применимость атрибута для данных параметров
int pdpl_supports_type (
const PDPL_T *l,
PDP_TYPE_T type,
mode_t mode
)
Parameters:
l
указатель на метку безопасностиtype
атрибут метки безопасностиmode
тип объекта (директория/файл/…)
Returns:
1 - атрибут применим, 0 - нет
function pdpml_asprintf
#
Формирование текстового представления мандатной безопасности в виде строки в произвольном формате
char * pdpml_asprintf (
const PDPML_T *ml,
const char *fmt,
...
)
Parameters:
ml
указатель на мандатную меткуfmt
формат
Returns:
указатель на строку, память под которую выделена посредством malloc(), в случае ошибки NULL
function pdpml_get_from_text
#
Получение мандатной метки процесса из текстового представления
PDPML_T * pdpml_get_from_text (
const char *text
)
Parameters:
text
указатель на строкуroles
Returns:
указатель на метку безопасности
function pdpml_get_text
#
Получение текстового представления мандатной метки
char * pdpml_get_text (
const PDPML_T *ml,
int flags
)
Parameters:
ml
указатель на мандатную меткуflags
флаги
Returns:
указатель на строку, память под которую выделена посредством malloc(), в случае ошибки NULL
function pdpml_obstack
#
Вывод в объектный стек текстового представления мандатной метки в формате “%F%Gl:%Gi:%Gc:%Gt%Gd”.
int pdpml_obstack (
const PDPML_T *ml,
struct obstack *os,
int flags
)
Parameters:
ml
указатель на мандатную меткуos
объектный стекflags
флаги
Returns:
аналогично obstack_printf (количество байт в случае успеха, иначе -1)
function pdpml_obstack_printf
#
Вывод в объектный стек текстового представдения маднатной метки в произвольном формате
int pdpml_obstack_printf (
const PDPML_T *ml,
struct obstack *os,
const char *fmt,
...
)
Parameters:
ml
указатель на мандатную меткуos
объектный стекfmt
формат
Returns:
аналогично obstack_printf (количество байт в случае успеха, иначе -1)
Macros Documentation#
define PDPL_FMT_NO_FORCE
#
#define PDPL_FMT_NO_FORCE 0x20
define PDPL_FMT_NO_PRINT_ZEROS
#
#define PDPL_FMT_NO_PRINT_ZEROS 0x40
define PDPL_FMT_NUM
#
#define PDPL_FMT_NUM 0x01
define PDPL_FMT_TXT
#
#define PDPL_FMT_TXT 0x00
define obstack_chunk_alloc
#
#define obstack_chunk_alloc malloc
define obstack_chunk_free
#
#define obstack_chunk_free free