X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=selinux%2Fruncon.c;h=8472b709082086b4c1e0631865e1bbeae88ae7a2;hb=4928f3b90b3925e6f3cc234df48e46f88fc5689b;hp=9f61fdbb682f919339924526a611f82550fb2f96;hpb=ff131b980d524a33d8a43cefe65e14f64a43f2da;p=oweals%2Fbusybox.git diff --git a/selinux/runcon.c b/selinux/runcon.c index 9f61fdbb6..8472b7090 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) { @@ -38,13 +41,13 @@ static context_t runcon_compute_new_context(char *user, char *role, char *type, security_context_t cur_context; if (getcon(&cur_context)) - bb_error_msg_and_die("cannot get current context"); + bb_error_msg_and_die("can't get current context"); if (compute_trans) { security_context_t file_context, new_context; if (getfilecon(command, &file_context) < 0) - bb_error_msg_and_die("cannot retrieve attributes of '%s'", + bb_error_msg_and_die("can't retrieve attributes of '%s'", command); if (security_compute_create(cur_context, file_context, SECCLASS_PROCESS, &new_context)) @@ -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,10 +103,10 @@ 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)) { @@ -127,10 +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]); + bb_perror_msg_and_die("can't execute '%s'", argv[0]); }