summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2018-02-20 15:20:16 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-02-26 22:07:24 -0800
commit225df798cf259a9cfe39e7080c575bd335ee8755 (patch)
tree7c64b73fe90b948efad76c227bf75cfff1b3ff73
parent4a95b9b7aed292e2c0a02b2bf81b7244ab3b6549 (diff)
downloadvboot-stabilize-10443.B.tar.gz
tests: Cover a few assorted new casesstabilize-10443.B
Assorted addtional tests to improve coverage of the firmware libraries. BUG=none BRANCH=none TEST=make runtests Change-Id: Iaf707bd54ca5dc10745eb19dfa9e9afbf0d74112 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/927608 Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--tests/vb20_rsa_padding_tests.c3
-rw-r--r--tests/vb2_api_tests.c17
-rw-r--r--tests/vb2_misc_tests.c26
-rw-r--r--tests/vb2_nvstorage_tests.c12
-rw-r--r--tests/vb2_sha_tests.c3
-rw-r--r--tests/vboot_common_tests.c6
6 files changed, 61 insertions, 6 deletions
diff --git a/tests/vb20_rsa_padding_tests.c b/tests/vb20_rsa_padding_tests.c
index 7c1df6a5..6c17c46b 100644
--- a/tests/vb20_rsa_padding_tests.c
+++ b/tests/vb20_rsa_padding_tests.c
@@ -66,6 +66,9 @@ static void test_verify_digest(struct vb2_public_key *key) {
TEST_SUCC(vb2_rsa_verify_digest(key, sig, test_message_sha1_hash, &wb),
"vb2_rsa_verify_digest() good");
+ TEST_EQ(vb2_rsa_verify_digest(key, NULL, test_message_sha1_hash, &wb),
+ VB2_ERROR_RSA_VERIFY_PARAM, "vb2_rsa_verify_digest() bad arg");
+
memcpy(sig, signatures[0], sizeof(sig));
vb2_workbuf_init(&wb, workbuf, sizeof(sig) * 3 - 1);
TEST_EQ(vb2_rsa_verify_digest(key, sig, test_message_sha1_hash, &wb),
diff --git a/tests/vb2_api_tests.c b/tests/vb2_api_tests.c
index 49af6fd1..88dfa967 100644
--- a/tests/vb2_api_tests.c
+++ b/tests/vb2_api_tests.c
@@ -242,10 +242,11 @@ static void phase2_tests(void)
reset_common_data(FOR_MISC);
TEST_SUCC(vb2api_fw_phase2(&cc), "phase2 good");
TEST_EQ(cc.flags & VB2_CONTEXT_CLEAR_RAM, 0, " clear ram flag");
+ TEST_EQ(cc.flags & VB2_CONTEXT_FW_SLOT_B, 0, " slot b flag");
reset_common_data(FOR_MISC);
cc.flags |= VB2_CONTEXT_DEVELOPER_MODE;
- TEST_SUCC(vb2api_fw_phase2(&cc), "phase1 dev");
+ TEST_SUCC(vb2api_fw_phase2(&cc), "phase2 dev");
TEST_NEQ(cc.flags & VB2_CONTEXT_CLEAR_RAM, 0, " clear ram flag");
reset_common_data(FOR_MISC);
@@ -259,6 +260,20 @@ static void phase2_tests(void)
TEST_EQ(vb2api_fw_phase2(&cc), VB2_ERROR_MOCK, "phase2 slot");
TEST_EQ(vb2_nv_get(&cc, VB2_NV_RECOVERY_REQUEST),
VB2_RECOVERY_FW_SLOT, " recovery reason");
+
+ /* S3 resume exits before clearing RAM */
+ reset_common_data(FOR_MISC);
+ cc.flags |= VB2_CONTEXT_S3_RESUME;
+ cc.flags |= VB2_CONTEXT_DEVELOPER_MODE;
+ TEST_SUCC(vb2api_fw_phase2(&cc), "phase2 s3 dev");
+ TEST_EQ(cc.flags & VB2_CONTEXT_CLEAR_RAM, 0, " clear ram flag");
+ TEST_EQ(cc.flags & VB2_CONTEXT_FW_SLOT_B, 0, " slot b flag");
+
+ reset_common_data(FOR_MISC);
+ cc.flags |= VB2_CONTEXT_S3_RESUME;
+ vb2_nv_set(&cc, VB2_NV_FW_TRIED, 1);
+ TEST_SUCC(vb2api_fw_phase2(&cc), "phase2 s3");
+ TEST_NEQ(cc.flags & VB2_CONTEXT_FW_SLOT_B, 0, " slot b flag");
}
static void get_pcr_digest_tests(void)
diff --git a/tests/vb2_misc_tests.c b/tests/vb2_misc_tests.c
index 01131b49..4186ed59 100644
--- a/tests/vb2_misc_tests.c
+++ b/tests/vb2_misc_tests.c
@@ -281,6 +281,16 @@ static void recovery_tests(void)
"Recovery reason forced");
TEST_NEQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY,
0, "SD flag set");
+
+ /* Override at broken screen */
+ reset_common_data();
+ vb2_nv_set(&cc, VB2_NV_RECOVERY_SUBCODE, VB2_RECOVERY_US_TEST);
+ cc.flags |= VB2_CONTEXT_FORCE_RECOVERY_MODE;
+ vb2_check_recovery(&cc);
+ TEST_EQ(sd->recovery_reason, VB2_RECOVERY_US_TEST,
+ "Recovery reason forced from broken");
+ TEST_NEQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY,
+ 0, "SD flag set");
}
static void dev_switch_tests(void)
@@ -293,6 +303,7 @@ static void dev_switch_tests(void)
TEST_EQ(sd->flags & VB2_SD_DEV_MODE_ENABLED, 0, " sd not in dev");
TEST_EQ(cc.flags & VB2_CONTEXT_DEVELOPER_MODE, 0, " ctx not in dev");
TEST_EQ(mock_tpm_clear_called, 0, " no tpm clear");
+ TEST_EQ(vb2_nv_get(&cc, VB2_NV_REQ_WIPEOUT), 0, " no nv wipeout");
/* Dev mode */
reset_common_data();
@@ -376,6 +387,15 @@ static void dev_switch_tests(void)
" doesn't set dev on in secdata but does set last boot dev");
TEST_EQ(mock_tpm_clear_called, 1, " tpm clear");
+ /* Request disable by ctx flag */
+ reset_common_data();
+ vb2_secdata_set(&cc, VB2_SECDATA_FLAGS,
+ (VB2_SECDATA_FLAG_DEV_MODE |
+ VB2_SECDATA_FLAG_LAST_BOOT_DEVELOPER));
+ cc.flags |= VB2_DISABLE_DEVELOPER_MODE;
+ TEST_SUCC(vb2_check_dev_switch(&cc), "disable dev on ctx request");
+ TEST_EQ(sd->flags & VB2_SD_DEV_MODE_ENABLED, 0, " sd not in dev");
+
/* Simulate clear owner failure */
reset_common_data();
vb2_secdata_set(&cc, VB2_SECDATA_FLAGS,
@@ -442,6 +462,12 @@ static void dev_switch_tests(void)
TEST_NEQ(sd->flags & VB2_SD_DEV_MODE_ENABLED, 0, " sd in dev");
TEST_NEQ(cc.flags & VB2_CONTEXT_DEVELOPER_MODE, 0, " ctx in dev");
TEST_EQ(mock_tpm_clear_called, 1, " tpm clear");
+
+ /* Force wipeout by ctx flag */
+ reset_common_data();
+ cc.flags |= VB2_CONTEXT_FORCE_WIPEOUT_MODE;
+ TEST_SUCC(vb2_check_dev_switch(&cc), "wipeout on ctx flag");
+ TEST_EQ(vb2_nv_get(&cc, VB2_NV_REQ_WIPEOUT), 1, " nv wipeout");
}
static void tpm_clear_tests(void)
diff --git a/tests/vb2_nvstorage_tests.c b/tests/vb2_nvstorage_tests.c
index fe31a5ee..f509b0ab 100644
--- a/tests/vb2_nvstorage_tests.c
+++ b/tests/vb2_nvstorage_tests.c
@@ -51,11 +51,13 @@ static struct nv_field nvfields[] = {
{VB2_NV_CLEAR_TPM_OWNER_REQUEST, 0, 1, 0, "clear tpm owner request"},
{VB2_NV_CLEAR_TPM_OWNER_DONE, 0, 1, 0, "clear tpm owner done"},
{VB2_NV_TPM_REQUESTED_REBOOT, 0, 1, 0, "tpm requested reboot"},
+ {VB2_NV_REQ_WIPEOUT, 0, 1, 0, "request wipeout"},
{VB2_NV_OPROM_NEEDED, 0, 1, 0, "oprom needed"},
{VB2_NV_BACKUP_NVRAM_REQUEST, 0, 1, 0, "backup nvram request"},
{VB2_NV_FASTBOOT_UNLOCK_IN_FW, 0, 1, 0, "fastboot unlock in fw"},
{VB2_NV_BOOT_ON_AC_DETECT, 0, 1, 0, "boot on ac detect"},
{VB2_NV_TRY_RO_SYNC, 0, 1, 0, "try read only software sync"},
+ {VB2_NV_BATTERY_CUTOFF_REQUEST, 0, 1, 0, "battery cutoff request"},
{VB2_NV_KERNEL_MAX_ROLLFORWARD, 0, 0x12345678, 0xFEDCBA98,
"kernel max rollforward"},
{0, 0, 0, 0, NULL}
@@ -197,12 +199,16 @@ static void nv_storage_test(void)
TEST_EQ(vb2_nv_get(&c, VB2_NV_LOCALIZATION_INDEX),
0, "Localization index out of range");
- vb2_nv_set(&c, VB2_NV_FW_RESULT, VB2_FW_RESULT_UNKNOWN + 1);
- vb2_nv_set(&c, VB2_NV_FW_RESULT, VB2_FW_RESULT_UNKNOWN + 100);
+ vb2_nv_set(&c, VB2_NV_FW_RESULT, 100);
TEST_EQ(vb2_nv_get(&c, VB2_NV_FW_RESULT),
VB2_FW_RESULT_UNKNOWN, "Firmware result out of range");
- vb2_nv_set(&c, VB2_NV_DEV_DEFAULT_BOOT, VB2_DEV_DEFAULT_BOOT_DISK + 100);
+ vb2_nv_set(&c, VB2_NV_FW_PREV_RESULT, 100);
+ TEST_EQ(vb2_nv_get(&c, VB2_NV_FW_PREV_RESULT),
+ VB2_FW_RESULT_UNKNOWN, "Fw prev result out of range");
+
+ vb2_nv_set(&c, VB2_NV_DEV_DEFAULT_BOOT,
+ VB2_DEV_DEFAULT_BOOT_DISK + 100);
TEST_EQ(vb2_nv_get(&c, VB2_NV_DEV_DEFAULT_BOOT),
VB2_DEV_DEFAULT_BOOT_DISK, "default to booting from disk");
}
diff --git a/tests/vb2_sha_tests.c b/tests/vb2_sha_tests.c
index 94236355..54bca66f 100644
--- a/tests/vb2_sha_tests.c
+++ b/tests/vb2_sha_tests.c
@@ -181,6 +181,9 @@ static void hash_algorithm_name_tests(void)
TEST_STR_NEQ(vb2_get_hash_algorithm_name(alg),
VB2_INVALID_ALG_NAME, test_name);
}
+
+ TEST_STR_EQ(vb2_get_hash_algorithm_name(VB2_HASH_INVALID),
+ VB2_INVALID_ALG_NAME, "hash alg name invalid");
}
int main(int argc, char *argv[])
diff --git a/tests/vboot_common_tests.c b/tests/vboot_common_tests.c
index 8ca49a68..225d0bbb 100644
--- a/tests/vboot_common_tests.c
+++ b/tests/vboot_common_tests.c
@@ -220,8 +220,10 @@ static void VbSharedDataTest(void)
TEST_EQ(d->kernel_version_lowest, 0,
"VbSharedDataInit kernel_version_lowest");
- TEST_NEQ(VBOOT_SUCCESS, VbSharedDataSetKernelKey(NULL, NULL),
- "VbSharedDataSetKernelKey null");
+ TEST_EQ(VBOOT_SHARED_DATA_INVALID, VbSharedDataSetKernelKey(NULL, NULL),
+ "VbSharedDataSetKernelKey sd null");
+ TEST_EQ(VBOOT_PUBLIC_KEY_INVALID, VbSharedDataSetKernelKey(d, NULL),
+ "VbSharedDataSetKernelKey pubkey null");
}
int main(int argc, char* argv[])