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. testdata/
  2. third_party/
  3. adjustment_method.cc
  4. adjustment_method.h
  5. adjustment_method_2.cc
  6. adjustment_method_unittest.cc
  7. analyze_mem_test
  8. analyze_stress_test
  9. assembly_program.cc
  10. assembly_program.h
  11. base_test_unittest.cc
  12. base_test_unittest.h
  13. bsdiff_memory_unittest.cc
  14. BUILD.gn
  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. DEPS
  25. description.html
  26. description.md
  27. difference_estimator.cc
  28. difference_estimator.h
  29. difference_estimator_unittest.cc
  30. disassembler.cc
  31. disassembler.h
  32. disassembler_elf_32.cc
  33. disassembler_elf_32.h
  34. disassembler_elf_32_arm.cc
  35. disassembler_elf_32_arm.h
  36. disassembler_elf_32_x86.cc
  37. disassembler_elf_32_x86.h
  38. disassembler_elf_32_x86_unittest.cc
  39. disassembler_win32.cc
  40. disassembler_win32.h
  41. disassembler_win32_x64.cc
  42. disassembler_win32_x64.h
  43. disassembler_win32_x64_unittest.cc
  44. disassembler_win32_x86.cc
  45. disassembler_win32_x86.h
  46. disassembler_win32_x86_unittest.cc
  47. encode_decode_unittest.cc
  48. encoded_program.cc
  49. encoded_program.h
  50. encoded_program_fuzz_unittest.cc
  51. encoded_program_unittest.cc
  52. ensemble.cc
  53. ensemble.h
  54. ensemble_apply.cc
  55. ensemble_create.cc
  56. ensemble_unittest.cc
  57. image_utils.h
  58. image_utils_unittest.cc
  59. label_manager.cc
  60. label_manager.h
  61. label_manager_unittest.cc
  62. memory_allocator.cc
  63. memory_allocator.h
  64. memory_allocator_unittest.cc
  65. memory_monitor.cc
  66. OWNERS
  67. patch_generator_x86_32.h
  68. patcher_x86_32.h
  69. program_detector.cc
  70. program_detector.h
  71. program_detector_unittest.cc
  72. region.h
  73. rel32_finder.cc
  74. rel32_finder.h
  75. rel32_finder_unittest.cc
  76. rel32_finder_x64.cc
  77. rel32_finder_x64.h
  78. rel32_finder_x86.cc
  79. rel32_finder_x86.h
  80. run_mem_test
  81. run_stress_test
  82. simple_delta.cc
  83. simple_delta.h
  84. streams.cc
  85. streams.h
  86. streams_unittest.cc
  87. stress_test_common
  88. typedrva_unittest.cc
  89. types_elf.h
  90. types_win_pe.h
  91. versioning_unittest.cc