1*cf5a6c84SAndroid Build Coastguard Worker /* runcon.c - Run command in specified security context 2*cf5a6c84SAndroid Build Coastguard Worker * 3*cf5a6c84SAndroid Build Coastguard Worker * Copyright 2015 The Android Open Source Project 4*cf5a6c84SAndroid Build Coastguard Worker 5*cf5a6c84SAndroid Build Coastguard Worker USE_RUNCON(NEWTOY(runcon, "^<2", TOYFLAG_USR|TOYFLAG_SBIN)) 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker config RUNCON 8*cf5a6c84SAndroid Build Coastguard Worker bool "runcon" 9*cf5a6c84SAndroid Build Coastguard Worker depends on TOYBOX_SELINUX 10*cf5a6c84SAndroid Build Coastguard Worker default y 11*cf5a6c84SAndroid Build Coastguard Worker help 12*cf5a6c84SAndroid Build Coastguard Worker usage: runcon CONTEXT COMMAND [ARGS...] 13*cf5a6c84SAndroid Build Coastguard Worker 14*cf5a6c84SAndroid Build Coastguard Worker Run a command in a specified security context. 15*cf5a6c84SAndroid Build Coastguard Worker */ 16*cf5a6c84SAndroid Build Coastguard Worker 17*cf5a6c84SAndroid Build Coastguard Worker #define FOR_runcon 18*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 19*cf5a6c84SAndroid Build Coastguard Worker runcon_main(void)20*cf5a6c84SAndroid Build Coastguard Workervoid runcon_main(void) 21*cf5a6c84SAndroid Build Coastguard Worker { 22*cf5a6c84SAndroid Build Coastguard Worker char *context = *toys.optargs; 23*cf5a6c84SAndroid Build Coastguard Worker 24*cf5a6c84SAndroid Build Coastguard Worker if (setexeccon(context)) perror_exit("Could not set context to %s", context); 25*cf5a6c84SAndroid Build Coastguard Worker 26*cf5a6c84SAndroid Build Coastguard Worker toys.stacktop = 0; 27*cf5a6c84SAndroid Build Coastguard Worker xexec(++toys.optargs); 28*cf5a6c84SAndroid Build Coastguard Worker } 29