]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
8552b176 AK |
2 | #pragma once |
3 | ||
4 | /*** | |
96b2fb93 | 5 | Copyright © 2013 Intel Corporation |
8552b176 AK |
6 | |
7 | Author: Auke Kok <auke-jan.h.kok@intel.com> | |
8552b176 AK |
8 | ***/ |
9 | ||
10 | #include <stdbool.h> | |
11c3a366 | 11 | #include <sys/types.h> |
8552b176 | 12 | |
0690160e | 13 | #include "label-util.h" |
5ab58c20 WC |
14 | #include "macro.h" |
15 | ||
c02e7b1e SW |
16 | #define SMACK_FLOOR_LABEL "_" |
17 | #define SMACK_STAR_LABEL "*" | |
18 | ||
5ab58c20 | 19 | typedef enum SmackAttr { |
08c84981 LP |
20 | SMACK_ATTR_ACCESS, |
21 | SMACK_ATTR_EXEC, | |
22 | SMACK_ATTR_MMAP, | |
23 | SMACK_ATTR_TRANSMUTE, | |
24 | SMACK_ATTR_IPIN, | |
25 | SMACK_ATTR_IPOUT, | |
5ab58c20 | 26 | _SMACK_ATTR_MAX, |
2d93c20e | 27 | _SMACK_ATTR_INVALID = -EINVAL, |
5ab58c20 WC |
28 | } SmackAttr; |
29 | ||
6baa7db0 | 30 | bool mac_smack_use(void); |
a452c807 | 31 | int mac_smack_init(void); |
b9c1bc28 | 32 | |
03bc11d1 | 33 | int mac_smack_fix_full(int atfd, const char *inode_path, const char *label_path, LabelFixFlags flags); |
c3151977 | 34 | static inline int mac_smack_fix(const char *path, LabelFixFlags flags) { |
03bc11d1 | 35 | return mac_smack_fix_full(AT_FDCWD, path, path, flags); |
c3151977 TM |
36 | } |
37 | ||
5ab58c20 WC |
38 | const char* smack_attr_to_string(SmackAttr i) _const_; |
39 | SmackAttr smack_attr_from_string(const char *s) _pure_; | |
40 | int mac_smack_read(const char *path, SmackAttr attr, char **label); | |
41 | int mac_smack_read_fd(int fd, SmackAttr attr, char **label); | |
9dcb8923 DDM |
42 | int mac_smack_apply_at(int dir_fd, const char *path, SmackAttr attr, const char *label); |
43 | static inline int mac_smack_apply(const char *path, SmackAttr attr, const char *label) { | |
44 | return mac_smack_apply_at(AT_FDCWD, path, attr, label); | |
45 | } | |
5ab58c20 | 46 | int mac_smack_apply_fd(int fd, SmackAttr attr, const char *label); |
2ca620c4 | 47 | int mac_smack_apply_pid(pid_t pid, const char *label); |
ba056b73 | 48 | int mac_smack_copy(const char *dest, const char *src); |
ce0458be | 49 | |
9dcb8923 DDM |
50 | int renameat_and_apply_smack_floor_label(int fdf, const char *from, int fdt, const char *to); |
51 | static inline int rename_and_apply_smack_floor_label(const char *from, const char *to) { | |
52 | return renameat_and_apply_smack_floor_label(AT_FDCWD, from, AT_FDCWD, to); | |
53 | } |