Contents of /tags/mkinitrd-6_1_3/busybox/libbb/selinux_common.c
Parent Directory | Revision Log
Revision 846 -
(show annotations)
(download)
Mon May 4 18:51:23 2009 UTC (15 years, 4 months ago) by niro
File MIME type: text/plain
File size: 1252 byte(s)
Mon May 4 18:51:23 2009 UTC (15 years, 4 months ago) by niro
File MIME type: text/plain
File size: 1252 byte(s)
tagged 'mkinitrd-6_1_3'
1 | /* |
2 | * libbb/selinux_common.c |
3 | * -- common SELinux utility functions |
4 | * |
5 | * Copyright 2007 KaiGai Kohei <kaigai@kaigai.gr.jp> |
6 | */ |
7 | #include "libbb.h" |
8 | #include <selinux/context.h> |
9 | |
10 | context_t FAST_FUNC set_security_context_component(security_context_t cur_context, |
11 | char *user, char *role, char *type, char *range) |
12 | { |
13 | context_t con = context_new(cur_context); |
14 | if (!con) |
15 | return NULL; |
16 | |
17 | if (user && context_user_set(con, user)) |
18 | goto error; |
19 | if (type && context_type_set(con, type)) |
20 | goto error; |
21 | if (range && context_range_set(con, range)) |
22 | goto error; |
23 | if (role && context_role_set(con, role)) |
24 | goto error; |
25 | return con; |
26 | |
27 | error: |
28 | context_free(con); |
29 | return NULL; |
30 | } |
31 | |
32 | void FAST_FUNC setfscreatecon_or_die(security_context_t scontext) |
33 | { |
34 | if (setfscreatecon(scontext) < 0) { |
35 | /* Can be NULL. All known printf implementations |
36 | * display "(null)", "<null>" etc */ |
37 | bb_perror_msg_and_die("cannot set default " |
38 | "file creation context to %s", scontext); |
39 | } |
40 | } |
41 | |
42 | void FAST_FUNC selinux_preserve_fcontext(int fdesc) |
43 | { |
44 | security_context_t context; |
45 | |
46 | if (fgetfilecon(fdesc, &context) < 0) { |
47 | if (errno == ENODATA || errno == ENOTSUP) |
48 | return; |
49 | bb_perror_msg_and_die("fgetfilecon failed"); |
50 | } |
51 | setfscreatecon_or_die(context); |
52 | freecon(context); |
53 | } |
54 |