diff options
Diffstat (limited to 'init/builtins.cpp')
-rw-r--r-- | init/builtins.cpp | 97 |
1 files changed, 22 insertions, 75 deletions
diff --git a/init/builtins.cpp b/init/builtins.cpp index 9f3dcc1..fb1aa7c 100644 --- a/init/builtins.cpp +++ b/init/builtins.cpp @@ -67,20 +67,6 @@ static int insmod(const char *filename, char *options) return init_module(&module[0], module.size(), options); } -static int setkey(struct kbentry *kbe) -{ - int fd, ret; - - fd = open("/dev/tty0", O_RDWR | O_SYNC | O_CLOEXEC); - if (fd < 0) - return -1; - - ret = ioctl(fd, KDSKBENT, kbe); - - close(fd); - return ret; -} - static int __ifupdown(const char *interface, int up) { struct ifreq ifr; @@ -118,18 +104,6 @@ static void service_start_if_not_disabled(struct service *svc) } } -int do_chdir(int nargs, char **args) -{ - chdir(args[1]); - return 0; -} - -int do_chroot(int nargs, char **args) -{ - chroot(args[1]); - return 0; -} - int do_class_start(int nargs, char **args) { /* Starting a class does not start services @@ -172,11 +146,16 @@ int do_enable(int nargs, char **args) return 0; } -int do_exec(int nargs, char **args) -{ - return -1; +int do_exec(int nargs, char** args) { + service* svc = make_exec_oneshot_service(nargs, args); + if (svc == NULL) { + return -1; + } + service_start(svc, NULL); + return 0; } +// TODO: remove execonce when exec is available. int do_execonce(int nargs, char **args) { pid_t child; @@ -566,24 +545,6 @@ int do_setcon(int nargs, char **args) { return 0; } -int do_setenforce(int nargs, char **args) { - if (is_selinux_enabled() <= 0) - return 0; - if (security_setenforce(atoi(args[1])) < 0) { - return -errno; - } - return 0; -} - -int do_setkey(int nargs, char **args) -{ - struct kbentry kbe; - kbe.kb_table = strtoul(args[1], 0, 0); - kbe.kb_index = strtoul(args[2], 0, 0); - kbe.kb_value = strtoul(args[3], 0, 0); - return setkey(&kbe); -} - int do_setprop(int nargs, char **args) { const char *name = args[1]; @@ -712,6 +673,20 @@ int do_sysclktz(int nargs, char **args) return 0; } +int do_verity_load_state(int nargs, char **args) { + if (nargs == 1) { + int mode = -1; + int rc = fs_mgr_load_verity_state(&mode); + + if (rc == 0 && mode == VERITY_MODE_LOGGING) { + action_for_each_trigger("verity-logging", action_add_queue_tail); + } + + return rc; + } + return -1; +} + int do_write(int nargs, char **args) { const char *path = args[1]; @@ -844,34 +819,6 @@ int do_restorecon_recursive(int nargs, char **args) { return ret; } -int do_setsebool(int nargs, char **args) { - const char *name = args[1]; - const char *value = args[2]; - SELboolean b; - int ret; - - if (is_selinux_enabled() <= 0) - return 0; - - b.name = name; - if (!strcmp(value, "1") || !strcasecmp(value, "true") || !strcasecmp(value, "on")) - b.value = 1; - else if (!strcmp(value, "0") || !strcasecmp(value, "false") || !strcasecmp(value, "off")) - b.value = 0; - else { - ERROR("setsebool: invalid value %s\n", value); - return -EINVAL; - } - - if (security_set_boolean_list(1, &b, 0) < 0) { - ret = -errno; - ERROR("setsebool: could not set %s to %s\n", name, value); - return ret; - } - - return 0; -} - int do_loglevel(int nargs, char **args) { int log_level; char log_level_str[PROP_VALUE_MAX] = ""; |