diff options
author | Yu-Ping Wu <yupingso@chromium.org> | 2020-04-01 16:36:48 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-04-20 15:21:06 +0000 |
commit | ecf8073bd306ca45d7b6551efe094f9a555f9985 (patch) | |
tree | 37d2fd86a0b04b6cc54b13d80cf06201c0cf32b0 /tests/vb2_secdata_kernel_tests.c | |
parent | cc719d12112eadb578480b26e323f0760e0c13f6 (diff) | |
download | vboot-ecf8073bd306ca45d7b6551efe094f9a555f9985.tar.gz |
vboot: Add vb2api_phone_recovery_enabled() to vboot API
In order to implement a kill switch for phone recovery in recovery UI,
add VB2_SECDATA_KERNEL_FLAGS to enum vb2_secdata_kernel_flags, and
add VB2_SECDATA_KERNEL_FLAG_PHONE_RECOVERY_DISABLED to the flags to
indicate whether to disable phone recovery. Set this flag to 1 in
vb2api_kernel_phase1().
Also add vb2api_phone_recovery_enabled() to vboot API.
BRANCH=none
BUG=b:146399181, b:147744345
TEST=make runtests
Change-Id: I65c8faa593f5f90dd762f0092058048983c5b3a2
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2131236
Reviewed-by: Joel Kitching <kitching@chromium.org>
Diffstat (limited to 'tests/vb2_secdata_kernel_tests.c')
-rw-r--r-- | tests/vb2_secdata_kernel_tests.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/vb2_secdata_kernel_tests.c b/tests/vb2_secdata_kernel_tests.c index 06f8474b..327018dc 100644 --- a/tests/vb2_secdata_kernel_tests.c +++ b/tests/vb2_secdata_kernel_tests.c @@ -214,6 +214,22 @@ static void secdata_kernel_access_test_v10(void) v = vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_VERSIONS); TEST_EQ(v, 0x123456ff, "Versions changed"); + /* Read/write flags */ + vb2api_secdata_kernel_create(ctx); + vb2_secdata_kernel_init(ctx); + ctx->flags = 0; + v = vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_FLAGS); + TEST_EQ(v, 0, "Flags created 0"); + test_changed(ctx, 0, "Get doesn't change data"); + vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, 0x12); + test_changed(ctx, 1, "Set changes data"); + vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, 0x12); + test_changed(ctx, 0, "Set again doesn't change data"); + v = vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_FLAGS); + TEST_EQ(v, 0x12, "Flags changed"); + TEST_ABORT(vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, 0x100), + "Bad flags"); + /* Invalid field fails */ TEST_ABORT(vb2_secdata_kernel_get(ctx, -1), "Get invalid"); TEST_ABORT(vb2_secdata_kernel_set(ctx, -1, 456), "Set invalid"); @@ -284,6 +300,13 @@ static void secdata_kernel_access_test_v02(void) v = vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_VERSIONS); TEST_EQ(v, 0x123456ff, "Versions changed"); + /* Read/write flags: should be no-op for v0 */ + TEST_EQ(vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_FLAGS), 0, + "Get flags"); + vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, 0x1); + TEST_EQ(vb2_secdata_kernel_get(ctx, VB2_SECDATA_KERNEL_FLAGS), 0, + "Get flags again"); + /* Invalid field fails */ TEST_ABORT(vb2_secdata_kernel_get(ctx, -1), "Get invalid"); TEST_ABORT(vb2_secdata_kernel_set(ctx, -1, 456), "Set invalid"); |