summaryrefslogtreecommitdiff
path: root/tests/vb2_kernel_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vb2_kernel_tests.c')
-rw-r--r--tests/vb2_kernel_tests.c26
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;