Sandbox the component updater's patcher utility process.

The code will now open files in the browser process before passing the
handles across IPC to the utility process. The utility process in turn
invokes courgette/bsdiff, which memory maps the files and operates on
them as before.

There is a behavioral difference when using the courgette or
courgette_mini tools: the output file will now be created/overwritten
at the start of the operation, and in the case of a failure, will be
deleted. Previously, the output file was created late in the operation
operation and several failure modes would leave it unmodified.

BUG=660325

Review-Url: https://codereview.chromium.org/2534873005
Cr-Original-Commit-Position: refs/heads/master@{#437669}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 53796c72e2ec50eec77f0bd79ec0c8426cee4d58
4 files changed
tree: 708a65c9451abd0500b7bcb821677a6ec76fae07
  1. BUILD.gn
  2. DEPS
  3. OWNERS
  4. adjustment_method.cc
  5. adjustment_method.h
  6. adjustment_method_2.cc
  7. adjustment_method_unittest.cc
  8. analyze_mem_test
  9. analyze_stress_test
  10. assembly_program.cc
  11. assembly_program.h
  12. base_test_unittest.cc
  13. base_test_unittest.h
  14. bsdiff_memory_unittest.cc
  15. consecutive_range_visitor.h
  16. consecutive_range_visitor_unittest.cc
  17. courgette.h
  18. courgette_application.png
  19. courgette_generation.png
  20. courgette_minimal_tool.cc
  21. courgette_tool.cc
  22. crc.cc
  23. crc.h
  24. description.html
  25. description.md
  26. difference_estimator.cc
  27. difference_estimator.h
  28. difference_estimator_unittest.cc
  29. disassembler.cc
  30. disassembler.h
  31. disassembler_elf_32.cc
  32. disassembler_elf_32.h
  33. disassembler_elf_32_arm.cc
  34. disassembler_elf_32_arm.h
  35. disassembler_elf_32_x86.cc
  36. disassembler_elf_32_x86.h
  37. disassembler_elf_32_x86_unittest.cc
  38. disassembler_win32.cc
  39. disassembler_win32.h
  40. disassembler_win32_x64.cc
  41. disassembler_win32_x64.h
  42. disassembler_win32_x64_unittest.cc
  43. disassembler_win32_x86.cc
  44. disassembler_win32_x86.h
  45. disassembler_win32_x86_unittest.cc
  46. encode_decode_unittest.cc
  47. encoded_program.cc
  48. encoded_program.h
  49. encoded_program_fuzz_unittest.cc
  50. encoded_program_unittest.cc
  51. ensemble.cc
  52. ensemble.h
  53. ensemble_apply.cc
  54. ensemble_create.cc
  55. ensemble_unittest.cc
  56. image_utils.h
  57. image_utils_unittest.cc
  58. label_manager.cc
  59. label_manager.h
  60. label_manager_unittest.cc
  61. memory_allocator.cc
  62. memory_allocator.h
  63. memory_allocator_unittest.cc
  64. memory_monitor.cc
  65. patch_generator_x86_32.h
  66. patcher_x86_32.h
  67. program_detector.cc
  68. program_detector.h
  69. program_detector_unittest.cc
  70. region.h
  71. rel32_finder.cc
  72. rel32_finder.h
  73. rel32_finder_unittest.cc
  74. rel32_finder_x64.cc
  75. rel32_finder_x64.h
  76. rel32_finder_x86.cc
  77. rel32_finder_x86.h
  78. run_mem_test
  79. run_stress_test
  80. simple_delta.cc
  81. simple_delta.h
  82. streams.cc
  83. streams.h
  84. streams_unittest.cc
  85. stress_test_common
  86. testdata/
  87. third_party/
  88. typedrva_unittest.cc
  89. types_elf.h
  90. types_win_pe.h
  91. versioning_unittest.cc