• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <unistd.h>
2 #include <sys/types.h>
3 #include <fcntl.h>
4 #include <stdlib.h>
5 #include <errno.h>
6 #include <string.h>
7 #include <stdio.h>
8 #include "selinux_internal.h"
9 #include "policy.h"
10 #include <limits.h>
11 
security_check_context_raw(const char * con)12 int security_check_context_raw(const char * con)
13 {
14 	char path[PATH_MAX];
15 	int fd, ret;
16 
17 	if (!selinux_mnt) {
18 		errno = ENOENT;
19 		return -1;
20 	}
21 
22 	snprintf(path, sizeof path, "%s/context", selinux_mnt);
23 	fd = open(path, O_RDWR | O_CLOEXEC);
24 	if (fd < 0)
25 		return -1;
26 
27 	ret = write(fd, con, strlen(con) + 1);
28 	close(fd);
29 	if (ret < 0)
30 		return -1;
31 	return 0;
32 }
33 
hidden_def(security_check_context_raw)34 hidden_def(security_check_context_raw)
35 
36 int security_check_context(const char * con)
37 {
38 	int ret;
39 	char * rcon;
40 
41 	if (selinux_trans_to_raw_context(con, &rcon))
42 		return -1;
43 
44 	ret = security_check_context_raw(rcon);
45 
46 	freecon(rcon);
47 
48 	return ret;
49 }
50 
51 hidden_def(security_check_context)
52