diff options
Diffstat (limited to 'init/builtins.cpp')
| -rw-r--r-- | init/builtins.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/init/builtins.cpp b/init/builtins.cpp index 4ba7f114b7..b227d40b79 100644 --- a/init/builtins.cpp +++ b/init/builtins.cpp @@ -48,7 +48,7 @@ #include <android-base/parseint.h> #include <android-base/strings.h> #include <android-base/stringprintf.h> -#include <bootloader_message_writer.h> +#include <bootloader_message/bootloader_message.h> #include <cutils/partition_utils.h> #include <cutils/android_reboot.h> #include <logwrap/logwrap.h> @@ -346,6 +346,11 @@ static int do_mkdir(const std::vector<std::string>& args) { return 0; } +/* umount <path> */ +static int do_umount(const std::vector<std::string>& args) { + return umount(args[1].c_str()); +} + static struct { const char *name; unsigned flag; @@ -856,8 +861,12 @@ static int do_restorecon_recursive(const std::vector<std::string>& args) { int ret = 0; for (auto it = std::next(args.begin()); it != args.end(); ++it) { - if (restorecon_recursive(it->c_str()) < 0) + /* The contents of CE paths are encrypted on FBE devices until user + * credentials are presented (filenames inside are mangled), so we need + * to delay restorecon of those until vold explicitly requests it. */ + if (restorecon_recursive_skipce(it->c_str()) < 0) { ret = -errno; + } } return ret; } @@ -944,6 +953,7 @@ BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const { {"mkdir", {1, 4, do_mkdir}}, {"mount_all", {1, kMax, do_mount_all}}, {"mount", {3, kMax, do_mount}}, + {"umount", {1, 1, do_umount}}, {"powerctl", {1, 1, do_powerctl}}, {"restart", {1, 1, do_restart}}, {"restorecon", {1, kMax, do_restorecon}}, |
