Truncate source partitions to a multiple of 4 KiB.

When flashing partitions that aren't a multiple of 4 KiB using fastboot,
the last block of these partitions would not be padded with zeros. Full
and incremental paylaods will pad with zeros and write them on the new
target partitions, but the first incremental package after flashing a
device would fail.

This patch truncates the source partitions that aren't multiple of 4
KiB, discarding the data on the last partial 4 KiB block.

Bug: 28626303
TEST=`brillo_update_payload generate ..` a null-incremental payload;
boot.img includes mostly SOURCE_COPY and one REPLACE operation at the
end.

(cherry picked from commit a479a4d0039308fcfdda21f2a8ec8d040fd716f2)

Change-Id: I415f8d315d95f6fc9d7e76783fe0487cd19feba5
1 file changed
tree: 7756315c8535a652bf2f9a9758d10e6d68cbda5f
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. include/
  6. init/
  7. payload_consumer/
  8. payload_generator/
  9. sample_images/
  10. scripts/
  11. update_manager/
  12. update_payload_key/
  13. weaved/
  14. .gitignore
  15. Android.mk
  16. binder_service_android.cc
  17. binder_service_android.h
  18. binder_service_brillo.cc
  19. binder_service_brillo.h
  20. boot_control_android.cc
  21. boot_control_android.h
  22. boot_control_chromeos.cc
  23. boot_control_chromeos.h
  24. boot_control_chromeos_unittest.cc
  25. chrome_browser_proxy_resolver.cc
  26. chrome_browser_proxy_resolver.h
  27. chrome_browser_proxy_resolver_unittest.cc
  28. common_service.cc
  29. common_service.h
  30. common_service_unittest.cc
  31. connection_manager.cc
  32. connection_manager.h
  33. connection_manager_interface.h
  34. connection_manager_unittest.cc
  35. daemon.cc
  36. daemon.h
  37. daemon_state_android.cc
  38. daemon_state_android.h
  39. daemon_state_interface.h
  40. dbus_service.cc
  41. dbus_service.h
  42. dbus_test_utils.h
  43. fake_file_writer.h
  44. fake_p2p_manager.h
  45. fake_p2p_manager_configuration.h
  46. fake_shill_proxy.cc
  47. fake_shill_proxy.h
  48. fake_system_state.cc
  49. fake_system_state.h
  50. generate_pc_file.sh
  51. hardware_android.cc
  52. hardware_android.h
  53. hardware_chromeos.cc
  54. hardware_chromeos.h
  55. image_properties.h
  56. image_properties_android.cc
  57. image_properties_chromeos.cc
  58. libcros_proxy.cc
  59. libcros_proxy.h
  60. libupdate_engine-client-test.pc.in
  61. libupdate_engine-client.pc.in
  62. local_coverage_rate
  63. main.cc
  64. metrics.cc
  65. metrics.h
  66. metrics_utils.cc
  67. metrics_utils.h
  68. metrics_utils_unittest.cc
  69. mock_connection_manager.h
  70. mock_file_writer.h
  71. mock_omaha_request_params.h
  72. mock_p2p_manager.h
  73. mock_payload_state.h
  74. mock_proxy_resolver.h
  75. mock_update_attempter.h
  76. MODULE_LICENSE_APACHE2
  77. NOTICE
  78. omaha_request_action.cc
  79. omaha_request_action.h
  80. omaha_request_action_unittest.cc
  81. omaha_request_params.cc
  82. omaha_request_params.h
  83. omaha_request_params_unittest.cc
  84. omaha_response.h
  85. omaha_response_handler_action.cc
  86. omaha_response_handler_action.h
  87. omaha_response_handler_action_unittest.cc
  88. OWNERS
  89. p2p_manager.cc
  90. p2p_manager.h
  91. p2p_manager_unittest.cc
  92. parcelable_update_engine_status.cc
  93. parcelable_update_engine_status.h
  94. payload_state.cc
  95. payload_state.h
  96. payload_state_interface.h
  97. payload_state_unittest.cc
  98. PRESUBMIT.cfg
  99. proxy_resolver.cc
  100. proxy_resolver.h
  101. real_system_state.cc
  102. real_system_state.h
  103. run_unittests
  104. sample_omaha_v3_response.xml
  105. service_delegate_android_interface.h
  106. service_observer_interface.h
  107. shill_proxy.cc
  108. shill_proxy.h
  109. shill_proxy_interface.h
  110. system_state.h
  111. tar_bunzip2.gypi
  112. test_http_server.cc
  113. testrunner.cc
  114. unittest_key.pem
  115. unittest_key2.pem
  116. update_attempter.cc
  117. update_attempter.h
  118. update_attempter_android.cc
  119. update_attempter_android.h
  120. update_attempter_unittest.cc
  121. update_engine-client.gyp
  122. update_engine.conf
  123. update_engine.gyp
  124. update_engine.rc
  125. update_engine_client.cc
  126. update_engine_client_android.cc
  127. update_metadata.proto
  128. update_status_utils.cc
  129. update_status_utils.h
  130. UpdateEngine.conf
  131. WATCHLISTS
  132. weave_service.cc
  133. weave_service.h
  134. weave_service_factory.cc
  135. weave_service_factory.h
  136. weave_service_interface.h