3.6.4 符号表symtab
策略规则使用了大量的字符串,如:策略库使用用户名、类型名等的符号表。为了提高执行效率,在内核策略库使用整型值代替这些字符串,而单独再用符号表将这些整型值与字符串名对应起来。符号表symtab使用hash表,将字符串转换成hash值,就可找到在symtab表中字符串名对应的整型值。符号表symtab的组织结构图如图3-10所示。
错误!
![]() |
| 图3-10 符号表symtab的组织结构图 |
符号表symtab维护着字符串和datum值之间的关系,datum值的类型是任意的。符号表结构symtab列出如下(在security/selinux/ss/symtab.h中):
struct symtab {
struct hashtab *table;// hash 表,以字符串为关键字
u32 nprim;//表里primary names的数量
};
|
字符串与数据之间的关系通过hash表实现,hash表结构hashtab列出如下(在selinux/hashtable.h中):
struct hashtab {
struct hashtab_node **htable;//hash表
u32 size;//hash表的slot数
u32 nel;//hash表的元素个数
u32 (*hash_value)(struct hashtab *h, void *key);//计算hash值的函数
int (*keycmp)(struct hashtab *h, void *key1, void *key2); //键值比较函数
};
|
hash表的每个节点的结构hashtab_node列出如下:
struct hashtab_node {
void *key; //键值
void *datum; //字符串对应的数据
struct hashtab_node *next;//hash表的下一个节点
};
|
文件selinux/ss/hashtab.c提供hash表的通用管理函数,如:函数hashtab_create创建hash表,hash表的hash值计算函数以及键值比较函数由用户提供;函数hashtab_insert将字符串对应的数据值插入到hash表中;函数hashtab_search从hash表中搜索字符串的键值对应的数据值。
文件selinux/ss/symtab.c 封装了hash表的通用管理函数,提供了SELinux的字符表的hash管理函数,它提供了hash值计算函数symhash和键值比较函数symcmp。
| 回书目 上一节 下一节 |
|
· Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. · 08年5月各大网上书店及.. |
· 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. · 系统分析师自测获奖名.. |
|
||||
| · ASP.NET开发教程 · 专题:ASP.NET 2.0基础.. · LAMP技术精解 · 服务器节能与绿色IT · ARP攻击防范与解决方案 · Linux 集群技术专题 · Windows集群服务应用 · CISSP认证成长之路 |
· SQL Server 2008/2005.. · SQL Server入门到精通 · 网络工程师职业规划与.. · 浏览器的战国时代 · 运营商封堵ADSL共享 中.. · 微软出价446亿美元收购.. · 技术人求职简历完备手册 · 开源虚拟化技术Xen |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Apache技术专题 · Windows集群服务应用 · 国际文档格式标准开战 |
· 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 · 了解统一威胁管理(UTM).. · 专题:AIX操作系统管理.. · 访问控制列表(ACL)介绍 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · 三层交换技术专题 · Apache技术专题 · 企业数据恢复指南 · Windows集群服务应用 |
· 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 · 访问控制列表(ACL)介绍 · ASP.NET开发教程 · PHP开发应用手册 |
|||