ext2文件系统源代码之xattr_security.c

来源:互联网 发布:数据库市场占有率 2016 编辑:程序博客网 时间:2024/06/05 09:13
继续看ext2文件系统源代码里的最后一些文件,不过最主要的代码我们已经解决了,接下来的就是一些细小的事情了,我们来看xattr_security.c吧。
/* * linux/fs/ext2/xattr_security.c * 存储security的扩展属性处理函数 */#include <linux/module.h>#include <linux/string.h>#include <linux/fs.h>#include <linux/ext2_fs.h>#include <linux/security.h>#include "xattr.h"/*完全的安全属性字符串,返回list字符串长度*/static size_text2_xattr_security_list(struct inode *inode, char *list, size_t list_size, const char *name, size_t name_len){/*安全属性名前缀长度,一般是"security."*/const int prefix_len = sizeof(XATTR_SECURITY_PREFIX)-1;/*全部长度*/const size_t total_len = prefix_len + name_len + 1;if (list && total_len <= list_size) {/*先复制前缀,再复制name*/memcpy(list, XATTR_SECURITY_PREFIX, prefix_len);memcpy(list+prefix_len, name, name_len);list[prefix_len + name_len] = '\0';}return total_len;}/*得到名字为name的属性*/static intext2_xattr_security_get(struct inode *inode, const char *name,       void *buffer, size_t size){/*参数检查,是不是空的*/if (strcmp(name, "") == 0)return -EINVAL;/*之前讲过的函数*/return ext2_xattr_get(inode, EXT2_XATTR_INDEX_SECURITY, name,      buffer, size);}static intext2_xattr_security_set(struct inode *inode, const char *name,       const void *value, size_t size, int flags){/*参数检查*/if (strcmp(name, "") == 0)return -EINVAL;/*之前讲过的设置属性的函数*/return ext2_xattr_set(inode, EXT2_XATTR_INDEX_SECURITY, name,      value, size, flags);}/*安全属性初始化函数*/intext2_init_security(struct inode *inode, struct inode *dir){int err;size_t len;void *value;char *name;/*内核配置的安全操作,就是出事哈U后三个值*/err = security_inode_init_security(inode, dir, &name, &value, &len);if (err) {if (err == -EOPNOTSUPP)return 0;return err;}/*刚得到的变量来设置对应的属性*/err = ext2_xattr_set(inode, EXT2_XATTR_INDEX_SECURITY,     name, value, len, 0);kfree(name);kfree(value);return err;}/*security对应的xattr_handler*/struct xattr_handler ext2_xattr_security_handler = {.prefix= XATTR_SECURITY_PREFIX,.list= ext2_xattr_security_list,.get= ext2_xattr_security_get,.set= ext2_xattr_security_set,};

0 0
原创粉丝点击