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.

Change-Id: I25e0172fb074392488d96cd00e711c68adfa0e7f
1 file changed
tree: 468b086ef5a79d718d84f9c4970d42aa4b0e1b4e
  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. hardware_chromeos_unittest.cc
  56. image_properties.h
  57. image_properties_android.cc
  58. image_properties_chromeos.cc
  59. image_properties_chromeos_unittest.cc
  60. libcros_proxy.cc
  61. libcros_proxy.h
  62. libupdate_engine-client-test.pc.in
  63. libupdate_engine-client.pc.in
  64. local_coverage_rate
  65. main.cc
  66. metrics.cc
  67. metrics.h
  68. metrics_utils.cc
  69. metrics_utils.h
  70. metrics_utils_unittest.cc
  71. mock_connection_manager.h
  72. mock_file_writer.h
  73. mock_omaha_request_params.h
  74. mock_p2p_manager.h
  75. mock_payload_state.h
  76. mock_proxy_resolver.h
  77. mock_update_attempter.h
  78. MODULE_LICENSE_APACHE2
  79. NOTICE
  80. omaha_request_action.cc
  81. omaha_request_action.h
  82. omaha_request_action_unittest.cc
  83. omaha_request_params.cc
  84. omaha_request_params.h
  85. omaha_request_params_unittest.cc
  86. omaha_response.h
  87. omaha_response_handler_action.cc
  88. omaha_response_handler_action.h
  89. omaha_response_handler_action_unittest.cc
  90. omaha_utils.cc
  91. omaha_utils.h
  92. omaha_utils_unittest.cc
  93. OWNERS
  94. p2p_manager.cc
  95. p2p_manager.h
  96. p2p_manager_unittest.cc
  97. parcelable_update_engine_status.cc
  98. parcelable_update_engine_status.h
  99. payload_state.cc
  100. payload_state.h
  101. payload_state_interface.h
  102. payload_state_unittest.cc
  103. PRESUBMIT.cfg
  104. proxy_resolver.cc
  105. proxy_resolver.h
  106. real_system_state.cc
  107. real_system_state.h
  108. run_unittests
  109. sample_omaha_v3_response.xml
  110. service_delegate_android_interface.h
  111. service_observer_interface.h
  112. shill_proxy.cc
  113. shill_proxy.h
  114. shill_proxy_interface.h
  115. system_state.h
  116. tar_bunzip2.gypi
  117. test_http_server.cc
  118. test_subprocess.cc
  119. testrunner.cc
  120. unittest_key.pem
  121. unittest_key2.pem
  122. update_attempter.cc
  123. update_attempter.h
  124. update_attempter_android.cc
  125. update_attempter_android.h
  126. update_attempter_unittest.cc
  127. update_engine-client.gyp
  128. update_engine.conf
  129. update_engine.gyp
  130. update_engine.rc
  131. update_engine_client.cc
  132. update_engine_client_android.cc
  133. update_metadata.proto
  134. update_status_utils.cc
  135. update_status_utils.h
  136. UpdateEngine.conf
  137. WATCHLISTS
  138. weave_service.cc
  139. weave_service.h
  140. weave_service_factory.cc
  141. weave_service_factory.h
  142. weave_service_interface.h