1*cf5a6c84SAndroid Build Coastguard Worker /* restorecon.c - Restore default security contexts for files 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_RESTORECON(NEWTOY(restorecon, "<1DFnRrv", TOYFLAG_USR|TOYFLAG_SBIN)) 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker config RESTORECON 8*cf5a6c84SAndroid Build Coastguard Worker bool "restorecon" 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: restorecon [-D] [-F] [-R] [-n] [-v] FILE... 13*cf5a6c84SAndroid Build Coastguard Worker 14*cf5a6c84SAndroid Build Coastguard Worker Restores the default security contexts for the given files. 15*cf5a6c84SAndroid Build Coastguard Worker 16*cf5a6c84SAndroid Build Coastguard Worker -D Apply to /data/data too 17*cf5a6c84SAndroid Build Coastguard Worker -F Force reset 18*cf5a6c84SAndroid Build Coastguard Worker -R Recurse into directories 19*cf5a6c84SAndroid Build Coastguard Worker -n Don't make any changes; useful with -v to see what would change 20*cf5a6c84SAndroid Build Coastguard Worker -v Verbose 21*cf5a6c84SAndroid Build Coastguard Worker */ 22*cf5a6c84SAndroid Build Coastguard Worker 23*cf5a6c84SAndroid Build Coastguard Worker #define FOR_restorecon 24*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 25*cf5a6c84SAndroid Build Coastguard Worker 26*cf5a6c84SAndroid Build Coastguard Worker #if defined(__ANDROID__) 27*cf5a6c84SAndroid Build Coastguard Worker #include <selinux/android.h> 28*cf5a6c84SAndroid Build Coastguard Worker #endif 29*cf5a6c84SAndroid Build Coastguard Worker restorecon_main(void)30*cf5a6c84SAndroid Build Coastguard Workervoid restorecon_main(void) 31*cf5a6c84SAndroid Build Coastguard Worker { 32*cf5a6c84SAndroid Build Coastguard Worker #if defined(__ANDROID__) 33*cf5a6c84SAndroid Build Coastguard Worker char **s; 34*cf5a6c84SAndroid Build Coastguard Worker int flags = 0; 35*cf5a6c84SAndroid Build Coastguard Worker 36*cf5a6c84SAndroid Build Coastguard Worker if (FLAG(D)) flags |= SELINUX_ANDROID_RESTORECON_DATADATA; 37*cf5a6c84SAndroid Build Coastguard Worker if (FLAG(F)) flags |= SELINUX_ANDROID_RESTORECON_FORCE; 38*cf5a6c84SAndroid Build Coastguard Worker if (FLAG(R) || FLAG(r)) flags |= SELINUX_ANDROID_RESTORECON_RECURSE; 39*cf5a6c84SAndroid Build Coastguard Worker if (FLAG(n)) flags |= SELINUX_ANDROID_RESTORECON_NOCHANGE; 40*cf5a6c84SAndroid Build Coastguard Worker if (FLAG(v)) flags |= SELINUX_ANDROID_RESTORECON_VERBOSE; 41*cf5a6c84SAndroid Build Coastguard Worker 42*cf5a6c84SAndroid Build Coastguard Worker for (s = toys.optargs; *s; s++) 43*cf5a6c84SAndroid Build Coastguard Worker if (selinux_android_restorecon(*s, flags) < 0) 44*cf5a6c84SAndroid Build Coastguard Worker perror_msg("restorecon failed: %s", *s); 45*cf5a6c84SAndroid Build Coastguard Worker #endif 46*cf5a6c84SAndroid Build Coastguard Worker } 47