diff options
| author | Stephen Cprek <smcprek@us.ibm.com> | 2017-11-21 16:09:22 -0600 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-12-05 14:37:19 -0500 |
| commit | ca52131dad3de16f44b9c9f07b5413edf1e9742a (patch) | |
| tree | 56a0fcd4357510dee0fa25883dea463cfdb1433b /src/usr/secureboot/base/test | |
| parent | 89f7297255af3b70c6c1f7a3845498d13eff5cfd (diff) | |
| download | talos-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.H | 46 |
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); } }; |

