Blame view
fs/ext3/xattr_security.c
2.05 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 |
/* * linux/fs/ext3/xattr_security.c * Handler for storing security labels as extended attributes. */ |
5a0e3ad6a include cleanup: ... |
5 |
#include <linux/slab.h> |
1da177e4c Linux-2.6.12-rc2 |
6 7 |
#include <linux/string.h> #include <linux/fs.h> |
1da177e4c Linux-2.6.12-rc2 |
8 9 |
#include <linux/ext3_jbd.h> #include <linux/ext3_fs.h> |
ac50960af [PATCH] ext3: Ena... |
10 |
#include <linux/security.h> |
1da177e4c Linux-2.6.12-rc2 |
11 12 13 |
#include "xattr.h" static size_t |
431547b3c sanitize xattr ha... |
14 15 |
ext3_xattr_security_list(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int type) |
1da177e4c Linux-2.6.12-rc2 |
16 |
{ |
ef1afd395 ext3: remove doub... |
17 |
const size_t prefix_len = XATTR_SECURITY_PREFIX_LEN; |
1da177e4c Linux-2.6.12-rc2 |
18 19 20 21 22 23 24 25 26 27 28 29 |
const size_t total_len = prefix_len + name_len + 1; if (list && total_len <= list_size) { memcpy(list, XATTR_SECURITY_PREFIX, prefix_len); memcpy(list+prefix_len, name, name_len); list[prefix_len + name_len] = '\0'; } return total_len; } static int |
431547b3c sanitize xattr ha... |
30 31 |
ext3_xattr_security_get(struct dentry *dentry, const char *name, void *buffer, size_t size, int type) |
1da177e4c Linux-2.6.12-rc2 |
32 33 34 |
{ if (strcmp(name, "") == 0) return -EINVAL; |
431547b3c sanitize xattr ha... |
35 36 |
return ext3_xattr_get(dentry->d_inode, EXT3_XATTR_INDEX_SECURITY, name, buffer, size); |
1da177e4c Linux-2.6.12-rc2 |
37 38 39 |
} static int |
431547b3c sanitize xattr ha... |
40 41 |
ext3_xattr_security_set(struct dentry *dentry, const char *name, const void *value, size_t size, int flags, int type) |
1da177e4c Linux-2.6.12-rc2 |
42 43 44 |
{ if (strcmp(name, "") == 0) return -EINVAL; |
431547b3c sanitize xattr ha... |
45 46 |
return ext3_xattr_set(dentry->d_inode, EXT3_XATTR_INDEX_SECURITY, name, value, size, flags); |
1da177e4c Linux-2.6.12-rc2 |
47 |
} |
9d8f13ba3 security: new sec... |
48 49 |
int ext3_initxattrs(struct inode *inode, const struct xattr *xattr_array, void *fs_info) |
ac50960af [PATCH] ext3: Ena... |
50 |
{ |
9d8f13ba3 security: new sec... |
51 52 53 |
const struct xattr *xattr; handle_t *handle = fs_info; int err = 0; |
ac50960af [PATCH] ext3: Ena... |
54 |
|
9d8f13ba3 security: new sec... |
55 56 57 58 59 60 61 |
for (xattr = xattr_array; xattr->name != NULL; xattr++) { err = ext3_xattr_set_handle(handle, inode, EXT3_XATTR_INDEX_SECURITY, xattr->name, xattr->value, xattr->value_len, 0); if (err < 0) break; |
ac50960af [PATCH] ext3: Ena... |
62 |
} |
ac50960af [PATCH] ext3: Ena... |
63 64 |
return err; } |
9d8f13ba3 security: new sec... |
65 66 67 68 69 70 71 |
int ext3_init_security(handle_t *handle, struct inode *inode, struct inode *dir, const struct qstr *qstr) { return security_inode_init_security(inode, dir, qstr, &ext3_initxattrs, handle); } |
d1f21049f ext3: constify xa... |
72 |
const struct xattr_handler ext3_xattr_security_handler = { |
1da177e4c Linux-2.6.12-rc2 |
73 74 75 76 77 |
.prefix = XATTR_SECURITY_PREFIX, .list = ext3_xattr_security_list, .get = ext3_xattr_security_get, .set = ext3_xattr_security_set, }; |