diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | tests/test_common.h | 7 | ||||
-rw-r--r-- | tests/vb21_host_key_tests.c | 38 | ||||
-rw-r--r-- | tests/vb21_host_misc_tests.c | 15 |
4 files changed, 45 insertions, 19 deletions
@@ -1353,9 +1353,9 @@ run2tests: test_setup ${RUNTEST} ${BUILD_RUN}/tests/vb21_common2_tests ${TEST_KEYS} ${RUNTEST} ${BUILD_RUN}/tests/vb21_misc_tests ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_fw_preamble_tests ${TEST_KEYS} - ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_key_tests ${TEST_KEYS} + ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_key_tests ${TEST_KEYS} ${BUILD} ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_keyblock_tests ${TEST_KEYS} - ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_misc_tests + ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_misc_tests ${BUILD} ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_sig_tests ${TEST_KEYS} .PHONY: runfutiltests diff --git a/tests/test_common.h b/tests/test_common.h index 34e39ed7..9d6e8eaf 100644 --- a/tests/test_common.h +++ b/tests/test_common.h @@ -58,4 +58,11 @@ int TEST_SUCC(int result, const char* testname); /* Check that all memory allocations were freed */ int vboot_api_stub_check_memory(void); +/* Abort if asprintf fails. */ +#define xasprintf(...) \ + do { \ + if (asprintf(__VA_ARGS__) < 0) \ + abort(); \ + } while (0) + #endif /* VBOOT_REFERENCE_TEST_COMMON_H_ */ diff --git a/tests/vb21_host_key_tests.c b/tests/vb21_host_key_tests.c index e6730133..08efd9c5 100644 --- a/tests/vb21_host_key_tests.c +++ b/tests/vb21_host_key_tests.c @@ -31,18 +31,20 @@ static const struct alg_combo test_algs[] = { }; static void private_key_tests(const struct alg_combo *combo, - const char *pemfile) + const char *pemfile, const char *temp_dir) { struct vb2_private_key *key, *k2; const struct vb2_private_key *ckey; struct vb2_packed_private_key *pkey; - const char *testfile = "test.vbprik2"; + char *testfile; const char *notapem = "not_a_pem"; const char *testdesc = "test desc"; const struct vb2_id test_id = {.raw = {0xaa}}; uint8_t *buf, *buf2; uint32_t bufsize; + xasprintf(&testfile, "%s/test.vbprik2", temp_dir); + TEST_SUCC(vb2_private_key_read_pem(&key, pemfile), "Read pem - good"); TEST_PTR_NEQ(key, NULL, " key_ptr"); TEST_PTR_NEQ(key->rsa_private_key, NULL, " rsa_private_key"); @@ -166,17 +168,19 @@ static void private_key_tests(const struct alg_combo *combo, } static void public_key_tests(const struct alg_combo *combo, - const char *keybfile) + const char *keybfile, const char *temp_dir) { struct vb2_public_key *key, k2; struct vb2_packed_key *pkey; - const char *testfile = "test.vbpubk2"; + char *testfile; const char *testdesc = "test desc"; const struct vb2_id test_id = {.raw = {0xbb}}; const uint32_t test_version = 0xcc01; uint8_t *buf; uint32_t bufsize; + xasprintf(&testfile, "%s/test.vbprik2", temp_dir); + TEST_EQ(vb2_public_key_read_keyb(&key, "no_such_key"), VB2_ERROR_READ_KEYB_DATA, "Read keyb - no file"); TEST_PTR_EQ(key, NULL, " key_ptr"); @@ -276,34 +280,40 @@ static void public_key_tests(const struct alg_combo *combo, free(pkey); } -static int test_algorithm(const struct alg_combo *combo, const char *keys_dir) +static int test_algorithm(const struct alg_combo *combo, const char *keys_dir, + const char *temp_dir) { int rsa_bits = vb2_rsa_sig_size(combo->sig_alg) * 8; - char pemfile[1024]; - char keybfile[1024]; + char *pemfile; + char *keybfile; printf("***Testing algorithm: %s\n", combo->name); - sprintf(pemfile, "%s/key_rsa%d.pem", keys_dir, rsa_bits); - sprintf(keybfile, "%s/key_rsa%d.keyb", keys_dir, rsa_bits); + xasprintf(&pemfile, "%s/key_rsa%d.pem", keys_dir, rsa_bits); + xasprintf(&keybfile, "%s/key_rsa%d.keyb", keys_dir, rsa_bits); + + private_key_tests(combo, pemfile, temp_dir); + public_key_tests(combo, keybfile, temp_dir); - private_key_tests(combo, pemfile); - public_key_tests(combo, keybfile); + free(pemfile); + free(keybfile); return 0; } int main(int argc, char *argv[]) { - if (argc == 2) { + if (argc == 3) { + const char *keys_dir = argv[1]; + const char *temp_dir = argv[2]; int i; for (i = 0; i < ARRAY_SIZE(test_algs); i++) { - if (test_algorithm(test_algs + i, argv[1])) + if (test_algorithm(test_algs + i, keys_dir, temp_dir)) return 1; } } else { - fprintf(stderr, "Usage: %s <keys_dir>", argv[0]); + fprintf(stderr, "Usage: %s <keys_dir> <temp_dir>\n", argv[0]); return -1; } diff --git a/tests/vb21_host_misc_tests.c b/tests/vb21_host_misc_tests.c index 638977e2..125d0c36 100644 --- a/tests/vb21_host_misc_tests.c +++ b/tests/vb21_host_misc_tests.c @@ -5,6 +5,7 @@ * Tests for host misc library vboot2 functions */ +#include <stdio.h> #include <unistd.h> #include "2sysincludes.h" @@ -27,9 +28,9 @@ static void misc_tests(void) TEST_EQ(vb2_desc_size("foob"), 8, "desc size 'foob'"); } -static void file_tests(void) +static void file_tests(const char *temp_dir) { - const char *testfile = "file_tests.dat"; + char *testfile; const uint8_t test_data[] = "Some test data"; uint8_t *read_data; uint32_t read_size; @@ -37,6 +38,8 @@ static void file_tests(void) uint8_t cbuf[sizeof(struct vb2_struct_common) + 12]; struct vb2_struct_common *c = (struct vb2_struct_common *)cbuf; + xasprintf(&testfile, "%s/file_tests.dat", temp_dir); + unlink(testfile); TEST_EQ(vb2_read_file(testfile, &read_data, &read_size), @@ -70,8 +73,14 @@ static void file_tests(void) int main(int argc, char* argv[]) { + if (argc != 2) { + fprintf(stderr, "Usage: %s <temp_dir>\n", argv[0]); + return -1; + } + const char *temp_dir = argv[1]; + misc_tests(); - file_tests(); + file_tests(temp_dir); return gTestSuccess ? 0 : 255; } |