xattr_trusted.c

来自「Linux Kernel 2.6.9 for OMAP1710」· C语言 代码 · 共 82 行

C
82
字号
#include <linux/reiserfs_fs.h>#include <linux/errno.h>#include <linux/fs.h>#include <linux/pagemap.h>#include <linux/xattr.h>#include <linux/reiserfs_xattr.h>#include <asm/uaccess.h>#define XATTR_TRUSTED_PREFIX "trusted."static inttrusted_get (struct inode *inode, const char *name, void *buffer, size_t size){    if (strlen(name) < sizeof(XATTR_TRUSTED_PREFIX))        return -EINVAL;    if (!reiserfs_xattrs (inode->i_sb))        return -EOPNOTSUPP;    if (!(capable(CAP_SYS_ADMIN) || is_reiserfs_priv_object(inode)))        return -EPERM;    return reiserfs_xattr_get (inode, name, buffer, size);}static inttrusted_set (struct inode *inode, const char *name, const void *buffer,          size_t size, int flags){    if (strlen(name) < sizeof(XATTR_TRUSTED_PREFIX))        return -EINVAL;    if (!reiserfs_xattrs (inode->i_sb))        return -EOPNOTSUPP;    if (!(capable(CAP_SYS_ADMIN) || is_reiserfs_priv_object(inode)))        return -EPERM;    return reiserfs_xattr_set (inode, name, buffer, size, flags);}static inttrusted_del (struct inode *inode, const char *name){    if (strlen(name) < sizeof(XATTR_TRUSTED_PREFIX))        return -EINVAL;    if (!reiserfs_xattrs (inode->i_sb))        return -EOPNOTSUPP;    if (!(capable(CAP_SYS_ADMIN) || is_reiserfs_priv_object(inode)))        return -EPERM;    return 0;}static inttrusted_list (struct inode *inode, const char *name, int namelen, char *out){    int len = namelen;    if (!reiserfs_xattrs (inode->i_sb))        return 0;    if (!(capable(CAP_SYS_ADMIN) || is_reiserfs_priv_object(inode)))        return 0;    if (out)        memcpy (out, name, len);    return len;}struct reiserfs_xattr_handler trusted_handler = {	.prefix = XATTR_TRUSTED_PREFIX,	.get = trusted_get,	.set = trusted_set,	.del = trusted_del,	.list = trusted_list,};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?