diff options
author | Randall Spangler <rspangler@chromium.org> | 2018-01-04 16:08:47 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-01-09 14:14:17 -0800 |
commit | 98616d79c6b60c719bc3e37f7f82028e77983d94 (patch) | |
tree | 3f060169830ac25f0c907d2c88052388805b1714 /tests/vboot_display_tests.c | |
parent | 79c1c6194bc45728a5043443d80506fa1d35c83b (diff) | |
download | vboot-98616d79c6b60c719bc3e37f7f82028e77983d94.tar.gz |
firmware: Prune down old region API
The region API was a way for firmware and kernel verification to get
at various blocks of caller-provided data. In practice, we only used
it internally as a way to get at parts of the GBB. Prune it down to
access only the bits of GBB we still need, from the buffer we already
know we have.
In the long run we should use the same vb2ex_read_resource() API that
vb2 firmware verification does, but that should be done in a follow-up
CL since it'll need to be coordinated with support in depthcharge.
No change in functionality.
BUG=chromium:611535
BRANCH=none
TEST=make -j runtests; build bob firmware and boot it
Change-Id: I5715cb8d88274164a1a73ed4a56bbd93af46f9bf
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/852798
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Diffstat (limited to 'tests/vboot_display_tests.c')
-rw-r--r-- | tests/vboot_display_tests.c | 60 |
1 files changed, 23 insertions, 37 deletions
diff --git a/tests/vboot_display_tests.c b/tests/vboot_display_tests.c index 7ddc28e9..a6d2b9f4 100644 --- a/tests/vboot_display_tests.c +++ b/tests/vboot_display_tests.c @@ -15,9 +15,9 @@ #include "2misc.h" #include "2nvstorage.h" #include "bmpblk_font.h" +#include "gbb_access.h" #include "gbb_header.h" #include "host_common.h" -#include "region.h" #include "test_common.h" #include "vboot_common.h" #include "vboot_display.h" @@ -31,6 +31,7 @@ static char gbb_data[4096 + sizeof(GoogleBinaryBlockHeader)]; static GoogleBinaryBlockHeader *gbb = (GoogleBinaryBlockHeader *)gbb_data; static char debug_info[4096]; static struct vb2_context ctx; +struct vb2_shared_data *sd; static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]; static uint32_t mock_localization_count; @@ -55,12 +56,6 @@ static void ResetMocks(void) memset(&cparams, 0, sizeof(cparams)); cparams.gbb_data = gbb; cparams.gbb_size = sizeof(gbb_data); - - /* - * Note, VbApiKernelFree() expects this to be allocated by - * malloc(), so we cannot just assign it staticly. - */ - cparams.gbb = malloc(sizeof(*gbb)); gbb->header_size = sizeof(*gbb); gbb->rootkey_offset = gbb_used; gbb->rootkey_size = 64; @@ -68,7 +63,6 @@ static void ResetMocks(void) gbb->recovery_key_offset = gbb_used; gbb->recovery_key_size = 64; gbb_used += 64; - memcpy(cparams.gbb, gbb, sizeof(*gbb)); memset(&ctx, 0, sizeof(ctx)); ctx.workbuf = workbuf; @@ -76,8 +70,10 @@ static void ResetMocks(void) vb2_init_context(&ctx); vb2_nv_init(&ctx); - struct vb2_shared_data *sd = vb2_get_sd(&ctx); + sd = vb2_get_sd(&ctx); sd->vbsd = shared; + sd->gbb = (struct vb2_gbb_header *)gbb_data; + sd->gbb_size = sizeof(gbb_data); memset(&shared_data, 0, sizeof(shared_data)); VbSharedDataInit(shared, sizeof(shared_data)); @@ -106,7 +102,7 @@ VbError_t VbExDisplayDebugInfo(const char *info_str) /* Test displaying debug info */ static void DebugInfoTest(void) { - char hwid[VB_REGION_HWID_LEN]; + char hwid[256]; int i; /* Recovery string should be non-null for any code */ @@ -115,82 +111,72 @@ static void DebugInfoTest(void) /* HWID should come from the gbb */ ResetMocks(); - VbRegionReadHWID(&cparams, hwid, sizeof(hwid)); + VbGbbReadHWID(&ctx, hwid, sizeof(hwid)); TEST_EQ(strcmp(hwid, "Test HWID"), 0, "HWID"); - VbApiKernelFree(&cparams); ResetMocks(); - cparams.gbb_size = 0; - VbRegionReadHWID(&cparams, hwid, sizeof(hwid)); + sd->gbb_size = 0; + VbGbbReadHWID(&ctx, hwid, sizeof(hwid)); TEST_EQ(strcmp(hwid, "{INVALID}"), 0, "HWID bad gbb"); - VbApiKernelFree(&cparams); ResetMocks(); - cparams.gbb->hwid_size = 0; - VbRegionReadHWID(&cparams, hwid, sizeof(hwid)); + sd->gbb->hwid_size = 0; + VbGbbReadHWID(&ctx, hwid, sizeof(hwid)); TEST_EQ(strcmp(hwid, "{INVALID}"), 0, "HWID missing"); - VbApiKernelFree(&cparams); ResetMocks(); - cparams.gbb->hwid_offset = cparams.gbb_size + 1; - VbRegionReadHWID(&cparams, hwid, sizeof(hwid)); + sd->gbb->hwid_offset = sd->gbb_size + 1; + VbGbbReadHWID(&ctx, hwid, sizeof(hwid)); TEST_EQ(strcmp(hwid, "{INVALID}"), 0, "HWID past end"); - VbApiKernelFree(&cparams); ResetMocks(); - cparams.gbb->hwid_size = cparams.gbb_size; - VbRegionReadHWID(&cparams, hwid, sizeof(hwid)); + sd->gbb->hwid_size = sd->gbb_size; + VbGbbReadHWID(&ctx, hwid, sizeof(hwid)); TEST_EQ(strcmp(hwid, "{INVALID}"), 0, "HWID overflow"); - VbApiKernelFree(&cparams); /* Display debug info */ ResetMocks(); - VbDisplayDebugInfo(&ctx, &cparams); + VbDisplayDebugInfo(&ctx); TEST_NEQ(*debug_info, '\0', "Some debug info was displayed"); - VbApiKernelFree(&cparams); } /* Test display key checking */ static void DisplayKeyTest(void) { ResetMocks(); - VbCheckDisplayKey(&ctx, &cparams, 'q'); + VbCheckDisplayKey(&ctx, 'q'); TEST_EQ(*debug_info, '\0', "DisplayKey q = does nothing"); - VbApiKernelFree(&cparams); ResetMocks(); - VbCheckDisplayKey(&ctx, &cparams, '\t'); + VbCheckDisplayKey(&ctx, '\t'); TEST_NEQ(*debug_info, '\0', "DisplayKey tab = display"); - VbApiKernelFree(&cparams); /* Toggle localization */ ResetMocks(); vb2_nv_set(&ctx, VB2_NV_LOCALIZATION_INDEX, 0); - VbCheckDisplayKey(&ctx, &cparams, VB_KEY_DOWN); + VbCheckDisplayKey(&ctx, VB_KEY_DOWN); TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 2, "DisplayKey up"); - VbCheckDisplayKey(&ctx, &cparams, VB_KEY_LEFT); + VbCheckDisplayKey(&ctx, VB_KEY_LEFT); vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX); TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 1, "DisplayKey left"); - VbCheckDisplayKey(&ctx, &cparams, VB_KEY_RIGHT); + VbCheckDisplayKey(&ctx, VB_KEY_RIGHT); vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX); TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 2, "DisplayKey right"); - VbCheckDisplayKey(&ctx, &cparams, VB_KEY_UP); + VbCheckDisplayKey(&ctx, VB_KEY_UP); vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX); TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 0, "DisplayKey up"); - VbApiKernelFree(&cparams); /* Reset localization if localization count is invalid */ ResetMocks(); vb2_nv_set(&ctx, VB2_NV_LOCALIZATION_INDEX, 1); mock_localization_count = 0xffffffff; - VbCheckDisplayKey(&ctx, &cparams, VB_KEY_UP); + VbCheckDisplayKey(&ctx, VB_KEY_UP); TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 0, "DisplayKey invalid"); - VbApiKernelFree(&cparams); } int main(void) |