diff options
author | Joshua Brindle <method@manicmethod.com> | 2008-08-19 15:30:36 -0400 |
---|---|---|
committer | Joshua Brindle <method@manicmethod.com> | 2008-08-19 15:30:36 -0400 |
commit | 13cd4c8960688af11ad23b4c946149015c80d549 (patch) | |
tree | 61e928c962bcf6981ef4dc02dfb0b46d1c16b818 /libselinux/src/getenforce.c | |
download | android_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.c | 40 |
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) |