Correctly report firmware update failure if RO needs update.

If the RO Firmware needs updating but can't be because it's
really RO, then report a new erro code (43) back to Omaha.

This normally only happens during board bringup when the RO
firmware is locked prematurely. We want to know these devices
exist so we can replace them.

BUG=chromium:218555
TEST=Build/unittests. Did NOT test on hardware with bug.

Change-Id: I383a999f1b175c378bef936c55d87565d8113336
Reviewed-on: https://gerrit.chromium.org/gerrit/63841
Commit-Queue: Don Garrett <dgarrett@chromium.org>
Reviewed-by: Don Garrett <dgarrett@chromium.org>
Tested-by: Don Garrett <dgarrett@chromium.org>
6 files changed
tree: 7b79ab5091b2e572c42adfbe8264b5683a2f2af1
  1. .gitignore
  2. 99-gpio-dutflag.rules
  3. action.h
  4. action_mock.h
  5. action_pipe.h
  6. action_pipe_unittest.cc
  7. action_processor.cc
  8. action_processor.h
  9. action_processor_mock.h
  10. action_processor_unittest.cc
  11. action_unittest.cc
  12. build
  13. bzip.cc
  14. bzip.h
  15. bzip_extent_writer.cc
  16. bzip_extent_writer.h
  17. bzip_extent_writer_unittest.cc
  18. certificate_checker.cc
  19. certificate_checker.h
  20. certificate_checker_mock.h
  21. certificate_checker_unittest.cc
  22. chrome_browser_proxy_resolver.cc
  23. chrome_browser_proxy_resolver.h
  24. chrome_browser_proxy_resolver_unittest.cc
  25. clock.cc
  26. clock.h
  27. clock_interface.h
  28. connection_manager.cc
  29. connection_manager.h
  30. connection_manager_unittest.cc
  31. constants.cc
  32. constants.h
  33. cycle_breaker.cc
  34. cycle_breaker.h
  35. cycle_breaker_unittest.cc
  36. dbus_constants.h
  37. dbus_interface.h
  38. dbus_service.cc
  39. dbus_service.h
  40. delta_diff_generator.cc
  41. delta_diff_generator.h
  42. delta_diff_generator_unittest.cc
  43. delta_performer.cc
  44. delta_performer.h
  45. delta_performer_unittest.cc
  46. download_action.cc
  47. download_action.h
  48. download_action_unittest.cc
  49. error_code.h
  50. extent_mapper.cc
  51. extent_mapper.h
  52. extent_mapper_unittest.cc
  53. extent_ranges.cc
  54. extent_ranges.h
  55. extent_ranges_unittest.cc
  56. extent_writer.cc
  57. extent_writer.h
  58. extent_writer_unittest.cc
  59. fake_clock.h
  60. fake_hardware.cc
  61. fake_hardware.h
  62. file_descriptor.cc
  63. file_descriptor.h
  64. file_writer.cc
  65. file_writer.h
  66. file_writer_mock.h
  67. file_writer_unittest.cc
  68. filesystem_copier_action.cc
  69. filesystem_copier_action.h
  70. filesystem_copier_action_unittest.cc
  71. filesystem_iterator.cc
  72. filesystem_iterator.h
  73. filesystem_iterator_unittest.cc
  74. full_update_generator.cc
  75. full_update_generator.h
  76. full_update_generator_unittest.cc
  77. gen_coverage_html
  78. generate_delta_main.cc
  79. gpio_handler.cc
  80. gpio_handler.h
  81. gpio_handler_unittest.cc
  82. gpio_handler_unittest.h
  83. gpio_mock_file_descriptor.cc
  84. gpio_mock_file_descriptor.h
  85. gpio_mock_udev_interface.cc
  86. gpio_mock_udev_interface.h
  87. graph_types.h
  88. graph_utils.cc
  89. graph_utils.h
  90. graph_utils_unittest.cc
  91. hardware.cc
  92. hardware.h
  93. hardware_interface.h
  94. hardware_unittest.cc
  95. http_common.cc
  96. http_common.h
  97. http_fetcher.cc
  98. http_fetcher.h
  99. http_fetcher_unittest.cc
  100. inherit-review-settings-ok
  101. install_plan.cc
  102. install_plan.h
  103. libcurl_http_fetcher.cc
  104. libcurl_http_fetcher.h
  105. LICENSE
  106. local_coverage_rate
  107. main.cc
  108. marshal.list
  109. metadata.cc
  110. metadata.h
  111. metadata_unittest.cc
  112. mock_connection_manager.h
  113. mock_dbus_interface.h
  114. mock_file_writer.h
  115. mock_gpio_handler.h
  116. mock_http_fetcher.cc
  117. mock_http_fetcher.h
  118. mock_payload_state.h
  119. mock_system_state.cc
  120. mock_system_state.h
  121. multi_range_http_fetcher.cc
  122. multi_range_http_fetcher.h
  123. omaha_hash_calculator.cc
  124. omaha_hash_calculator.h
  125. omaha_hash_calculator_unittest.cc
  126. omaha_request_action.cc
  127. omaha_request_action.h
  128. omaha_request_action_unittest.cc
  129. omaha_request_params.cc
  130. omaha_request_params.h
  131. omaha_request_params_unittest.cc
  132. omaha_response.h
  133. omaha_response_handler_action.cc
  134. omaha_response_handler_action.h
  135. omaha_response_handler_action_unittest.cc
  136. org.chromium.UpdateEngine.service
  137. payload_signer.cc
  138. payload_signer.h
  139. payload_signer_unittest.cc
  140. payload_state.cc
  141. payload_state.h
  142. payload_state_interface.h
  143. payload_state_unittest.cc
  144. postinstall_runner_action.cc
  145. postinstall_runner_action.h
  146. postinstall_runner_action_unittest.cc
  147. prefs.cc
  148. prefs.h
  149. prefs_interface.h
  150. prefs_mock.h
  151. prefs_unittest.cc
  152. proxy_resolver.cc
  153. proxy_resolver.h
  154. real_system_state.h
  155. run_unittests
  156. sample_omaha_v3_response.xml
  157. SConstruct
  158. setup_dev_packages
  159. simple_key_value_store.cc
  160. simple_key_value_store.h
  161. simple_key_value_store_unittest.cc
  162. subprocess.cc
  163. subprocess.h
  164. subprocess_unittest.cc
  165. system_state.cc
  166. system_state.h
  167. tarjan.cc
  168. tarjan.h
  169. tarjan_unittest.cc
  170. terminator.cc
  171. terminator.h
  172. terminator_unittest.cc
  173. test_http_server.cc
  174. test_utils.cc
  175. test_utils.h
  176. testrunner.cc
  177. topological_sort.cc
  178. topological_sort.h
  179. topological_sort_unittest.cc
  180. udev_interface.h
  181. unittest_key.pem
  182. unittest_key2.pem
  183. update_attempter.cc
  184. update_attempter.h
  185. update_attempter_mock.h
  186. update_attempter_unittest.cc
  187. update_check_scheduler.cc
  188. update_check_scheduler.h
  189. update_check_scheduler_unittest.cc
  190. update_engine.xml
  191. update_engine_client.cc
  192. update_metadata.proto
  193. UpdateEngine.conf
  194. utils.cc
  195. utils.h
  196. utils_unittest.cc
  197. WATCHLISTS
  198. zip_unittest.cc