From 56ef4f0cca828febcd923833b22c38c3e61b0285 Mon Sep 17 00:00:00 2001 From: Stephen Smalley Date: Wed, 28 Nov 2012 13:52:12 -0500 Subject: Change setsebool syntax to be consistent with other init built-ins. Change setsebool syntax from name=value to name value. This is to make it consistent with setprop and similar commands. Update both the init built-in command and the toolbox command for consistency. Change-Id: I2c8e016ba26731c4a2ad4a49ae3b89362bf8f8a8 Signed-off-by: Stephen Smalley Conflicts: init/builtins.c --- init/builtins.c | 39 +++++++++++++++++---------------------- init/keywords.h | 2 +- init/readme.txt | 2 +- 3 files changed, 19 insertions(+), 24 deletions(-) (limited to 'init') diff --git a/init/builtins.c b/init/builtins.c index de067ce0..1d8854d7 100644 --- a/init/builtins.c +++ b/init/builtins.c @@ -885,34 +885,29 @@ int do_restorecon(int nargs, char **args) { int do_setsebool(int nargs, char **args) { #ifdef HAVE_SELINUX - SELboolean *b = alloca(nargs * sizeof(SELboolean)); - char *v; - int i; + const char *name = args[1]; + const char *value = args[2]; + SELboolean b; + int ret; if (is_selinux_enabled() <= 0) return 0; - for (i = 1; i < nargs; i++) { - char *name = args[i]; - v = strchr(name, '='); - if (!v) { - ERROR("setsebool: argument %s had no =\n", name); - return -EINVAL; - } - *v++ = 0; - b[i-1].name = name; - if (!strcmp(v, "1") || !strcasecmp(v, "true") || !strcasecmp(v, "on")) - b[i-1].value = 1; - else if (!strcmp(v, "0") || !strcasecmp(v, "false") || !strcasecmp(v, "off")) - b[i-1].value = 0; - else { - ERROR("setsebool: invalid value %s\n", v); - return -EINVAL; - } + b.name = name; + if (!strcmp(value, "1") || !strcasecmp(value, "true") || !strcasecmp(value, "on")) + b.value = 1; + else if (!strcmp(value, "0") || !strcasecmp(value, "false") || !strcasecmp(value, "off")) + b.value = 0; + else { + ERROR("setsebool: invalid value %s\n", value); + return -EINVAL; } - if (security_set_boolean_list(nargs - 1, b, 0) < 0) - return -errno; + if (security_set_boolean_list(1, &b, 0) < 0) { + ret = -errno; + ERROR("setsebool: could not set %s to %s\n", name, value); + return ret; + } #endif return 0; } diff --git a/init/keywords.h b/init/keywords.h index 66a165ff..b0b2b546 100644 --- a/init/keywords.h +++ b/init/keywords.h @@ -82,7 +82,7 @@ enum { KEYWORD(setkey, COMMAND, 0, do_setkey) KEYWORD(setprop, COMMAND, 2, do_setprop) KEYWORD(setrlimit, COMMAND, 3, do_setrlimit) - KEYWORD(setsebool, COMMAND, 1, do_setsebool) + KEYWORD(setsebool, COMMAND, 2, do_setsebool) KEYWORD(socket, OPTION, 0, 0) KEYWORD(start, COMMAND, 1, do_start) KEYWORD(stop, COMMAND, 1, do_stop) diff --git a/init/readme.txt b/init/readme.txt index 55afdd7c..ccefcdeb 100644 --- a/init/readme.txt +++ b/init/readme.txt @@ -213,7 +213,7 @@ setprop setrlimit Set the rlimit for a resource. -setsebool = +setsebool Set SELinux boolean to . may be 1|true|on or 0|false|off -- cgit v1.2.3