summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/vboot_api_devmode_tests.c1
-rw-r--r--tests/vboot_api_firmware_tests.c7
-rw-r--r--tests/vboot_api_init_tests.c1
-rw-r--r--tests/vboot_api_kernel2_tests.c1
-rw-r--r--tests/vboot_api_kernel4_tests.c1
-rw-r--r--tests/vboot_api_kernel_tests.c2
-rw-r--r--tests/vboot_audio_tests.c1
-rw-r--r--tests/vboot_display_tests.c55
-rw-r--r--tests/vboot_firmware_tests.c24
-rw-r--r--tests/vboot_kernel_tests.c114
-rw-r--r--tests/vboot_region_tests.c213
11 files changed, 54 insertions, 366 deletions
diff --git a/tests/vboot_api_devmode_tests.c b/tests/vboot_api_devmode_tests.c
index 61f0de14..b10bba67 100644
--- a/tests/vboot_api_devmode_tests.c
+++ b/tests/vboot_api_devmode_tests.c
@@ -153,7 +153,6 @@ static void ResetMocks(void) {
cparams.shared_data_size = sizeof(shared_data);
cparams.shared_data_blob = shared_data;
cparams.gbb_data = &gbb;
- cparams.gbb = &gbb;
Memset(&lkparams, 0, sizeof(lkparams));
diff --git a/tests/vboot_api_firmware_tests.c b/tests/vboot_api_firmware_tests.c
index 4a97b930..9e7c441d 100644
--- a/tests/vboot_api_firmware_tests.c
+++ b/tests/vboot_api_firmware_tests.c
@@ -9,7 +9,6 @@
#include <stdio.h>
#include <stdlib.h>
-#include "gbb_header.h"
#include "host_common.h"
#include "rollback_index.h"
#include "test_common.h"
@@ -24,7 +23,6 @@
/* Mock data */
static VbCommonParams cparams;
static VbSelectFirmwareParams fparams;
-static GoogleBinaryBlockHeader gbb;
static VbNvContext vnc;
static uint8_t shared_data[VB_SHARED_DATA_MIN_SIZE];
static VbSharedDataHeader* shared = (VbSharedDataHeader*)shared_data;
@@ -51,11 +49,6 @@ static void ResetMocks(void) {
Memset(&fparams, 0, sizeof(fparams));
- Memset(&gbb, 0, sizeof(gbb));
- cparams.gbb_data = &gbb;
- cparams.gbb_size = sizeof(gbb);
- cparams.gbb = &gbb;
-
Memset(&vnc, 0, sizeof(vnc));
VbNvSetup(&vnc);
VbNvTeardown(&vnc); /* So CRC gets generated */
diff --git a/tests/vboot_api_init_tests.c b/tests/vboot_api_init_tests.c
index 9aa34b41..6451bd81 100644
--- a/tests/vboot_api_init_tests.c
+++ b/tests/vboot_api_init_tests.c
@@ -40,7 +40,6 @@ static void ResetMocks(void)
cparams.shared_data_size = sizeof(shared_data);
cparams.shared_data_blob = shared_data;
cparams.gbb_data = &gbb;
- cparams.gbb_size = sizeof(gbb);
Memset(&gbb, 0, sizeof(gbb));
gbb.major_version = GBB_MAJOR_VER;
diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c
index 323f5f66..c1572c2f 100644
--- a/tests/vboot_api_kernel2_tests.c
+++ b/tests/vboot_api_kernel2_tests.c
@@ -49,7 +49,6 @@ static void ResetMocks(void)
cparams.shared_data_size = sizeof(shared_data);
cparams.shared_data_blob = shared_data;
cparams.gbb_data = &gbb;
- cparams.gbb = &gbb;
Memset(&gbb, 0, sizeof(gbb));
gbb.major_version = GBB_MAJOR_VER;
diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c
index 82b15016..e2155f56 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -41,7 +41,6 @@ static void ResetMocks(void)
cparams.shared_data_size = sizeof(shared_data);
cparams.shared_data_blob = shared_data;
cparams.gbb_data = &gbb;
- cparams.gbb_size = sizeof(gbb);
Memset(&kparams, 0, sizeof(kparams));
diff --git a/tests/vboot_api_kernel_tests.c b/tests/vboot_api_kernel_tests.c
index 8cfc1cb4..87dc6cfa 100644
--- a/tests/vboot_api_kernel_tests.c
+++ b/tests/vboot_api_kernel_tests.c
@@ -269,7 +269,7 @@ VbError_t VbExDiskFreeInfo(VbDiskInfo *infos,
return VBERROR_SUCCESS;
}
-VbError_t LoadKernel(LoadKernelParams *params, VbCommonParams *cparams)
+VbError_t LoadKernel(LoadKernelParams *params)
{
got_find_disk = (const char *)params->disk_handle;
VBDEBUG(("%s(%d): got_find_disk = %s\n", __FUNCTION__,
diff --git a/tests/vboot_audio_tests.c b/tests/vboot_audio_tests.c
index d674931d..23667b1e 100644
--- a/tests/vboot_audio_tests.c
+++ b/tests/vboot_audio_tests.c
@@ -62,7 +62,6 @@ static void ResetMocks(void) {
VBDEBUG(("ResetMocks()\n"));
Memset(&cparams, 0, sizeof(cparams));
cparams.gbb_data = &gbb;
- cparams.gbb = &gbb;
Memset(&gbb, 0, sizeof(gbb));
gbb.major_version = GBB_MAJOR_VER;
gbb.minor_version = GBB_MINOR_VER;
diff --git a/tests/vboot_display_tests.c b/tests/vboot_display_tests.c
index 8086d319..8e4a3a27 100644
--- a/tests/vboot_display_tests.c
+++ b/tests/vboot_display_tests.c
@@ -13,11 +13,9 @@
#include "bmpblk_font.h"
#include "gbb_header.h"
#include "host_common.h"
-#include "region.h"
#include "test_common.h"
#include "vboot_common.h"
#include "vboot_display.h"
-#include "vboot_kernel.h"
#include "vboot_nvstorage.h"
/* Mock data */
@@ -61,20 +59,6 @@ static void ResetMocks(void)
cparams.gbb_data = gbb;
cparams.gbb_size = sizeof(gbb_data);
- /*
- * Note, VbApiKernelFree() expects this to be allocated by
- * VbExMalloc(), so we cannot just assign it staticly.
- */
- cparams.gbb = VbExMalloc(sizeof(*gbb));
- gbb->header_size = sizeof(*gbb);
- gbb->rootkey_offset = gbb_used;
- gbb->rootkey_size = 64;
- gbb_used += 64;
- gbb->recovery_key_offset = gbb_used;
- gbb->recovery_key_size = 64;
- gbb_used += 64;
- memcpy(cparams.gbb, gbb, sizeof(*gbb));
-
Memset(&vnc, 0, sizeof(vnc));
VbNvSetup(&vnc);
VbNvTeardown(&vnc); /* So CRC gets generated */
@@ -97,7 +81,6 @@ VbError_t VbExDisplayDebugInfo(const char *info_str)
/* Test displaying debug info */
static void DebugInfoTest(void)
{
- char hwid[VB_REGION_HWID_LEN];
int i;
/* Recovery string should be non-null for any code */
@@ -106,39 +89,28 @@ static void DebugInfoTest(void)
/* HWID should come from the gbb */
ResetMocks();
- VbRegionReadHWID(&cparams, hwid, sizeof(hwid));
- TEST_EQ(strcmp(hwid, "Test HWID"), 0, "HWID");
- VbApiKernelFree(&cparams);
+ TEST_EQ(strcmp(VbHWID(&cparams), "Test HWID"), 0, "HWID");
ResetMocks();
cparams.gbb_size = 0;
- VbRegionReadHWID(&cparams, hwid, sizeof(hwid));
- TEST_EQ(strcmp(hwid, "{INVALID}"), 0, "HWID bad gbb");
- VbApiKernelFree(&cparams);
+ TEST_EQ(strcmp(VbHWID(&cparams), "{INVALID}"), 0, "HWID bad gbb");
ResetMocks();
- cparams.gbb->hwid_size = 0;
- VbRegionReadHWID(&cparams, hwid, sizeof(hwid));
- TEST_EQ(strcmp(hwid, "{INVALID}"), 0, "HWID missing");
- VbApiKernelFree(&cparams);
+ gbb->hwid_size = 0;
+ TEST_EQ(strcmp(VbHWID(&cparams), "{INVALID}"), 0, "HWID missing");
ResetMocks();
- cparams.gbb->hwid_offset = cparams.gbb_size + 1;
- VbRegionReadHWID(&cparams, hwid, sizeof(hwid));
- TEST_EQ(strcmp(hwid, "{INVALID}"), 0, "HWID past end");
- VbApiKernelFree(&cparams);
+ gbb->hwid_offset = cparams.gbb_size + 1;
+ TEST_EQ(strcmp(VbHWID(&cparams), "{INVALID}"), 0, "HWID past end");
ResetMocks();
- cparams.gbb->hwid_size = cparams.gbb_size;
- VbRegionReadHWID(&cparams, hwid, sizeof(hwid));
- TEST_EQ(strcmp(hwid, "{INVALID}"), 0, "HWID overflow");
- VbApiKernelFree(&cparams);
+ gbb->hwid_size = cparams.gbb_size;
+ TEST_EQ(strcmp(VbHWID(&cparams), "{INVALID}"), 0, "HWID overflow");
/* Display debug info */
ResetMocks();
VbDisplayDebugInfo(&cparams, &vnc);
TEST_NEQ(*debug_info, '\0', "Some debug info was displayed");
- VbApiKernelFree(&cparams);
}
/* Test localization */
@@ -147,23 +119,21 @@ static void LocalizationTest(void)
uint32_t count = 6;
ResetMocks();
- cparams.gbb->bmpfv_size = 0;
+ gbb->bmpfv_size = 0;
TEST_EQ(VbGetLocalizationCount(&cparams, &count),
VBERROR_INVALID_GBB, "VbGetLocalizationCount bad gbb");
TEST_EQ(count, 0, " count");
- VbApiKernelFree(&cparams);
ResetMocks();
bhdr->signature[0] ^= 0x5a;
TEST_EQ(VbGetLocalizationCount(&cparams, &count),
VBERROR_INVALID_BMPFV, "VbGetLocalizationCount bad bmpfv");
- VbApiKernelFree(&cparams);
ResetMocks();
TEST_EQ(VbGetLocalizationCount(&cparams, &count), 0,
"VbGetLocalizationCount()");
TEST_EQ(count, 3, " count");
- VbApiKernelFree(&cparams);
+
}
/* Test display key checking */
@@ -174,12 +144,10 @@ static void DisplayKeyTest(void)
ResetMocks();
VbCheckDisplayKey(&cparams, 'q', &vnc);
TEST_EQ(*debug_info, '\0', "DisplayKey q = does nothing");
- VbApiKernelFree(&cparams);
ResetMocks();
VbCheckDisplayKey(&cparams, '\t', &vnc);
TEST_NEQ(*debug_info, '\0', "DisplayKey tab = display");
- VbApiKernelFree(&cparams);
/* Toggle localization */
ResetMocks();
@@ -197,7 +165,6 @@ static void DisplayKeyTest(void)
VbCheckDisplayKey(&cparams, VB_KEY_UP, &vnc);
VbNvGet(&vnc, VBNV_LOCALIZATION_INDEX, &u);
TEST_EQ(u, 0, "DisplayKey up");
- VbApiKernelFree(&cparams);
/* Reset localization if localization count is invalid */
ResetMocks();
@@ -207,7 +174,7 @@ static void DisplayKeyTest(void)
VbCheckDisplayKey(&cparams, VB_KEY_UP, &vnc);
VbNvGet(&vnc, VBNV_LOCALIZATION_INDEX, &u);
TEST_EQ(u, 0, "DisplayKey invalid");
- VbApiKernelFree(&cparams);
+
}
static void FontTest(void)
diff --git a/tests/vboot_firmware_tests.c b/tests/vboot_firmware_tests.c
index 724e7f8b..f6b96fec 100644
--- a/tests/vboot_firmware_tests.c
+++ b/tests/vboot_firmware_tests.c
@@ -8,7 +8,6 @@
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include "gbb_header.h"
#include "host_common.h"
@@ -34,20 +33,13 @@ static uint8_t* digest_returned;
static uint8_t* digest_expect_ptr;
static int hash_fw_index;
-#define TEST_KEY_DATA \
- "Test contents for the root key this should be 64 chars long."
-
/* Reset mock data (for use before each test) */
static void ResetMocks(void) {
- VbPublicKey *root_key;
- uint8_t *root_key_data;
int i;
Memset(&cparams, 0, sizeof(cparams));
cparams.shared_data_blob = shared_data;
cparams.gbb_data = gbb_data;
- cparams.gbb_size = sizeof(gbb_data);
- cparams.gbb = gbb;
Memset(&fparams, 0, sizeof(fparams));
fparams.verification_block_A = vblock;
@@ -83,14 +75,6 @@ static void ResetMocks(void) {
Memset(&gbb_data, 0, sizeof(gbb_data));
gbb->rootkey_offset = sizeof(GoogleBinaryBlockHeader);
- root_key = (VbPublicKey *)(gbb_data + gbb->rootkey_offset);
- root_key_data = (uint8_t *)(root_key + 1);
- strcpy((char *)root_key_data, TEST_KEY_DATA);
- PublicKeyInit(root_key, (uint8_t *)root_key_data, sizeof(TEST_KEY_DATA));
-
- gbb->major_version = GBB_MAJOR_VER;
- gbb->minor_version = GBB_MINOR_VER;
- gbb->flags = 0;
Memset(&data_key, 0, sizeof(data_key));
@@ -107,13 +91,7 @@ int KeyBlockVerify(const VbKeyBlockHeader* block, uint64_t size,
const VbPublicKey *key, int hash_only) {
TEST_EQ(hash_only, 0, " Don't verify firmware with hash");
-
- /*
- * We cannot check the address of key, since it will be allocated. We
- * check the contents instead.
- */
- TEST_STR_EQ((char *)GetPublicKeyDataC(key), TEST_KEY_DATA,
- " Verify with root key");
+ TEST_PTR_EQ(key, gbb_data + gbb->rootkey_offset, " Verify with root key");
TEST_NEQ(block==vblock || block==vblock+1, 0, " Verify a valid key block");
/* Mock uses header_version_major to hold return value */
diff --git a/tests/vboot_kernel_tests.c b/tests/vboot_kernel_tests.c
index 8dde9cb6..6992e94a 100644
--- a/tests/vboot_kernel_tests.c
+++ b/tests/vboot_kernel_tests.c
@@ -47,8 +47,7 @@ static int verify_data_fail;
static RSAPublicKey *mock_data_key;
static int mock_data_key_allocated;
-static uint8_t gbb_data[sizeof(GoogleBinaryBlockHeader) + 2048];
-static GoogleBinaryBlockHeader *gbb = (GoogleBinaryBlockHeader*)gbb_data;
+static GoogleBinaryBlockHeader gbb;
static VbExDiskHandle_t handle;
static VbNvContext vnc;
static uint8_t shared_data[VB_SHARED_DATA_MIN_SIZE];
@@ -56,7 +55,6 @@ static VbSharedDataHeader *shared = (VbSharedDataHeader *)shared_data;
static LoadKernelParams lkp;
static VbKeyBlockHeader kbh;
static VbKernelPreambleHeader kph;
-static VbCommonParams cparams;
static void ResetCallLog(void)
{
@@ -81,15 +79,10 @@ static void ResetMocks(void)
mock_data_key = (RSAPublicKey *)"TestDataKey";
mock_data_key_allocated = 0;
- memset(gbb, 0, sizeof(gbb));
- gbb->major_version = GBB_MAJOR_VER;
- gbb->minor_version = GBB_MINOR_VER;
- gbb->flags = 0;
-
- memset(&cparams, '\0', sizeof(cparams));
- cparams.gbb = gbb;
- cparams.gbb_data = gbb;
- cparams.gbb_size = sizeof(gbb_data);
+ memset(&gbb, 0, sizeof(gbb));
+ gbb.major_version = GBB_MAJOR_VER;
+ gbb.minor_version = GBB_MINOR_VER;
+ gbb.flags = 0;
memset(&vnc, 0, sizeof(vnc));
VbNvSetup(&vnc);
@@ -102,8 +95,7 @@ static void ResetMocks(void)
memset(&lkp, 0, sizeof(lkp));
lkp.nv_context = &vnc;
lkp.shared_data_blob = shared;
- lkp.gbb_data = gbb;
- lkp.gbb_size = sizeof(gbb_data);
+ lkp.gbb_data = &gbb;
lkp.bytes_per_lba = 512;
lkp.ending_lba = 1023;
lkp.kernel_buffer = kernel_buffer;
@@ -137,8 +129,6 @@ VbError_t VbExDiskRead(VbExDiskHandle_t handle, uint64_t lba_start,
if ((int)lba_start == disk_read_to_fail)
return VBERROR_SIMULATED;
- /* Keep valgrind happy */
- Memset(buffer, '\0', lba_count);
return VBERROR_SUCCESS;
}
@@ -248,11 +238,6 @@ static void ReadWriteGptTest(void)
"VbExDiskRead(h, 991, 32)\n"
"VbExDiskRead(h, 1023, 1)\n");
ResetCallLog();
- /*
- * Valgrind complains about access to uninitialized memory here, so
- * zero the primary header before each test.
- */
- Memset(g.primary_header, '\0', g.sector_bytes);
TEST_EQ(WriteAndFreeGptData(handle, &g), 0, "WriteAndFree");
TEST_CALLS("");
@@ -261,7 +246,6 @@ static void ReadWriteGptTest(void)
AllocAndReadGptData(handle, &g);
g.modified |= GPT_MODIFIED_HEADER1 | GPT_MODIFIED_ENTRIES1;
ResetCallLog();
- Memset(g.primary_header, '\0', g.sector_bytes);
TEST_EQ(WriteAndFreeGptData(handle, &g), 0, "WriteAndFree mod 1");
TEST_CALLS("VbExDiskWrite(h, 1, 1)\n"
"VbExDiskWrite(h, 2, 32)\n");
@@ -271,7 +255,6 @@ static void ReadWriteGptTest(void)
AllocAndReadGptData(handle, &g);
g.modified = -1;
ResetCallLog();
- Memset(g.primary_header, '\0', g.sector_bytes);
TEST_EQ(WriteAndFreeGptData(handle, &g), 0, "WriteAndFree mod all");
TEST_CALLS("VbExDiskWrite(h, 1, 1)\n"
"VbExDiskWrite(h, 2, 32)\n"
@@ -293,25 +276,21 @@ static void ReadWriteGptTest(void)
ResetMocks();
disk_read_to_fail = 1;
TEST_NEQ(AllocAndReadGptData(handle, &g), 0, "AllocAndRead disk fail");
- Memset(g.primary_header, '\0', g.sector_bytes);
WriteAndFreeGptData(handle, &g);
ResetMocks();
disk_read_to_fail = 2;
TEST_NEQ(AllocAndReadGptData(handle, &g), 0, "AllocAndRead disk fail");
- Memset(g.primary_header, '\0', g.sector_bytes);
WriteAndFreeGptData(handle, &g);
ResetMocks();
disk_read_to_fail = 991;
TEST_NEQ(AllocAndReadGptData(handle, &g), 0, "AllocAndRead disk fail");
- Memset(g.primary_header, '\0', g.sector_bytes);
WriteAndFreeGptData(handle, &g);
ResetMocks();
disk_read_to_fail = 1023;
TEST_NEQ(AllocAndReadGptData(handle, &g), 0, "AllocAndRead disk fail");
- Memset(g.primary_header, '\0', g.sector_bytes);
WriteAndFreeGptData(handle, &g);
/* Error writing */
@@ -319,28 +298,24 @@ static void ReadWriteGptTest(void)
disk_write_to_fail = 1;
AllocAndReadGptData(handle, &g);
g.modified = -1;
- Memset(g.primary_header, '\0', g.sector_bytes);
TEST_NEQ(WriteAndFreeGptData(handle, &g), 0, "WriteAndFree disk fail");
ResetMocks();
disk_write_to_fail = 2;
AllocAndReadGptData(handle, &g);
g.modified = -1;
- Memset(g.primary_header, '\0', g.sector_bytes);
TEST_NEQ(WriteAndFreeGptData(handle, &g), 0, "WriteAndFree disk fail");
ResetMocks();
disk_write_to_fail = 991;
AllocAndReadGptData(handle, &g);
g.modified = -1;
- Memset(g.primary_header, '\0', g.sector_bytes);
TEST_NEQ(WriteAndFreeGptData(handle, &g), 0, "WriteAndFree disk fail");
ResetMocks();
disk_write_to_fail = 1023;
AllocAndReadGptData(handle, &g);
g.modified = -1;
- Memset(g.primary_header, '\0', g.sector_bytes);
TEST_NEQ(WriteAndFreeGptData(handle, &g), 0, "WriteAndFree disk fail");
}
@@ -352,28 +327,23 @@ static void InvalidParamsTest(void)
{
ResetMocks();
lkp.bytes_per_lba = 0;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_PARAMETER,
- "Bad lba size");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_PARAMETER, "Bad lba size");
ResetMocks();
lkp.ending_lba = 0;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_PARAMETER,
- "Bad lba count");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_PARAMETER, "Bad lba count");
ResetMocks();
lkp.bytes_per_lba = 128*1024;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_PARAMETER,
- "Huge lba size");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_PARAMETER, "Huge lba size");
ResetMocks();
disk_read_to_fail = 1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_NO_KERNEL_FOUND,
- "Can't read disk");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_NO_KERNEL_FOUND, "Can't read disk");
ResetMocks();
gpt_init_fail = 1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_NO_KERNEL_FOUND,
- "Bad GPT");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_NO_KERNEL_FOUND, "Bad GPT");
}
static void LoadKernelTest(void)
@@ -381,7 +351,7 @@ static void LoadKernelTest(void)
uint32_t u;
ResetMocks();
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "First kernel good");
+ TEST_EQ(LoadKernel(&lkp), 0, "First kernel good");
TEST_EQ(lkp.partition_number, 1, " part num");
TEST_EQ(lkp.bootloader_address, 0xbeadd008, " bootloader addr");
TEST_EQ(lkp.bootloader_size, 0x1234, " bootloader size");
@@ -392,46 +362,46 @@ static void LoadKernelTest(void)
ResetMocks();
mock_parts[1].start = 300;
mock_parts[1].size = 150;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Two good kernels");
+ TEST_EQ(LoadKernel(&lkp), 0, "Two good kernels");
TEST_EQ(lkp.partition_number, 1, " part num");
TEST_EQ(mock_part_next, 1, " didn't read second one");
/* Fail if no kernels found */
ResetMocks();
mock_parts[0].size = 0;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_NO_KERNEL_FOUND, "No kernels");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_NO_KERNEL_FOUND, "No kernels");
VbNvGet(&vnc, VBNV_RECOVERY_REQUEST, &u);
TEST_EQ(u, VBNV_RECOVERY_RW_NO_OS, " recovery request");
/* Skip kernels which are too small */
ResetMocks();
mock_parts[0].size = 10;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND, "Too small");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND, "Too small");
VbNvGet(&vnc, VBNV_RECOVERY_REQUEST, &u);
TEST_EQ(u, VBNV_RECOVERY_RW_INVALID_OS, " recovery request");
ResetMocks();
disk_read_to_fail = 100;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Fail reading kernel start");
ResetMocks();
key_block_verify_fail = 1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Fail key block sig");
/* In dev mode, fail if hash is bad too */
ResetMocks();
lkp.boot_flags |= BOOT_FLAG_DEVELOPER;
key_block_verify_fail = 2;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Fail key block dev hash");
/* But just bad sig is ok */
ResetMocks();
lkp.boot_flags |= BOOT_FLAG_DEVELOPER;
key_block_verify_fail = 1;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Succeed key block dev sig");
+ TEST_EQ(LoadKernel(&lkp), 0, "Succeed key block dev sig");
/* In dev mode and requiring signed kernel, fail if sig is bad */
ResetMocks();
@@ -439,126 +409,124 @@ static void LoadKernelTest(void)
VbNvSet(&vnc, VBNV_DEV_BOOT_SIGNED_ONLY, 1);
VbNvTeardown(&vnc);
key_block_verify_fail = 1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Fail key block dev sig");
/* Check key block flag mismatches */
ResetMocks();
kbh.key_block_flags =
KEY_BLOCK_FLAG_RECOVERY_0 | KEY_BLOCK_FLAG_DEVELOPER_1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Key block dev flag mismatch");
ResetMocks();
kbh.key_block_flags =
KEY_BLOCK_FLAG_RECOVERY_1 | KEY_BLOCK_FLAG_DEVELOPER_0;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Key block rec flag mismatch");
ResetMocks();
lkp.boot_flags |= BOOT_FLAG_RECOVERY;
kbh.key_block_flags =
KEY_BLOCK_FLAG_RECOVERY_1 | KEY_BLOCK_FLAG_DEVELOPER_1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Key block recdev flag mismatch");
ResetMocks();
lkp.boot_flags |= BOOT_FLAG_RECOVERY | BOOT_FLAG_DEVELOPER;
kbh.key_block_flags =
KEY_BLOCK_FLAG_RECOVERY_1 | KEY_BLOCK_FLAG_DEVELOPER_0;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Key block rec!dev flag mismatch");
ResetMocks();
kbh.data_key.key_version = 1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Key block kernel key rollback");
ResetMocks();
kbh.data_key.key_version = 0x10000;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Key block kernel key version too big");
ResetMocks();
kbh.data_key.key_version = 3;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Key block version roll forward");
+ TEST_EQ(LoadKernel(&lkp), 0, "Key block version roll forward");
TEST_EQ(shared->kernel_version_tpm, 0x30001, " shared version");
ResetMocks();
kbh.data_key.key_version = 3;
mock_parts[1].start = 300;
mock_parts[1].size = 150;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Two kernels roll forward");
+ TEST_EQ(LoadKernel(&lkp), 0, "Two kernels roll forward");
TEST_EQ(mock_part_next, 2, " read both");
TEST_EQ(shared->kernel_version_tpm, 0x30001, " shared version");
ResetMocks();
kbh.data_key.key_version = 1;
lkp.boot_flags |= BOOT_FLAG_DEVELOPER;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Key version ignored in dev mode");
+ TEST_EQ(LoadKernel(&lkp), 0, "Key version ignored in dev mode");
ResetMocks();
kbh.data_key.key_version = 1;
lkp.boot_flags |= BOOT_FLAG_RECOVERY;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Key version ignored in rec mode");
+ TEST_EQ(LoadKernel(&lkp), 0, "Key version ignored in rec mode");
ResetMocks();
mock_data_key = NULL;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
- "Bad data key");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND, "Bad data key");
ResetMocks();
preamble_verify_fail = 1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
- "Bad preamble");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND, "Bad preamble");
ResetMocks();
kph.kernel_version = 0;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Kernel version rollback");
ResetMocks();
kph.kernel_version = 0;
lkp.boot_flags |= BOOT_FLAG_DEVELOPER;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Kernel version ignored in dev mode");
+ TEST_EQ(LoadKernel(&lkp), 0, "Kernel version ignored in dev mode");
ResetMocks();
kph.kernel_version = 0;
lkp.boot_flags |= BOOT_FLAG_RECOVERY;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Kernel version ignored in rec mode");
+ TEST_EQ(LoadKernel(&lkp), 0, "Kernel version ignored in rec mode");
ResetMocks();
kph.preamble_size |= 0x07;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Kernel body offset");
/* Check getting kernel load address from header */
ResetMocks();
kph.body_load_address = (size_t)kernel_buffer;
lkp.kernel_buffer = NULL;
- TEST_EQ(LoadKernel(&lkp, &cparams), 0, "Get load address from preamble");
+ TEST_EQ(LoadKernel(&lkp), 0, "Get load address from preamble");
TEST_PTR_EQ(lkp.kernel_buffer, kernel_buffer, " address");
/* Size is rounded up to nearest sector */
TEST_EQ(lkp.kernel_buffer_size, 70144, " size");
ResetMocks();
lkp.kernel_buffer_size = 8192;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Kernel too big for buffer");
ResetMocks();
mock_parts[0].size = 130;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Kernel too big for partition");
ResetMocks();
disk_read_to_fail = 108;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND,
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND,
"Fail reading kernel data");
ResetMocks();
verify_data_fail = 1;
- TEST_EQ(LoadKernel(&lkp, &cparams), VBERROR_INVALID_KERNEL_FOUND, "Bad data");
+ TEST_EQ(LoadKernel(&lkp), VBERROR_INVALID_KERNEL_FOUND, "Bad data");
}
int main(void)
diff --git a/tests/vboot_region_tests.c b/tests/vboot_region_tests.c
deleted file mode 100644
index 1293136e..00000000
--- a/tests/vboot_region_tests.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Tests for vboot region API
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "bmpblk_font.h"
-#include "gbb_header.h"
-#include "host_common.h"
-#include "rollback_index.h"
-#include "test_common.h"
-#include "vboot_common.h"
-#include "vboot_nvstorage.h"
-#include "vboot_struct.h"
-
-/* Mock data */
-static VbCommonParams cparams;
-static VbNvContext vnc;
-static VbSelectFirmwareParams fparams;
-VbSelectAndLoadKernelParams kparams;
-static char gbb_data[4096 + sizeof(GoogleBinaryBlockHeader)];
-static uint8_t shared_data[VB_SHARED_DATA_MIN_SIZE];
-static VbSharedDataHeader* shared = (VbSharedDataHeader*)shared_data;
-/* Mock TPM versions */
-static uint32_t mock_tpm_version;
-static uint32_t mock_lf_tpm_version; /* TPM version set by LoadFirmware() */
-static uint32_t mock_seen_region;
-/* Mock return values, so we can simulate errors */
-static VbError_t mock_lf_retval;
-
-#define COMPRESSED_SIZE 200
-#define ORIGINAL_SIZE 400
-
-/* Reset mock data (for use before each test) */
-static void ResetMocks(void) {
- GoogleBinaryBlockHeader *gbb;
- BmpBlockHeader *bhdr;
- ImageInfo *image_info;
- ScreenLayout *layout;
- int gbb_used;
-
- Memset(&vnc, 0, sizeof(vnc));
- VbNvSetup(&vnc);
- VbNvTeardown(&vnc); /* So CRC gets generated */
-
- Memset(&cparams, 0, sizeof(cparams));
- cparams.shared_data_size = sizeof(shared_data);
- cparams.shared_data_blob = shared_data;
-
- Memset(&fparams, 0, sizeof(fparams));
-
- Memset(gbb_data, 0, sizeof(gbb_data));
- gbb = (GoogleBinaryBlockHeader *)gbb_data;
- gbb->major_version = GBB_MAJOR_VER;
- gbb->minor_version = GBB_MINOR_VER;
- gbb->flags = 0;
- gbb_used = sizeof(GoogleBinaryBlockHeader);
-
- gbb->hwid_offset = gbb_used;
- strcpy(gbb_data + gbb->hwid_offset, "Test HWID");
- gbb->hwid_size = strlen(gbb_data + gbb->hwid_offset) + 1;
- gbb_used = (gbb_used + gbb->hwid_size + 7) & ~7;
-
- gbb->bmpfv_offset = gbb_used;
- bhdr = (BmpBlockHeader *)(gbb_data + gbb->bmpfv_offset);
- gbb->bmpfv_size = sizeof(BmpBlockHeader);
- gbb_used = (gbb_used + gbb->bmpfv_size + 7) & ~7;
- memcpy(bhdr->signature, BMPBLOCK_SIGNATURE, BMPBLOCK_SIGNATURE_SIZE);
- bhdr->major_version = BMPBLOCK_MAJOR_VERSION;
- bhdr->minor_version = BMPBLOCK_MINOR_VERSION;
- bhdr->number_of_localizations = 3;
- bhdr->number_of_screenlayouts = 1;
-
- layout = (ScreenLayout *)(gbb_data + gbb_used);
- gbb_used += sizeof(*layout);
- layout->images[0].x = 1;
- layout->images[0].image_info_offset = gbb_used - gbb->bmpfv_offset;
-
- /* First image is uncompressed */
- image_info = (ImageInfo *)(gbb_data + gbb_used);
- image_info->format = FORMAT_BMP;
- image_info->compressed_size = ORIGINAL_SIZE;
- image_info->original_size = ORIGINAL_SIZE;
- image_info->compression = COMPRESS_NONE;
- gbb_used += sizeof(*image_info);
- strcpy(gbb_data + gbb_used, "original");
- gbb_used += ORIGINAL_SIZE;
-
- /* Second image is compressed */
- layout->images[1].image_info_offset = gbb_used - gbb->bmpfv_offset;
- layout->images[1].x = 2;
- image_info = (ImageInfo *)(gbb_data + gbb_used);
- image_info->format = FORMAT_BMP;
- image_info->compressed_size = COMPRESSED_SIZE;
- image_info->original_size = ORIGINAL_SIZE;
- image_info->compression = COMPRESS_LZMA1;
- gbb_used += sizeof(*image_info) + COMPRESSED_SIZE;
-
- Memset(&shared_data, 0, sizeof(shared_data));
- VbSharedDataInit(shared, sizeof(shared_data));
- shared->fw_keyblock_flags = 0xABCDE0;
-
- mock_tpm_version = mock_lf_tpm_version = 0x20004;
- shared->fw_version_tpm_start = mock_tpm_version;
- mock_lf_retval = 0;
- mock_seen_region = 0;
-}
-
-/****************************************************************************/
-/* Mocked verification functions */
-
-uint32_t SetTPMBootModeState(int developer_mode, int recovery_mode,
- uint64_t fw_keyblock_flags) {
- return VBERROR_SUCCESS;
-}
-
-VbError_t VbExNvStorageRead(uint8_t* buf) {
- Memcpy(buf, vnc.raw, sizeof(vnc.raw));
- return VBERROR_SUCCESS;
-}
-
-VbError_t VbExNvStorageWrite(const uint8_t* buf) {
- Memcpy(vnc.raw, buf, sizeof(vnc.raw));
- return VBERROR_SUCCESS;
-}
-
-VbError_t VbExRegionRead(VbCommonParams *cparams,
- enum vb_firmware_region region, uint32_t offset,
- uint32_t size, void *buf)
-{
- if (region != VB_REGION_GBB)
- return VBERROR_UNSUPPORTED_REGION;
- mock_seen_region |= 1 << region;
- if (offset + size > sizeof(gbb_data))
- return VBERROR_REGION_READ_INVALID;
- memcpy(buf, gbb_data + offset, size);
- return VBERROR_SUCCESS;
-}
-
-VbError_t VbExDisplayImage(uint32_t x, uint32_t y,
- void *buffer, uint32_t buffersize)
-{
- switch (x) {
- case 1:
- TEST_STR_EQ(buffer, "original", " uncompressed image");
- break;
- case 2:
- TEST_STR_EQ(buffer, "decompressed", " compressed image");
- break;
- default:
- TEST_STR_EQ(buffer, "invalid", " correct image");
- break;
- }
- return VBERROR_SUCCESS;
-}
-
-VbError_t VbExDecompress(void *inbuf, uint32_t in_size,
- uint32_t compression_type,
- void *outbuf, uint32_t *out_size)
-{
- *out_size = ORIGINAL_SIZE;
- strcpy(outbuf, "decompressed");
- return VBERROR_SUCCESS;
-}
-
-int LoadFirmware(VbCommonParams *cparams, VbSelectFirmwareParams *fparams,
- VbNvContext *vnc) {
- shared->fw_version_tpm = mock_lf_tpm_version;
- TEST_PTR_NEQ(cparams->gbb, NULL, " GBB allocated");
- return mock_lf_retval;
-}
-
-/****************************************************************************/
-
-static void VbRegionReadTest(void) {
- /* Should read GBB */
- ResetMocks();
- TEST_TRUE(1, "Normal call");
- TEST_EQ(VbSelectFirmware(&cparams, &fparams), VBERROR_SUCCESS,
- " Success");
- TEST_EQ(mock_seen_region, 1 << VB_REGION_GBB, " GBB region");
- TEST_PTR_EQ(cparams.gbb, NULL, " GBB free");
-
- ResetMocks();
- TEST_EQ(VbSelectAndLoadKernel(&cparams, &kparams),
- VBERROR_NO_DISK_FOUND, "Kernel");
- TEST_PTR_EQ(cparams.gbb, NULL, " GBB free");
- TEST_PTR_EQ(cparams.bmp, NULL, " BMP free");
-
- ResetMocks();
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
- TEST_EQ(VbSelectAndLoadKernel(&cparams, &kparams),
- VBERROR_NO_DISK_FOUND, "Kernel");
-}
-
-int main(int argc, char* argv[]) {
- int error_code = 0;
-
- VbRegionReadTest();
-
- if (vboot_api_stub_check_memory())
- error_code = 255;
- if (!gTestSuccess)
- error_code = 255;
-
- return error_code;
-}