ip link: add VLAN support
[oweals/busybox.git] / selinux / setenforce.c
index 670e3008630812ac88e33f36c3fe0609a5476d13..c5bc0a5a69c79b3f89a208cd43d9510bd55e9e12 100644 (file)
@@ -4,16 +4,18 @@
  * Based on libselinux 1.33.1
  * Port to BusyBox  Hiroshi Shinji <shiroshi@my.email.ne.jp>
  *
+ * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-#include "busybox.h"
+//usage:#define setenforce_trivial_usage
+//usage:       "[Enforcing | Permissive | 1 | 0]"
+//usage:#define setenforce_full_usage ""
 
-static const smallint setenforce_mode[] = {
-       0,
-       1,
-       0,
-       1,
-};
+#include "libbb.h"
+
+/* These strings are arranged so that odd ones
+ * result in security_setenforce(1) being done,
+ * the rest will do security_setenforce(0) */
 static const char *const setenforce_cmd[] = {
        "0",
        "1",
@@ -22,11 +24,12 @@ static const char *const setenforce_cmd[] = {
        NULL,
 };
 
-int setenforce_main(int argc, char **argv)
+int setenforce_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int setenforce_main(int argc UNUSED_PARAM, char **argv)
 {
        int i, rc;
 
-       if (argc != 2)
+       if (!argv[1] || argv[2])
                bb_show_usage();
 
        selinux_or_die();
@@ -34,7 +37,7 @@ int setenforce_main(int argc, char **argv)
        for (i = 0; setenforce_cmd[i]; i++) {
                if (strcasecmp(argv[1], setenforce_cmd[i]) != 0)
                        continue;
-               rc = security_setenforce(setenforce_mode[i]);
+               rc = security_setenforce(i & 1);
                if (rc < 0)
                        bb_perror_msg_and_die("setenforce() failed");
                return 0;