X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=selinux%2Fruncon.c;h=6ecd7899d9df61c53bd79543bb67b7369f861684;hb=19679784c03089c585c609335389f034172a11ff;hp=a3543878cdd48687dad58376668270f6de896f77;hpb=febe3c421109032cdfb36249c54e314d39256ace;p=oweals%2Fbusybox.git diff --git a/selinux/runcon.c b/selinux/runcon.c index a3543878c..6ecd7899d 100644 --- a/selinux/runcon.c +++ b/selinux/runcon.c @@ -25,12 +25,15 @@ * * Port to busybox: KaiGai Kohei * - based on coreutils-5.97 (in Fedora Core 6) + * + * Licensed under GPLv2, see file LICENSE in this tarball for details. */ -#include "busybox.h" #include #include #include +#include "libbb.h" + static context_t runcon_compute_new_context(char *user, char *role, char *type, char *range, char *command, int compute_trans) { @@ -68,15 +71,14 @@ static context_t runcon_compute_new_context(char *user, char *role, char *type, } #if ENABLE_FEATURE_RUNCON_LONG_OPTIONS -static const struct option runcon_options[] = { - { "user", 1, NULL, 'u' }, - { "role", 1, NULL, 'r' }, - { "type", 1, NULL, 't' }, - { "range", 1, NULL, 'l' }, - { "compute", 0, NULL, 'c' }, - { "help", 0, NULL, 'h' }, - { NULL, 0, NULL, 0 }, -}; +static const char runcon_longopts[] ALIGN1 = + "user\0" Required_argument "u" + "role\0" Required_argument "r" + "type\0" Required_argument "t" + "range\0" Required_argument "l" + "compute\0" No_argument "c" + "help\0" No_argument "h" + ; #endif #define OPTS_ROLE (1<<0) /* r */ @@ -87,8 +89,8 @@ static const struct option runcon_options[] = { #define OPTS_HELP (1<<5) /* h */ #define OPTS_CONTEXT_COMPONENT (OPTS_ROLE | OPTS_TYPE | OPTS_USER | OPTS_RANGE) -int runcon_main(int argc, char **argv); -int runcon_main(int argc, char **argv) +int runcon_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int runcon_main(int argc UNUSED_PARAM, char **argv) { char *role = NULL; char *range = NULL; @@ -101,16 +103,16 @@ int runcon_main(int argc, char **argv) selinux_or_die(); #if ENABLE_FEATURE_RUNCON_LONG_OPTIONS - applet_long_options = runcon_options; + applet_long_options = runcon_longopts; #endif opt_complementary = "-1"; - opts = getopt32(argc, argv, "r:t:u:l:ch", &role, &type, &user, &range); + opts = getopt32(argv, "r:t:u:l:ch", &role, &type, &user, &range); argv += optind; if (!(opts & OPTS_CONTEXT_COMPONENT)) { context = *argv++; if (!argv[0]) - bb_error_msg_and_die("no command found"); + bb_error_msg_and_die("no command given"); } if (context) { @@ -127,11 +129,10 @@ int runcon_main(int argc, char **argv) context_str(con)); if (setexeccon(context_str(con))) - bb_error_msg_and_die("cannot set up security context '%s'", + bb_error_msg_and_die("can't set up security context '%s'", context_str(con)); execvp(argv[0], argv); - bb_perror_msg_and_die("cannot execute '%s'", argv[0]); - return 1; + bb_perror_msg_and_die("can't execute '%s'", argv[0]); }