summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2020-04-16 13:18:52 +0800
committerCommit Bot <commit-bot@chromium.org>2020-04-17 12:52:37 +0000
commit297ea05cf12ce31156f8648983431332b50c995c (patch)
tree43b6b669e042e2609bcb54a836afe5b98f38f848 /tests
parent860328536239e78ec33c1c7132ac0e98121f07eb (diff)
downloadvboot-297ea05cf12ce31156f8648983431332b50c995c.tar.gz
vboot: remove VBERROR_TPM_SET_BOOT_MODE_STATE error code
Since secdata and nvdata get/set functions no longer return error codes, and instead use VB2_ASSERT and VB2_DIE to abort on failure, vb2_enable_developer_mode no longer has any error code to return. Change the function return type to void, and remove checks around the function call. As a result, VBERROR_TPM_SET_BOOT_MODE_STATE becomes unused and we may remove it. Finally, move the USB_BOOT_ON_DEV logic (enable USB boot when on transition to dev mode) into vb2_enable_developer_mode. Also add unit tests. BUG=b:124141368, chromium:988410 TEST=make clean && make runtests BRANCH=none Change-Id: I286d9343c4c751ff24bf4c149a26fbe5306e383a Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2152212 Reviewed-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/vb2_misc_tests.c24
-rw-r--r--tests/vboot_legacy_clamshell_tests.c18
-rw-r--r--tests/vboot_legacy_menu_tests.c18
3 files changed, 41 insertions, 19 deletions
diff --git a/tests/vb2_misc_tests.c b/tests/vb2_misc_tests.c
index 493aab45..4c56c8f1 100644
--- a/tests/vb2_misc_tests.c
+++ b/tests/vb2_misc_tests.c
@@ -637,6 +637,29 @@ static void dev_switch_tests(void)
TEST_EQ(vb2_nv_get(ctx, VB2_NV_REQ_WIPEOUT), 1, " nv wipeout");
}
+static void enable_dev_tests(void)
+{
+ reset_common_data();
+ vb2_enable_developer_mode(ctx);
+ TEST_NEQ(vb2_secdata_firmware_get(ctx, VB2_SECDATA_FIRMWARE_FLAGS) &
+ VB2_SECDATA_FIRMWARE_FLAG_DEV_MODE, 0,
+ "dev mode flag set");
+ TEST_EQ(vb2_nv_get(ctx, VB2_NV_DEV_BOOT_USB), USB_BOOT_ON_DEV,
+ "NV_DEV_BOOT_USB set according to compile-time flag");
+
+ /* secdata_firmware not initialized, aborts */
+ reset_common_data();
+ sd->status &= ~VB2_SD_STATUS_SECDATA_FIRMWARE_INIT;
+ TEST_ABORT(vb2_enable_developer_mode(ctx),
+ "secdata_firmware no init, enable dev mode aborted");
+ sd->status |= VB2_SD_STATUS_SECDATA_FIRMWARE_INIT;
+ TEST_EQ(vb2_secdata_firmware_get(ctx, VB2_SECDATA_FIRMWARE_FLAGS) &
+ VB2_SECDATA_FIRMWARE_FLAG_DEV_MODE, 0,
+ "dev mode flag not set");
+ TEST_EQ(vb2_nv_get(ctx, VB2_NV_DEV_BOOT_USB), 0,
+ "NV_DEV_BOOT_USB not set");
+}
+
static void tpm_clear_tests(void)
{
/* No clear request */
@@ -929,6 +952,7 @@ int main(int argc, char* argv[])
fail_tests();
recovery_tests();
dev_switch_tests();
+ enable_dev_tests();
tpm_clear_tests();
select_slot_tests();
need_reboot_for_display_tests();
diff --git a/tests/vboot_legacy_clamshell_tests.c b/tests/vboot_legacy_clamshell_tests.c
index 48ae6add..054a2239 100644
--- a/tests/vboot_legacy_clamshell_tests.c
+++ b/tests/vboot_legacy_clamshell_tests.c
@@ -39,7 +39,7 @@ static enum VbAltFwIndex_t altfw_num;
static uint64_t current_ticks;
static int trust_ec;
static int virtdev_set;
-static uint32_t virtdev_retval;
+static uint32_t virtdev_fail;
static uint32_t mock_keypress[16];
static uint32_t mock_keyflags[8];
static uint32_t mock_keypress_count;
@@ -108,7 +108,7 @@ static void ResetMocks(void)
current_ticks = 0;
trust_ec = 0;
virtdev_set = 0;
- virtdev_retval = 0;
+ virtdev_fail = 0;
set_vendor_data_called = 0;
memset(screens_displayed, 0, sizeof(screens_displayed));
@@ -267,10 +267,10 @@ vb2_error_t VbDisplayScreen(struct vb2_context *c, uint32_t screen, int force,
return VB2_SUCCESS;
}
-vb2_error_t vb2_enable_developer_mode(struct vb2_context *c)
+void vb2_enable_developer_mode(struct vb2_context *c)
{
+ VB2_ASSERT(!virtdev_fail);
virtdev_set = 1;
- return virtdev_retval;
}
vb2_error_t VbExSetVendorData(const char *vendor_data_value)
@@ -1438,7 +1438,7 @@ static void VbBootRecTest(void)
VbBootRecTestGpio(GPIO_PRESENCE | GPIO_SHUTDOWN, GPIO_PRESENCE, 0, 0,
"Ctrl+D todev confirm via both then presence");
- /* Handle TPM error in enabling dev mode */
+ /* Don't handle TPM error in enabling dev mode */
ResetMocks();
sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
MockGpioAfter(10, GPIO_SHUTDOWN);
@@ -1447,11 +1447,11 @@ static void VbBootRecTest(void)
mock_keypress[0] = VB_KEY_CTRL('D');
mock_keypress[1] = VB_KEY_ENTER;
mock_keyflags[1] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
- virtdev_retval = VB2_ERROR_MOCK;
+ virtdev_fail = 1;
vbtlk_expect_removable = 1;
- TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
- VBERROR_TPM_SET_BOOT_MODE_STATE,
- "Ctrl+D todev failure");
+ TEST_ABORT(VbBootRecoveryLegacyClamshell(ctx),
+ "Ctrl+D todev failure");
+ TEST_EQ(virtdev_set, 0, " virtual dev mode still off");
/* Test Diagnostic Mode via Ctrl-C - display available */
ResetMocks();
diff --git a/tests/vboot_legacy_menu_tests.c b/tests/vboot_legacy_menu_tests.c
index 5e010a15..39eb0184 100644
--- a/tests/vboot_legacy_menu_tests.c
+++ b/tests/vboot_legacy_menu_tests.c
@@ -42,7 +42,7 @@ static enum VbAltFwIndex_t altfw_num;
static int debug_info_displayed;
static int trust_ec;
static int virtdev_set;
-static uint32_t virtdev_retval;
+static uint32_t virtdev_fail;
static uint32_t mock_keypress[64];
static uint32_t mock_keyflags[64];
static uint32_t mock_keypress_count;
@@ -78,7 +78,7 @@ static void ResetMocks(void)
debug_info_displayed = 0;
trust_ec = 0;
virtdev_set = 0;
- virtdev_retval = 0;
+ virtdev_fail = 0;
vbtlk_last_retval = vbtlk_retval_fixed - VB_DISK_FLAG_FIXED;
memset(vbtlk_retval, 0, sizeof(vbtlk_retval));
@@ -226,10 +226,10 @@ vb2_error_t VbExBeep(uint32_t msec, uint32_t frequency)
return VB2_SUCCESS;
}
-vb2_error_t vb2_enable_developer_mode(struct vb2_context *c)
+void vb2_enable_developer_mode(struct vb2_context *c)
{
+ VB2_ASSERT(!virtdev_fail);
virtdev_set = 1;
- return virtdev_retval;
}
/* Tests */
@@ -1705,7 +1705,7 @@ static void VbBootRecTest(void)
TEST_EQ(beeps_played[0], 400, " first beep");
TEST_EQ(beeps_played[1], 400, " second beep");
- /* Handle TPM error in enabling dev mode */
+ /* Don't handle TPM error in enabling dev mode */
ResetMocksForManualRecovery();
i = 0;
mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
@@ -1713,13 +1713,12 @@ static void VbBootRecTest(void)
mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // confirm enabling
mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
- virtdev_retval = VB2_ERROR_MOCK;
- TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VBERROR_TPM_SET_BOOT_MODE_STATE,
- "todev TPM failure");
+ virtdev_fail = 1;
+ TEST_ABORT(VbBootRecoveryLegacyMenu(ctx), "todev TPM failure");
TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, " no recovery");
TEST_EQ(debug_info_displayed, 0, " no debug info");
TEST_NEQ(shutdown_request_calls_left, 0, " aborted explicitly");
- TEST_EQ(virtdev_set, 1, " virtual dev mode on");
+ TEST_EQ(virtdev_set, 0, " virtual dev mode still off");
i = 0;
TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_NO_GOOD,
" nogood screen");
@@ -1727,7 +1726,6 @@ static void VbBootRecTest(void)
" recovery to_dev menu: cancel");
TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
" recovery to_dev menu: confirm disabling os verification");
- TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK," final blank screen");
TEST_EQ(screens_count, i, " no extra screens");
TEST_EQ(beeps_count, 0, " no beeps");