More from Jan Kiszka: this is a port of the latest sysv-init SELinux patch. It makes busybox invoke the libselinux library function to load the binary policy right at system start-up. It was successfully tested on a mini-SELinux system. Note: requires recent libselinux. I'm using 1.28.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -39,6 +39,11 @@ | |
| #endif | |
| + | #ifdef CONFIG_SELINUX |
| + | # include <selinux/selinux.h> |
| + | #endif /* CONFIG_SELINUX */ |
| + | |
| + | |
| #define INIT_BUFFS_SIZE 256 | |
| /* From <linux/vt.h> */ | |
| @@ -1097,6 +1102,22 @@ int init_main(int argc, char **argv) | |
| parse_inittab(); | |
| } | |
| + | #ifdef CONFIG_SELINUX |
| + | if (getenv("SELINUX_INIT") == NULL) { |
| + | int enforce = 0; |
| + | |
| + | putenv("SELINUX_INIT=YES"); |
| + | if (selinux_init_load_policy(&enforce) == 0) { |
| + | execv(argv[0], argv); |
| + | } else if (enforce > 0) { |
| + | /* SELinux in enforcing mode but load_policy failed */ |
| + | /* At this point, we probably can't open /dev/console, so log() won't work */ |
| + | message(CONSOLE,"Unable to load SELinux Policy. Machine is in enforcing mode. Halting now."); |
| + | exit(1); |
| + | } |
| + | } |
| + | #endif /* CONFIG_SELINUX */ |
| + | |
| /* Make the command line just say "init" -- thats all, nothing else */ | |
| fixup_argv(argc, argv, "init"); | |