aboutsummaryrefslogtreecommitdiffstats
path: root/libselinux/src/getenforce.c
diff options
context:
space:
mode:
authorJoshua Brindle <method@manicmethod.com>2008-08-19 15:30:36 -0400
committerJoshua Brindle <method@manicmethod.com>2008-08-19 15:30:36 -0400
commit13cd4c8960688af11ad23b4c946149015c80d549 (patch)
tree61e928c962bcf6981ef4dc02dfb0b46d1c16b818 /libselinux/src/getenforce.c
downloadandroid_external_selinux-13cd4c8960688af11ad23b4c946149015c80d549.tar.gz
android_external_selinux-13cd4c8960688af11ad23b4c946149015c80d549.tar.bz2
android_external_selinux-13cd4c8960688af11ad23b4c946149015c80d549.zip
initial import from svn trunk revision 2950
Diffstat (limited to 'libselinux/src/getenforce.c')
-rw-r--r--libselinux/src/getenforce.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/libselinux/src/getenforce.c b/libselinux/src/getenforce.c
new file mode 100644
index 00000000..4fb516a6
--- /dev/null
+++ b/libselinux/src/getenforce.c
@@ -0,0 +1,40 @@
+#include <unistd.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include "selinux_internal.h"
+#include "policy.h"
+#include <stdio.h>
+#include <limits.h>
+
+int security_getenforce(void)
+{
+ int fd, ret, enforce = 0;
+ char path[PATH_MAX];
+ char buf[20];
+
+ if (!selinux_mnt) {
+ errno = ENOENT;
+ return -1;
+ }
+
+ snprintf(path, sizeof path, "%s/enforce", selinux_mnt);
+ fd = open(path, O_RDONLY);
+ if (fd < 0)
+ return -1;
+
+ memset(buf, 0, sizeof buf);
+ ret = read(fd, buf, sizeof buf - 1);
+ close(fd);
+ if (ret < 0)
+ return -1;
+
+ if (sscanf(buf, "%d", &enforce) != 1)
+ return -1;
+
+ return enforce;
+}
+
+hidden_def(security_getenforce)