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 идентификатор процесса, только 0

  • l указатель на метку безопасности

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 идентификатор процесса, только 0

  • l указатель на метку безопасности

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