summaryrefslogtreecommitdiffstats
path: root/src/usr/secureboot/base/test
diff options
context:
space:
mode:
authorStephen Cprek <smcprek@us.ibm.com>2017-11-21 16:09:22 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-12-05 14:37:19 -0500
commitca52131dad3de16f44b9c9f07b5413edf1e9742a (patch)
tree56a0fcd4357510dee0fa25883dea463cfdb1433b /src/usr/secureboot/base/test
parent89f7297255af3b70c6c1f7a3845498d13eff5cfd (diff)
downloadtalos-hostboot-ca52131dad3de16f44b9c9f07b5413edf1e9742a.tar.gz
talos-hostboot-ca52131dad3de16f44b9c9f07b5413edf1e9742a.zip
Handle ContainerHeader asserts more nicely with error logs
Change-Id: I2dfd02bd7c7f5b5356cd93ca967482c2d7f79ec1 RTC: 178520 RTC: 181899 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49966 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/secureboot/base/test')
-rw-r--r--src/usr/secureboot/base/test/securerommgrtest.H46
1 files changed, 38 insertions, 8 deletions
diff --git a/src/usr/secureboot/base/test/securerommgrtest.H b/src/usr/secureboot/base/test/securerommgrtest.H
index 1355cc75d..590258ec0 100644
--- a/src/usr/secureboot/base/test/securerommgrtest.H
+++ b/src/usr/secureboot/base/test/securerommgrtest.H
@@ -244,7 +244,14 @@ class SecureRomManagerTest : public CxxTest::TestSuite
/*******************************************************************/
/* Parse Secure Container Header */
/*******************************************************************/
- SECUREBOOT::ContainerHeader l_conHdr(signedFile_pageAddr);
+ SECUREBOOT::ContainerHeader l_conHdr;
+ l_errl = l_conHdr.setHeader(signedFile_pageAddr);
+ if (l_errl)
+ {
+ TS_FAIL("SecureRomManagerTest::test_parse_container_header: failed to parse Container Header");
+ errlCommit(l_errl, SECURE_COMP_ID);
+ break;
+ }
// Check if container header seems valid
if (!l_conHdr.iv_isValid)
@@ -321,7 +328,14 @@ class SecureRomManagerTest : public CxxTest::TestSuite
/* Parse Secure Container Header */
/*******************************************************************/
- SECUREBOOT::ContainerHeader l_conHdr(signedFile_pageAddr);
+ SECUREBOOT::ContainerHeader l_conHdr;
+ l_errl = l_conHdr.setHeader(signedFile_pageAddr);
+ if (l_errl)
+ {
+ TS_FAIL("SecureRomManagerTest::test_hash_page_table_verify: failed to parse Container Header");
+ errlCommit(l_errl, SECURE_COMP_ID);
+ break;
+ }
size_t l_payloadTextSize = l_conHdr.payloadTextSize();
TRACUCOMP(g_trac_secure, "SecureRomManagerTest::test_hash_page_table_verify ContainerHeader payload_size = 0x%X",
l_payloadTextSize);
@@ -447,6 +461,8 @@ class SecureRomManagerTest : public CxxTest::TestSuite
break;
}
+ // Could replace with SECUREBOOT::ContainerHeader ability to generate
+ // fake headers
char pHeader[MAX_SECURE_HEADER_SIZE]={0};
memcpy(pHeader,signedFile_pageAddr,sizeof(pHeader));
@@ -462,7 +478,15 @@ class SecureRomManagerTest : public CxxTest::TestSuite
{
memset(pCompIdInContainer,0x00,compIdSize);
strncpy(pCompIdInContainer,test.pActualCompId,compIdSize);
- SECUREBOOT::ContainerHeader containerHeader(pHeader);
+ SECUREBOOT::ContainerHeader containerHeader;
+ pError = containerHeader.setHeader(pHeader);
+ if (pError)
+ {
+ errlCommit(pError, SECURE_COMP_ID);
+ TS_FAIL("SecureRomManagerTest::test_verifyContainer: failed to parse Container Header");
+ break;
+ }
+
pError = SECUREBOOT::verifyComponent(
containerHeader,
@@ -536,20 +560,24 @@ class SecureRomManagerTest : public CxxTest::TestSuite
// otherwise strncmp below needs a different size
const char* l_compId = "FAKEHEADERTEST";
+ do {
// Simple call constructor to create fake header and make sure it
// does not cause an error
- SECUREBOOT::ContainerHeader l_fakeHdr(l_totalContainerSize, l_compId);
-
- // Check if Header is mising
- if (!PNOR::cmpSecurebootMagicNumber(l_fakeHdr.fakeHeader()))
+ SECUREBOOT::ContainerHeader l_fakeHdr;
+ errlHndl_t l_errl = l_fakeHdr.setFakeHeader(l_totalContainerSize,
+ l_compId);
+ if (l_errl)
{
- TS_FAIL("SecureRomManagerTest::test_fakeHeader: missing magic number");
+ TS_FAIL("SecureRomManagerTest::test_fakeHeader: failed to parse Container Header");
+ errlCommit(l_errl, SECURE_COMP_ID);
+ break;
}
// Payload Text Size should be the total container size minus the header
if(l_fakeHdr.payloadTextSize() != (l_totalContainerSize - PAGE_SIZE))
{
TS_FAIL("SecureRomManagerTest::test_fakeHeader: payload text size was not parsed correctly");
+ break;
}
// Ensure the parsed component ID matches what was passed in through
@@ -558,7 +586,9 @@ class SecureRomManagerTest : public CxxTest::TestSuite
SW_HDR_COMP_ID_SIZE_BYTES) != 0)
{
TS_FAIL("SecureRomManagerTest::test_fakeHeader: component ID was not parsed correctly");
+ break;
}
+ } while(0);
}
};
OpenPOWER on IntegriCloud