diff options
Diffstat (limited to 'tests/vb2_kernel_tests.c')
-rw-r--r-- | tests/vb2_kernel_tests.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/vb2_kernel_tests.c b/tests/vb2_kernel_tests.c index c2741b4d..67b6b486 100644 --- a/tests/vb2_kernel_tests.c +++ b/tests/vb2_kernel_tests.c @@ -213,6 +213,11 @@ static void phase1_tests(void) " key data"); TEST_EQ(sd->kernel_version_secdata, 0x20002, " secdata_kernel version"); + + /* Test flags for experimental features in non-recovery path */ + reset_common_data(FOR_PHASE1); + ctx->flags &= ~VB2_CONTEXT_RECOVERY_MODE; + TEST_SUCC(vb2api_kernel_phase1(ctx), "phase1 non-rec good"); /* Make sure phone recovery functionality is enabled, but UI disabled */ TEST_EQ(vb2api_phone_recovery_enabled(ctx), 1, " phone recovery enabled"); @@ -222,6 +227,27 @@ static void phase1_tests(void) TEST_EQ(vb2api_diagnostic_ui_enabled(ctx), 0, " diagnostic ui disabled"); + /* + * Test flags are unchanged for experimental features in recovery path + */ + + /* Set 8 bits to 0 */ + reset_common_data(FOR_PHASE1); + ctx->flags |= VB2_CONTEXT_RECOVERY_MODE; + vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, 0); + TEST_SUCC(vb2api_kernel_phase1(ctx), "phase1 rec good"); + TEST_EQ(vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_FLAGS), 0, + "VB2_SECDATA_KERNEL_FLAGS remains unchanged in recovery path"); + + /* Set 8 bits to 1 */ + reset_common_data(FOR_PHASE1); + ctx->flags |= VB2_CONTEXT_RECOVERY_MODE; + vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, UINT8_MAX); + TEST_SUCC(vb2api_kernel_phase1(ctx), "phase1 rec good"); + TEST_EQ(vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_FLAGS), + UINT8_MAX, + "VB2_SECDATA_KERNEL_FLAGS remains unchanged in recovery path"); + /* Bad secdata_fwmp causes failure in normal mode only */ reset_common_data(FOR_PHASE1); mock_secdata_fwmp_check_retval = VB2_ERROR_SECDATA_FWMP_CRC; |