10f66f451Sopenharmony_ci/* runcon.c - Run command in specified security context
20f66f451Sopenharmony_ci *
30f66f451Sopenharmony_ci * Copyright 2015 The Android Open Source Project
40f66f451Sopenharmony_ci
50f66f451Sopenharmony_ciUSE_RUNCON(NEWTOY(runcon, "<2", TOYFLAG_USR|TOYFLAG_SBIN))
60f66f451Sopenharmony_ci
70f66f451Sopenharmony_ciconfig RUNCON
80f66f451Sopenharmony_ci  bool "runcon"
90f66f451Sopenharmony_ci  depends on TOYBOX_SELINUX
100f66f451Sopenharmony_ci  default y
110f66f451Sopenharmony_ci  help
120f66f451Sopenharmony_ci    usage: runcon CONTEXT COMMAND [ARGS...]
130f66f451Sopenharmony_ci
140f66f451Sopenharmony_ci    Run a command in a specified security context.
150f66f451Sopenharmony_ci*/
160f66f451Sopenharmony_ci
170f66f451Sopenharmony_ci#define FOR_runcon
180f66f451Sopenharmony_ci#include "toys.h"
190f66f451Sopenharmony_ci
200f66f451Sopenharmony_civoid runcon_main(void)
210f66f451Sopenharmony_ci{
220f66f451Sopenharmony_ci  char *context = *toys.optargs;
230f66f451Sopenharmony_ci
240f66f451Sopenharmony_ci  if (setexeccon(context)) perror_exit("Could not set context to %s", context);
250f66f451Sopenharmony_ci
260f66f451Sopenharmony_ci  toys.stacktop = 0;
270f66f451Sopenharmony_ci  xexec(++toys.optargs);
280f66f451Sopenharmony_ci}
29