diff options
author | Joel Kitching <kitching@google.com> | 2019-08-22 16:32:05 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-08-28 07:32:06 +0000 |
commit | d0dae8029bc6c6805c56e384038cf8112e8766d6 (patch) | |
tree | c49bdfef1f08ca297adc649838527cbe8ea4874e | |
parent | ab0d526e162ba7478080eab11200f00fe7565338 (diff) | |
download | vboot-d0dae8029bc6c6805c56e384038cf8112e8766d6.tar.gz |
vboot/secdata: remove DISABLE_ROLLBACK_TPM constant
This constant triggered different implementations of the two
functions RollbackFwmpRead and RollbackKernelLock, whose
overridden implementation would then be relied on in various
tests. Instead, directly override these functions within the
tests where they are required.
The overridden implementations were also used in
utilities/load_kernel_test.c, but this utility is currently
broken and not in active use. If we would like to get it working
again, simply override these two functions directly in the C
file, just as is done for unit tests. (See b:139839429.)
BUG=b:124141368, chromium:972956
TEST=make clean && make runtests
BRANCH=none
Change-Id: I0a4d24ea4ae4182b7f4f258860de6f712dae1555
Signed-off-by: Joel Kitching <kitching@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1765169
Tested-by: Joel Kitching <kitching@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | firmware/lib/include/rollback_index.h | 5 | ||||
-rw-r--r-- | firmware/lib/rollback_index.c | 48 | ||||
-rw-r--r-- | tests/rollback_index2_tests.c | 6 | ||||
-rw-r--r-- | tests/vboot_api_kernel2_tests.c | 5 | ||||
-rw-r--r-- | tests/vboot_api_kernel5_tests.c | 31 | ||||
-rw-r--r-- | tests/vboot_detach_menu_tests.c | 5 |
7 files changed, 46 insertions, 60 deletions
@@ -867,12 +867,6 @@ ${FWLIB21_OBJS}: CFLAGS += -DUNROLL_LOOPS ${FWLIB_OBJS}: CFLAGS += -DSAVE_LOCALE_IMMEDIATELY endif -ifeq (${FIRMWARE_ARCH},) -# Disable rollback TPM when compiling locally, since otherwise -# load_kernel_test attempts to talk to the TPM. -${FWLIB_OBJS}: CFLAGS += -DDISABLE_ROLLBACK_TPM -endif - ${FWLIB21_OBJS}: INCLUDES += -Ifirmware/lib21/include # Linktest ensures firmware lib doesn't rely on outside libraries diff --git a/firmware/lib/include/rollback_index.h b/firmware/lib/include/rollback_index.h index 9d6cfcc3..4836063e 100644 --- a/firmware/lib/include/rollback_index.h +++ b/firmware/lib/include/rollback_index.h @@ -118,6 +118,11 @@ enum fwmp_flags { * global variables. */ +uint32_t ReadSpaceFirmware(RollbackSpaceFirmware *rsf); +uint32_t WriteSpaceFirmware(RollbackSpaceFirmware *rsf); +uint32_t ReadSpaceKernel(RollbackSpaceKernel *rsk); +uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk); + /** * Read stored kernel version. */ diff --git a/firmware/lib/rollback_index.c b/firmware/lib/rollback_index.c index c04a282d..e4493a4a 100644 --- a/firmware/lib/rollback_index.c +++ b/firmware/lib/rollback_index.c @@ -18,25 +18,6 @@ #define offsetof(A,B) __builtin_offsetof(A,B) #endif -/* - * Provide protoypes for functions not in the header file. These prototypes - * fix -Wmissing-prototypes warnings. - */ -uint32_t ReadSpaceFirmware(RollbackSpaceFirmware *rsf); -uint32_t WriteSpaceFirmware(RollbackSpaceFirmware *rsf); -uint32_t ReadSpaceKernel(RollbackSpaceKernel *rsk); -uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk); - -#ifdef FOR_TEST -/* - * Compiling for unit test, so we need the real implementations of - * rollback functions. The unit test mocks the underlying tlcl - * functions, so this is okay to run on the host. - */ -#undef CHROMEOS_ENVIRONMENT -#undef DISABLE_ROLLBACK_TPM -#endif - #define RETURN_ON_FAILURE(tpm_command) do { \ uint32_t result_; \ if ((result_ = (tpm_command)) != TPM_SUCCESS) { \ @@ -200,33 +181,6 @@ uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk) return TPM_SUCCESS; } -#ifdef DISABLE_ROLLBACK_TPM -/* Dummy implementations which don't support TPM rollback protection */ - -uint32_t RollbackKernelRead(uint32_t* version) -{ - *version = 0; - return TPM_SUCCESS; -} - -uint32_t RollbackKernelWrite(uint32_t version) -{ - return TPM_SUCCESS; -} - -uint32_t RollbackKernelLock(int recovery_mode) -{ - return TPM_SUCCESS; -} - -uint32_t RollbackFwmpRead(struct RollbackSpaceFwmp *fwmp) -{ - memset(fwmp, 0, sizeof(*fwmp)); - return TPM_SUCCESS; -} - -#else - uint32_t RollbackKernelRead(uint32_t* version) { RollbackSpaceKernel rsk; @@ -338,5 +292,3 @@ uint32_t RollbackFwmpRead(struct RollbackSpaceFwmp *fwmp) memcpy(fwmp, &u.fwmp, sizeof(*fwmp)); return TPM_SUCCESS; } - -#endif /* DISABLE_ROLLBACK_TPM */ diff --git a/tests/rollback_index2_tests.c b/tests/rollback_index2_tests.c index 9df8b06d..b8ebc80e 100644 --- a/tests/rollback_index2_tests.c +++ b/tests/rollback_index2_tests.c @@ -254,9 +254,6 @@ uint32_t TlclGetPermissions(uint32_t index, uint32_t* permissions) /****************************************************************************/ /* Tests for CRC errors */ -extern uint32_t ReadSpaceFirmware(RollbackSpaceFirmware *rsf); -extern uint32_t WriteSpaceFirmware(RollbackSpaceFirmware *rsf); - static void FirmwareSpaceTest(void) { RollbackSpaceFirmware rsf; @@ -290,9 +287,6 @@ static void FirmwareSpaceTest(void) "tlcl calls"); } -extern uint32_t ReadSpaceKernel(RollbackSpaceKernel *rsk); -extern uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk); - static void KernelSpaceTest(void) { RollbackSpaceKernel rsk; diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c index 49a4233a..1791dc71 100644 --- a/tests/vboot_api_kernel2_tests.c +++ b/tests/vboot_api_kernel2_tests.c @@ -127,6 +127,11 @@ static void ResetMocks(void) } /* Mock functions */ +uint32_t RollbackKernelLock(int recovery_mode) +{ + return TPM_SUCCESS; +} + struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c) { return &gbb; diff --git a/tests/vboot_api_kernel5_tests.c b/tests/vboot_api_kernel5_tests.c index bd584395..f07fc2d9 100644 --- a/tests/vboot_api_kernel5_tests.c +++ b/tests/vboot_api_kernel5_tests.c @@ -19,6 +19,7 @@ #include "2struct.h" #include "host_common.h" #include "load_kernel_fw.h" +#include "rollback_index.h" #include "test_common.h" #include "vb2_common.h" #include "vboot_api.h" @@ -115,6 +116,36 @@ struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c) return &gbb; } +uint32_t ReadSpaceFirmware(RollbackSpaceFirmware *rsk) +{ + return VB2_SUCCESS; +} + +uint32_t WriteSpaceFirmware(RollbackSpaceFirmware *rsk) +{ + return VB2_SUCCESS; +} + +uint32_t ReadSpaceKernel(RollbackSpaceKernel *rsk) +{ + return VB2_SUCCESS; +} + +uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk) +{ + return VB2_SUCCESS; +} + +uint32_t RollbackKernelLock(int recovery_mode) +{ + return TPM_SUCCESS; +} + +uint32_t RollbackFwmpRead(struct RollbackSpaceFwmp *fwmp) +{ + return TPM_SUCCESS; +} + vb2_error_t vb2ex_read_resource(struct vb2_context *c, enum vb2_resource_index index, uint32_t offset, void *buf, uint32_t size) diff --git a/tests/vboot_detach_menu_tests.c b/tests/vboot_detach_menu_tests.c index 1a0c6175..14e0aa30 100644 --- a/tests/vboot_detach_menu_tests.c +++ b/tests/vboot_detach_menu_tests.c @@ -129,6 +129,11 @@ static void ResetMocksForManualRecovery(void) } /* Mock functions */ +uint32_t RollbackKernelLock(int recovery_mode) +{ + return TPM_SUCCESS; +} + struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c) { return &gbb; |