summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/vboot_api_kernel4_tests.c52
-rw-r--r--tests/vboot_api_kernel5_tests.c24
2 files changed, 43 insertions, 33 deletions
diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c
index fb27add8..ab9d557f 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -25,9 +25,8 @@
#include "vboot_struct.h"
/* Mock data */
-static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE];
static struct vb2_context ctx;
-static struct vb2_shared_data *sd;
+static struct vb2_context ctx_nvram_backend;
static VbCommonParams cparams;
static VbSelectAndLoadKernelParams kparams;
static uint8_t shared_data[VB_SHARED_DATA_MIN_SIZE];
@@ -60,15 +59,20 @@ static void ResetMocks(void)
gbb.minor_version = GBB_MINOR_VER;
gbb.flags = 0;
+ /* ctx.workbuf will be allocated and initialized by
+ * VbSelectAndLoadKernel. */
memset(&ctx, 0, sizeof(ctx));
- ctx.workbuf = workbuf;
- ctx.workbuf_size = sizeof(workbuf);
- vb2_init_context(&ctx);
- vb2_nv_init(&ctx);
- vb2_nv_set(&ctx, VB2_NV_KERNEL_MAX_ROLLFORWARD, 0xffffffff);
- sd = vb2_get_sd(&ctx);
- sd->vbsd = shared;
+ /*
+ * ctx_nvram_backend is only used as an NVRAM backend (see
+ * VbExNvStorageRead and VbExNvStorageWrite), and with
+ * vb2_set_nvdata and nv2_get_nvdata to manually read and tweak
+ * contents. No other initialization is needed.
+ */
+ memset(&ctx_nvram_backend, 0, sizeof(ctx_nvram_backend));
+ vb2_nv_init(&ctx_nvram_backend);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_KERNEL_MAX_ROLLFORWARD,
+ 0xffffffff);
memset(&shared_data, 0, sizeof(shared_data));
VbSharedDataInit(shared, sizeof(shared_data));
@@ -89,13 +93,15 @@ static void ResetMocks(void)
VbError_t VbExNvStorageRead(uint8_t *buf)
{
- memcpy(buf, ctx.nvdata, vb2_nv_get_size(&ctx));
+ memcpy(buf, ctx_nvram_backend.nvdata,
+ vb2_nv_get_size(&ctx_nvram_backend));
return VBERROR_SUCCESS;
}
VbError_t VbExNvStorageWrite(const uint8_t *buf)
{
- memcpy(ctx.nvdata, buf, vb2_nv_get_size(&ctx));
+ memcpy(ctx_nvram_backend.nvdata, buf,
+ vb2_nv_get_size(&ctx_nvram_backend));
return VBERROR_SUCCESS;
}
@@ -163,7 +169,7 @@ VbError_t VbBootDiagnostic(struct vb2_context *ctx)
static void test_slk(VbError_t retval, int recovery_reason, const char *desc)
{
TEST_EQ(VbSelectAndLoadKernel(&ctx, &cparams, &kparams), retval, desc);
- TEST_EQ(vb2_nv_get(&ctx, VB2_NV_RECOVERY_REQUEST),
+ TEST_EQ(vb2_nv_get(&ctx_nvram_backend, VB2_NV_RECOVERY_REQUEST),
recovery_reason, " recovery reason");
}
@@ -222,20 +228,20 @@ static void VbSlkTest(void)
TEST_EQ(rkr_version, 0x10002, " version");
ResetMocks();
- vb2_nv_set(&ctx, VB2_NV_KERNEL_MAX_ROLLFORWARD, 0x30005);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_KERNEL_MAX_ROLLFORWARD, 0x30005);
new_version = 0x40006;
test_slk(0, 0, "Limit max roll forward");
TEST_EQ(rkr_version, 0x30005, " version");
ResetMocks();
- vb2_nv_set(&ctx, VB2_NV_KERNEL_MAX_ROLLFORWARD, 0x10001);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_KERNEL_MAX_ROLLFORWARD, 0x10001);
new_version = 0x40006;
test_slk(0, 0, "Max roll forward can't rollback");
TEST_EQ(rkr_version, 0x10002, " version");
ResetMocks();
vbboot_retval = VBERROR_INVALID_KERNEL_FOUND;
- vb2_nv_set(&ctx, VB2_NV_RECOVERY_REQUEST, 123);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_RECOVERY_REQUEST, 123);
shared->flags |= VBSD_FWB_TRIED;
shared->firmware_index = 1;
test_slk(VBERROR_INVALID_KERNEL_FOUND,
@@ -261,26 +267,26 @@ static void VbSlkTest(void)
if (DIAGNOSTIC_UI) {
ResetMocks();
mock_switches[1] = VB_SWITCH_FLAG_PHYS_PRESENCE_PRESSED;
- vb2_nv_set(&ctx, VB2_NV_DIAG_REQUEST, 1);
- vb2_nv_set(&ctx, VB2_NV_OPROM_NEEDED, 1);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_DIAG_REQUEST, 1);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_OPROM_NEEDED, 1);
vbboot_retval = -4;
test_slk(VBERROR_SIMULATED, 0, "Normal boot with diag");
- TEST_EQ(vb2_nv_get(&ctx, VB2_NV_DIAG_REQUEST), 0,
+ TEST_EQ(vb2_nv_get(&ctx_nvram_backend, VB2_NV_DIAG_REQUEST), 0,
" diag not requested");
- TEST_EQ(vb2_nv_get(&ctx, VB2_NV_OPROM_NEEDED), 1,
+ TEST_EQ(vb2_nv_get(&ctx_nvram_backend, VB2_NV_OPROM_NEEDED), 1,
" oprom still needed");
ResetMocks();
mock_switches[1] = VB_SWITCH_FLAG_PHYS_PRESENCE_PRESSED;
- vb2_nv_set(&ctx, VB2_NV_DIAG_REQUEST, 1);
- vb2_nv_set(&ctx, VB2_NV_OPROM_NEEDED, 1);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_DIAG_REQUEST, 1);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_OPROM_NEEDED, 1);
shared->flags |= VBSD_OPROM_MATTERS;
vbboot_retval = -4;
test_slk(VBERROR_SIMULATED, 0,
"Normal boot with diag and oprom");
- TEST_EQ(vb2_nv_get(&ctx, VB2_NV_DIAG_REQUEST), 0,
+ TEST_EQ(vb2_nv_get(&ctx_nvram_backend, VB2_NV_DIAG_REQUEST), 0,
" diag not requested");
- TEST_EQ(vb2_nv_get(&ctx, VB2_NV_OPROM_NEEDED), 0,
+ TEST_EQ(vb2_nv_get(&ctx_nvram_backend, VB2_NV_OPROM_NEEDED), 0,
" oprom not needed");
}
diff --git a/tests/vboot_api_kernel5_tests.c b/tests/vboot_api_kernel5_tests.c
index d836349e..65899aec 100644
--- a/tests/vboot_api_kernel5_tests.c
+++ b/tests/vboot_api_kernel5_tests.c
@@ -27,9 +27,8 @@
#include "vboot_struct.h"
/* Mock data */
-static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE];
static struct vb2_context ctx;
-static struct vb2_shared_data *sd;
+static struct vb2_context ctx_nvram_backend;
static VbCommonParams cparams;
static VbSelectAndLoadKernelParams kparams;
static uint8_t shared_data[VB_SHARED_DATA_MIN_SIZE];
@@ -68,14 +67,18 @@ static void ResetMocks(void)
gbb->rootkey_offset = sizeof(*gbb);
gbb->rootkey_size = sizeof(VbPublicKey);
+ /* ctx.workbuf will be allocated and initialized by
+ * VbVerifyMemoryBootImage. */
memset(&ctx, 0, sizeof(ctx));
- ctx.workbuf = workbuf;
- ctx.workbuf_size = sizeof(workbuf);
- vb2_init_context(&ctx);
- vb2_nv_init(&ctx);
- sd = vb2_get_sd(&ctx);
- sd->vbsd = shared;
+ /*
+ * ctx_nvram_backend is only used as an NVRAM backend (see
+ * VbExNvStorageRead and VbExNvStorageWrite), and with
+ * vb2_set_nvdata and nv2_get_nvdata to manually read and tweak
+ * contents. No other initialization is needed.
+ */
+ memset(&ctx_nvram_backend, 0, sizeof(ctx_nvram_backend));
+ vb2_nv_init(&ctx_nvram_backend);
memset(&shared_data, 0, sizeof(shared_data));
VbSharedDataInit(shared, sizeof(shared_data));
@@ -174,7 +177,8 @@ int vb2_verify_data(const uint8_t *data,
VbError_t VbExNvStorageRead(uint8_t *buf)
{
- memcpy(buf, ctx.nvdata, vb2_nv_get_size(&ctx));
+ memcpy(buf, ctx_nvram_backend.nvdata,
+ vb2_nv_get_size(&ctx_nvram_backend));
return VBERROR_SUCCESS;
}
@@ -238,7 +242,7 @@ static void VerifyMemoryBootImageTest(void)
ResetMocks();
shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
key_block_verify_fail = 1;
- vb2_nv_set(&ctx, VB2_NV_DEV_BOOT_FASTBOOT_FULL_CAP, 1);
+ vb2_nv_set(&ctx_nvram_backend, VB2_NV_DEV_BOOT_FASTBOOT_FULL_CAP, 1);
TEST_EQ(VbVerifyMemoryBootImage(&ctx, &cparams, &kparams, kernel_buffer,
kernel_buffer_size),
VBERROR_INVALID_KERNEL_FOUND, "Key verify failed");