Add DynamicPartitionControl::EraseSystemOtherAvbFooter

Erase AVB footer of system other partition prior to any updates so that if
an update overwrites it partially, and the device rolled back (or even
before we finish writing the partition), and the device factory resets,
mapping system_other as /postinstall won't trigger verity errors and
reboots the device.

Bug: 152444348
Test: apply update, rollback, then FDR
Test: apply update, then set sys.cppreopt=requested; observe that
/postinstall cannot be mounted.

Change-Id: I62e5bb8f4c31d9a1beff485c47fc4b07a3a5686b
6 files changed
tree: a0086c60ebe08355f9018f362a22aebbf34fec9e
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. fuzz/
  6. init/
  7. payload_consumer/
  8. payload_generator/
  9. sample_images/
  10. scripts/
  11. update_engine/
  12. update_manager/
  13. update_payload_key/
  14. .clang-format
  15. .gitignore
  16. Android.bp
  17. binder_service_android.cc
  18. binder_service_android.h
  19. binder_service_brillo.cc
  20. binder_service_brillo.h
  21. boot_control_android.cc
  22. boot_control_android.h
  23. boot_control_chromeos.cc
  24. boot_control_chromeos.h
  25. boot_control_chromeos_unittest.cc
  26. certificate_checker.cc
  27. certificate_checker.h
  28. certificate_checker_unittest.cc
  29. chrome_browser_proxy_resolver.cc
  30. chrome_browser_proxy_resolver.h
  31. cleanup_previous_update_action.cc
  32. cleanup_previous_update_action.h
  33. COMMIT-QUEUE.ini
  34. common_service.cc
  35. common_service.h
  36. common_service_unittest.cc
  37. connection_manager.cc
  38. connection_manager.h
  39. connection_manager_android.cc
  40. connection_manager_android.h
  41. connection_manager_interface.h
  42. connection_manager_unittest.cc
  43. connection_utils.cc
  44. connection_utils.h
  45. CPPLINT.cfg
  46. daemon.cc
  47. daemon.h
  48. daemon_state_android.cc
  49. daemon_state_android.h
  50. daemon_state_interface.h
  51. dbus_connection.cc
  52. dbus_connection.h
  53. dbus_service.cc
  54. dbus_service.h
  55. dbus_test_utils.h
  56. dlcservice_chromeos.cc
  57. dlcservice_chromeos.h
  58. dynamic_partition_control_android.cc
  59. dynamic_partition_control_android.h
  60. dynamic_partition_control_android_unittest.cc
  61. dynamic_partition_test_utils.h
  62. dynamic_partition_utils.cc
  63. dynamic_partition_utils.h
  64. fake_file_writer.h
  65. fake_p2p_manager.h
  66. fake_p2p_manager_configuration.h
  67. fake_shill_proxy.cc
  68. fake_shill_proxy.h
  69. fake_system_state.cc
  70. fake_system_state.h
  71. generate_pc_file.sh
  72. hardware_android.cc
  73. hardware_android.h
  74. hardware_chromeos.cc
  75. hardware_chromeos.h
  76. hardware_chromeos_unittest.cc
  77. image_properties.h
  78. image_properties_android.cc
  79. image_properties_android_unittest.cc
  80. image_properties_chromeos.cc
  81. image_properties_chromeos_unittest.cc
  82. libcurl_http_fetcher.cc
  83. libcurl_http_fetcher.h
  84. libupdate_engine-client-test.pc.in
  85. libupdate_engine-client.pc.in
  86. local_coverage_rate
  87. logging.cc
  88. logging.h
  89. logging_android.cc
  90. main.cc
  91. metrics_constants.h
  92. metrics_reporter_android.cc
  93. metrics_reporter_android.h
  94. metrics_reporter_interface.h
  95. metrics_reporter_omaha.cc
  96. metrics_reporter_omaha.h
  97. metrics_reporter_omaha_unittest.cc
  98. metrics_reporter_stub.cc
  99. metrics_reporter_stub.h
  100. metrics_utils.cc
  101. metrics_utils.h
  102. metrics_utils_unittest.cc
  103. mock_boot_control_hal.h
  104. mock_certificate_checker.h
  105. mock_connection_manager.h
  106. mock_dynamic_partition_control.h
  107. mock_file_writer.h
  108. mock_metrics_reporter.h
  109. mock_omaha_request_params.h
  110. mock_p2p_manager.h
  111. mock_payload_state.h
  112. mock_power_manager.h
  113. mock_service_observer.h
  114. mock_update_attempter.h
  115. MODULE_LICENSE_APACHE2
  116. network_selector.h
  117. network_selector_android.cc
  118. network_selector_android.h
  119. network_selector_interface.h
  120. network_selector_stub.cc
  121. network_selector_stub.h
  122. NOTICE
  123. omaha_request_action.cc
  124. omaha_request_action.h
  125. omaha_request_action_fuzzer.cc
  126. omaha_request_action_unittest.cc
  127. omaha_request_params.cc
  128. omaha_request_params.h
  129. omaha_request_params_unittest.cc
  130. omaha_response.h
  131. omaha_response_handler_action.cc
  132. omaha_response_handler_action.h
  133. omaha_response_handler_action_unittest.cc
  134. omaha_utils.cc
  135. omaha_utils.h
  136. omaha_utils_unittest.cc
  137. otacerts.zip
  138. OWNERS
  139. p2p_manager.cc
  140. p2p_manager.h
  141. p2p_manager_unittest.cc
  142. parcelable_update_engine_status.cc
  143. parcelable_update_engine_status.h
  144. parcelable_update_engine_status_unittest.cc
  145. payload_state.cc
  146. payload_state.h
  147. payload_state_interface.h
  148. payload_state_unittest.cc
  149. power_manager_android.cc
  150. power_manager_android.h
  151. power_manager_chromeos.cc
  152. power_manager_chromeos.h
  153. power_manager_interface.h
  154. PRESUBMIT.cfg
  155. PREUPLOAD.cfg
  156. pylintrc
  157. real_system_state.cc
  158. real_system_state.h
  159. run_unittests
  160. sample_omaha_v3_response.xml
  161. service_delegate_android_interface.h
  162. service_observer_interface.h
  163. shill_proxy.cc
  164. shill_proxy.h
  165. shill_proxy_interface.h
  166. sideload_logging_android.cc
  167. sideload_logging_android.h
  168. sideload_main.cc
  169. system_state.h
  170. tar_bunzip2.gypi
  171. test_config.xml
  172. test_http_server.cc
  173. test_subprocess.cc
  174. testrunner.cc
  175. unittest_key.pem
  176. unittest_key2.pem
  177. unittest_key_EC.pem
  178. unittest_key_RSA4096.pem
  179. update_attempter.cc
  180. update_attempter.h
  181. update_attempter_android.cc
  182. update_attempter_android.h
  183. update_attempter_android_unittest.cc
  184. update_attempter_unittest.cc
  185. update_boot_flags_action.cc
  186. update_boot_flags_action.h
  187. update_boot_flags_action_unittest.cc
  188. update_engine-client.gyp
  189. update_engine.conf
  190. update_engine.gyp
  191. update_engine.rc
  192. update_engine_client.cc
  193. update_engine_client_android.cc
  194. update_metadata.proto
  195. update_status_utils.cc
  196. update_status_utils.h
  197. UpdateEngine.conf