diff options
Diffstat (limited to 'security/selinux/exports.c')
-rw-r--r-- | security/selinux/exports.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/security/selinux/exports.c b/security/selinux/exports.c new file mode 100644 index 000000000000..ae4c73eb3085 --- /dev/null +++ b/security/selinux/exports.c | |||
@@ -0,0 +1,74 @@ | |||
1 | /* | ||
2 | * SELinux services exported to the rest of the kernel. | ||
3 | * | ||
4 | * Author: James Morris <jmorris@redhat.com> | ||
5 | * | ||
6 | * Copyright (C) 2005 Red Hat, Inc., James Morris <jmorris@redhat.com> | ||
7 | * Copyright (C) 2006 Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com> | ||
8 | * Copyright (C) 2006 IBM Corporation, Timothy R. Chavez <tinytim@us.ibm.com> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2, | ||
12 | * as published by the Free Software Foundation. | ||
13 | */ | ||
14 | #include <linux/types.h> | ||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/module.h> | ||
17 | #include <linux/selinux.h> | ||
18 | #include <linux/fs.h> | ||
19 | #include <linux/ipc.h> | ||
20 | |||
21 | #include "security.h" | ||
22 | #include "objsec.h" | ||
23 | |||
24 | void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid) | ||
25 | { | ||
26 | struct task_security_struct *tsec = tsk->security; | ||
27 | if (selinux_enabled) | ||
28 | *ctxid = tsec->sid; | ||
29 | else | ||
30 | *ctxid = 0; | ||
31 | } | ||
32 | |||
33 | int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen) | ||
34 | { | ||
35 | if (selinux_enabled) | ||
36 | return security_sid_to_context(ctxid, ctx, ctxlen); | ||
37 | else { | ||
38 | *ctx = NULL; | ||
39 | *ctxlen = 0; | ||
40 | } | ||
41 | |||
42 | return 0; | ||
43 | } | ||
44 | |||
45 | void selinux_get_inode_sid(const struct inode *inode, u32 *sid) | ||
46 | { | ||
47 | if (selinux_enabled) { | ||
48 | struct inode_security_struct *isec = inode->i_security; | ||
49 | *sid = isec->sid; | ||
50 | return; | ||
51 | } | ||
52 | *sid = 0; | ||
53 | } | ||
54 | |||
55 | void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid) | ||
56 | { | ||
57 | if (selinux_enabled) { | ||
58 | struct ipc_security_struct *isec = ipcp->security; | ||
59 | *sid = isec->sid; | ||
60 | return; | ||
61 | } | ||
62 | *sid = 0; | ||
63 | } | ||
64 | |||
65 | void selinux_get_task_sid(struct task_struct *tsk, u32 *sid) | ||
66 | { | ||
67 | if (selinux_enabled) { | ||
68 | struct task_security_struct *tsec = tsk->security; | ||
69 | *sid = tsec->sid; | ||
70 | return; | ||
71 | } | ||
72 | *sid = 0; | ||
73 | } | ||
74 | |||