Linux强制访问控制机制模块代码分析报告(八)

今天概要的介绍一下mls_type.h头文件

mls_type.h

文件描述

对于mls_type.h文件,其完整文件名为security/selinux/ss/mls_types.h,该文件定义了MLS策略使用的类型。

主要变量定义

该文件定义了三个宏,分别为:mls_level_incomp()、mls_evel_between()及mls_range_contains(),其作用分别是:

宏名宏的作用

mls_level_incomp() 判断两个安全级别是否不可比

mls_level_between() 判断一个安全级别是否位于另外两个安全级别之间

mls_level_contains() 判断两个安全级别之间的包含关系

结构体定义

对于该文件中定义的结构体mls_level及mls_range等详见“Linux多安全策略和动态安全策略框架机制模块代码分析报告”一文,这里不再赘述。

外部函数

对于该文件涉及的外部函数功能,参见“Linux多安全策略和动态安全策略框架机制模块代码分析报告”一文,这里不再赘述。

内部函数

对于该文件中定义的各内部函数,在前边的一系列文章中有详细的解释。

核心代码注释

该文件中只定义了mls_level_isvalid()和mls_context_to_sid()两个函数,它们用来表示安全级别间的关系,下面主要对这两个函数进行详细解释。

mls_level_isvalid()

static inline int mls_level_eq(struct mls_level *l1, struct mls_level *l2)

{

/*

* 如果安全级别l1的敏感属性等于安全级别l2的敏感属性并且l1的类别集

* 合等于l2的类别集合,则返回真。

*/

return ((l1->sens == l2->sens) &&ebitmap_cmp(&l1->cat, &l2->cat));

}

static inline int mls_level_dom(struct mls_level *l1, struct mls_level *l2)

{

/*

* 如果安全级别l1的敏感属性大于等于安全级别l2的敏感属性并且l1的类

* 别集合包含l2的类别集合,则返回真。

*/

return ((l1->sens >= l2->sens) &&ebitmap_contains(&l1->cat, &l2->cat));

}返回搜狐,查看更多

阅读 ()
平台声明
该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。