summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-06-13 16:43:59 -0700
committerGerrit <chrome-bot@google.com>2012-06-14 18:57:52 -0700
commitacd6f4688abb9a0253bb469a8a52046c97281347 (patch)
tree7960d5838caa2bb7d11c199ba70f1747947b5196 /tests
parent3dae2288bb33a2a1bdc839f5e1e72f7507387926 (diff)
downloadvboot-acd6f4688abb9a0253bb469a8a52046c97281347.tar.gz
Add GBB flags to enable dev mode by default
And enable dev_boot_usb by default. And disable rollback checks. The first flag is necessary for factory to build with keyboard controlled dev mode. The other flags are really handy for development on systems where you've defeated firmware WP and are installing custom firmware. BUG=chromium-os:31844 TEST=make && make runtests Signed-off-by: Randall Spangler <rspangler@chromium.org> Change-Id: I9d837fee676cb0186ea98f13005ad60a9ab86393 Reviewed-on: https://gerrit.chromium.org/gerrit/25265 Tested-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org> Commit-Ready: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/vboot_api_init_tests.c15
-rw-r--r--tests/vboot_firmware_tests.c19
2 files changed, 33 insertions, 1 deletions
diff --git a/tests/vboot_api_init_tests.c b/tests/vboot_api_init_tests.c
index ec1e7fa9..28a43d88 100644
--- a/tests/vboot_api_init_tests.c
+++ b/tests/vboot_api_init_tests.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -211,6 +211,19 @@ static void VbInitTest(void) {
VB_INIT_OUT_ENABLE_ALTERNATE_OS, " out flags");
TEST_EQ(shared->flags, VBSD_BOOT_DEV_SWITCH_ON, " shared flags");
+ /* Developer mode forced by GBB flag */
+ ResetMocks();
+ iparams.flags = 0;
+ gbb.flags = GBB_FLAG_FORCE_DEV_SWITCH_ON;
+ TestVbInit(0, 0, "Dev mode via GBB");
+ TEST_EQ(shared->recovery_reason, 0, " recovery reason");
+ TEST_EQ(iparams.out_flags,
+ VB_INIT_OUT_CLEAR_RAM |
+ VB_INIT_OUT_ENABLE_DISPLAY |
+ VB_INIT_OUT_ENABLE_USB_STORAGE |
+ VB_INIT_OUT_ENABLE_ALTERNATE_OS, " out flags");
+ TEST_EQ(shared->flags, VBSD_BOOT_DEV_SWITCH_ON, " shared flags");
+
/* Recovery mode from NV storage */
ResetMocks();
VbNvSet(&vnc, VBNV_RECOVERY_REQUEST, 123);
diff --git a/tests/vboot_firmware_tests.c b/tests/vboot_firmware_tests.c
index 7a023226..0443b061 100644
--- a/tests/vboot_firmware_tests.c
+++ b/tests/vboot_firmware_tests.c
@@ -253,6 +253,14 @@ static void LoadFirmwareTest(void) {
TEST_EQ(shared->check_fw_b_result, VBSD_LF_CHECK_DATA_KEY_PARSE,
"Data key invalid");
+ /* Test invalid key version with GBB bypass-rollback flag */
+ ResetMocks();
+ vblock[0].data_key.key_version = 1; /* Simulate rollback */
+ gbb->flags = GBB_FLAG_DISABLE_FW_ROLLBACK_CHECK;
+ TestLoadFirmware(VBERROR_SUCCESS, 0, "Key version check + GBB override");
+ TEST_EQ(shared->check_fw_a_result, VBSD_LF_CHECK_VALID,
+ "Key version rollback + GBB override");
+
/* Test invalid preamble with A */
ResetMocks();
mpreamble[0].header_version_major = 1; /* Simulate failure */
@@ -277,6 +285,17 @@ static void LoadFirmwareTest(void) {
TEST_EQ(shared->check_fw_b_result, VBSD_LF_CHECK_FW_ROLLBACK,
"Firmware version overflow");
+ /* Test invalid firmware versions with GBB bypass-rollback flag */
+ ResetMocks();
+ mpreamble[0].firmware_version = 3; /* Simulate rollback */
+ mpreamble[1].firmware_version = 0x10001; /* Check overflow */
+ gbb->flags = GBB_FLAG_DISABLE_FW_ROLLBACK_CHECK;
+ TestLoadFirmware(VBERROR_SUCCESS, 0, "Firmware version check + GBB bypass");
+ TEST_EQ(shared->check_fw_a_result, VBSD_LF_CHECK_VALID,
+ "Firmware version rollback + GBB override");
+ TEST_EQ(shared->check_fw_b_result, VBSD_LF_CHECK_HEADER_VALID,
+ "Firmware version overflow + GBB override");
+
/* Test RO normal with A */
ResetMocks();
mpreamble[0].flags = VB_FIRMWARE_PREAMBLE_USE_RO_NORMAL;