Support umount in helper_process

Currently mount points cleanup is called directly in imageloader_main
without sandboxing. In order for cleanup to work in non-root user in
sandboxed environment (dbus call), I provide a method in helper_process
to perform umount in sandbox as root.

It also fixes a bug in message deserialization where message could be
cut shorter accidentally due to encoding with string delimeter in the
middle.

BUG=chromium:784031,chromium:782334
TEST=unittest, mount/umount images on DuT

Change-Id: Ib4c7522c96165c6ffae4cb0342137f8a0bdcc07b
Reviewed-on: https://chromium-review.googlesource.com/767024
Commit-Ready: Xiaochu Liu <xiaochu@chromium.org>
Tested-by: Xiaochu Liu <xiaochu@chromium.org>
Reviewed-by: Greg Kerr <kerrnel@chromium.org>
13 files changed
tree: 26a3051c85d5401290a097eb6b9266af8b8d0864
  1. dbus_adaptors/
  2. dbus_permissions/
  3. dbus_service/
  4. public_keys/
  5. seccomp/
  6. testdata/
  7. .presubmitignore
  8. component.cc
  9. component.h
  10. component_unittest.cc
  11. helper_process.cc
  12. helper_process.h
  13. imageloader-client.gyp
  14. imageloader-shutdown.conf
  15. imageloader.cc
  16. imageloader.conf
  17. imageloader.gyp
  18. imageloader.h
  19. imageloader_impl.cc
  20. imageloader_impl.h
  21. imageloader_main.cc
  22. imageloader_unittest.cc
  23. imageloader_wrapper
  24. ipc.proto
  25. libimageloader-client-test.pc.in
  26. libimageloader-client.pc.in
  27. mock_helper_process.h
  28. mock_verity_mounter.h
  29. mount_helper.cc
  30. mount_helper.h
  31. OWNERS
  32. README.md
  33. run_tests.cc
  34. test_utilities.cc
  35. test_utilities.h
  36. verity_mounter.cc
  37. verity_mounter.h
  38. verity_mounter_impl.cc
  39. verity_mounter_impl.h
  40. verity_mounter_unittest.cc
README.md

src/platform/imageloader

This aims to provide a generic utility to verify and load (mount) signed disk images through DBUS IPC.

Binaries

  • imageloader

imageloader handles the mounting of disk images. imageloader should be executed via the imageloader_wrapper script, which ensures that imageloader's storage exists and is owned by imageloaderd user. When imageloader is not running, DBus will automatically invoke it. After 20 seconds of inactivity, the service exits.