diff options
Diffstat (limited to 'src/usr/secureboot')
-rw-r--r-- | src/usr/secureboot/base/test/securerommgrtest.H | 14 | ||||
-rw-r--r-- | src/usr/secureboot/common/containerheader.C | 6 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/usr/secureboot/base/test/securerommgrtest.H b/src/usr/secureboot/base/test/securerommgrtest.H index 115813d3d..3dee8952e 100644 --- a/src/usr/secureboot/base/test/securerommgrtest.H +++ b/src/usr/secureboot/base/test/securerommgrtest.H @@ -555,7 +555,7 @@ class SecureRomManagerTest : public CxxTest::TestSuite { TRACFCOMP(g_trac_secure,"SecureRomManagerTest::test_fakeHeader"); - const size_t l_totalContainerSize = 0x10000; + const size_t l_payloadSize = 0x10000; // Purposely make a comp id larger than SW_HDR_COMP_ID_SIZE_BYTES // otherwise strncmp below needs a different size const char* l_compId = "FAKEHEADERTEST"; @@ -564,7 +564,7 @@ class SecureRomManagerTest : public CxxTest::TestSuite // Simple call constructor to create fake header and make sure it // does not cause an error SECUREBOOT::ContainerHeader l_fakeHdr; - errlHndl_t l_errl = l_fakeHdr.setFakeHeader(l_totalContainerSize, + errlHndl_t l_errl = l_fakeHdr.setFakeHeader(l_payloadSize, l_compId); if (l_errl) { @@ -573,8 +573,14 @@ class SecureRomManagerTest : public CxxTest::TestSuite break; } - // Payload Text Size should be the total container size minus the header - if(l_fakeHdr.payloadTextSize() != (l_totalContainerSize - PAGE_SIZE)) + // Total Container size should be payload size + PAGE_SIZE(header size) + if(l_fakeHdr.totalContainerSize() != (l_payloadSize + PAGE_SIZE)) + { + TS_FAIL("SecureRomManagerTest::test_fakeHeader: total container size was not parsed correctly"); + } + + // Check that payload text size was assigned correctly. + if(l_fakeHdr.payloadTextSize() != (l_payloadSize)) { TS_FAIL("SecureRomManagerTest::test_fakeHeader: payload text size was not parsed correctly"); break; diff --git a/src/usr/secureboot/common/containerheader.C b/src/usr/secureboot/common/containerheader.C index 47ccfebea..e01b09b8b 100644 --- a/src/usr/secureboot/common/containerheader.C +++ b/src/usr/secureboot/common/containerheader.C @@ -171,7 +171,7 @@ void ContainerHeader::initVars() memset(iv_componentId,0x00,sizeof(iv_componentId)); } -void ContainerHeader::genFakeHeader(const size_t i_totalSize, +void ContainerHeader::genFakeHeader(const size_t i_size, const char* const i_compId) { SecureHeaderInfo info {}; @@ -182,7 +182,7 @@ void ContainerHeader::genFakeHeader(const size_t i_totalSize, /*---- ROM_container_raw ----*/ info.hw_hdr.magic_number = ROM_MAGIC_NUMBER; info.hw_hdr.version = CONTAINER_VERSION; - info.hw_hdr.container_size = i_totalSize; + info.hw_hdr.container_size = i_size + PAGE_SIZE; // The rom code has a placeholder for the prefix in the first struct so // skip it size_t l_size = offsetof(ROM_container_raw, prefix); @@ -212,7 +212,7 @@ void ContainerHeader::genFakeHeader(const size_t i_totalSize, strncpy(info.sw_hdr.component_id, i_compId,SW_HDR_COMP_ID_SIZE_BYTES); info.sw_hdr.ver_alg.hash_alg = HASH_ALG_SHA512; info.sw_hdr.ver_alg.sig_alg = SIG_ALG_ECDSA521; - info.sw_hdr.payload_size = i_totalSize - PAGE_SIZE; + info.sw_hdr.payload_size = i_size; l_size = offsetof(ROM_sw_header_raw, ecid); l_size += info.hw_prefix_hdr.ecid_count * ECID_SIZE; |