From c60a95af20d9660366c2bb7d4402dc831956d880 Mon Sep 17 00:00:00 2001 From: el-tipton Date: Mon, 19 Feb 2024 15:13:16 -0600 Subject: [PATCH 1/5] Initial commit of files --- .github/workflows/build_testcases.yml | 43 + BOM.txt | 0 CITATION.cff | 17 + CONTRIBUTING.md | 2 +- .../Seed/Ata/Raw/IdentifyData.bin | Bin 0 -> 512 bytes .../Seed/BMP/Raw/1.bmp | Bin 0 -> 70 bytes .../Seed/BMP/Raw/16.bmp | Bin 0 -> 62 bytes .../Seed/BMP/Raw/16_1.bmp | Bin 0 -> 78 bytes .../Seed/BMP/Raw/24.bmp | Bin 0 -> 70 bytes .../Seed/BMP/Raw/32.bmp | Bin 0 -> 70 bytes .../Seed/BMP/Raw/4.bmp | Bin 0 -> 126 bytes .../Seed/BMP/Raw/4_1.bmp | Bin 0 -> 130 bytes .../Seed/BMP/Raw/8.bmp | Bin 0 -> 1086 bytes .../Seed/BMP/Raw/8_1.bmp | Bin 0 -> 1090 bytes .../Seed/BMP/Raw/sample.bmp | Bin 0 -> 65 bytes .../Seed/Blk/VirtioBlkFuzzSeed0.9.5.bin | Bin 0 -> 308 bytes .../Seed/Blk/VirtioBlkFuzzSeed1.0.0.bin | Bin 0 -> 344 bytes .../Seed/Blk/VirtioBlkFuzzSeed1.0.0_fix.bin | Bin 0 -> 344 bytes .../Seed/Capsule/MICROCODECAPSULE1.Cap | Bin 0 -> 52312 bytes .../QUARKFIRMWAREUPDATECAPSULEFMPPKCS7.Cap | Bin 0 -> 11107 bytes .../Seed/Capsule/QUARKREC.Cap | Bin 0 -> 8840 bytes .../Seed/Cfv/cfv01.bin | Bin 0 -> 221184 bytes .../Seed/Cfv/securebootcfv01.bin | Bin 0 -> 221184 bytes .../Seed/Gpt/Raw/Gpt.bin | Bin 0 -> 524288 bytes .../Seed/Gpt/Raw/Gpt_16384.bin | Bin 0 -> 524288 bytes .../Seed/Gpt/Raw/Gpt_error.bin | Bin 0 -> 524288 bytes .../Seed/Include/Uefi.py | 41 + .../Seed/Instruction/instruction000.bin | 1 + .../Seed/Instruction/instruction001.bin | 1 + .../Seed/Instruction/instruction002.bin | 1 + .../Seed/Instruction/instruction003.bin | 1 + .../Seed/Instruction/instruction004.bin | Bin 0 -> 2 bytes .../Seed/Instruction/instruction005.bin | Bin 0 -> 5 bytes .../Seed/Instruction/instruction006.bin | Bin 0 -> 5 bytes .../Seed/Instruction/instruction007.bin | Bin 0 -> 11 bytes .../Seed/Instruction/instruction008.bin | 1 + .../Seed/Instruction/instruction009.bin | 1 + .../Seed/Instruction/instruction010.bin | 1 + .../Seed/Instruction/instruction011.bin | 1 + .../Seed/Instruction/instruction012.bin | 1 + .../Seed/Instruction/instruction013.bin | 1 + .../Seed/Instruction/instruction014.bin | 1 + .../Seed/Instruction/instruction015.bin | 1 + .../Seed/Instruction/instruction016.bin | 1 + .../Seed/Instruction/instruction017.bin | 1 + .../Seed/Instruction/instruction018.bin | 1 + .../Seed/Instruction/instruction019.bin | 1 + .../Seed/Instruction/instruction020.bin | 1 + .../Seed/Instruction/instruction021.bin | 1 + .../Seed/Instruction/instruction022.bin | Bin 0 -> 5 bytes .../Seed/Instruction/instruction023.bin | Bin 0 -> 6 bytes .../Seed/Instruction/instruction024.bin | Bin 0 -> 5 bytes .../Seed/Instruction/instruction025.bin | Bin 0 -> 5 bytes .../Seed/Instruction/instruction026.bin | Bin 0 -> 5 bytes .../Seed/Mutator/MutatorSimple.py | 219 + .../Seed/SignatureList/SignatureList.raw | Bin 0 -> 1353 bytes .../Seed/TPM/Raw/Tpm2Res.bin | Bin 0 -> 86 bytes .../Seed/TPM/Script/SeedGenTpm2Response.py | 123 + .../Seed/TdxHob/hob.bin | Bin 0 -> 4864 bytes .../Seed/UDF/Raw/FileName/0 | 0 .../Seed/UDF/Raw/FileName/1 | Bin 0 -> 4 bytes .../Seed/UDF/Raw/FileName/2 | Bin 0 -> 4 bytes .../Seed/UDF/Raw/FileName/22 | Bin 0 -> 8 bytes .../Seed/UDF/Raw/FileName/__a | Bin 0 -> 16 bytes .../Seed/UDF/Raw/FileName/a | Bin 0 -> 4 bytes .../Seed/UDF/Raw/FileName/b | Bin 0 -> 4 bytes .../Seed/UDF/Raw/FileName/b_a | Bin 0 -> 28 bytes .../Seed/UDF/Raw/FileName/b_c | Bin 0 -> 12 bytes .../Seed/UDF/Raw/FileName/blink | Bin 0 -> 24 bytes .../Seed/UDF/Raw/FileName/blink_a | Bin 0 -> 56 bytes .../Seed/UDF/Raw/FileName/blink_alink | Bin 0 -> 52 bytes .../Seed/UDF/Raw/FileName/blink_c_ | Bin 0 -> 36 bytes .../Seed/UDF/Raw/FileSystem/test_123.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_a.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_a_0.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_a_e1.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_a_mm.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_a_mm_f.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_a_mm_ff.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_all.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_ca.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_udf.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_udf_fid.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_udf_m.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_udf_m1.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_udf_m3.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/FileSystem/test_udf_m4.bin | Bin 0 -> 1048576 bytes .../UDF/Raw/FileSystem/test_udf_m5_16.bin | Bin 0 -> 1048576 bytes .../UDF/Raw/FileSystem/test_udf_m5_17.bin | Bin 0 -> 1048576 bytes .../UDF/Raw/FileSystem/test_udf_m5_double.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/Partition/Udf_1.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/Partition/Udf_2.bin | Bin 0 -> 34816 bytes .../Seed/UDF/Raw/Partition/Udf_3.bin | Bin 0 -> 36864 bytes .../Seed/UDF/Raw/Partition/Udf_linux.bin | Bin 0 -> 1048576 bytes .../Seed/UDF/Raw/Partition/test000001.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000002.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000003.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000004.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000005.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000006.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000007.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000008.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000009.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000010.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000011.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000012.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000013.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000014.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000015.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000016.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000017.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000018.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000019.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000020.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000021.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000022.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000023.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/Partition/test000024.seed | Bin 0 -> 524288 bytes .../Seed/UDF/Raw/readme.txt | 0 .../Seed/UDF/Script/SeedGenUdf.py | 108 + .../Seed/UDF/Script/Udf.py | 334 ++ .../Seed/UDF/Script/__init__.py | 0 .../Seed/USB/Raw/Usb.bin | Bin 0 -> 32 bytes .../Seed/VariableSmm/Raw/VarSmm.bin | Bin 0 -> 72 bytes HBFA/UefiHostFuzzTestCasePkg/Seed/readme.txt | 38 + .../TestSignatureList/TestSignatureList.c | 49 + .../TestSignatureList/TestSignatureList.inf | 44 + .../CreateErrorInjectionProfile.py | 77 + .../InstrumentHookLibTestPeiGpt.c | 203 + .../InstrumentHookLibTestPeiGpt.inf | 41 + .../FatPkg/FatPei/Override/FatLiteLib.c | 56 + .../FatPkg/FatPei/Override/FatPei.inf | 70 + .../TestCase/FatPkg/FatPei/TestPeiGpt.c | 235 ++ .../TestCase/FatPkg/FatPei/TestPeiGpt.inf | 42 + .../Bus/Ata/AhciPei/Override/AhciMode.c | 2137 ++++++++++ .../Bus/Ata/AhciPei/Override/AhciPei.h | 746 ++++ .../Bus/Ata/AhciPei/Override/AhciPei.inf | 67 + .../Bus/Ata/AhciPei/Override/AhciPeiBlockIo.c | 526 +++ .../Bus/Ata/AhciPei/Override/AhciPeiBlockIo.h | 257 ++ .../Ata/AhciPei/Override/AhciPeiPassThru.c | 514 +++ .../Ata/AhciPei/Override/AhciPeiPassThru.h | 177 + .../AhciPei/Override/AhciPeiStorageSecurity.c | 384 ++ .../AhciPei/Override/AhciPeiStorageSecurity.h | 240 ++ .../Bus/Ata/AhciPei/Override/DevicePath.c | 277 ++ .../Bus/Ata/AhciPei/Override/DmaMem.c | 269 ++ .../Bus/Ata/AhciPei/Override/IoMmu.h | 201 + .../Bus/Ata/AhciPei/TestIdentifyAtaDevice.c | 150 + .../Bus/Ata/AhciPei/TestIdentifyAtaDevice.inf | 47 + .../MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.c | 65 + .../Bus/Usb/UsbBusDxe/TestUsb.inf | 38 + .../Bus/Usb/UsbBusPei/TestPeiUsb.c | 77 + .../Bus/Usb/UsbBusPei/TestPeiUsb.inf | 39 + .../BaseBmpSupportLib/TestBmpSupportLib.c | 67 + .../BaseBmpSupportLib/TestBmpSupportLib.inf | 38 + .../CapsulePei/Common/TestCapsulePei.c | 84 + .../CapsulePei/Common/TestCapsulePei.inf | 36 + .../CreateErrorInjectionProfile.py | 81 + .../InstrumentHookLibTestPartition.c | 245 ++ .../InstrumentHookLibTestPartition.inf | 40 + .../Disk/PartitionDxe/TestPartition.c | 85 + .../Disk/PartitionDxe/TestPartition.inf | 36 + .../CreateErrorInjectionProfile.py | 82 + .../InstrumentHookLibTestUdf.c | 206 + .../InstrumentHookLibTestUdf.inf | 40 + .../Universal/Disk/UdfDxe/TestFileName.c | 43 + .../Universal/Disk/UdfDxe/TestFileName.inf | 35 + .../Universal/Disk/UdfDxe/TestUdf.c | 512 +++ .../Universal/Disk/UdfDxe/TestUdf.inf | 44 + .../Variable/RuntimeDxe/TestVariableSmm.c | 85 + .../Variable/RuntimeDxe/TestVariableSmm.inf | 39 + .../OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.h | 140 + .../TestValidateTdxCfv.c | 69 + .../TestValidateTdxCfv.inf | 46 + .../OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.c | 64 + .../Virtio10BlkDxe/TestVirtio10Blk.inf | 40 + .../OvmfPkg/VirtioBlkDxe/TestVirtioBlk.c | 67 + .../OvmfPkg/VirtioBlkDxe/TestVirtioBlk.inf | 40 + .../TestVirtioBlkReadWrite.c | 74 + .../TestVirtioBlkReadWrite.inf | 40 + .../VirtioPciDeviceDxe/TestVirtioPciDevice.c | 181 + .../TestVirtioPciDevice.inf | 39 + .../TestTcg2MeasureGptTable.c | 111 + .../TestTcg2MeasureGptTable.inf | 50 + .../TestTcg2MeasurePeImage.c | 154 + .../TestTcg2MeasurePeImage.inf | 42 + .../CryptoLibStubPkcs7.inf | 43 + .../CryptoStubPkcs7.c | 22 + .../FmpAuthenticationLibPkcs7/SamplePkcs7.c | 11 + .../TestFmpAuthenticationLibPkcs7.c | 55 + .../TestFmpAuthenticationLibPkcs7.inf | 44 + .../CryptoLibStubRsa2048Sha256.inf | 43 + .../CryptoStubRsa2048Sha256.c | 90 + .../SampleRsa2048Sha256.c | 11 + .../TestFmpAuthenticationLibRsa2048Sha256.c | 55 + .../TestFmpAuthenticationLibRsa2048Sha256.inf | 44 + .../Tpm2CommandLib/TestTpm2CommandLib.c | 86 + .../Tpm2CommandLib/TestTpm2CommandLib.inf | 38 + .../TestStub/DiskStubLib/DiskStubLib.c | 735 ++++ .../TestStub/DiskStubLib/DiskStubLib.inf | 35 + .../TestStub/Include/Library/DiskStubLib.h | 32 + .../Include/Library/SmmMemLibStubLib.h | 25 + .../TestStub/Include/Library/Tcg2StubLib.h | 12 + .../Include/Library/Tpm2DeviceStubLib.h | 20 + .../Include/Library/Usb2HcPpiStubLib.h | 26 + .../TestStub/Include/Library/Usb2HcStubLib.h | 26 + .../Include/Library/UsbIoPpiStubLib.h | 26 + .../Include/Library/VirtioBlkStubLib.h | 41 + .../Include/Library/VirtioPciDeviceStubLib.h | 152 + .../TestStub/Tcg2StubLib/Tcg2StubLib.c | 318 ++ .../TestStub/Tcg2StubLib/Tcg2StubLib.inf | 35 + .../Tpm2DeviceLibStub/Tpm2DeviceLibStub.c | 72 + .../Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf | 34 + .../Usb2HcPpiStubLib/Usb2HcPpiStubLib.c | 369 ++ .../Usb2HcPpiStubLib/Usb2HcPpiStubLib.inf | 36 + .../TestStub/Usb2HcStubLib/Usb2HcStubLib.c | 485 +++ .../TestStub/Usb2HcStubLib/Usb2HcStubLib.inf | 35 + .../UsbIoPpiStubLib/UsbIoPpiStubLib.c | 340 ++ .../UsbIoPpiStubLib/UsbIoPpiStubLib.inf | 36 + .../VirtioBlkStubLib/VirtioBlkStubLib.c | 324 ++ .../VirtioBlkStubLib/VirtioBlkStubLib.inf | 36 + .../VirtioPciDevice10StubLib.c | 968 +++++ .../VirtioPciDevice10StubLib.inf | 39 + .../VirtioPciDeviceStubLib.c | 404 ++ .../VirtioPciDeviceStubLib.inf | 36 + .../UefiHostFuzzTestCasePkg.dec | 15 + .../UefiHostFuzzTestCasePkg.dsc | 296 ++ .../UefiHostFuzzTestDeviceSecurityPkg.dsc | 83 + HBFA/UefiHostFuzzTestPkg/Conf/LLVMLink.py | 90 + .../Conf/build_rule.customized | 646 +++ .../Conf/tools_def.customized | 614 +++ .../Include/Library/ToolChainHarnessLib.h | 24 + .../ToolChainHarnessLib/ToolChainHarnessLib.c | 185 + .../ToolChainHarnessLib.inf | 32 + HBFA/UefiHostFuzzTestPkg/ReadME-AFLTurbo.txt | 68 + HBFA/UefiHostFuzzTestPkg/ReadMe-AFL.txt | 115 + .../ReadMe-ErrorInjection.txt | 36 + HBFA/UefiHostFuzzTestPkg/ReadMe-KLEE.txt | 122 + HBFA/UefiHostFuzzTestPkg/ReadMe-LibFuzzer.txt | 73 + .../UefiHostFuzzTestBuildOption.dsc | 170 + .../UefiHostFuzzTestPkg.dec | 15 + .../Include/Library/OsServiceLib.h | 24 + .../BaseCacheMaintenanceLibHost.inf | 31 + .../BaseCacheMaintenanceLibHost/Cache.c | 226 + .../Library/BaseCpuLibHost/BaseCpuLibHost.c | 38 + .../Library/BaseCpuLibHost/BaseCpuLibHost.inf | 25 + .../Library/BaseLibHost/ARShiftU64.c | 44 + .../Library/BaseLibHost/BaseLibHost.inf | 80 + .../Library/BaseLibHost/BaseLibHostNoAsm.inf | 76 + .../Library/BaseLibHost/BitField.c | 1004 +++++ .../Library/BaseLibHost/Cache.c | 40 + .../Library/BaseLibHost/CheckSum.c | 628 +++ .../UefiHostTestPkg/Library/BaseLibHost/Cpu.c | 95 + .../Library/BaseLibHost/CpuBreakpointGcc.c | 26 + .../Library/BaseLibHost/CpuBreakpointMsvc.c | 35 + .../Library/BaseLibHost/CpuDeadLoop.c | 32 + .../Library/BaseLibHost/DivS64x64Remainder.c | 54 + .../Library/BaseLibHost/DivU64x32.c | 45 + .../Library/BaseLibHost/DivU64x32Remainder.c | 50 + .../Library/BaseLibHost/DivU64x64Remainder.c | 50 + .../Library/BaseLibHost/DummyRdRand.c | 65 + .../Library/BaseLibHost/DummyReadTsc.c | 19 + .../Library/BaseLibHost/GetPowerOfTwo32.c | 37 + .../Library/BaseLibHost/GetPowerOfTwo64.c | 37 + .../Library/BaseLibHost/HighBitSet32.c | 40 + .../Library/BaseLibHost/HighBitSet64.c | 47 + .../Library/BaseLibHost/Ia32/RdRand.nasm | 84 + .../Library/BaseLibHost/Ia32/ReadTsc.nasm | 31 + .../Library/BaseLibHost/LRotU32.c | 38 + .../Library/BaseLibHost/LRotU64.c | 45 + .../Library/BaseLibHost/LShiftU64.c | 44 + .../Library/BaseLibHost/Lfence.c | 10 + .../Library/BaseLibHost/LinkedList.c | 536 +++ .../Library/BaseLibHost/LongJump.c | 46 + .../Library/BaseLibHost/LowBitSet32.c | 40 + .../Library/BaseLibHost/LowBitSet64.c | 43 + .../Library/BaseLibHost/Math64.c | 364 ++ .../Library/BaseLibHost/ModU64x32.c | 45 + .../Library/BaseLibHost/MultS64x64.c | 35 + .../Library/BaseLibHost/MultU64x32.c | 46 + .../Library/BaseLibHost/MultU64x64.c | 46 + .../Library/BaseLibHost/RRotU32.c | 38 + .../Library/BaseLibHost/RRotU64.c | 45 + .../Library/BaseLibHost/RShiftU64.c | 44 + .../Library/BaseLibHost/SafeString.c | 3693 +++++++++++++++++ .../Library/BaseLibHost/SetJump.c | 54 + .../Library/BaseLibHost/String.c | 1163 ++++++ .../Library/BaseLibHost/SwapBytes16.c | 31 + .../Library/BaseLibHost/SwapBytes32.c | 37 + .../Library/BaseLibHost/SwapBytes64.c | 37 + .../Library/BaseLibHost/SwitchStackNull.c | 52 + .../Library/BaseLibHost/Unaligned.c | 216 + .../Library/BaseLibHost/X64/RdRand.nasm | 77 + .../Library/BaseLibHost/X64/ReadTsc.nasm | 34 + .../Library/BaseLibHost/X86Cr.c | 180 + .../BaseLibHost/X86DisablePaging64Null.c | 53 + .../Library/BaseLibHost/X86Dr.c | 170 + .../Library/BaseLibHost/X86GdtrNull.c | 50 + .../Library/BaseLibHost/X86IdtrNull.c | 50 + .../Library/BaseLibHost/X86MemoryFenceGcc.c | 29 + .../Library/BaseLibHost/X86MemoryFenceMsvc.c | 27 + .../Library/BaseLibHost/X86PatchInstruction.c | 84 + .../Library/BaseLibHost/X86RdRand.c | 121 + .../Library/BaseLibHost/X86SegmentNull.c | 163 + .../BaseLibNullCpuid/BaseLibNullCpuid.c | 39 + .../BaseLibNullCpuid/BaseLibNullCpuid.inf | 31 + .../Library/BaseLibNullMsr/BaseLibNullMsr.c | 99 + .../Library/BaseLibNullMsr/BaseLibNullMsr.inf | 31 + .../BaseMemoryLibHost/BaseMemoryLibHost.c | 232 ++ .../BaseMemoryLibHost/BaseMemoryLibHost.inf | 25 + .../Library/BasePcdLibHost/BasePcdLibHost.c | 1456 +++++++ .../Library/BasePcdLibHost/BasePcdLibHost.inf | 35 + .../BaseTimerLibHost/BaseTimerLibHost.c | 121 + .../BaseTimerLibHost/BaseTimerLibHost.inf | 33 + .../Library/DebugLibHost/DebugLibHost.c | 182 + .../Library/DebugLibHost/DebugLibHost.inf | 31 + .../DxeServicesTableLibHost.c | 192 + .../DxeServicesTableLibHost.inf | 40 + .../Library/DxeServicesTableLibHost/Gcd.c | 2158 ++++++++++ .../Library/DxeServicesTableLibHost/Gcd.h | 588 +++ .../Library/HobLibHost/HobLibHost.c | 798 ++++ .../Library/HobLibHost/HobLibHost.inf | 31 + .../MemoryAllocationLibHost.c | 302 ++ .../MemoryAllocationLibHost.inf | 25 + .../OsServiceLibHost/OsServiceLibGcc.c | 45 + .../OsServiceLibHost/OsServiceLibHost.inf | 26 + .../OsServiceLibHost/OsServiceLibMsvc.c | 41 + .../Library/OsServiceLibHost/WinNTInclude.h | 74 + .../PeiServicesTablePointerLibHost/CpuIo.c | 535 +++ .../PeiServicesTablePointerLibHost/PciCfg2.c | 122 + .../PeiServicesTablePointerLibHost/PeiMain.h | 1867 +++++++++ .../PeiServicesTablePointerLibHost.c | 416 ++ .../PeiServicesTablePointerLibHost.inf | 39 + .../PeiServicesTablePointerLibHost/Ppi.c | 583 +++ .../PeimEntryPointHost/PeimEntryPointHost.c | 39 + .../PeimEntryPointHost/PeimEntryPointHost.inf | 33 + .../Library/SmmMemLibHost/SmmMemLibHost.c | 218 + .../Library/SmmMemLibHost/SmmMemLibHost.inf | 33 + .../Library/SmmServicesTableLibHost/Handle.c | 528 +++ .../InstallConfigurationTable.c | 171 + .../Library/SmmServicesTableLibHost/Locate.c | 489 +++ .../Library/SmmServicesTableLibHost/Notify.c | 196 + .../SmmServicesTableLibHost/PiSmmCore.c | 85 + .../SmmServicesTableLibHost/PiSmmCore.h | 1352 ++++++ .../SmmServicesTableLibHost.c | 112 + .../SmmServicesTableLibHost.inf | 43 + .../DriverSupport.c | 953 +++++ .../UefiBootServicesTableLibHost/DxeMain.h | 2949 +++++++++++++ .../UefiBootServicesTableLibHost/Event.h | 91 + .../UefiBootServicesTableLibHost/Handle.c | 1568 +++++++ .../UefiBootServicesTableLibHost/Handle.h | 264 ++ .../UefiBootServicesTableLibHost/Library.c | 100 + .../UefiBootServicesTableLibHost/Locate.c | 702 ++++ .../UefiBootServicesTableLibHost/Notify.c | 285 ++ .../UefiBootServicesTableLibHost/Tpl.c | 77 + .../UefiBootServicesTableLibHost.c | 294 ++ .../UefiBootServicesTableLibHost.inf | 43 + .../DevicePathUtilities.c | 889 ++++ .../UefiDevicePathLibHost/UefiDevicePathLib.c | 354 ++ .../UefiDevicePathLibHost/UefiDevicePathLib.h | 451 ++ .../UefiDevicePathLibHost.inf | 43 + .../UefiDriverEntryPointHost.c | 57 + .../UefiDriverEntryPointHost.inf | 61 + .../Library/UefiLibHost/UefiDriverModel.c | 101 + .../Library/UefiLibHost/UefiLib.c | 157 + .../Library/UefiLibHost/UefiLibHost.inf | 47 + .../Library/UefiLibHost/UefiLibInternal.h | 39 + .../AuthVarCertDB.c | 385 ++ .../AuthVarCertDB.h | 125 + .../AuthVariable.c | 479 +++ .../AuthVariable.h | 41 + .../OsVariable.c | 784 ++++ .../OsVariable.h | 71 + .../UefiRuntimeServicesTableLibHost/Time.c | 43 + .../UefiRuntimeServicesTableLibHost.c | 160 + .../UefiRuntimeServicesTableLibHost.inf | 43 + .../Variable.c | 541 +++ .../Variable.h | 257 ++ .../VariableCommon.h | 51 + .../Library/VarCheckLibNull/VarCheckLibNull.c | 78 + .../VarCheckLibNull/VarCheckLibNull.inf | 43 + .../UefiHostTestBuildOption.dsc | 66 + HBFA/UefiHostTestPkg/UefiHostTestPkg.dec | 15 + HBFA/UefiHostTestPkg/UefiHostTestPkg.dsc | 56 + HBFA/UefiHostTestTools/HBFAEnvSetup.py | 168 + .../Report/GenCodeCoverage.py | 319 ++ .../Report/GenGdbHtmlReport.py | 199 + HBFA/UefiHostTestTools/Report/GenGdbInfo.py | 208 + .../UefiHostTestTools/Report/GenLLVMReport.py | 85 + .../Report/GenSanitizerHtmlReport.py | 301 ++ .../Report/GenSanitizerInfo.py | 358 ++ .../Report/GenSummaryInfo.py | 177 + .../Report/GenSummaryReport.py | 132 + HBFA/UefiHostTestTools/Report/GetSeedsList.py | 72 + .../Report/IndexSummaryTemplate.html | 241 ++ .../Report/IndexTemplate.html | 278 ++ HBFA/UefiHostTestTools/Report/ReportMain.py | 203 + HBFA/UefiHostTestTools/Report/__init__.py | 0 HBFA/UefiHostTestTools/RunAFL.py | 329 ++ HBFA/UefiHostTestTools/RunAFLTurbo.py | 286 ++ HBFA/UefiHostTestTools/RunKLEE.py | 258 ++ HBFA/UefiHostTestTools/RunLibFuzzer.py | 474 +++ HBFA/UefiHostTestTools/Script/RunAllSeeds.py | 35 + .../Script/TransferKtestToSeed.py | 113 + HBFA/UefiHostTestTools/__init__.py | 0 .../__pycache__/RunAFL.cpython-311.pyc | Bin 0 -> 18487 bytes .../__pycache__/RunAFLTurbo.cpython-311.pyc | Bin 0 -> 15683 bytes .../__pycache__/RunKLEE.cpython-311.pyc | Bin 0 -> 13610 bytes .../__pycache__/RunLibFuzzer.cpython-311.pyc | Bin 0 -> 25189 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 225 bytes HBFA/UefiInstrumentTestCasePkg/ReadMe-BME.txt | 32 + .../InstrumentHookLibTracingPci.c | 696 ++++ .../InstrumentHookLibTracingPci.inf | 36 + .../TestCase/Usb2HcHook/Usb2HcHook.c | 717 ++++ .../TestCase/Usb2HcHook/Usb2HcHook.inf | 36 + .../UefiInstrumentTestCasePkg.dec | 15 + .../UefiInstrumentTestCasePkg.dsc | 174 + .../Include/Library/IniParsingLib.h | 185 + .../Include/Library/InstrumentHookLib.h | 183 + .../Library/IniParsingLib/IniParsingLib.c | 1394 +++++++ .../Library/IniParsingLib/IniParsingLib.inf | 37 + .../Library/IniParsingLib/IniParsingLib.uni | 16 + .../InstrumentHookLibNull.c | 31 + .../InstrumentHookLibNull.inf | 29 + .../Ia32/CygProfileEnterExit.nasm | 96 + .../Ia32/CygProfileEnterExitStub.c | 39 + .../Library/InstrumentLib/Ia32/FuncParam.c | 157 + .../Library/InstrumentLib/Ia32/FuncParamGcc.c | 156 + .../InstrumentLib/Ia32/FuncParamMsvc.c | 157 + .../InstrumentLib/Ia32/PEnterExit.nasm | 296 ++ .../InstrumentLib/Ia32/PEnterExitStub.c | 61 + .../Library/InstrumentLib/InstrumentLib.inf | 48 + .../X64/CygProfileEnterExit.nasm | 124 + .../X64/CygProfileEnterExitStub.c | 39 + .../Library/InstrumentLib/X64/FuncParam.c | 171 + .../Library/InstrumentLib/X64/FuncParamGcc.c | 171 + .../Library/InstrumentLib/X64/FuncParamMsvc.c | 171 + .../Library/InstrumentLib/X64/PEnterExit.nasm | 346 ++ .../InstrumentLib/X64/PEnterExitStub.c | 134 + .../BaseSynchronizationLibInternals.h | 108 + .../SimpleSynchronizationLib/Ia32/GccInline.c | 167 + .../Ia32/InterlockedCompareExchange32.asm | 39 + .../Ia32/InterlockedCompareExchange32.c | 44 + .../Ia32/InterlockedCompareExchange64.asm | 41 + .../Ia32/InterlockedCompareExchange64.c | 44 + .../Ia32/InterlockedDecrement.asm | 36 + .../Ia32/InterlockedDecrement.c | 36 + .../Ia32/InterlockedIncrement.asm | 36 + .../Ia32/InterlockedIncrement.c | 37 + .../SimpleSynchronizationLib.inf | 54 + .../Synchronization.c | 326 ++ .../SynchronizationGcc.c | 342 ++ .../SynchronizationMsc.c | 353 ++ .../SimpleSynchronizationLib/X64/GccInline.c | 170 + .../X64/InterlockedCompareExchange32.asm | 35 + .../X64/InterlockedCompareExchange32.c | 48 + .../X64/InterlockedCompareExchange64.asm | 35 + .../X64/InterlockedCompareExchange64.c | 47 + .../X64/InterlockedDecrement.asm | 33 + .../X64/InterlockedDecrement.c | 40 + .../X64/InterlockedIncrement.asm | 33 + .../X64/InterlockedIncrement.c | 40 + .../UefiInstrumentTestPkg.dec | 16 + .../UefiInstrumentTestPkg.dsc | 175 + HBFA/__init__.py | 0 HBFA/tests/TestRunAFL.py | 266 ++ HBFA/tests/TestRunAFLTurbo.py | 270 ++ HBFA/tests/TestRunKLEE.py | 188 + HBFA/tests/TestRunLibFuzzer.py | 263 ++ HBFA/tests/__init__.py | 0 LICENSE.md | 23 + README.md | 9 + requirements.txt | 0 472 files changed, 69093 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build_testcases.yml create mode 100644 BOM.txt create mode 100644 CITATION.cff create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Ata/Raw/IdentifyData.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/1.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/16.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/16_1.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/24.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/32.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/4.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/4_1.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/8.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/8_1.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/sample.bmp create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Blk/VirtioBlkFuzzSeed0.9.5.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Blk/VirtioBlkFuzzSeed1.0.0.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Blk/VirtioBlkFuzzSeed1.0.0_fix.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule/MICROCODECAPSULE1.Cap create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule/QUARKFIRMWAREUPDATECAPSULEFMPPKCS7.Cap create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule/QUARKREC.Cap create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Cfv/cfv01.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Cfv/securebootcfv01.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Gpt/Raw/Gpt.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Gpt/Raw/Gpt_16384.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Gpt/Raw/Gpt_error.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Include/Uefi.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction000.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction001.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction002.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction003.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction004.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction005.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction006.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction007.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction008.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction009.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction010.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction011.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction012.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction013.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction014.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction015.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction016.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction017.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction018.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction019.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction020.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction021.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction022.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction023.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction024.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction025.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction026.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/Mutator/MutatorSimple.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/SignatureList/SignatureList.raw create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/TPM/Raw/Tpm2Res.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/TPM/Script/SeedGenTpm2Response.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/TdxHob/hob.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/0 create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/1 create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/2 create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/22 create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/__a create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/a create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b_a create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b_c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_a create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_alink create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_c_ create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_123.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_0.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_e1.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm_f.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm_ff.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_all.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_ca.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_fid.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m1.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m3.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m4.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_16.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_17.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_double.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_1.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_2.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_3.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_linux.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000001.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000002.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000003.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000004.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000005.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000006.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000007.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000008.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000009.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000010.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000011.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000012.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000013.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000014.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000015.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000016.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000017.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000018.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000019.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000020.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000021.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000022.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000023.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000024.seed create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/readme.txt create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/SeedGenUdf.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/Udf.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/__init__.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/USB/Raw/Usb.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/VariableSmm/Raw/VarSmm.bin create mode 100644 HBFA/UefiHostFuzzTestCasePkg/Seed/readme.txt create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/CreateErrorInjectionProfile.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatLiteLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatPei.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciMode.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiBlockIo.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiBlockIo.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiPassThru.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiPassThru.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiStorageSecurity.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiStorageSecurity.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/DevicePath.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/DmaMem.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/IoMmu.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/CreateErrorInjectionProfile.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/CreateErrorInjectionProfile.py create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoStubPkcs7.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/SamplePkcs7.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoLibStubRsa2048Sha256.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoStubRsa2048Sha256.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/SampleRsa2048Sha256.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/DiskStubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/SmmMemLibStubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Tcg2StubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Tpm2DeviceStubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Usb2HcPpiStubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Usb2HcStubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/UsbIoPpiStubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/VirtioBlkStubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/VirtioPciDeviceStubLib.h create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.c create mode 100644 HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.inf create mode 100644 HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec create mode 100644 HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc create mode 100644 HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestDeviceSecurityPkg.dsc create mode 100644 HBFA/UefiHostFuzzTestPkg/Conf/LLVMLink.py create mode 100644 HBFA/UefiHostFuzzTestPkg/Conf/build_rule.customized create mode 100644 HBFA/UefiHostFuzzTestPkg/Conf/tools_def.customized create mode 100644 HBFA/UefiHostFuzzTestPkg/Include/Library/ToolChainHarnessLib.h create mode 100644 HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.c create mode 100644 HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf create mode 100644 HBFA/UefiHostFuzzTestPkg/ReadME-AFLTurbo.txt create mode 100644 HBFA/UefiHostFuzzTestPkg/ReadMe-AFL.txt create mode 100644 HBFA/UefiHostFuzzTestPkg/ReadMe-ErrorInjection.txt create mode 100644 HBFA/UefiHostFuzzTestPkg/ReadMe-KLEE.txt create mode 100644 HBFA/UefiHostFuzzTestPkg/ReadMe-LibFuzzer.txt create mode 100644 HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestBuildOption.dsc create mode 100644 HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestPkg.dec create mode 100644 HBFA/UefiHostTestPkg/Include/Library/OsServiceLib.h create mode 100644 HBFA/UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/BaseCacheMaintenanceLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/Cache.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/ARShiftU64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/BaseLibHostNoAsm.inf create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/BitField.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/Cache.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/CheckSum.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/Cpu.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointGcc.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointMsvc.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuDeadLoop.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/DivS64x64Remainder.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x32Remainder.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x64Remainder.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/DummyRdRand.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/DummyReadTsc.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/GetPowerOfTwo32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/GetPowerOfTwo64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/HighBitSet32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/HighBitSet64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/Ia32/RdRand.nasm create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/Ia32/ReadTsc.nasm create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/LRotU32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/LRotU64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/LShiftU64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/Lfence.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/LinkedList.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/LongJump.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/LowBitSet32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/LowBitSet64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/Math64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/ModU64x32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/MultS64x64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/RRotU32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/RRotU64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/RShiftU64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/SafeString.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/SetJump.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/String.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes16.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes32.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes64.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/SwitchStackNull.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/Unaligned.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X64/RdRand.nasm create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X64/ReadTsc.nasm create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86Cr.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86DisablePaging64Null.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86Dr.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86GdtrNull.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86IdtrNull.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86MemoryFenceGcc.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86MemoryFenceMsvc.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86PatchInstruction.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86RdRand.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibHost/X86SegmentNull.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.inf create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.inf create mode 100644 HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/BasePcdLibHost/BasePcdLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/BasePcdLibHost/BasePcdLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/Gcd.c create mode 100644 HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/Gcd.h create mode 100644 HBFA/UefiHostTestPkg/Library/HobLibHost/HobLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/HobLibHost/HobLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibGcc.c create mode 100644 HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibMsvc.c create mode 100644 HBFA/UefiHostTestPkg/Library/OsServiceLibHost/WinNTInclude.h create mode 100644 HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/CpuIo.c create mode 100644 HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PciCfg2.c create mode 100644 HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiMain.h create mode 100644 HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/Ppi.c create mode 100644 HBFA/UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Handle.c create mode 100644 HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/InstallConfigurationTable.c create mode 100644 HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Locate.c create mode 100644 HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Notify.c create mode 100644 HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/PiSmmCore.c create mode 100644 HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/PiSmmCore.h create mode 100644 HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/DriverSupport.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/DxeMain.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Event.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Handle.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Handle.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Library.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Locate.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Notify.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Tpl.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/DevicePathUtilities.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLib.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLib.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiDriverModel.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLib.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLibInternal.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVarCertDB.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVarCertDB.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVariable.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVariable.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/OsVariable.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/OsVariable.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Time.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.inf create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Variable.c create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Variable.h create mode 100644 HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/VariableCommon.h create mode 100644 HBFA/UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.c create mode 100644 HBFA/UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.inf create mode 100644 HBFA/UefiHostTestPkg/UefiHostTestBuildOption.dsc create mode 100644 HBFA/UefiHostTestPkg/UefiHostTestPkg.dec create mode 100644 HBFA/UefiHostTestPkg/UefiHostTestPkg.dsc create mode 100644 HBFA/UefiHostTestTools/HBFAEnvSetup.py create mode 100644 HBFA/UefiHostTestTools/Report/GenCodeCoverage.py create mode 100644 HBFA/UefiHostTestTools/Report/GenGdbHtmlReport.py create mode 100644 HBFA/UefiHostTestTools/Report/GenGdbInfo.py create mode 100644 HBFA/UefiHostTestTools/Report/GenLLVMReport.py create mode 100644 HBFA/UefiHostTestTools/Report/GenSanitizerHtmlReport.py create mode 100644 HBFA/UefiHostTestTools/Report/GenSanitizerInfo.py create mode 100644 HBFA/UefiHostTestTools/Report/GenSummaryInfo.py create mode 100644 HBFA/UefiHostTestTools/Report/GenSummaryReport.py create mode 100644 HBFA/UefiHostTestTools/Report/GetSeedsList.py create mode 100644 HBFA/UefiHostTestTools/Report/IndexSummaryTemplate.html create mode 100644 HBFA/UefiHostTestTools/Report/IndexTemplate.html create mode 100644 HBFA/UefiHostTestTools/Report/ReportMain.py create mode 100644 HBFA/UefiHostTestTools/Report/__init__.py create mode 100644 HBFA/UefiHostTestTools/RunAFL.py create mode 100644 HBFA/UefiHostTestTools/RunAFLTurbo.py create mode 100644 HBFA/UefiHostTestTools/RunKLEE.py create mode 100644 HBFA/UefiHostTestTools/RunLibFuzzer.py create mode 100644 HBFA/UefiHostTestTools/Script/RunAllSeeds.py create mode 100644 HBFA/UefiHostTestTools/Script/TransferKtestToSeed.py create mode 100755 HBFA/UefiHostTestTools/__init__.py create mode 100644 HBFA/UefiHostTestTools/__pycache__/RunAFL.cpython-311.pyc create mode 100644 HBFA/UefiHostTestTools/__pycache__/RunAFLTurbo.cpython-311.pyc create mode 100644 HBFA/UefiHostTestTools/__pycache__/RunKLEE.cpython-311.pyc create mode 100644 HBFA/UefiHostTestTools/__pycache__/RunLibFuzzer.cpython-311.pyc create mode 100644 HBFA/UefiHostTestTools/__pycache__/__init__.cpython-311.pyc create mode 100644 HBFA/UefiInstrumentTestCasePkg/ReadMe-BME.txt create mode 100644 HBFA/UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.c create mode 100644 HBFA/UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.inf create mode 100644 HBFA/UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.c create mode 100644 HBFA/UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.inf create mode 100644 HBFA/UefiInstrumentTestCasePkg/UefiInstrumentTestCasePkg.dec create mode 100644 HBFA/UefiInstrumentTestCasePkg/UefiInstrumentTestCasePkg.dsc create mode 100644 HBFA/UefiInstrumentTestPkg/Include/Library/IniParsingLib.h create mode 100644 HBFA/UefiInstrumentTestPkg/Include/Library/InstrumentHookLib.h create mode 100644 HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.inf create mode 100644 HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.uni create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.inf create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/CygProfileEnterExit.nasm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/CygProfileEnterExitStub.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParam.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParamGcc.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParamMsvc.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/PEnterExit.nasm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/PEnterExitStub.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/CygProfileEnterExit.nasm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/CygProfileEnterExitStub.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParam.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParamGcc.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParamMsvc.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/PEnterExit.nasm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/PEnterExitStub.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/BaseSynchronizationLibInternals.h create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/GccInline.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange32.asm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange32.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange64.asm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange64.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedDecrement.asm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedDecrement.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedIncrement.asm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedIncrement.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SimpleSynchronizationLib.inf create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Synchronization.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SynchronizationGcc.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SynchronizationMsc.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/GccInline.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange32.asm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange32.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange64.asm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange64.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedDecrement.asm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedDecrement.c create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedIncrement.asm create mode 100644 HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedIncrement.c create mode 100644 HBFA/UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec create mode 100644 HBFA/UefiInstrumentTestPkg/UefiInstrumentTestPkg.dsc create mode 100755 HBFA/__init__.py create mode 100644 HBFA/tests/TestRunAFL.py create mode 100644 HBFA/tests/TestRunAFLTurbo.py create mode 100644 HBFA/tests/TestRunKLEE.py create mode 100644 HBFA/tests/TestRunLibFuzzer.py create mode 100644 HBFA/tests/__init__.py create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 requirements.txt diff --git a/.github/workflows/build_testcases.yml b/.github/workflows/build_testcases.yml new file mode 100644 index 0000000..6abbc20 --- /dev/null +++ b/.github/workflows/build_testcases.yml @@ -0,0 +1,43 @@ +--- +name: Build Testcases + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + +jobs: + build_test_artifacts: + name: Build Testcases + runs-on: ghcr.io/tianocore/containers/ubuntu-22-build + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Retrieve and build EDK2 + run: | + git clone https://github.com/tianocore/edk2.git --recursive && \ + pushd edk2 && make -C BaseTools && source edksetup.sh && \ + popd && export -p > envsave + - name: Setting up HBFA-FL and Build Environment + run: | + source envsave && \ + export WORKSPACE=$(pwd)/ && \ + export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/HBFA/ && \ + python3 HBFA/UefiHostTestTools/HBFAEnvSetup.py && \ + export -p > envsave + - name: Install AFL-2.52b + run: | + source envsave && \ + wget -q http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz && \ + tar xf afl-latest.tgz && rm afl-latest.tgz && \ + export AFL_PATH=$WORKSPACE/afl-2.52b && \ + export PATH=$PATH:$AFL_PATH && \ + export -p > envsave && \ + pushd afl-2.52b && make && popd + - name: Build Fuzzing Harnesses + run: | + source envsave && \ + cp HBFA/UefiHostFuzzTestPkg/Conf/build_rule.txt edk2/Conf/build_rule.txt && \ + cp HBFA/UefiHostFuzzTestPkg/Conf/tools_def.txt edk2/Conf/tools_def.txt && \ + build -p HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a X64 -t AFL && \ + build -p HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a X64 -t LIBFUZZER diff --git a/BOM.txt b/BOM.txt new file mode 100644 index 0000000..e69de29 diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..34df6cd --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,17 @@ +cff-version: 1.2.0 +message: "If you use this software, please cite it as below." +authors: +- family-names: "Tipton" + given-names: "Earl Lynn" + orcid: "https://orcid.org/0000-0003-0763-173X" +- family-names: "Delgado" + given-names: "Brian" +- family-names: "Bjorge" + given-names: "Erik C." +- family-names: "Gomez-Iglesias" + given-names: "Antonio" +title: "Host Based Firmware Analyzer - Fuzzing Lite (HBFA-FL)" +version: 0.11 +doi: "" +date-released: 2024-02-19 +url: "https://github.com/intel/HBFA-FL" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f682f4e..0f02678 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ### License - is licensed under the terms in [LICENSE]. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. +HBFA-FL is licensed under the terms in [LICENSE](LICENSE.md). By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. ### Sign your work diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Ata/Raw/IdentifyData.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Ata/Raw/IdentifyData.bin new file mode 100644 index 0000000000000000000000000000000000000000..7b838ec3e29c7e0e38469eef9f3617bec26077fe GIT binary patch literal 512 zcmZ=@_-}81LVy7T?7<`hLzr`Lh@q*OrJ+HDuZ5wffuFmA0z}F^#K1@a2>d)^&=OhMx4K%jxqfkB_a0i>H9Xp;cY4uL9OI H&8IN{Yv~Y< literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/16_1.bmp b/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/16_1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..24303e670239dda8f8ae3d32a8ad61e06cd0c512 GIT binary patch literal 78 zcmZ?r^8vF*bPWq05KC3GcpJ;Fay~fKpfjx`exy2=`9kMW|yaKlw)W3!NBl< Uoq<6fCJtpjTw;E0AeO6W@L~6vKSZyfLP_yyQqEhwSLSwcq%$=#i`X3mm6g! QSuikU{9E&M!(;{q05qQzy8r+H literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/32.bmp b/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/32.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5082735f773e26050841864956f522ed148d2f2c GIT binary patch literal 70 zcmZ?rbz@*)*l^*6u^Euo0AeO6W@JzRvKSZyfVe>V=^Ca>$}#IL7jKHVer$eN)8mr< Q)mixulh%A(R2IYw01J>5-2eap literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/4.bmp b/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/4.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0fd255875755cec24d88163f540a60f9f7df948a GIT binary patch literal 126 zcmZ?rtz%$dSfsz0zYIug05KC3GcvFMSquyuKzuo=wxIGvE%)~)ysp;T65chZW!dXj zbcc3TMR}V)`+i1$>5^dY!&d{BHa^?Qc9K7!;@}T)Y#ty#|M83L9;-#I!YPO1E_sU;Hnlzjk;Tw`gzyT0{kBu5JUMefz)F3xN9AG+T{VTM;S> z!Wk?6-BWgO7mV_ZVZdpG&J z89zZM1ikN%0l1_X3imnmZZyJRXz@ZHx&I9j6usbc#6j-Q5uOr^mngs`ZBuiFAo+w- z;+uKtY(;XVG8%!LWfW_SmZ7)p>{kZ;WxY*34NzA$>Ug%myBhRAE1^LU+R+5=7y&8s z{`HyO?TIKoSL}H8f;Z_EKF>i@kYryr0{x&qb$CXm}P3Z8`5igAY4 zXC&p_91HgGhr0Bo#&eW1{AqKj7Z&l>c__Nvb%AGlvjW;lci?FlzY;0WLp(YkJO?H= zG__dB!6im?d!QxgfBc{;YOt|UAs73=J7-C)`_(#~V@zC2q8MKe#R>ccT=>+ZPZFk0 zOhP(%d)Rv434wV^n>xdLIk2@Es{r9Qt|lDH>JLneY&C7nvLEa+Z?m7(sT$bADqOHv zziKcw#U>rq%^IMNkGoaLyvI@FPnjihFT$Li4mG4^N*FrX%-y*ixLjjggi8x3lIDJx zYuwdrQTE|z>^KA>)0<#bU_ty6#^@59r+gel6Ntn?XIc1R=CXrAjj8|8@ol?Gd3yY6 z5CZl7gK#+aV!i^oj$J;T9s%KgU^Wq#*#lUv=n}fs}qu;^UM7~4QaM#xNggVl` zdC(Q*q^!tV&m1|*`nNoq4$Cde#&94SXq@=VFC@C2NcufLHaBM|tD9!b*eK2ii^|)4 zKN>gJF9|86Q^cLSPbaRymGW~w^$m#?EX4plV3noeB$qZ!tR@YKOB9x{y|p3}&G`<9 z0x1a40aC@JT=N&tU4^Rqka?{D7vADwJW>McK)nChc+oF=IInN&YvxG9@7>qnPnETU zxREMsG4_rVouVs8jV)RrX}?lg2&DiMwr)VWc#{AcfsWmF+2n84NeylcQo?}%0M4)g E0F8_WG5`Po literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/8_1.bmp b/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/8_1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..145ea54717b23bcfa019a96115620493a2af5f64 GIT binary patch literal 1090 zcmV-I1ikx0O+o|!0HPyJrZxls04M+e00IC200IC2009690096101N;C03MD?Hf&Np z)|Mv;HeaB;m>RUm?mZ`V*$(IV$dDBx*jEE9*~uQPPcfg7)>idZ0&DQa96fCR{O+Ar+15J5KTGd$c0xP@?OD)v zklg8_KVuJ@Xbu4f&%wVW|1SgVuxkjeB~Tv4die)AB4QrX_USLSvedwgNbef9qMY`@ z)LGM1fC$NcMJI@0?ie?oNTz%fv0PM+1W1XB1eQ3sQ-C0eVR<^VpPiTFt{`aMEq2OU zcU|QRowAu@V25x#=42S$4Yl55{Rs=zy6SBB9itFj7c&y}n5VOWC6YY?UTCrP%bZ^_ zi1iY5f)6YOuNZ@u@uZ%Tp>x5XF*~X$Z{tzWZ2+V z4(4?3hJJx&cT6sAp4VzV&-s;l$h=1A0;Q+rH1RDa_)My98R~ROpznh)Evye+W!sQ; z|BsDZk2g$<)#BzBFZ!5B|8)txi;eqpLz%$pBy5HRAQ1|+iC2M6{tWAPQj^{yYZF^1 zOeR)LerYD9(zX5EfE~75KAbW1i0=01gsp3FsSr}+oJZ@iMk-l~ckn@Bt~K$z(2I^5 z#LNQ#kEX~zlS@$_qq{54n!KsmXxyN>QuT)EpR z7iM$RwpxcqPaQ=zO{>S^a~kzYcX4WKkwdX z0MqUJd)XQM_uF#2?YoCi4?J_NefK1%Y*WZzxq)zQ6N)78J||s48m3Drj{>v*Ck!o4702S*6=uYlPM3f207{;5RnOfyt(GE)jI4HA4s@ zB5+^E)+}DTpVW@o!{DxV&nv&PnrSKB5re<#k9rHSbH6jPHNhrPlqPNy6m;p~*k3_8 zs@%EdjZQXAY%R&~WRRuMX-Ef6Uvh4?eJ6@*Zhy0eI2LJ#8 ItN|1N0SW;FB>(^b literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/sample.bmp b/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/sample.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a31442f39cc9f1bfd4e5c15e129d4c38f7f326b6 GIT binary patch literal 65 zcmZ?rbz}enN8bhztpUWrKx_gM0x^J~I3q2Qg@GRkvj5lTWPp?;7Khh^sf_Ft068NI A-v9sr literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Blk/VirtioBlkFuzzSeed0.9.5.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Blk/VirtioBlkFuzzSeed0.9.5.bin new file mode 100644 index 0000000000000000000000000000000000000000..fb4d7d9da0fbbbc605f04b6d92d1083551d2e7bb GIT binary patch literal 308 zcmew&#VEkeAiw|wj9}sbm}~@*Aix8}9AFj$!xt$gFlz>s&jr>2z#)0tN;LxX=Cph5y?N*fT)94)!Gg=zN8~^|S literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Blk/VirtioBlkFuzzSeed1.0.0_fix.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Blk/VirtioBlkFuzzSeed1.0.0_fix.bin new file mode 100644 index 0000000000000000000000000000000000000000..6c34b35e61b84fac5f328135b633c4b67bba02f8 GIT binary patch literal 344 zcmew&zEsS6XF~TfImZTyZw#VXT2OwDzkIF7UGi)y>0RcsU%XN@cxE$l)L9~nl5)+i_W}wxUBj~ z=hOexl3g__mukiQD3=N2=Is&p;{ARTT|fQrP7)wMfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBoLN8km7 C;TZ-1 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule/QUARKFIRMWAREUPDATECAPSULEFMPPKCS7.Cap b/HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule/QUARKFIRMWAREUPDATECAPSULEFMPPKCS7.Cap new file mode 100644 index 0000000000000000000000000000000000000000..c9d151b21aa13c96074f155c163cd3731692bcfc GIT binary patch literal 11107 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 YmW>!TT43?2?mPi^Gu;vR{~Lk-0l<|`KL7v# literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule/QUARKREC.Cap b/HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule/QUARKREC.Cap new file mode 100644 index 0000000000000000000000000000000000000000..6db50fe28939e0335b5864c0cbb9f0f122291108 GIT binary patch literal 8840 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 zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; lKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l;Qw8L{}1xo-gf{1 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Gpt/Raw/Gpt.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Gpt/Raw/Gpt.bin new file mode 100644 index 0000000000000000000000000000000000000000..6f2533080771d5ca9c54844effbfeebc96d6c7ed GIT binary patch literal 524288 zcmeI#KS-2e90%}Mg_f2YYEArent%F3G)RzGYM33E*mko>YpsDzLbS9cXvyVdP~f1Y z4mDjDk`gVE7$HJrN)3@t*ZXqMegqz;@cF@e-{ZNv=li^$yXB(D97cg3Tc6%1=dO-+ z3WY*d{49>b|K7>1nV#Oh+JUaYp(v_~GV#YBEkF65?2_!5OrfTjb;XF*L$39#EVeCA zr?a_kHjuZ${?kQ{%bLKM(G%b}rp`y#0IZYW=ab?xp2Vql|HEcvIvy={=H6s009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk2ScEzx36}f zYj7xvs-jF3Mcd=);W(l~P4bwm7N;)cddRh&mBqH@>2x+Xk!hXj$bJp$qj4tJ6#Rk297#T47o06_ zZ||Dj>9;6E8wH-P+c}ic4ezr3PI-${RA(FK(K7)81PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7{#{@?OZtn+ zauq@+q~#X*=CXUlz4EwG9;4`0c~GVBsq6dndK_K$^DN({!^1f1*8h!Xvd&NOsi|cG z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ i009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7e?uL57cjwSK{ literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Gpt/Raw/Gpt_error.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Gpt/Raw/Gpt_error.bin new file mode 100644 index 0000000000000000000000000000000000000000..8794aa4be3407d9c527d67dbbad615b9aac21eca GIT binary patch literal 524288 zcmeI#JxJ7H90%}6g_f2YYE694mtKel2@=aQ%nnR!yIG{Q)}SUKTG|q{xe&}@6!@|A`9pH<>adf~ z=c@`=g~_Q!kFp&i7xRTb%eZ zv-`I`p1q+=_i%D!X(My=b^5`*y^deiCteO;{C4xo&%K^k9bcO^pT8e&jJ-`|>d#KD zZf(A~&@=jWWOlA;EZ6nt;oa4)#T!qye~(_RKQ_}Gdt1uXZ(9Nc2oNAZfB*pkl@uuc zd-F_y009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZ;BX4mh2qr5-0vu*(hv(9_q#amSE|1$zOT7L{VlQgbcOm`V{co9 z`rBh~M}_*&#NM-I>aX;+rGEeC;sMWB`k?yDB2eo4_c{Rr1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&g41rW{U+qBm z;7|xvArnH_9!n1wBIIk5=VY}wburgtuBBEM+Lx!&+1z-hZMriXm&5(SMe>;Vc>7r) I%mEkp2T=m +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import ctypes + + +class EFI_GUID(ctypes.Structure): + _fields_ = [ + ('Guid1', ctypes.c_uint32), + ('Guid2', ctypes.c_uint16), + ('Guid3', ctypes.c_uint16), + ('Guid4', ctypes.ARRAY(ctypes.c_uint8, 8)), + ] + + +class EFI_TIME(ctypes.Structure): + _fields_ = [ + ('Year', ctypes.c_uint16), + ('Month', ctypes.c_uint8), + ('Day', ctypes.c_uint8), + ('Hour', ctypes.c_uint8), + ('Minute', ctypes.c_uint8), + ('Second', ctypes.c_uint8), + ('Pad1', ctypes.c_uint8), + ('Nanosecond', ctypes.c_uint32), + ('TimeZone', ctypes.c_int16), + ('Daylight', ctypes.c_uint8), + ('Pad2', ctypes.c_uint8), + ] + + +EFI_VARIABLE_NON_VOLATILE = 0x00000001 +EFI_VARIABLE_BOOTSERVICE_ACCESS = 0x00000002 +EFI_VARIABLE_RUNTIME_ACCESS = 0x00000004 +EFI_VARIABLE_HARDWARE_ERROR_RECORD = 0x00000008 +EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS = 0x00000020 +EFI_VARIABLE_APPEND_WRITE = 0x00000040 +EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS = 0x00000010 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction000.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction000.bin new file mode 100644 index 0000000..2555af5 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction000.bin @@ -0,0 +1 @@ +ˆ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction001.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction001.bin new file mode 100644 index 0000000..3d305f2 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction001.bin @@ -0,0 +1 @@ +f‰ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction002.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction002.bin new file mode 100644 index 0000000..d21fd1b --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction002.bin @@ -0,0 +1 @@ +‰ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction003.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction003.bin new file mode 100644 index 0000000..e02d793 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction003.bin @@ -0,0 +1 @@ +H‰ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction004.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction004.bin new file mode 100644 index 0000000000000000000000000000000000000000..6239526c07e07b7a08268ed4a5a75913baa51a5b GIT binary patch literal 2 JcmX@c0004w0LK6T literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction005.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction005.bin new file mode 100644 index 0000000000000000000000000000000000000000..8f6b9299e3943e3a981937c8e0d5e2dd88c6a118 GIT binary patch literal 5 McmYd0&cMI`00kcbE&u=k literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction006.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction006.bin new file mode 100644 index 0000000000000000000000000000000000000000..8afd49e270c6d1668d53fb95f765476e96ce198e GIT binary patch literal 5 KcmX@k00aO7=m5w7 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction007.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction007.bin new file mode 100644 index 0000000000000000000000000000000000000000..6fe51b38f973ecb964be151c7e0df7eeafdbfc05 GIT binary patch literal 11 PcmeY`&Hw_3`Q;e^4qyTS literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction008.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction008.bin new file mode 100644 index 0000000..26fddd4 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction008.bin @@ -0,0 +1 @@ +Š \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction009.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction009.bin new file mode 100644 index 0000000..f66cf3a --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction009.bin @@ -0,0 +1 @@ +f‹ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction010.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction010.bin new file mode 100644 index 0000000..56250ef --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction010.bin @@ -0,0 +1 @@ +‹ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction011.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction011.bin new file mode 100644 index 0000000..b84bb66 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction011.bin @@ -0,0 +1 @@ +H‹ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction012.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction012.bin new file mode 100644 index 0000000..35d7872 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction012.bin @@ -0,0 +1 @@ +f¶ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction013.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction013.bin new file mode 100644 index 0000000..defc96a --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction013.bin @@ -0,0 +1 @@ +¶ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction014.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction014.bin new file mode 100644 index 0000000..260f915 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction014.bin @@ -0,0 +1 @@ +H¶ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction015.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction015.bin new file mode 100644 index 0000000..c2d5e26 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction015.bin @@ -0,0 +1 @@ +· \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction016.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction016.bin new file mode 100644 index 0000000..af4a857 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction016.bin @@ -0,0 +1 @@ +H· \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction017.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction017.bin new file mode 100644 index 0000000..a318189 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction017.bin @@ -0,0 +1 @@ +f¾ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction018.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction018.bin new file mode 100644 index 0000000..90d66e2 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction018.bin @@ -0,0 +1 @@ +¾ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction019.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction019.bin new file mode 100644 index 0000000..e4e8440 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction019.bin @@ -0,0 +1 @@ +H¾ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction020.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction020.bin new file mode 100644 index 0000000..4295aca --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction020.bin @@ -0,0 +1 @@ +¿ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction021.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction021.bin new file mode 100644 index 0000000..ada3def --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction021.bin @@ -0,0 +1 @@ +H¿ \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction022.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/Instruction/instruction022.bin new file mode 100644 index 0000000000000000000000000000000000000000..8b434421f2606ac37a3f2cfaa1274552610d3e5b GIT binary patch literal 5 McmZ3$vY~+i00u +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +''' +MutatorSimple +''' + +import os +import argparse +import subprocess +import random + +# +# Globals for help information +# +__prog__ = 'MutatorSimple' +__version__ = '%s Version %s' % (__prog__, '0.11 ') +__copyright__ = 'Copyright (c) 2018, Intel Corporation. All rights reserved.' +__usage__ = '%s [options] -e ' % (__prog__) + + +def WriteFile(): + args.OutputFile = open(args.OutputFileName, 'wb') + args.OutputFile.write(args.InputBuffer) + args.OutputFile.close() + + +def GenerateCommand(Command, InputFile): + Template = " " + CommandLine = Template.replace("", + Command).replace("", InputFile) + return CommandLine + + +def CallCommand(CommandLine): + subprocess.Popen(CommandLine, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=False) + + +def RunCase(): + CallCommand(GenerateCommand(args.Executable, args.OutputFileName)) + + +def DelCase(): + os.remove(args.OutputFileName) + + +if __name__ == '__main__': + # + # Create command line argument parser object + # + parser = argparse.ArgumentParser(prog=__prog__, + usage=__usage__, + description=__copyright__, + conflict_handler='resolve') + parser.add_argument('--version', action='version', version=__version__) + parser.add_argument("-v", "--verbose", dest='Verbose', + action="store_true", + help="increase output messages") + parser.add_argument("-q", "--quiet", dest='Quiet', action="store_true", + help="reduce output messages") + parser.add_argument(metavar="input_file", dest='InputFile', + type=argparse.FileType('rb'), + help="specify the input file") + parser.add_argument("--Offset", dest='Offset_Str', type=str, + help="specify the offset of buffer to be mutated.") + parser.add_argument("--Size", dest='Size_Str', type=str, + help="specify the size of buffer to be mutated.") + parser.add_argument("-e", "--exec", dest='Executable', type=str, + metavar='filename', + help="specify the executable filename", + required=True) + + # + # Parse command line arguments + # + args = parser.parse_args() + + # + # Read input file into a buffer and save input filename + # + args.InputFileName = args.InputFile.name + args.InputFileBuffer = args.InputFile.read() + args.InputFile.seek(0, 2) + InputFileSize = args.InputFile.tell() + args.InputFile.close() + + print("file size - 0x%x (%d)" % (InputFileSize, InputFileSize)) + + args.Offset = 0x0 + if args.Offset_Str: + try: + if args.Offset_Str.upper().startswith('0X'): + args.Offset = (int)(args.Offset_Str, 16) + else: + args.Offset = (int)(args.Offset_Str) + except Exception as error: + print("Unexpected format for Offset: %s" % (error)) + pass + + args.Size = InputFileSize + if args.Size_Str: + try: + if args.Size_Str.upper().startswith('0X'): + args.Size = (int)(args.Size_Str, 16) + else: + args.Size = (int)(args.Size_Str) + except Exception as error: + print("Unexpected format for input file size: %s" % (error)) + pass + + print("fuzz offset - 0x%x (%d)" % (args.Offset, args.Offset)) + print("fuzz size - 0x%x (%d)" % (args.Size, args.Size)) + + # + # mutation + # + args.InputBuffer = bytearray(args.InputFileBuffer) + + # UINT8 based mutation + for Index in range(args.Offset, args.Offset + args.Size): + OrgData = args.InputBuffer[Index:Index+1] + + # + # mutate + # + RandomData = random.randint(0, 0xFF) + args.InputBuffer[Index:Index+1] = [RandomData] + + # + # Write output file + # + args.OutputFileName = args.InputFileName + "_b_" + str(Index) + ".bin" + WriteFile() + RunCase() + DelCase() + + args.InputBuffer[Index:Index+1] = OrgData + + # UINT16 based mutation + for Index in range(args.Offset, args.Offset + args.Size - 1): + OrgData = args.InputBuffer[Index:Index+2] + + # + # mutate + # + RandomData = random.randint(0, 0xFF) + RandomData2 = random.randint(0, 0xFF) + args.InputBuffer[Index:Index+2] = [RandomData, RandomData2] + + # + # Write output file + # + args.OutputFileName = args.InputFileName + "_w_" + str(Index) + ".bin" + WriteFile() + RunCase() + DelCase() + + args.InputBuffer[Index:Index+2] = OrgData + + # UINT32 based mutation + for Index in range(args.Offset, args.Offset + args.Size - 3): + OrgData = args.InputBuffer[Index:Index+4] + + # + # mutate + # + RandomData = random.randint(0, 0xFF) + RandomData2 = random.randint(0, 0xFF) + RandomData3 = random.randint(0, 0xFF) + RandomData4 = random.randint(0, 0xFF) + args.InputBuffer[Index:Index+4] = [RandomData, RandomData2, + RandomData3, RandomData4] + + # + # Write output file + # + args.OutputFileName = args.InputFileName + "_d_" + str(Index) + ".bin" + WriteFile() + RunCase() + DelCase() + + args.InputBuffer[Index:Index+4] = OrgData + + # UINT64 based mutation + for Index in range(args.Offset, args.Offset + args.Size - 7): + OrgData = args.InputBuffer[Index:Index+8] + + # + # mutate + # + RandomData = random.randint(0, 0xFF) + RandomData2 = random.randint(0, 0xFF) + RandomData3 = random.randint(0, 0xFF) + RandomData4 = random.randint(0, 0xFF) + RandomData5 = random.randint(0, 0xFF) + RandomData6 = random.randint(0, 0xFF) + RandomData7 = random.randint(0, 0xFF) + RandomData8 = random.randint(0, 0xFF) + args.InputBuffer[Index:Index+8] = [RandomData, RandomData2, + RandomData3, RandomData4, + RandomData5, RandomData6, + RandomData7, RandomData8] + + # + # Write output file + # + args.OutputFileName = args.InputFileName + "_q_" + str(Index) + ".bin" + WriteFile() + RunCase() + DelCase() + + args.InputBuffer[Index:Index+8] = OrgData diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/SignatureList/SignatureList.raw b/HBFA/UefiHostFuzzTestCasePkg/Seed/SignatureList/SignatureList.raw new file mode 100644 index 0000000000000000000000000000000000000000..166951014070338812118256c05fd9ce4c9828f1 GIT binary patch literal 1353 zcmZ1&d0^?2Da*aux2_hA(f&~6$;to*xZU4m|_95-q`$=Fn5(8MZf(8SER zfSHMriAh9uz2C=~``T%nX5KlsK<3h-(bx642emq=al8 zBP#=Q6B9p!K@$@fQxg*-!&TwXjl3@6S!|YR@Af!1zIrg(zF=!K`@ID!?iYT{d=?Z;LILGLd!D;NZObMvCO8~<}eGHQRA z9n|5t%`T~Wuj;gvzKz;hKP)G6W!v{?o8~nbwSD84>$&1rzHj|gANRDoN#{~h8&2(Q zpJMmlmg|b;nTzi)N`>mYzH@$7eJX~jcbX(|(MQ7h|@0(+y{ncB~T5Xk* zkmjMZLk@R^etp>TVyZ&q#Cf%5dAc)$U9_ErI7-T{DqiL=fB5Y2k@ODDS8UVgC-TNx ziZi!&nm)MNzA&1{#?rT^G zZ+W>-j-7`!G-MZR@yt(}9hv^pdhOLEQ`Q~Qx0$dthSBYq)9;mQo1|}A?Bgx+VPl?j z=tO<>mA2*`NjJai9}MqkU7C1w@*nXBGXy($nYr^A#m;=PiBIfNH$3HQT6OUAKeqp; zs;8~x{Xb90B{1*HD!p?rjxT$;?!dl#)st;yfByDe&RzVwnu(c_fpKxLL7;&wFa^r; zv52vVF#p?N&-wJ>7rpl1j&0w{E>GS!t<^vtB(2OMVIbCkT>(ExfiNTEe->5)W*~)} z?0~5pnCuuCm_&;c1oli_lPt=a&BN(ca`th=nVip|4KGXGbsGHQ|LxVg?$qfLzAvyP zc$-7RwKIrv9|)u70*G@9$jor)U2*oxdirZ`s?TbMdZ1S*xZxscLlp@jkis z?ronE0lf)YZ2o#%LUtZV*y;N&QbwZpqUYh4(jWgEZkEs5@Td2W!P_~fD}r8d+WOzw zv$o~n)hI6Z#owH+hlDcr1)n>uCHTFwZhgMb&M>cZub=)YqQ5r$oc`$BiZ9Q(s+#@2 zy<8J_bH%G{w$nO}2kX98{;6SQ>sMc8o!C?qx^lsSrJ4Fu9sd0D;;-%LTy;RUoq6H8 zcgp@pYqo6D&Sy0^DHeGDxR?!xg~HFH54?Vz?m2vPcg)&Thk{)7LkcR43l6=__}H1g zSW@M5|4eC(#vDJ@jq0}ZpW7}kp64T#-1l?&HpS;Y_kWwY-_qS36#B!3m*?IiVJGQD zYZvfa=2RF}G0zM2bN +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +''' +SeedGenTpm2Response +''' + +import os +import sys +import argparse +import socket +import ctypes + +IncludePath = os.path.join(os.path.dirname( + os.path.dirname(os.path.dirname(os.path.realpath(__file__)))), 'Include') +sys.path.append(IncludePath) + +# +# Globals for help information +# +__prog__ = 'SeedGenTpm2Response' +__version__ = '%s Version %s' % (__prog__, '0.11 ') +__copyright__ = 'Copyright (c) 2018, Intel Corporation. All rights reserved.' +__usage__ = '%s [options] -o ' % (__prog__) + +TPM_ALG_SHA1 = 0x0004 +TPM_ALG_SHA256 = 0x000B +TPM_ALG_SHA384 = 0x000C +TPM_ALG_SHA512 = 0x000D +TPM_ALG_SM3_256 = 0x0012 + +TPM_ST_NO_SESSIONS = 0x8001 +TPM_ST_SESSIONS = 0x8002 + +TPM_RC_SUCCESS = 0x000 + + +class TPM2_RESPONSE_HEADER(ctypes.Structure): + _fields_ = [ + ('Dummy', ctypes.c_uint16), + ('tag', ctypes.c_uint16), + ('paramSize', ctypes.c_uint32), + ('responseCode', ctypes.c_uint32), + ] + + +class TPMT_HA(ctypes.Structure): + _fields_ = [ + ('hashAlg', ctypes.c_uint16), + ('digest', ctypes.ARRAY(ctypes.c_uint8, 32)), + ] + + +class TPML_DIGEST_VALUES(ctypes.Structure): + _fields_ = [ + ('count', ctypes.c_uint32), + ('digests', ctypes.ARRAY(TPMT_HA, 100)), + ] + + +class TPMS_AUTH_RESPONSE(ctypes.Structure): + _fields_ = [ + ('dummy', ctypes.ARRAY(ctypes.c_uint8, 10)), + ] + + +class TPM2_PCR_EVENT_RESPONSE(ctypes.Structure): + _fields_ = [ + ('Header', TPM2_RESPONSE_HEADER), + ('ParameterSize', ctypes.c_uint32), + ('Digests', TPML_DIGEST_VALUES), + ('AuthSessionPcr', TPMS_AUTH_RESPONSE), + ] + + +if __name__ == '__main__': + # + # Create command line argument parser object + # + parser = argparse.ArgumentParser(prog=__prog__, + usage=__usage__, + description=__copyright__, + conflict_handler='resolve') + parser.add_argument('--version', action='version', version=__version__) + parser.add_argument("-v", "--verbose", dest='Verbose', + action="store_true", help="increase output messages") + parser.add_argument("-q", "--quiet", dest='Quiet', action="store_true", + help="reduce output messages") + parser.add_argument("-o", "--output", dest='OutputFileName', type=str, + metavar='filename', + help="specify the output filename", required=True) + + # + # Parse command line arguments + # + args = parser.parse_args() + + # + # Write output file + # + args.OutputFile = open(args.OutputFileName, 'wb') + + DummyBuf = ctypes.create_string_buffer( + ctypes.sizeof(TPM2_PCR_EVENT_RESPONSE)) + + Tpm2PcrEventResponse = TPM2_PCR_EVENT_RESPONSE.from_buffer(DummyBuf, 0) + Tpm2PcrEventResponse.Header.tag = socket.ntohs(TPM_ST_SESSIONS) + Tpm2PcrEventResponse.Header.paramSize = socket.ntohl(0x56) \ + # socket.ntohl(sizeof(TPM2_PCR_EVENT_RESPONSE) - 2) + Tpm2PcrEventResponse.Header.responseCode = socket.ntohl(TPM_RC_SUCCESS) + Tpm2PcrEventResponse.ParameterSize = socket.ntohl(0x56) \ + # socket.ntohl(sizeof(TPM2_PCR_EVENT_RESPONSE) - 2) + Tpm2PcrEventResponse.Digests.count = socket.ntohl(0x100) + for i in range(0, 100): + Tpm2PcrEventResponse.Digests.digests[i].hashAlg = \ + socket.ntohs(TPM_ALG_SHA256) + + args.OutputFile.write(DummyBuf[2:]) + + args.OutputFile.close() diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/TdxHob/hob.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/TdxHob/hob.bin new file mode 100644 index 0000000000000000000000000000000000000000..4dc82480714c5e4d28dd44b9fe8cdf750b407ff1 GIT binary patch literal 4864 zcmZQ%uwVcIPA~}~_@r(zfoU-?eSrgOuhn{_=5K>A7q50bRojWjT^5k0X4! zr?hPKuW|M~btXGsw{ehPoKuE)PLxNiOjY|uKjwQ zPqN<}vsPui-nMwxG^b_y3EHoBPiU-Qeh;?4?+3*G!5zwj-*xN^65y=B2nWoJAXl?9 zWPrtA@b3VZ`!CKz>HpiH{GAZGe;0)I-wmPp_dw;LbpKwc{5}Y+zaK)!9{|%V3<}_O zMvp7wa|X|)KHH0I&8N(-REO0c9HOhh<5A_Q2V_12_Z%~zS+HcmYn##Ft z8E%0AEWJTw7#LWAa%?~j3y=nx%?6}7fHcrtjsrk^0*EgF@eLqe!N4H!f`NhQ0g&za zVg16_f3;jTD+sUl*{;0@s09cZ;r1{v@Iu<_4|pIn1B`~K#3Ui1%EBN4&L`;QHKzJe z5qgHe3IRwzhn{vK+r`XafXqc4ApI8xhA6OlggLPM2yquq_Z;BD>K>fx6|k!Z)_-98 zx%EEB-0ySIn{#WjLfp(ZG64$=!Qwd0Yv3f!{sSBk^#{Pl0@DEm;52^&J4C$zq-2Dt zXJN1a2Ml_;M1& literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/a b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/a new file mode 100644 index 0000000000000000000000000000000000000000..5c1a217891036ccb8ace7ba06dd4cbe6b40fedf3 GIT binary patch literal 4 LcmYdfU|;|M0f+!% literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b new file mode 100644 index 0000000000000000000000000000000000000000..98954dbc9a5efb750d2011ff38e260ff360e2931 GIT binary patch literal 4 LcmYddU|;|M0gM1+ literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b_a b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b_a new file mode 100644 index 0000000000000000000000000000000000000000..fcd633d4f6d28d0a29ac33cbfa50a994326169d1 GIT binary patch literal 28 TcmdO6U|@)W;v^(?B9ILLBgg_` literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b_c b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/b_c new file mode 100644 index 0000000000000000000000000000000000000000..a4b0eb2d23edacffa1e99a2b8158707bf3408779 GIT binary patch literal 12 QcmYddU|@&=;$$EO00|HQA^-pY literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink new file mode 100644 index 0000000000000000000000000000000000000000..585389329e72f2a97f21133d785070b757717fc7 GIT binary patch literal 24 XcmYddU|@&`;v68(1mZj(&IV!tA$$UG literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_a b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_a new file mode 100644 index 0000000000000000000000000000000000000000..29d68c680faf438538246af1753c0419dda9efb0 GIT binary patch literal 56 fcmYddU|@&`;v68(1mZj(&IaNbAXdPE6M^CYiU0%c literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_alink b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_alink new file mode 100644 index 0000000000000000000000000000000000000000..e939d64291cb08f94d12f5ca2d1d06cf1455e5ac GIT binary patch literal 52 ecmYddU|@&`;v68(1mZj(&IaNbAWj5gY;pjR7zH{2 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_c_ b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName/blink_c_ new file mode 100644 index 0000000000000000000000000000000000000000..226968657e29784e03448379912ffa022264d1f2 GIT binary patch literal 36 ccmYddU|@&`;v68(1mZj(&IaNbAWnwT07sMqivR!s literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_123.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_123.bin new file mode 100644 index 0000000000000000000000000000000000000000..8f3f9afa271a3090381198002135fa8b76c29f42 GIT binary patch literal 1048576 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 zbYz{`yIG!nbapQPxFa&{&9Xc%$7eeiSjc1o1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF+ynx7)|vfxmS@}Eo6FDUS)|IL zad2Yl^z+9a+kat$-aK-4#Ih-W`e{5cyl3~=t_MdJU+%(dyZosevL}ul-Pe3{dUEFE z*zD}sX!F?A#K`pM*hR1Ua+g1UL)#08=HzpyN5{u!TXVa*%jEk0ch>awbwAWNup`f^ zyrI4SNGoTS)p^?{EjwAiughM61ql!!Kwwn~^h6B*`-tHEAHJ5)MUd!7wY$t%xWvB0 z)%NSn8nKD(MI|Dn7CQweCWfX?r48pr1tSr8+GAo*nwK(MgIJt4v+N0T>c*sQd0M{h%7q}9XUL>YiX4fYp=u572Dhx1^r># z_DYZ0*TKgo2@oJafWTq`Ya;&N9})kjyVqwQL_BTvgP&QG-MZL<<`E!3fB*pkH>^Nc z#Q)!o`2YIbbNPQp{7?PrY) zwC;OY>Gu*wx!wPNQ#8$MQpt4x?-!yay#Lj>|2NwICEx#BTrhl1iaKv2X|w76-=CyL zywcn3ypnrCVC4v;`~Qwc`+xPDTe1(L{iirs>;oL{%s!op`R$k({|y8PtUiHs|Idrj z{)_v6qMaAv-2Ff9|5<$>bv3$xK)U|_XGKpquKyS3FCb(R0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5LkHv9dZ5N%W?hR%e`~?$LU_07vsLTYJ4`0 m4Fm|RT7lI5e-!QiqqEWe)Ahf5tM(t`^gI9q0RpR6;Qs;HnDO%f literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a.bin new file mode 100644 index 0000000000000000000000000000000000000000..72f2d5acd5bd924bb12a6619a3c1cd3d8b64bfff GIT binary patch literal 1048576 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 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_0.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..7df95d5511a9abe0a766d51e48668269bd4e7f69 GIT binary patch literal 1048576 zcmeI*U5H%QeE{%t_e-;~MOO-_!W3&ZE&`O3t5@)p^*|oJh z%Z?-*NQ+AheX5g}=CNd(`_yD7WlHU| zU8^>{*nVC&yaO4xrNB`1;nUHB->JM;^u>#$FSqg@`$CVu9rxRDI1NM*qh%waOO<~V zE-y?iUC9L(Wdma&(scKUp}Z|8cmRDd7qj6h>b*NES`2m9e#3i{@evmojQ+nEul!$q zuTk{JODcz_@|AV??Bx0JBfWKUUwa5sE_P2;^w+tvo4wCI1Rq5bxD$aL(f?vU+ai;iyt2}k5Af%=GAA%#>d7lO>{LhrM;~*8KT_&^z^lQ_29(#_{1~$ z=h&f?o~pcbIiDnXJ&y2?&o9r`-&m=Q%}tNZFON;v7GEy+_oVkGYg|3pWCE4w{{!Va z{)R)!P4?WV4gmrL2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB=D;1%~7Ezhm+F-<{vTR*oy}9+#en*0rbI?S*ybIqg{d{xTNsbWC0zXB2~u>U?&ula8-Xtac=F1~qnW^S(D**Y-TTpZc|(T?HA2Vbn5 zK3t?$+R#2V*-4pFJ8jph4KKEz*A4GLMgjx~5ZG1%LlMLOEh6~--@jM%MUd#rt-Hrq z*yFv!{q`G9l_+AgY(#|A@=d|zg{h@0x!|H~U@SzM?wB}~x8(#6AQtChHatbWcSl8w zq3+smcyBTiAV7e?BPuW$@&8anzSAE!iv9>G`S7%iEQildo*zHbTP4TZhcFF9nR}w5 zKhI@v_L%(;d=yE5009C7ZYQuK;{U0L_`f+ik_IB4c8-I;wIhA$b{TCWK!5-N0tB|K zz(B5c@x|}~G@p@e0KR&-aTYqDvHa0gs zHorVJU0Zy)+~1SVO{{VCfB*pk1U894CF1`;dB(rtlJX{bPE>;c0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1h&4waNPg*FXH~c|NXz$%I}p;Bl&yj zcMcAnIKQX6b!#4UZ)h#&?+hG^-~Wi;JNZt&oIZaQZ+z)+{EGz>0RjXF5Fqft1S&;; z+Ew2Fzgc9C-G3CnKfST;wEuxsPC*0+5FkK+!2J=3`2WWd|KI!5Mv;%nNA~CA|G^h4 zrw_+rd4KuNAg}LCTl~BK(*3RfaOGre`8z8M-=4qH5$j&qSvhg3er089`qrD%aChQz zd9{vN`UwZ-Mj3sXyF)^*RBRGQ~iKDQq$2oNAZfIyeP&WQiji1L5^=Z*4weBPA5 z12|&-u4c0S<}CjI(Ra)B<>P~`we5L3QTO|YJ6Ue$>p34ilfP@X8iDZCWLM(WHxhTP zNh#N`e9I(!z9YX7-MEeXsd%E@-rbs4l*Fb!Kj^-q|`Z z*jyah|Iv=&#|K}moIYHnR@%@$HQ7m-Qaf$estqr;pVtlVKt=)t2oTs-0z(nQ{~;py z{@=e>G$Kg!<<{L}EbQ^#;ePuKr%DttS~em=YWb$%^1{^8m0WO9HZT?e5`Tt7S!B>x%Ri zzdq2sKGD83Uww9Ld~E#EL{~#o+S^K#A2^M@o} zk1PDg=a*;eZ>-eD=BCHym&c}Si!Yb^d(ydyHLe~IAV7e?CK0Ga{QtB(c>=>8u=15X_I+7l1rGeR!y-gVb_Br@dj|3{<$zf+0v|Iz=q z#rXgHA;wQUwr=W-T3_9yTgs* xMjlJ^c8rT_&9CRVi2#9ZE0FvDFQWf{c0Kxk{`~LpR{xKAz8`>z0D literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_e1.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_e1.bin new file mode 100644 index 0000000000000000000000000000000000000000..212db4c90210a40a4c8c0933b206f4249d8b8f58 GIT binary patch literal 1048576 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 wMNzkN%%O|9iaZ|1r<^127RFuzdyoAEOLcPyhe` literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm.bin new file mode 100644 index 0000000000000000000000000000000000000000..8ebc1019d18b92733c7b398859a6dcf01cffe0a2 GIT binary patch literal 1048576 zcmeI*U5H%QeE{%t_e-<#M^*}`LbTSnh#;--dcCrZgpH9RSCK(TpbtZ!iL=^|?AqF$ zWmggoq{StMKGn%f^Vm1%srap6nn2UH#!%Wqq4h(c*m(#hiKcEyDK%C9=gytoSy|Go zR+hB8`d#hno|${@J?H#p&i?PmoI5F*2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+0D<(?KRP!0OaX!b0RjXF5O|mbPM&v&j8Ecl|uoPR-6=dGo@{Ct440 z{C_b2vB-Zra{l~Vd+y?q!&A?WkKca18@KaCJ>HSdoI8K4e!MZausF4}G&NbjFh4ud zn4DU30e8FpjRg&t5cRn?u1ro(FD)u)88_I|W&@X>+3J^Q}CCslbv`^35BoGG>Q zc09H2Wczhp_Xe!EB?She51))4{C4fVq9@)YJ-L;4*%!L}?YP&DgQ+iy7%m$TU8?+} zaA|gY{&Ft3C>t1w$kW*;2J*6;;Xd@mT+F(ssP~SjXfe=P`*m;4iVwL!fAs&kc<2A> zd(EOZ-cmU{mG7*Br_Y@oJ=9$%_q7KwHEspSy&MZtVy}sBOnVuM#Ss0mU%)L}@?+N=Rt6V+UU;?%1|9#~i zf72o5277H(hX4Tr1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!CuF0)z4S-;wzI@AmIsEytC1j!Vx&>)O+fcH$QEoOdLCe;J9jj>*g8jAGDn{JX_Q zJxzeXJr$@Gz3H*?^Z%`4a^KBESN`MrT}*rLX_al90D&(`Ao~9+(f=R$THOC9w%Hl~ zJMZtaT-+uf`*)A;Z8BIp-dOm~;_SC)%Das$tF;r`YsW4wU0xiYxcTB#-n(SgaO-aO zF==nPJ&ysLcBk4H=G_FgNB@5z`u|_Q(_DVv3st5yGRwWk&TS6Z_LUOY`8K!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7ZYt1|dedK|BE2)%EUxDq zZ>3Zet@*V)HxVE}fB*pkTTURy|L<4vKW5_pmV1RYhyVcs1PFXyposYYNCf@^pEQen z+}}RrubrBmzw+jVmrs0tmHf{^AopUFRyzqrXA_bx%0>B z#~X7Ci&INWQAPAMJmk zcJg46s=T3n;@oo1l-hYao?3UZ{kpDu16CwJfB=ClB`^>%{9hu1@BQ6-MNb5Yp4_^- zjD=nH9qzT?V5&tC!(}5Pq?S7cmuAQ3FXw`bvVoC^Je@IdATP@q?n5lj#jJaZdhdve z76YBNU-#CmNPqwV0uQM`f5iU-5&2Gj+$?${q~ycXGO`>zeeUe&q3$X<);@r#FUs5* z75#ZGd!xtf2jHVf0t5&UAaFZ@Z4v)ZM8yBi;i1$Q@pSn(_*>i3mv6VCWdsNiAV7e? zrWNRm`2T~5|L=d;Eczq<=i}-$oKKsddbR$_{B)zEWkpYQMS7E8A81{lXkVJIKQl5q zGJ0{WqoFD7s`6xra`{seSC{Jh$3{oTp3Xl<4y5#C?Zr#^LlUpW75<|$3sXz4FE&P| zCq`x#MkX3_FO}PS!nui6t{xB|K!Cso5vWD{?<>#vH(gTRAg_sP5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!CvJ7Z{BD|NeR0|M$QD_iFjQvS}!P zFa7rZfn#TPcD8QSgU$t2I)7*2Nc{d={I2CY`EvgJRlM<~!|^W?CISQq5FkL{z6tac zy{R7Y|Hljeo*u7C&EEkO@i~7La4XeHq_=lh-wj+oF25-#Qmy%0Ri1MH;qk|Zdj8<- z@LJM&KVVH$m+$!9)3K4EGToQH)bX4o0RjXF5FpSYP{sfE{-jytSUj{hAOH8iP&;`r z4$FJXZw6Wwqc{0?|D}6d|H0bv#=>_NXTLpjxx;uRxxIGm;?m{C@rj!+PJ^kILcL=e zE-ReBhwyk~ZsF4G_8VK!Cta1-3{0|HEdH{_4+~%W%7bHf9LwSPDQlqXR-J4wTru3*BR3Glw+&d z*eNAVfB*pk534|q|Nj?p@^3yl6{*%##sBIAfBV^#-u?ZR`1y8~w>@9>Ykhv8@A<>K zc2=JyNIPr0zSK$&mgf~#J-@tSm&6^!|6HdW|4&D|CO+6*9#0ol{9kEJtGt}=FC*XB z^ZTlNJ&)x5gsSnWbuFQGsj+nV;B@24{A9K5gR#z;AGfz1yA`ocb-^U^<=7YJ{HqYSa`r#R|MsJNjGd?Uy!9ylZ^i#K@Qt%K ziTR!Jze+E!*d@^={BG@?UrS!}9TK75}Tl*>=QCH+=r@79>^tUpeOA-f{f@`E+}K;uc$5dAdvdZyj^5 zWS1g9fB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+z-ANZ zNxkXgRHV%72oQKk1^OfY|6WAClOH#W|BR554^PX;a`5!Iv!jQ)tK?Yw0H(eub7xfa=eg{S z9WAV7e??F6<({C_qg{%;NsrB5TCE*}SfYg_vA?N+pm009C72oTt`0(}wx z|1{$N`yV!o|BCpZkE_#gK5c&L)%q**(~XXn6+P7z=}mrppmlwseQCb_%*g1-=*6*) zhNiTu%9A0=aykOf9{>*ch3f7@1iZ znP|+tRBrDH=O$LUdO&~x0RkIDpce7})AEdev-oX!;(vowOf?7)AV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBngV}X4CkD<8!_stLD{vW+7V`96E;l0KEKb{>QcmI#pYp|yK ze+=~P+4uE5_v14{F74iN*LWya$m9PHNB@7j7UTb;|8I%$|M^3V-Nye%p3Xk8Jnmtm zk0p$H8~^`Mbj|zH$UOe{8_^Sf^}QJX8~y)|$N!ce7``u6T~$afHjn@Pb?(F)z0aHC0Fw&@nrm%2oTtM0(tz;Thaf^@jube z%W!V|kMTcS@2##yHxbC6|Nm`yBpjdr7w2yxPfizelV7AM<=a022WMTUX%!0sC-F&Hw-a literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm_f.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm_f.bin new file mode 100644 index 0000000000000000000000000000000000000000..ba333a770e8c02b3c6c14d925dc6eadd7d60173c GIT binary patch literal 1048576 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 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm_ff.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_a_mm_ff.bin new file mode 100644 index 0000000000000000000000000000000000000000..1dc21d648e47d36eaf2f4b3175e20f50150ed6f9 GIT binary patch literal 1048576 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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FoJC1iDgp`ZyKo zv+IrGMpxAScuGaloL}$WYOPUU0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72z+q@Me0uflZtfclSXm9NRetzwKKExSKqw& z@~O3p>MtT^SFD@!=il0MmyR8sI`aI)?blm-Yj^+bu5@nf!im9?^|^(`simc<$-#^B zvlI2nsdaDqZr8uLprI0CaPEz(lhe~n%S(HDo5_LwAMNOWwD*PD>BB{;@`m=QvE`g8 zweq$-wc%vzb=~j=tVnqAWq!Ke*0Q3j`b2t*e?HLse4_Qy{NOXgBf}$?M%x;i(w-_$ zhA5XmHF0fe@Zjjk$mrAg=h&f?o~*riIbS64T71HPd}d*4>Gj3>@btv+%);$?9(U(db+ zU*C5>t`YLl?j3iHhhl|1{{Lw7|F>%~{y+Nvwiy4PFJkO8{y*}x_lf0k51V}~Vbt6B z|A(S$-j_z^@xR}Qp787M#rWUo|93q8x4dBZzEpKpA-UK*{`WVz6L0oDyQ=0M5ZF8d zdHmmn=>I?Z;okIV^#2?O%YA^E?(~&h&7Z`R@na%DVEYN=@jq`x|1Zb?L_aUXx$!^7 z|7^dvx)!Y=kgxy$U3nxN*Z+(2YY2IY009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72y8xquDJg1ow)w*o&H8~BafwdE5^lD^XqwTB0yl<3grI(%jo}~ ZU61~sum3$>_5YaX`vI5;5ZJx~{|_w;cMJdk literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_all.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_all.bin new file mode 100644 index 0000000000000000000000000000000000000000..51b5a51faf279756b12ead3f9bfe7fdd08fdf190 GIT binary patch literal 1048576 zcmeI*U5p)70SE9i+wJb%DzK##FhTZ`ZeqKI<#zc1PBlaPr3g0zkmP%0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U 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 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UxPk&%*bx36vhdP;D|J4Z}fB*pk*OWkC%<$jF1Rwh7)vOgmq9+~QC1zolbBD|AHxO!Z7bE#W#7NCg3g%{y zEu2a_&hi6{g;=LE6Z_J-RN)F_aoWwQr`Ye!v7=dEXYW_NH4O<6AVAH7h*?DmMaO1x2Dk*EP!qgl0d2{UO+iBlxJ+rTZk6jWVK!5;&l?3`@ z{@))H|GnLV;lr4x?d#xY`@@!%8d^ty009C72&`Ly-kAR{#{7TntycEWnE&azI*g>- z<_DgxKe;f|>^QQlryP-9=i>v#_(U}{U*9#_7;Q|9bsT62x0ZDhM85u>$>*2q+s7J> zv3t|sJv&0UtM<@b`jW&mafJVomfB*O8`1`*v545sR((nJCiO>Hl=kNPH;C1}T>N)`e1PBng Hu)zNSN8RCz literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_ca.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_ca.bin new file mode 100644 index 0000000000000000000000000000000000000000..97301fde36e497cdc5d158f9fc0a66814b262004 GIT binary patch literal 1048576 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 z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C7HmX2Z)}4Kr<=Ll~=JU_GLg8?h<#{>2)V)zv)SCbS0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009D7mS^4B z|Hl7&Kbp@k0?(%>dPZ#SL99U({JO^(L)C(4m>utbiS)^?Z%hx z$etZ}{z&s^YkKzF#N6D(c=OcE)L3hL;+i*oqxrAg(O?15oPPDf_~hhVdu>l|IoUt( z!REfLy-zfb@5{3)ZD=1GX{XGxI&H_I6;IZ$>xwrZBLM;g2&^lCO%cQYAtLy|FW$-L zBS>_m+TCC*T;|x}R{Qm3jo8ItQHcnt#X-T@snav((~k3^f-wm*O0t5&U*q{Qv5&!Rv$ann1`TV~lq@>f+BC_mzX5_iy1Iw$V zSbGPCp4jKkDCm#VzE^w9z5_mXNq_(W0tA*4*c|cyHzVSIe6T5&!=r;{Utv&*%RW@jsncXM^do`Ni_$P(Gq_8&FKFd?f<&_{}wk4 z-i_$*)QDGmn_W#K>sBDO|Nn^g|LLV@|LOkU!&Uo_ae5wrfdGN^EAan4^P@-r literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf.bin new file mode 100644 index 0000000000000000000000000000000000000000..d94313591d32b098ac6a30c866083e6d76f8d908 GIT binary patch literal 1048576 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 Bf&Bmg literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_fid.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_fid.bin new file mode 100644 index 0000000000000000000000000000000000000000..c300bad99b2b9835a9369e11ea230a395883be77 GIT binary patch literal 1048576 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 Bf%O0Y literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m.bin new file mode 100644 index 0000000000000000000000000000000000000000..f04718ba916d5e4e16edc038e1d899fc17b94f8c GIT binary patch literal 1048576 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 N{Qyh^2y9+~e+CEdXEFc) literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m1.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m1.bin new file mode 100644 index 0000000000000000000000000000000000000000..32f9e42d9c3fbbd89d4cbb8816951534159e945f GIT binary patch literal 1048576 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 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m3.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m3.bin new file mode 100644 index 0000000000000000000000000000000000000000..6be765225510f4bf14e0b5abc174e9d28119470f GIT binary patch literal 1048576 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 C27&be literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m4.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m4.bin new file mode 100644 index 0000000000000000000000000000000000000000..21f7f3e0eeb1fa50c55eb7a5e0e9521aab83c561 GIT binary patch literal 1048576 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 CN`d(R literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_16.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_16.bin new file mode 100644 index 0000000000000000000000000000000000000000..4711559a8a83ee027b6e97ec3c05ca276726173a GIT binary patch literal 1048576 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 CYJwdA literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_17.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_17.bin new file mode 100644 index 0000000000000000000000000000000000000000..c86928464616d71668501a9dca600fcbc2371e8a GIT binary patch literal 1048576 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
Host-based Firmware Analyzer $Testcase Summary Report
+ + + + + + + + + +
HighLight:This is Host-based Firmware Analyzer $Testcase Summary Report offered the failure number of $TestMethod.
Date:$Date
+ + +
+ + + + + + + + + + +
+
ItemNameItemValue
+ + + + + + +
$Item   $Value
+ +
+ + +
Generated by: HBFA
+ + + diff --git a/HBFA/UefiHostTestTools/Report/IndexTemplate.html b/HBFA/UefiHostTestTools/Report/IndexTemplate.html new file mode 100644 index 0000000..b40762e --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/IndexTemplate.html @@ -0,0 +1,278 @@ + + + + + Host-based Firmware Analyzer Debug Report + + + + +
Host-based Firmware Analyzer Debug Report
+ + + + + + + + + + + +
HighLight:This is Host-based Firmware Analyzer debug report that offers the $itemDetail detail information of $testMethod.
Date:$Date$itemNum Number:$failNum
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
Case NameFile NameLine NumberError MessageStack
$failure$fileName$lineNum$error+ Detail Stack Information +
$stack +
+

close

+
+
+
+
Generated by: HBFA
+ + + + + diff --git a/HBFA/UefiHostTestTools/Report/ReportMain.py b/HBFA/UefiHostTestTools/Report/ReportMain.py new file mode 100644 index 0000000..daa4d65 --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/ReportMain.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python3 +# @file +# Transfer report.log file into HTML file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import subprocess +import argparse +from GetSeedsList import GetSeedsList +from GenGdbInfo import GenGdbInfo +from GenGdbHtmlReport import GenGdbHtmlReport +from GenSummaryInfo import GenSummaryInfo +from GenSanitizerInfo import GenSanitizerInfo +from GenSanitizerHtmlReport import GenSanitizerHtmlReport +from GenSummaryReport import GenSummaryReport +import time + +__prog__ = 'ReportMain.py' +__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.' +__version__ = '{} Version {}'.format(__prog__, '0.11 ') + + +class GenerateFinalReport(object): + def __init__(self, execute, input, output, methods, sleep): + self.__execute = execute + self.__input = input + self.__output = output + self.__methods = methods + self.__sleep = sleep + self.__reportType = self.__ReportType() + + def __ReportType(self): + return "gdb" if "gcc5" in self.__execute.lower() else "sanitizer" + + def __CallCommand(self, CommandLine): + Cm = subprocess.Popen(CommandLine, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=False) + msg = list(Cm.communicate()) + python_version = sys.version_info[0] + return msg if python_version == 2 \ + else (msg[0].decode() if msg[0] else msg[0], msg[1].decode() + if msg[1] else msg[1]) + + def check_proc_status(self, pid): + try: + os.kill(pid, 0) + except OSError: + return False + return True + + def __CheckStatus(self): + Pid = None + if self.__methods.lower() == 'afl': + statusFile = os.path.join(self.__input, 'fuzzer_stats') + if os.path.exists(statusFile): + f = open(statusFile, 'r') + lines = f.readlines() + f.close() + for line in lines: + if 'fuzzer_pid' in line.lower(): + tmpPid = line.split(":")[-1].strip() + if tmpPid.isdigit(): + tmpPid = int(tmpPid) + status = self.check_proc_status(tmpPid) + if status: + Pid = tmpPid + else: + Pid = None + print(status) + break + + # TODO: Check libfuzzer status + return Pid + + def __GenDebugReport(self, seedList, aflError): + if self.__ReportType() == "gdb": + cfgPath = os.path.join(self.__output, "HBFA.GDB{}.cfg".format( + ("." + aflError.capitalize()) if aflError + in ["crashes", "hangs"] else "")) + genCfg = GenGdbInfo(self.__execute, cfgPath) + genCfg.Run(seedList, False if aflError else True) + genHtml = GenGdbHtmlReport(cfgPath, self.__output, aflError) + genHtml.GenerateHtml() + elif self.__ReportType() == 'sanitizer': + genCfg = GenSanitizerInfo(self.__execute, seedList, + self.__output, True, aflError) + genCfg.Run() + genHtml = GenSanitizerHtmlReport(self.__output, + aflError, self.__output) + genHtml.GenHtml() + + def __GenSummaryReport(self): + genSumNum = GenSummaryInfo(self.__input, self.__output, + self.__methods, self.__reportType, True) + totalNum, failNum, execTime = genSumNum.GenSumInfo() + genSummary = GenSummaryReport(self.__execute, self.__output, + self.__methods, self.__reportType, + failNum, totalNum, execTime) + genSummary.GenSumReport() + + def GenerateReport(self): + getSeedsList = GetSeedsList(self.__methods, self.__input, False) + while True: + seedsList = getSeedsList.SeekNewSeed() + if self.__methods.lower() == "afl": + aflErrorType = ["crashes", "hangs"] + try: + for index, subList in enumerate(seedsList): + if len(subList) == 0: + self.__GenDebugReport(subList, aflErrorType[index]) + else: + for seed in subList: + self.__GenDebugReport([seed], + aflErrorType[index]) + self.__GenSummaryReport() + except Exception as e: + print(e) + elif self.__methods.lower() == 'libfuzzer': + try: + if len(seedsList) == 0: + self.__GenDebugReport(seedsList, "sanitizer") + else: + for seed in seedsList: + self.__GenDebugReport([seed], "sanitizer") + self.__GenSummaryReport() + except Exception as e: + print(e) + if self.__sleep: + time.sleep(int(self.__sleep)) + else: + break + if not self.__CheckStatus(): + break + + +if __name__ == '__main__': + parse = argparse.ArgumentParser() + parse.add_argument("-e", "--execbinary", dest="ModuleBin", + help="Test module binary file name.") + parse.add_argument("-i", "--input", dest="ResultPath", + help="Test result path for test method.") + parse.add_argument("-r", "--report", dest="ReportPath", + help="Generated report path.", default=os.getcwd()) + parse.add_argument("-t", "--testmethods", dest="TestMethods", + help="Test method's name. Must be one of [afl, " + "libfuzzer]. Will be auto detected for default.") + parse.add_argument("-s", "--sleep", dest="SleepTime", + help="In run time mode, # of seconds to sleep between " + "checking for new seed files") + + options = parse.parse_args(sys.argv[1:]) + if options.ResultPath: + if options.TestMethods: + if options.TestMethods.lower() == 'afl': + if not os.path.exists(os.path.join(options.ResultPath, + "fuzzer_stats")): + print("Input AFL fuzzing test's output directory: " + "{}".format(os.path.abspath(options.ResultPath)) + + " is illegal, please check the directory.") + os._exit(0) + elif options.TestMethods.lower() == 'libfuzzer': + pass + else: + if os.path.exists(os.path.join(options.ResultPath, + "fuzzer_stats")): + options.TestMethods = 'afl' + else: + options.TestMethods = "libfuzzer" + if options.ModuleBin: + if not os.path.exists(options.ModuleBin): + print("Input executable test binary file path: " + "{}".format(os.path.abspath(options.ModuleBin)) + + " is not existed.") + os._exit(0) + + ReportPath = os.path.join(options.ReportPath, "DebugReport") + if os.path.exists(ReportPath): + timeStamp = time.strftime('%Y%m%d%H%M%S', + time.localtime(os.path.getctime( + ReportPath))) + backupReportPath = os.path.join(options.ReportPath, + "{}_{}".format("DebugReport", + timeStamp)) + os.rename(ReportPath, backupReportPath) + if not os.path.exists(ReportPath): + os.makedirs(ReportPath) + gfr = GenerateFinalReport(options.ModuleBin, options.ResultPath, + ReportPath, options.TestMethods, + options.SleepTime) + gfr.GenerateReport() + else: + print("Please -e input path for executable test binary file.") + os._exit(0) + else: + print("Please -i input directory that generated by test methods.") + os._exit(0) diff --git a/HBFA/UefiHostTestTools/Report/__init__.py b/HBFA/UefiHostTestTools/Report/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/HBFA/UefiHostTestTools/RunAFL.py b/HBFA/UefiHostTestTools/RunAFL.py new file mode 100644 index 0000000..9881c1e --- /dev/null +++ b/HBFA/UefiHostTestTools/RunAFL.py @@ -0,0 +1,329 @@ +#!/usr/bin/env python3 +# @file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import shutil +import platform +import subprocess +import argparse + +__prog__ = 'RunAFL.py' +__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.' +__version__ = '{} Version {}'.format(__prog__, '0.11 ') + +# Get System type info +SysType = platform.system() + +# Get System arch info +Is32bit = bool("64" not in platform.machine()) + +# build tool chain +if SysType == "Windows": + ToolChain = "VS2015x86" +elif SysType == "Linux": + ToolChain = "AFL" + +# WORKSPACE +workspace = '' + +# HBFA package path +HBFA_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + +# Conf directory +Conf_Path = os.path.join(HBFA_PATH, 'UefiHostFuzzTestPkg', 'Conf') + +# Get PYTHON version +PyVersion = sys.version_info[0] + +# Set a CLI command mode +CommandLineMode = None + + +def CheckTestEnv(): + # Check EDKII BUILD WORKSPACE whether be set in system environment + # variable + if 'WORKSPACE' not in os.environ: + print("[!] Please set system environment variable 'WORKSPACE' before " + "run this script.") + os._exit(0) + global workspace + workspace = os.environ['WORKSPACE'] + + # Check whether HBFA environment is set up + if 'build_rule.txt' not in os.listdir(Conf_Path) or 'tools_def.txt' \ + not in os.listdir(Conf_Path) or 'target.txt'\ + not in os.listdir(Conf_Path): + print("[!] Please run HBFAEnvSetup.py before run this script.") + os._exit(0) + + if "AFL_PATH" not in os.environ: + print("[!] Please set AFL_PATH in system environment variables.") + os._exit(0) + + if "EDK_TOOLS_PATH" not in os.environ: + print("[!] Please set EDK_TOOLS_PATH in system environment variables.") + os._exit(0) + global edkToolsPath + edkToolsPath = os.environ['EDK_TOOLS_PATH'] + + if SysType == "Windows" and "DRIO_PATH" not in os.environ: + print("Please set DRIO_PATH in system environment variables.") + os._exit(0) + + +def GetPkgName(path): + return path.split(os.path.sep)[0] + + +def GetModuleBinName(ModuleInfPath): + with open(ModuleInfPath, 'r') as f: + lines = f.readlines() + for line in lines: + if 'BASE_NAME' in line: + if SysType == "Windows": + return line.split('=')[1].strip() + ".exe" + elif SysType == "Linux": + return line.split('=')[1].strip() + + +def CheckBuildResult(ModuleBinPath): + if os.path.exists(ModuleBinPath): + print("Build Successfully !!!\n") + else: + print("Build failure, can not find Module Binary file: " + "{}".format(ModuleBinPath)) + os._exit(0) + + +def CopyFile(src, dst): + try: + shutil.copyfile(src, dst) + except Exception as err: + print(err) + + +def Build(Arch, Target, ModuleFilePath): + PkgName = GetPkgName(ModuleFilePath) + ModuleFileAbsPath = os.path.join(HBFA_PATH, ModuleFilePath) + ModuleBinName = GetModuleBinName(ModuleFileAbsPath) + ModuleBinAbsPath = os.path.join(workspace, 'Build', PkgName, Target + + '_' + ToolChain, Arch, ModuleBinName) + PlatformDsc = os.path.join(HBFA_PATH, PkgName, PkgName+'.dsc') + + BuildCmdList = [] + BuildCmdList.append('-p') + BuildCmdList.append('{}'.format(PlatformDsc)) + BuildCmdList.append('-m') + BuildCmdList.append('{}'.format(ModuleFileAbsPath)) + BuildCmdList.append('-a') + BuildCmdList.append('{}'.format(Arch)) + BuildCmdList.append('-b') + BuildCmdList.append('{}'.format(Target)) + BuildCmdList.append('-t') + BuildCmdList.append('{}'.format(ToolChain)) + BuildCmdList.append('--conf') + BuildCmdList.append('{}'.format(Conf_Path)) + if SysType == 'Linux': + BuildCmdList.append('-t') + BuildCmdList.append('GCC5') + + buildBinary = [edkToolsPath + '/BinWrappers/PosixLike/build'] + ExecCmd = buildBinary + BuildCmdList + p = subprocess.Popen(ExecCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + msg = list(p.communicate()) + if PyVersion == 3: + for num, submsg in enumerate(msg): + if submsg is not None: + msg[num] = submsg.decode() + + if msg[1]: + print(msg[0] + msg[1]) + os._exit(0) + elif "- Done -" not in msg[0]: + print(msg[0]) + os._exit(0) + else: + pass + CheckBuildResult(ModuleBinAbsPath) + return ModuleBinAbsPath + + +def RunAFL(TestModuleBinPath, InputPath, OutputPath): + TestModuleName = TestModuleBinPath.split('\\')[-1] + if SysType == "Windows": + if "IA32" in TestModuleBinPath: + AFL_PATH = os.path.join(os.environ["AFL_PATH"], "bin32") + # Copy xxx.exe and xxx.pdb to the same dir as winafl\bin32 or + # winafl\bin64 + CopyFile(TestModuleBinPath, os.path.join(AFL_PATH, + TestModuleName)) + CopyFile(TestModuleBinPath, + os.path.join(AFL_PATH, + TestModuleName.replace('.exe', '.pdb'))) + AFL_CMD = "afl-fuzz.exe -i {} ".format(InputPath) + \ + "-o {}".format(OutputPath) + \ + " -D %DRIO_PATH%\\bin32 -t 20000 -- -coverage_module " + \ + "{}".format(TestModuleName) + \ + " -fuzz_iterations 1000 -target_module " + \ + "{}".format(TestModuleName) + \ + " -target_method main -nargs 2 -- " + \ + "{} @@".format(TestModuleName) + elif "X64" in TestModuleBinPath: + AFL_PATH = os.path.join(os.environ["AFL_PATH"], "bin64") + # Copy xxx.exe and xxx.pdb to the same dir as winafl\bin32 + # or winafl\bin64 + CopyFile(TestModuleBinPath, os.path.join(AFL_PATH, TestModuleName)) + CopyFile(TestModuleBinPath, + os.path.join(AFL_PATH, + TestModuleName.replace('.exe', '.pdb'))) + AFL_CMD = "afl-fuzz.exe -i {} ".format(InputPath) + \ + "-o {} ".format(OutputPath) + \ + "-D %DRIO_PATH%\\bin64 -t 20000 -- -coverage_module " + \ + "{}".format(TestModuleName) + \ + " -fuzz_iterations 1000 -target_module " + \ + "{}".format(TestModuleName) + \ + " -target_method main -nargs 2 -- " + \ + "{} @@".format(TestModuleName) + elif SysType == "Linux": + AFL_PATH = os.environ["AFL_PATH"] + AFL_CMD = [] + AFL_CMD.append(AFL_PATH+"/afl-fuzz") + AFL_CMD.append("-i") + AFL_CMD.append("{}".format(InputPath)) + AFL_CMD.append("-o") + AFL_CMD.append("{}".format(OutputPath)) + AFL_CMD.append("{}".format(TestModuleBinPath)) + AFL_CMD.append("@@") + print("Start run AFL test:") + if SysType == "Windows": + print(AFL_CMD) + ExecCmd = 'start cmd /k "cd/d {} && {}"'.format(AFL_PATH, AFL_CMD) + elif SysType == "Linux": + if CommandLineMode == 'rawcommand': + print(AFL_CMD) + ExecCmd = AFL_CMD + try: + p = subprocess.Popen(ExecCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + while True: + pout = p.stdout.readline() + if pout == b'' and p.poll() is not None: + break + elif pout: + print(pout.decode()) + p.poll() + except Exception as error: + print("Exception encountered: {}".format(error)) + elif CommandLineMode == 'manual': + runCommand = ' '.join(AFL_CMD) + print('Run this command to initiate the fuzzer: ' + '{}'.format(runCommand)) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-a", "--arch", + choices=['IA32', 'X64', 'ARM', 'AARCH64'], + dest="TargetArch", default="IA32", + help="ARCHS is one of list: IA32, X64, ARM or AARCH64," + " which overrides target.txt's TARGET_ARCH " + "definition.") + parser.add_argument("-b", "--buildtarget", + dest="BuildTarget", default="DEBUG", + help="Using the TARGET to build the platform, " + "overriding target.txt's TARGET definition.") + parser.add_argument("-m", "--module", dest="ModuleFile", + help="Build the module specified by the INF file name " + "argument.") + parser.add_argument("-i", "--input", dest="InputSeed", + help="Test input seed path.") + parser.add_argument("-o", "--output", dest="Output", + help="Test output path for AFL.") + parser.add_argument("-c", "--commandline", dest="CommandLine", + choices=['rawcommand', 'manual'], + default='rawcommand', + help="This specifies how the fuzzer is " + "initiated from command-line for Linux-based " + "distributions. Specify either: " + "'rawcommand' or 'manual'. Using 'rawcommand' " + "will directly initiate " + "the AFL fuzzer after building the test module and is " + "recommended for automated approaches. Alternatively, " + "'manual' may be used to simply build the test case " + "and print out a command that the user can run to " + "start the fuzzer (this will preserve the fuzzing " + "display for AFL.") + args = parser.parse_args(sys.argv[1:]) + TargetArch = args.TargetArch + BuildTarget = args.BuildTarget + + CheckTestEnv() + + if not args.ModuleFile: + print("ModuleFile should be set once by command -m MODULEFILE, " + "--module=MODULEFILE.") + os._exit(0) + elif os.path.isabs(args.ModuleFile): + if args.ModuleFile.startswith(HBFA_PATH): + ModuleFilePath = os.path.relpath(args.ModuleFile, HBFA_PATH) + else: + print("ModuleFile path: {}".format(args.ModuleFile) + + " should start with " + + "{}.".format(HBFA_PATH)) + os._exit(0) + elif not os.path.exists(os.path.join(HBFA_PATH, args.ModuleFile)): + print("ModuleFile path: {}".format(args.ModuleFile) + + " does not exist or is not in the relative path for HBFA") + os._exit(0) + else: + ModuleFilePath = args.ModuleFile + + if not args.InputSeed: + print("InputSeed path should be set once by command -i INPUTSEED, " + "--input=INPUTSEED.") + os._exit(0) + elif not os.path.exists(args.InputSeed): + print("InputSeed path: {}".format(os.path.abspath(args.InputSeed)) + + " does not exist") + os._exit(0) + else: + InputSeedPath = args.InputSeed + + if not args.Output: + print("OutputSeed path should be set once by command -o OUTPUT, " + "--output=OUTPUT.") + os._exit(0) + else: + OutputSeedPath = args.Output + if not os.path.isabs(OutputSeedPath): + OutputSeedPath = os.path.join(os.getcwd(), OutputSeedPath) + if not os.path.exists(OutputSeedPath): + try: + os.makedirs(OutputSeedPath) + except Exception as err: + print(err) + elif os.path.exists(os.path.join(OutputSeedPath, 'fuzzer_stats')): + print("OutputSeedPath:{}".format(OutputSeedPath) + + " is already exists, please change another directory.") + os._exit(0) + + if (SysType == 'Linux'): + global CommandLineMode + CommandLineMode = args.CommandLine + + TestModuleBinPath = Build(TargetArch, BuildTarget, ModuleFilePath) + RunAFL(TestModuleBinPath, InputSeedPath, OutputSeedPath) + + +if __name__ == "__main__": + main() diff --git a/HBFA/UefiHostTestTools/RunAFLTurbo.py b/HBFA/UefiHostTestTools/RunAFLTurbo.py new file mode 100644 index 0000000..625f675 --- /dev/null +++ b/HBFA/UefiHostTestTools/RunAFLTurbo.py @@ -0,0 +1,286 @@ +#!/usr/bin/env python3 +# @file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import shutil +import platform +import subprocess +import argparse + +__prog__ = 'RunAFLTurbo.py' +__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.' +__version__ = '{} Version {}'.format(__prog__, '0.11 ') + +# Get System type info +SysType = platform.system() + +# Get System arch info +Is32bit = bool("64" not in platform.machine()) + +# build tool chain +if SysType == "Windows": + ToolChain = "VS2015x86" +elif SysType == "Linux": + ToolChain = "AFL" + +# WORKSPACE +workspace = '' + +# HBFA package path +HBFA_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + +# Conf directory +Conf_Path = os.path.join(HBFA_PATH, 'UefiHostFuzzTestPkg', 'Conf') + +# Get PYTHON version +PyVersion = sys.version_info[0] + +# Set a CLI command mode +CommandLineMode = None + + +def CheckTestEnv(): + # Check EDKII BUILD WORKSPACE whether be set in system environment variable + if 'WORKSPACE' not in os.environ: + print("Please set system environment variable 'WORKSPACE' before run " + "this script.") + os._exit(0) + global workspace + workspace = os.environ['WORKSPACE'] + + # Check whether HBFA environment is set up + if 'build_rule.txt' not in os.listdir(Conf_Path) or 'tools_def.txt' \ + not in os.listdir(Conf_Path) or 'target.txt'\ + not in os.listdir(Conf_Path): + print("Please run HBFAEnvSetup.py before run this script.") + os._exit(0) + + if "AFL_PATH" not in os.environ: + print("Please set AFL_PATH in system environment variables.") + os._exit(0) + + if "EDK_TOOLS_PATH" not in os.environ: + print("[!] Please set EDK_TOOLS_PATH in system environment variables.") + os._exit(0) + global edkToolsPath + edkToolsPath = os.environ['EDK_TOOLS_PATH'] + + if SysType == "Windows": + print("AFLTurbo doesnt support running in Windows. Please try with " + "linux.") + os._exit(0) + + +def GetPkgName(path): + return path.split(os.path.sep)[0] + + +def GetModuleBinName(ModuleInfPath): + with open(ModuleInfPath, 'r') as f: + lines = f.readlines() + for line in lines: + if 'BASE_NAME' in line: + return line.split('=')[1].strip() + + +def CheckBuildResult(ModuleBinPath): + if os.path.exists(ModuleBinPath): + print("Build Successfully !!!\n") + else: + print("Build failure, can not find Module Binary file: " + "{}".format(ModuleBinPath)) + os._exit(0) + + +def CopyFile(src, dst): + try: + shutil.copyfile(src, dst) + except Exception as err: + print(err) + + +def Build(Arch, Target, ModuleFilePath): + PkgName = GetPkgName(ModuleFilePath) + ModuleFileAbsPath = os.path.join(HBFA_PATH, ModuleFilePath) + ModuleBinName = GetModuleBinName(ModuleFileAbsPath) + ModuleBinAbsPath = os.path.join(workspace, 'Build', PkgName, Target + + '_' + ToolChain, Arch, ModuleBinName) + PlatformDsc = os.path.join(HBFA_PATH, PkgName, PkgName+'.dsc') + + BuildCmdList = [] + BuildCmdList.append('-p') + BuildCmdList.append('{}'.format(PlatformDsc)) + BuildCmdList.append('-m') + BuildCmdList.append('{}'.format(ModuleFileAbsPath)) + BuildCmdList.append('-a') + BuildCmdList.append('{}'.format(Arch)) + BuildCmdList.append('-b') + BuildCmdList.append('{}'.format(Target)) + BuildCmdList.append('-t') + BuildCmdList.append('{}'.format(ToolChain)) + BuildCmdList.append('--conf') + BuildCmdList.append('{}'.format(Conf_Path)) + if SysType == 'Linux': + BuildCmdList.append('-t') + BuildCmdList.append('GCC5') + + buildBinary = [edkToolsPath + '/BinWrappers/PosixLike/build'] + ExecCmd = buildBinary + BuildCmdList + proccess = subprocess.Popen(ExecCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + msg = list(proccess.communicate()) + if PyVersion == 3: + for num, submsg in enumerate(msg): + if submsg is not None: + msg[num] = submsg.decode() + + if msg[1]: + print(msg[0] + msg[1]) + os._exit(0) + elif "- Done -" not in msg[0]: + print(msg[0]) + os._exit(0) + else: + pass + CheckBuildResult(ModuleBinAbsPath) + return ModuleBinAbsPath + + +def RunAFLTurbo(TestModuleBinPath, InputPath, OutputPath): + AFL_PATH = os.environ["AFL_PATH"] + AFL_CMD = [] + AFL_CMD.append(AFL_PATH+"/afl-turbo-fuzz") + AFL_CMD.append("-i") + AFL_CMD.append("{}".format(InputPath)) + AFL_CMD.append("-o") + AFL_CMD.append("{}".format(OutputPath)) + AFL_CMD.append("{}".format(TestModuleBinPath)) + AFL_CMD.append("@@") + print("Start run AFLTurbo test:") + if CommandLineMode == 'rawcommand': + print(AFL_CMD) + ExecCmd = AFL_CMD + try: + p = subprocess.Popen(ExecCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + while True: + pout = p.stdout.readline() + if pout == b'' and p.poll() is not None: + break + elif pout: + print(pout.decode()) + p.poll() + except Exception as error: + print("Exception encountered: {}".format(error)) + elif CommandLineMode == 'manual': + runCommand = ' '.join(AFL_CMD) + print('Run this command to initiate the fuzzer: ' + '{}'.format(runCommand)) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-a", "--arch", + choices=['IA32', 'X64', 'ARM', 'AARCH64'], + dest="TargetArch", default="IA32", + help="ARCHS is one of list: IA32, X64, ARM or AARCH64," + " which overrides target.txt's TARGET_ARCH " + "definition.") + parser.add_argument("-b", "--buildtarget", + dest="BuildTarget", default="DEBUG", + help="Using the TARGET to build the platform, " + "overriding target.txt's TARGET definition.") + parser.add_argument("-m", "--module", dest="ModuleFile", + help="Build the module specified by the INF file name " + "argument.") + parser.add_argument("-i", "--input", dest="InputSeed", + help="Test input seed path.") + parser.add_argument("-o", "--output", dest="Output", + help="Test output path for AFL.") + parser.add_argument("-c", "--commandline", dest="CommandLine", + choices=['rawcommand', 'manual'], + default="rawcommand", + help="This specifies how the fuzzer is " + "initiated from command-line for Linux-based " + "distributions. Specify either: " + "'rawcommand' or 'manual'. Using 'rawcommand' " + "will directly initiate " + "the AFLTurbo fuzzer after building the test " + "module and is recommended for automated " + "approaches. Alternatively, 'manual' may be used" + " to simply build the test case " + "and print out a command that the user can run to " + "start the fuzzer (this will preserve the fuzzing " + "display for AFLTurbo.") + + args = parser.parse_args(sys.argv[1:]) + TargetArch = args.TargetArch + BuildTarget = args.BuildTarget + + CheckTestEnv() + + if not args.ModuleFile: + print("ModuleFile should be set once by command -m MODULEFILE, " + "--module=MODULEFILE.") + os._exit(0) + elif os.path.isabs(args.ModuleFile): + if args.ModuleFile.startswith(HBFA_PATH): + ModuleFilePath = os.path.relpath(args.ModuleFile, HBFA_PATH) + else: + print("ModuleFile path: {}".format(args.ModuleFile) + + " should be start with {}.".format(HBFA_PATH)) + os._exit(0) + elif not os.path.exists(os.path.join(HBFA_PATH, args.ModuleFile)): + print("ModuleFile path: {}".format(args.ModuleFile) + + " is no exits or not the relative path for HBFA") + os._exit(0) + else: + ModuleFilePath = args.ModuleFile + + if not args.InputSeed: + print("InputSeed path should be set once by command -i INPUTSEED, " + "--input=INPUTSEED.") + os._exit(0) + elif not os.path.exists(args.InputSeed): + print("InputSeed path: {}".format(os.path.abspath(args.InputSeed)) + + " is no exists") + os._exit(0) + else: + InputSeedPath = args.InputSeed + + if not args.Output: + print("OutputSeed path should be set once by command -o OUTPUT, " + "--output=OUTPUT.") + os._exit(0) + else: + OutputSeedPath = args.Output + if not os.path.isabs(OutputSeedPath): + OutputSeedPath = os.path.join(os.getcwd(), OutputSeedPath) + if not os.path.exists(OutputSeedPath): + try: + os.makedirs(OutputSeedPath) + except Exception as err: + print(err) + elif os.path.exists(os.path.join(OutputSeedPath, 'fuzzer_stats')): + print("OutputSeedPath:{}".format(OutputSeedPath) + + " is already exists, please change another directory.") + os._exit(0) + + global CommandLineMode + CommandLineMode = args.CommandLine + + TestModuleBinPath = Build(TargetArch, BuildTarget, ModuleFilePath) + RunAFLTurbo(TestModuleBinPath, InputSeedPath, OutputSeedPath) + + +if __name__ == "__main__": + main() diff --git a/HBFA/UefiHostTestTools/RunKLEE.py b/HBFA/UefiHostTestTools/RunKLEE.py new file mode 100644 index 0000000..1a02f10 --- /dev/null +++ b/HBFA/UefiHostTestTools/RunKLEE.py @@ -0,0 +1,258 @@ +#!/usr/bin/env python3 +# @file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import platform +import subprocess +import argparse + +__prog__ = 'RunKLEE.py' +__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.' +__version__ = '{} Version {}'.format(__prog__, '0.11 ') + +# Get System type info +SysType = platform.system() + +# build tool chain +ToolChain = "KLEE" + +# WORKSPACE +workspace = "" + +# KLEE_SRC_PATH +klee_src_path = "" + +# HBFA package path +HBFA_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + +# Conf directory +Conf_Path = os.path.join(HBFA_PATH, 'UefiHostFuzzTestPkg', 'Conf') + +# Get PYTHON version +PyVersion = sys.version_info[0] + +# Set a CLI command mode +CommandLineMode = None + + +def CheckTestEnv(): + # Need to remove if support KLEE in Windows + if SysType == 'Windows': + print("KLEE is not supported in Windows currently.") + os._exit(0) + + # Check whether EDKII BUILD WORKSPACE is set in system environment variable + if 'WORKSPACE' not in os.environ: + print("Please set system environment variable 'WORKSPACE' before run " + "this script.") + os._exit(0) + global workspace + workspace = os.environ['WORKSPACE'] + + # Check whether KLEE_SRC_PATH is set in system environment variable + if 'KLEE_SRC_PATH' not in os.environ: + print("Please set system environment variable 'KLEE_SRC_PATH' before " + "run this script.") + os._exit(0) + global klee_src_path + klee_src_path = os.environ['KLEE_SRC_PATH'] + + if "EDK_TOOLS_PATH" not in os.environ: + print("[!] Please set EDK_TOOLS_PATH in system environment variables.") + os._exit(0) + global edkToolsPath + edkToolsPath = os.environ['EDK_TOOLS_PATH'] + + # Check whether HBFA environment is set up + if 'build_rule.txt' not in os.listdir(Conf_Path) or 'tools_def.txt' \ + not in os.listdir(Conf_Path) or 'target.txt'\ + not in os.listdir(Conf_Path): + print("Please run HBFAEnvSetup.py before run this script.") + os._exit(0) + + +def GetPkgName(path): + return path.split(os.path.sep)[0] + + +def GetModuleBinName(ModuleInfPath): + with open(ModuleInfPath, 'r') as f: + lines = f.readlines() + for line in lines: + if 'BASE_NAME' in line: + return line.split('=')[1].strip() + + +def CheckBuildResult(ModuleBinPath): + if os.path.exists(ModuleBinPath): + print("Build Successfully !!!\n") + else: + print("Can not find Module Binary file: {}".format(ModuleBinPath)) + os._exit(0) + + +def Build(Arch, Target, ModuleFilePath): + PkgName = GetPkgName(ModuleFilePath) + ModuleFileAbsPath = os.path.join(HBFA_PATH, ModuleFilePath) + ModuleBinName = GetModuleBinName(ModuleFileAbsPath) + ModuleBinAbsPath = os.path.join(workspace, 'Build', PkgName, + Target + '_' + ToolChain, Arch, + ModuleBinName) + PlatformDsc = os.path.join(PkgName, PkgName+'.dsc') + + BuildCmdList = [] + + BuildCmdList.append('-p') + BuildCmdList.append('{}'.format(PlatformDsc)) + BuildCmdList.append('-m') + BuildCmdList.append('{}'.format(ModuleFilePath)) + BuildCmdList.append('-a') + BuildCmdList.append('{}'.format(Arch)) + BuildCmdList.append('-b') + BuildCmdList.append('{}'.format(Target)) + BuildCmdList.append('-t') + BuildCmdList.append('{}'.format(ToolChain)) + BuildCmdList.append('--conf') + BuildCmdList.append('{}'.format(Conf_Path)) + BuildCmdList.append('-DTEST_WITH_KLEE') + BuildCmdList.append('--disable-include-path-check') + + BuildCmd = [edkToolsPath + '/BinWrappers/PosixLike/build'] + BuildCmdList + os.environ['SCRIPT_PATH'] = HBFA_PATH \ + + "/UefiHostFuzzTestPkg/Conf/LLVMLink.py" + os.environ['LLVM_COMPILER'] = 'clang' + print("Start build Test Module:") + print(' '.join(BuildCmd)) + p = subprocess.Popen(BuildCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + msg = list(p.communicate()) + if PyVersion == 3: + for num, submsg in enumerate(msg): + if submsg is not None: + msg[num] = submsg.decode() + + if msg[1]: + print(msg[0] + msg[1]) + os._exit(0) + elif "- Done -" not in msg[0]: + print(msg[0]) + os._exit(0) + else: + pass + CheckBuildResult(ModuleBinAbsPath) + return ModuleBinAbsPath + + +def RunKLEE(TestModuleBinPath, OutPutPath): + SetEnvCmd = "export PATH=$KLEE_BIN_PATH:$PATH\n" + SetLimit = "ulimit -s unlimited\n" + KLEE_CMD = "klee --only-output-states-covering-new " \ + + "-output-dir={} {}".format(OutPutPath, TestModuleBinPath) + print("Start run KLEE test:") + print(KLEE_CMD) + if CommandLineMode == 'rawcommand': + ExecCmd = SetEnvCmd + SetLimit + KLEE_CMD + try: + p = subprocess.Popen(ExecCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + while True: + pout = p.stdout.readline() + if pout == b'' and p.poll() is not None: + break + elif pout: + print(pout.decode()) + p.poll() + except Exception as error: + print("Exception encountered: {}".format(error)) + elif CommandLineMode == 'manual': + print('Run this command to initiate KLEE: ' + '{}'.format(SetEnvCmd + SetLimit + KLEE_CMD)) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-a", "--arch", + help="ARCHS is one of the list: IA32, X64, " + "ARM or AARCH64, which overrides target.txt's " + "TARGET_ARCH definition", + choices=['IA32', 'X64', 'ARM', 'AARCH64'], + dest="TargetArch", default="IA32") + parser.add_argument("-b", "--buildtarget", + help="Using the TARGET to build the platform, " + "overriding target.txt's TARGET definition.", + dest="BuildTarget", default="DEBUG") + parser.add_argument("-m", "--module", + help="Build the module specified by the INF file name " + "argument.", + dest="ModuleFile") + parser.add_argument("-o", "--output", + help="Test output path for Klee.", + dest="Output") + parser.add_argument("-c", "--commandline", + help="This specifies how the Klee is initiated from " + "command-line for Linux-based distributions. Specify " + "either: 'rawcommand' or 'manual'. " + "Using the 'rawcommand' mode is recommended. " + "The 'manual' option will build the module and " + "then simply print a command-line option that " + "the end-user can subsequently use to run Klee.", + choices=['rawcommand', 'manual'], + dest="CommandLine", default="rawcommand") + + args = parser.parse_args(sys.argv[1:]) + + TargetArch = args.TargetArch + BuildTarget = args.BuildTarget + + CheckTestEnv() + + if not args.ModuleFile: + print("ModuleFile should be set once by command -m MODULEFILE, " + "--module=MODULEFILE.") + os._exit(0) + elif os.path.isabs(args.ModuleFile): + if args.ModuleFile.startswith(HBFA_PATH): + ModuleFilePath = os.path.relpath(args.ModuleFile, HBFA_PATH) + else: + print("ModuleFile path: {} should start with {}.".format( + args.ModuleFile, HBFA_PATH)) + os._exit(0) + elif not os.path.exists(os.path.join(HBFA_PATH, args.ModuleFile)): + print("ModuleFile path: {}".format(args.ModuleFile) + + " does not exist or is not in the relative path for HBFA") + os._exit(0) + else: + ModuleFilePath = args.ModuleFile + + if not args.Output: + print("OutputSeed path should be set once by command -o OUTPUT, " + "--output=OUTPUT.") + os._exit(0) + else: + OutputSeedPath = args.Output + if os.path.exists(OutputSeedPath): + print("OutputSeedPath:{}".format(OutputSeedPath) + + " already exists, please select another folder.") + os._exit(0) + else: + if not os.path.exists(os.path.dirname(OutputSeedPath)): + os.makedirs(os.path.dirname(OutputSeedPath)) + + global CommandLineMode + CommandLineMode = args.CommandLine + + TestModuleBinPath = Build(TargetArch, BuildTarget, ModuleFilePath) + RunKLEE(TestModuleBinPath, OutputSeedPath) + + +if __name__ == "__main__": + main() diff --git a/HBFA/UefiHostTestTools/RunLibFuzzer.py b/HBFA/UefiHostTestTools/RunLibFuzzer.py new file mode 100644 index 0000000..78edd8f --- /dev/null +++ b/HBFA/UefiHostTestTools/RunLibFuzzer.py @@ -0,0 +1,474 @@ +#!/usr/bin/env python3 +# @file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import platform +import subprocess +import re +import shutil +import argparse + +__prog__ = 'RunLibFuzzer.py' +__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.' +__version__ = '{} Version {}'.format(__prog__, '0.11 ') + +# WORKSPACE +workspace = "" + +# HBFA package path +HBFA_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + +# Conf directory +Conf_Path = os.path.join(HBFA_PATH, 'UefiHostFuzzTestPkg', 'Conf') + +# Get PYTHON version +PyVersion = sys.version_info[0] + +# Get System type info +SysType = platform.system() + +# Get System arch info +Is32bit = bool("64" not in platform.machine()) + +# Set a CLI command mode +CommandLineMode = None + +# build tool chain +if SysType == "Windows": + ToolChain = "LIBFUZZERWIN" +elif SysType == "Linux": + ToolChain = "LIBFUZZER" + + +def CheckTestEnv(Arch): + # Check whether EDKII BUILD WORKSPACE is set in system environment variable + if 'WORKSPACE' not in os.environ: + print("Please set system environment variable 'WORKSPACE' before " + + "run this script.") + os._exit(0) + global workspace + workspace = os.environ['WORKSPACE'] + + # Check whether HBFA environment is set up + if 'build_rule.txt' not in os.listdir(Conf_Path) or 'tools_def.txt' \ + not in os.listdir(Conf_Path) or 'target.txt'\ + not in os.listdir(Conf_Path): + print("Please run HBFAEnvSetup.py before run this script.") + os._exit(0) + + if "EDK_TOOLS_PATH" not in os.environ: + print("[!] Please set EDK_TOOLS_PATH in system environment variables.") + os._exit(0) + global edkToolsPath + edkToolsPath = os.environ['EDK_TOOLS_PATH'] + + if SysType == "Windows": + if Arch == "IA32": + # Need to remove when LLVM support libFuzzer i386 + print("LLVM doesn't support libFuzzer i386 currently.") + os._exit(0) + # Check whether environment variable LLVMx86_PATH has been set + if "LLVMx86_PATH" not in os.environ: + print("Please set LLVMx86_PATH in system environment " + "variable.") + os._exit(0) + elif Arch == "X64": + # Check whether environment variable LLVM_PATH has been set + if "LLVM_PATH" not in os.environ: + print("Please set LLVM_PATH in system environment variable.") + os._exit(0) + else: + # Check whether environment variable CLANG_PATH has been set + if "CLANG_PATH" not in os.environ: + print("Please set CLANG_PATH in system environment variable.") + os._exit(0) + + +def GetPkgName(path): + return path.split(os.path.sep)[0] + + +def GetModuleBinName(ModuleInfPath): + with open(ModuleInfPath, 'r') as f: + lines = f.readlines() + for line in lines: + if 'BASE_NAME' in line: + if SysType == "Windows": + return line.split('=')[1].strip() + '.exe' + elif SysType == "Linux": + return line.split('=')[1].strip() + + +def CheckBuildResult(ModuleBinPath): + if os.path.exists(ModuleBinPath): + print("Build Successful !!!\n") + else: + print("Build failure, cannot find Module Binary file:" + " {}".format(ModuleBinPath)) + os._exit(0) + + +def Build(Arch, Target, ModuleFilePath): + PkgName = GetPkgName(ModuleFilePath) + ModuleFileAbsPath = os.path.join(HBFA_PATH, ModuleFilePath) + ModuleBinName = GetModuleBinName(ModuleFileAbsPath) + ModuleBinAbsPath = os.path.join(workspace, 'Build', PkgName, Target + + '_' + ToolChain, Arch, ModuleBinName) + PlatformDsc = os.path.join(PkgName, PkgName+'.dsc') + + BuildCmdList = [] + BuildCmdList.append('-p') + BuildCmdList.append('{}'.format(PlatformDsc)) + BuildCmdList.append('-m') + BuildCmdList.append('{}'.format(ModuleFilePath)) + BuildCmdList.append('-a') + BuildCmdList.append('{}'.format(Arch)) + BuildCmdList.append('-b') + BuildCmdList.append('{}'.format(Target)) + BuildCmdList.append('-t') + BuildCmdList.append('{}'.format(ToolChain)) + BuildCmdList.append('--conf') + BuildCmdList.append('{}'.format(Conf_Path)) + + if SysType == "Linux": + # Add GCC5 build target for gcov output if Profraw format is used + BuildCmdList.append('-t') + BuildCmdList.append('GCC5') + + BuildCmd = [edkToolsPath + '/BinWrappers/PosixLike/build'] + BuildCmdList + if SysType == "Windows": + ExecCmd = BuildCmd + elif SysType == "Linux": + ExecCmd = BuildCmd + print("Start build Test Module:") + print(' '.join(BuildCmd)) + proccess = subprocess.Popen(ExecCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + msg = list(proccess.communicate()) + if PyVersion == 3: + for num, submsg in enumerate(msg): + if submsg is not None: + msg[num] = submsg.decode() + + if msg[1]: + print(msg[0] + msg[1]) + os._exit(0) + elif "- Done -" not in msg[0]: + print(msg[0]) + os._exit(0) + else: + pass + CheckBuildResult(ModuleBinAbsPath) + return ModuleBinAbsPath + + +def RunLibFuzzer(TestModuleBinPath, InputPath, OutputPath): + LibFuzzer_CMD = [] + LibFuzzer_CMD.append("{}".format(TestModuleBinPath)) + LibFuzzer_CMD.append("{}".format(InputPath if InputPath + else '')) + LibFuzzer_CMD.append("-rss_limit_mb=0") + LibFuzzer_CMD.append("-artifact_prefix={}".format( + OutputPath + ('/' if SysType == "Linux" else '\\'))) + print("Start run LibFuzzer test:") + if SysType == "Windows": + ExecCmd = 'start cmd /k "{}"'.format(' '.join(LibFuzzer_CMD)) + elif SysType == "Linux": + if CommandLineMode == 'rawcommand': + print(' '.join(LibFuzzer_CMD)) + ExecCmd = LibFuzzer_CMD + try: + p = subprocess.Popen(ExecCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + while True: + pout = p.stdout.readline() + if pout == b'' and p.poll() is not None: + break + elif pout: + print(pout.decode()) + p.poll() + except Exception as err: + print("Exception encountered: {}".format(err)) + elif CommandLineMode == 'manual': + print('Run this command to initiate the fuzzer: ' + '{}'.format(' '.join(LibFuzzer_CMD))) + + +def checkSanitizers(Sanitizers): + CheckList = Sanitizers.split(',') + CheckedSanitizers = '' + SupportedSanitizers = ('address', 'memory', 'undefined', + 'integer', 'bounds', 'enum', 'function') + AddressMemoryCheck = {"address": False, "memory": False} + for Sanitizer in CheckList: + if Sanitizer in SupportedSanitizers: + CheckedSanitizers += (',' + Sanitizer) + else: + return "[!] Unsupported sanitizer provided in option -s: [ %s ]" \ + % (Sanitizer) + if Sanitizer == 'address' or Sanitizer == 'memory': + AddressMemoryCheck[Sanitizer] = True + if (AddressMemoryCheck['address'] is True) and \ + (AddressMemoryCheck['memory'] is True): + return "[!] Unsupported combination of 'address' (ASAN) and 'memory'" \ + " (MSAN) for option '-s'." + return CheckedSanitizers + + +# Parse command line options +def MyOptionParser(): + parser = argparse.ArgumentParser() + parser.add_argument("-a", "--arch", + choices=['IA32', 'X64', 'ARM', 'AARCH64'], + dest="TargetArch", default="IA32", + help="ARCHS is one of list: IA32, X64, ARM or AARCH64," + " which overrides target.txt's TARGET_ARCH " + "definition.") + parser.add_argument("-b", "--buildtarget", + dest="BuildTarget", default="DEBUG", + help="Using the TARGET to build the platform, " + "overriding target.txt's TARGET definition.") + parser.add_argument("-m", "--module", dest="ModuleFile", + help="Build the module specified by the INF file name " + "argument.") + parser.add_argument("-i", "--input", dest="InputSeed", + help="Test input seed path.") + parser.add_argument("-o", "--output", dest="Output", + help="Test output path for LibFuzzer.") + parser.add_argument("-s", "--sanitizer", dest="SANITIZER", + default='address', help="A comma-separated list of " + "sanitizers to run with LibFuzzer. E.g. '--sanitizer=" + "address'. Included sanitizers are: (ASAN) 'address'; " + "(MSAN) 'memory'; (UBSAN) 'undefined', 'integer', " + "'bounds', 'enum', and 'function'. NOTE: 'address' " + "and 'memory' cannot be used together. The default " + "sanitizer is 'address'. Support for Linux only.") + parser.add_argument("-c", "--commandline", dest="CommandLine", + choices=['rawcommand', 'manual'], + default='rawcommand', + help="This specifies how the fuzzer is initiated from " + "command-line for Linux-based distributions. Specify " + "either: 'rawcommand', or 'manual'. " + "Using the 'rawcommand' mode is recommended/default." + " The 'manual' option will build the module and " + "then simply print a command-line option that the " + "end-user can subsequently use to run LibFuzzer.") + parser.add_argument("-p", "--gen-profraw", dest="BuildProfraw", + choices=['t', 'T', 'true', 'True' or 'f', 'F', 'false', + 'False'], + default='False', help="Generate 'Source Based " + "Coverage' (Profraw) instead of the default " + "compilation option for gcov. Support for Linux " + "only. This setting will invoke the compilation " + "flags '-fprofile-instr-generate and " + "-fcoverage-mapping' for clang and libfuzzer.") + + args = parser.parse_args(sys.argv[1:]) + + # Tokenize and check list input, pass checked list onward to Build + args.SANITIZER = checkSanitizers(args.SANITIZER) + if "[!]" in args.SANITIZER: + print(args.SANITIZER) + parser.print_help() + os._exit(0) + + # Ensure bool + boolStrTrue = ['t', 'T', 'true', 'True'] + boolStrFalse = ['f', 'F', 'false', 'False'] + if (args.BuildProfraw not in boolStrTrue) and \ + (args.BuildProfraw not in boolStrFalse): + print("[!] Error for '-p, --gen-profraw' " + + "option: {}".format(args.BuildProfraw) + + " not supported. Please specify 'true' or 'false'.") + parser.print_help() + os._exit(0) + else: + if args.BuildProfraw in boolStrTrue: + args.BuildProfraw = True + elif args.BuildProfraw in boolStrFalse: + args.BuildProfraw = False + else: + print("[!] Unexpected error parsing input for -p, " + "--gen-profraw argument: {}".format(args.BuildProfraw)) + + return args + + +def updateBuildFlags(SanitizerFlags, buildProfraw): + # Update the build option file for HBFA: + # E.g. HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestBuildOption.dsc + print("Updating UefiHostFuzzTestBuildOption.dsc") + BasePath = HBFA_PATH + "/UefiHostFuzzTestPkg/" + OriginalBuildOptionFile = BasePath + \ + "UefiHostFuzzTestBuildOption.dsc.original" + # If OriginalBuildOptionFile does not exist, copy + # UefiHostFuzzTestBuildOption.dsc + if not os.path.isfile(OriginalBuildOptionFile): + shutil.copyfile(BasePath + "UefiHostFuzzTestBuildOption.dsc", + OriginalBuildOptionFile) + OutputBuildOptionFile = BasePath + "UefiHostFuzzTestBuildOption.dsc" + try: + frs = open(OriginalBuildOptionFile, 'rb') + raw = frs.read() + + profrawCcCovFlag = rb'-fprofile-instr-generate -fcoverage-mapping' + profrawLdCovFlag = rb'-fprofile-instr-generate -fcoverage-mapping' + + # Patch with appropriate coverage and sanitizer + if buildProfraw: + raw = re.sub(rb'GCC:\*_LIBFUZZER_\*_CC_FLAGS = ' + rb'"-DTEST_WITH_LIBFUZZER=TRUE" -O1 ' + rb'-fsanitize=fuzzer,address', + rb'GCC:*_LIBFUZZER_*_CC_FLAGS = "-DTEST_WITH_' + rb'LIBFUZZER=TRUE" -O1 ' + profrawCcCovFlag + + rb' -fsanitize=fuzzer' + + SanitizerFlags.encode(), raw) + raw = re.sub(rb'GCC:\*_LIBFUZZER_\*_DLINK2_FLAGS = -fsanitize=' + rb'fuzzer,address', + rb'GCC:*_LIBFUZZER_*_DLINK2_FLAGS = ' + + profrawLdCovFlag + + rb' -fsanitize=fuzzer' + SanitizerFlags.encode(), + raw) + raw = re.sub(rb'GCC:\*_CLANG8_\*_CC_FLAGS = -O1 -fsanitize=' + rb'address -fprofile-arcs -ftest-coverage', + rb'GCC:*_CLANG8_*_CC_FLAGS = -O1 ' + + profrawCcCovFlag + rb' -fsanitize=' + + SanitizerFlags[1::].encode(), raw) + raw = re.sub(rb'GCC:\*_CLANG8_\*_DLINK2_FLAGS = -fsanitize=address' + rb' --coverage', rb'GCC:*_CLANG8_*_DLINK2_FLAGS = ' + rb'-fsanitize=' + SanitizerFlags[1::].encode() + rb' ' + + profrawLdCovFlag, raw) + else: + raw = re.sub(rb'GCC:\*_LIBFUZZER_\*_CC_FLAGS = ' + rb'"-DTEST_WITH_LIBFUZZER=TRUE" -O1 ' + rb'-fsanitize=fuzzer,address', + rb'GCC:*_LIBFUZZER_*_CC_FLAGS = ' + rb'"-DTEST_WITH_LIBFUZZER=TRUE" -O1' + rb' -fsanitize=fuzzer' + + SanitizerFlags.encode(), raw) + raw = re.sub(rb'GCC:\*_LIBFUZZER_\*_DLINK2_FLAGS = -fsanitize=' + rb'fuzzer,address', + rb'GCC:*_LIBFUZZER_*_DLINK2_FLAGS = -fsanitize=fuzzer' + + SanitizerFlags.encode(), raw) + raw = re.sub(rb'GCC:\*_CLANG8_\*_CC_FLAGS = -O1 -fsanitize=address' + rb' -fprofile-arcs -ftest-coverage', + rb'GCC:*_CLANG8_*_CC_FLAGS = -O1 -fsanitize=' + + SanitizerFlags[1::].encode() + + rb' -fprofile-arcs -ftest-coverage', raw) + raw = re.sub(rb'GCC:\*_CLANG8_\*_DLINK2_FLAGS = -fsanitize=address' + rb' --coverage', rb'GCC:*_CLANG8_*_DLINK2_FLAGS = ' + rb'-fsanitize=' + SanitizerFlags[1::].encode() + + rb' --coverage', raw) + + # Write out file + fws = open(OutputBuildOptionFile, 'wb') + fws.write(raw) + frs.close() + fws.close() + except Exception as err: + print("[!] Error attempting to patch build description file " + "UefiHostFuzzTestBuildOption.dsc: {}".format(err)) + os._exit(0) + + +def restoreBuildOptionFile(): + # Restore the original UefiHostFuzzTestBuildOption.dsc file for HBFA + BasePath = HBFA_PATH + "/UefiHostFuzzTestPkg/" + OriginalBuildOptionFile = BasePath + \ + "UefiHostFuzzTestBuildOption.dsc.original" + OutputBuildOptionFile = BasePath + "UefiHostFuzzTestBuildOption.dsc" + if os.path.isfile(OriginalBuildOptionFile): + try: + shutil.copyfile(OriginalBuildOptionFile, OutputBuildOptionFile) + except IOError as err: + print("[!] Error making backup of UefiHostFuzzTestBuildOption.dsc" + " file: {}".format(err)) + else: + print("[!] Error: backup copy of UefiHostFuzzTestBuildOption.dsc not " + "found at path: {}".format(OriginalBuildOptionFile)) + + +def main(): + args = MyOptionParser() + TargetArch = args.TargetArch + BuildTarget = args.BuildTarget + + CheckTestEnv(TargetArch) + + if (SysType == 'Linux'): + if (TargetArch == "IA32") ^ Is32bit: + print("For CLANG: {}".format("i386" if Is32bit else "x64_86") + + "system cannot support arch {} build.".format(TargetArch)) + os._exit(0) + + if not args.ModuleFile: + print("ModuleFile should be set once by command -m MODULEFILE, " + "--module=MODULEFILE.") + os._exit(0) + elif os.path.isabs(args.ModuleFile): + if args.ModuleFile.startswith(HBFA_PATH): + ModuleFilePath = os.path.relpath(args.ModuleFile, HBFA_PATH) + else: + print("ModuleFile path: {}".format(args.ModuleFile) + + " should start with {}.".format(HBFA_PATH)) + os._exit(0) + elif not os.path.exists(os.path.join(HBFA_PATH, args.ModuleFile)): + print("ModuleFile path: {}".format(os.path.abspath(args.InputSeed)) + + " does not exist or is not in the relative path for HBFA") + os._exit(0) + else: + ModuleFilePath = args.ModuleFile + + OutputPath = args.Output if args.Output \ + else os.path.join(os.getcwd(), 'failureSeeds') + if not os.path.isabs(OutputPath): + OutputPath = os.path.join(os.getcwd(), OutputPath) + if not os.path.exists(OutputPath): + try: + os.makedirs(OutputPath) + except Exception as err: + print(err) + elif os.path.exists(os.path.join(OutputPath, 'fuzzfile.bin')): + print("OutputPath:{} has already".format(OutputPath) + + " been used for LibFuzzer test, please change another" + " directory.") + os._exit(0) + print("LibFuzzer output will be generated in current " + "directory:{}".format(OutputPath)) + + InputSeedPath = args.InputSeed if args.InputSeed \ + else os.path.join(os.getcwd(), 'Seeds') + if not os.path.isabs(InputSeedPath): + InputSeedPath = os.path.join(os.getcwd(), InputSeedPath) + if not os.path.exists(InputSeedPath): + try: + os.makedirs(InputSeedPath) + except Exception as err: + print(err) + + if (SysType == 'Linux'): + global CommandLineMode + CommandLineMode = args.CommandLine + + if (SysType == 'Linux'): + updateBuildFlags(args.SANITIZER, args.BuildProfraw) + + TestModuleBinPath = Build(TargetArch, BuildTarget, ModuleFilePath) + + if (SysType == 'Linux'): + restoreBuildOptionFile() + + RunLibFuzzer(TestModuleBinPath, InputSeedPath, OutputPath) + + +if __name__ == "__main__": + main() diff --git a/HBFA/UefiHostTestTools/Script/RunAllSeeds.py b/HBFA/UefiHostTestTools/Script/RunAllSeeds.py new file mode 100644 index 0000000..17ac44e --- /dev/null +++ b/HBFA/UefiHostTestTools/Script/RunAllSeeds.py @@ -0,0 +1,35 @@ +# @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import subprocess + +workdir = os.getcwd() + +tcsbin_path = sys.argv[1] +findings_dir_path = sys.argv[2] + + +def run_all_seeds(): + for root, dirs, files in os.walk(findings_dir_path): + for dir in dirs: + if dir in ['crashed', 'hangs', 'queue']: + dir_path = os.path.join(root, dir) + for file in os.listdir(dir_path): + file_path = os.path.join(dir_path, file) + if os.path.isfile(file_path): + cmd = './' + tcsbin_path + ' ' + file_path + print(cmd) + try: + subprocess.run(cmd.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as e: + print(e) + + +if __name__ == '__main__': + run_all_seeds() diff --git a/HBFA/UefiHostTestTools/Script/TransferKtestToSeed.py b/HBFA/UefiHostTestTools/Script/TransferKtestToSeed.py new file mode 100644 index 0000000..53ab5e2 --- /dev/null +++ b/HBFA/UefiHostTestTools/Script/TransferKtestToSeed.py @@ -0,0 +1,113 @@ +# @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import struct +import sys + +# python version +python_version = sys.version_info[0] + + +def getPath(): + fileList = [] + for path in sys.argv[1:]: + if not os.path.exists(path): + continue + if os.path.isfile(path): + if checkFile(path): + fileList.append(path) + else: + subPathList = os.listdir(path) + for i in range(0, len(subPathList)): + subPath = os.path.join(path, subPathList[i]) + if os.path.isfile(subPath) and checkFile(subPath): + fileList.append(subPath) + if not fileList: + print("The input is neither ktest format file nor folder that " + "include ktest format file.\n") + printUsage() + return fileList + + +def checkFile(file): + kTestFile = open(file, 'rb') + kTestHeader = kTestFile.read(5) + kTestFile.close() + if kTestHeader == b'KTEST' or kTestHeader == b"BOUT\n": + return True + else: + return False + + +def analyseFile(file): + objectList = [] + kTestFile = open(file, 'rb') + kTestFile.read(5) + kTestVersion = struct.unpack('>i', kTestFile.read(4))[0] + targetNum = struct.unpack('>i', kTestFile.read(4))[0] + for i in range(targetNum): + kTestFile.read(struct.unpack('>i', kTestFile.read(4))[0]) + + if kTestVersion >= 2: + kTestFile.read(8) + + objectNum, = struct.unpack('>i', kTestFile.read(4)) + for i in range(objectNum): + objectName = kTestFile.read(struct.unpack('>i', kTestFile.read(4))[0]) + objectData = kTestFile.read(struct.unpack('>i', kTestFile.read(4))[0]) + if python_version == 3: + objectName = objectName.decode() + objectList.append([i, objectName, objectData]) + kTestFile.close() + return objectList + + +def genNewName(file, objectIndex, objectName): + return os.path.join(os.path.dirname(file), + objectName + str(objectIndex + 1).zfill(6), + os.path.basename(file).split('.')[0] + '.seed') + + +def genSeed(file, data): + if not os.path.exists(os.path.dirname(file)): + os.makedirs(os.path.dirname(file)) + seed = open(file, 'wb') + seed.write(data) + seed.close() + + +def printUsage(): + print("Usage: python TransferKtestToSeed.py [Argument]") + print("Remove header of ktest format file, and save the new binary file " + "as .seed file.\n") + print("Argument:") + print(" the path of .ktest file.") + print(" ... the paths of .ktest files.") + print(" the path of folder contains " + ".ktest file.") + print(" ... the paths of folders contain " + ".ktest file.") + + +if __name__ == '__main__': + if len(sys.argv) < 2: + printUsage() + elif ( + sys.argv[1] == '-h' + or sys.argv[1] == 'help' + or sys.argv[1] == '--help' + ): + printUsage() + else: + fileList = getPath() + + for file in fileList: + objectList = analyseFile(file) + for object in objectList: + NewFileName = genNewName(file, object[0], object[1]) + genSeed(NewFileName, object[2]) + print('generate %s done.' % NewFileName) diff --git a/HBFA/UefiHostTestTools/__init__.py b/HBFA/UefiHostTestTools/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/HBFA/UefiHostTestTools/__pycache__/RunAFL.cpython-311.pyc b/HBFA/UefiHostTestTools/__pycache__/RunAFL.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e1235e9453e7261186d50da3b95fd5ac21bc3f64 GIT binary patch literal 18487 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 PFh@SvhHer;+WY?kLEqIH literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostTestTools/__pycache__/RunAFLTurbo.cpython-311.pyc b/HBFA/UefiHostTestTools/__pycache__/RunAFLTurbo.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8fcda786c18cb45bfeb7fd491b757752b988cc4 GIT binary patch literal 15683 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 XS;mp>|LNcdgK6@?Idqc(GT;9nC$G}s literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostTestTools/__pycache__/RunKLEE.cpython-311.pyc b/HBFA/UefiHostTestTools/__pycache__/RunKLEE.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..531e51174cb4487f5a5edb32e68d1637c9ea22df GIT binary patch literal 13610 zcmb_DTTC2RmQ~%=?*~nTO=ANtFc=!>#@LRZU@uRDje#*FPCS#eny$h$Zn{ZTVeFnJ z>C9%d*kWZT>s^z`QJB#r<54`4KX#=2thA$<-_>@ZlH4kZT}vykG=H5d04rRZqUmRff}DHE{Z?MvmFYW5{D9U*5nOzSL3FSMX+^t7aX=>*g)_ z^p_C%DxaXPS~=rY8)pjI;dSuTyfa_4QIU_8eqXVMs}wdL=PSR2K7R#o_IX+As$0`y zRUW4F%ey%F=@FFkV;5mQX@zWLd z4PFqT2K&>MICI$F&8iHdRw=dWb$&KH5)-B2rFeXr7p2MT*HmU87M%?hx(X2nUS!I* z&!7trD5<23qjTLlC>7X7QJhXY95f{via_&)nw-A89>+-7TJD)I#Bb1owgp2u1C|H89q4Y~t!n3UfkXCkvpN$DTD=bA>X%5;ILqd2_@~aLcBrtV(ATZfCJrW<^Eou$e z&gh*(gBJtS6BA=oS^Q^z-1s(I(uTGe`~Q*-iT=2AW+@!u0>V;+_e(dWxI>D?B4U8! zXGzj31%+$8MB+zs&0v>D`iJ|5qBo{^X=xE8-%i}{T2<53EphtRBCi@2g>Y0-bum#j z1o)d_Nj2q|tXh_1!gX;m7~)mO^$5=gL?IMd3`%pVo#(DkBSn*#GDX6o#DxXbf|4(Q zdB35)#o7IX*fkeh;JbJU1|b&hLi)Obi;IzPh{#;gFY+(}!qP4OEJ)CB^qPMOB&r{V zPT&@U0_4xl%m#h4ku0bLB3A73`@8aT7iBIXq^l_JRr|mkAG(f3zzYG_Vh6n9+pyOq zsplr=J@2Mze}>W-s<+IJl=F;i?orG=DRa-3*}7)FS9#mEW?QvojFh?Rv!;jbDN}QX z(v!*=ims^thN3ME-(dhrOT+V0pyw|4ee3!e#nqY|MFcgU%{-h>nc7MbG$Mi~M9_o? znzRV2_ujv-{=QP(mAv%KRP&keFrG4bi^Pu0<_X0-kupzch<#qQ=loc*$SKrs)b%mbQcSCLN^s79~|HNfUjL8E{KZd7FBdjld5s06hE z-xnXLpeIq(d?8-k=CmS-ql@Ad#Eov82o5i!8bp{_l7PyS%8+@g7x_gmE!07dh;*@n z2Mev|dEBYTgA2US02vclUJpT%O4};#p1yPXA7}1gyMJA_H7T~Hjc&!(l44q3?4A)o zNcXIO9QO5+t|vep(W-#2Q7d$U-YBU9(78ve&aCJXx1Zm1>Mi`V)Y2fy*ZM7__e~82#``V}{XqBr3HuFW#Kac)sA>`TAQuToc~RI8`7m-4h-oNx zT#9iZ^G2hyM6%Gcs)1Bf8S+7OhJ`0Pj4l|)Z2kUllnf@W^C@`6|A8P$ZCM@`3GR+eeQ3j#Wdtx)zp}

E@2h$b%*11##E=$Lebj|(;@sHyh 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 YZA&xeEh?bz6scQ7m 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 literal 0 HcmV?d00001 diff --git a/HBFA/UefiInstrumentTestCasePkg/ReadMe-BME.txt b/HBFA/UefiInstrumentTestCasePkg/ReadMe-BME.txt new file mode 100644 index 0000000..90f8239 --- /dev/null +++ b/HBFA/UefiInstrumentTestCasePkg/ReadMe-BME.txt @@ -0,0 +1,32 @@ +How to collect PCI BME access in BIOS? +============== +1) Add below in Platform.dsc + +[LibraryClasses.common] + NULL|UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf + InstrumentHookLib|UefiInstrumentTestPkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.inf + + DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf + DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf + SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf + +NOTE: The UefiInstrumentTestPkg provides the hook capability. +NOTE: Overriding debug serial port lib is needed, because we want to use simple serial port output to dump the resource access. + +2) Add below in Platform.dsc + +[Components] + + MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf { + + MSFT: *_*_*_CC_FLAGS = /Gh /GH /Od /GL- + } + +3) Build and run the new BIOS image. +You may see some resource access below: + +RSC_TRACE: MmioRead8(0xE00F9004->0x06) - FFF0ACA0 from FFF0AB41 (*** TOUCH PCIE BME ***) +RSC_TRACE: MmioWrite8(0xE00F9004<-0x06) - FFF0ADF0 from FFF0AB57 (*** TOUCH PCIE BME ***) + +RSC_TRACE: IoWrite32(0xCF8<-0x80000004) - 89FEF558 from 89FEE52A (*** TOUCH PCI BME ***) +RSC_TRACE: IoRead32(0xCFC->0x20900006) - 89FEF46C from 89FEE532 diff --git a/HBFA/UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.c b/HBFA/UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.c new file mode 100644 index 0000000..7f32ac3 --- /dev/null +++ b/HBFA/UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.c @@ -0,0 +1,696 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +#define PcdPciExpressRegionLength SIZE_1MB +#define PcdPciReservedIobase 0x2000 + +typedef +UINTN +(EFIAPI *HOOK_FUNC_ENTER) ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +typedef +VOID +(EFIAPI *HOOK_FUNC_EXIT) ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +typedef struct { + CHAR16 *Name; + UINTN Func; + UINTN HookFuncEnter; + UINTN HookFuncExit; +} FUNC_HOOK; + +BOOLEAN +ProcessMmioAddress ( + IN UINTN Address + ) +{ + // Skip below: + // IoApic (FEC00000) + // HPET (FED00000) + // TPM (FED40000) + // LocalApic (FEE00000) + if (Address >= 0xFEC00000) { + return FALSE; + } + // Skip normal MMIO + if (Address <= PcdGet64(PcdPciExpressBaseAddress)) { + return FALSE; + } + return TRUE; +} + +BOOLEAN +ProcessIoAddress ( + IN UINTN Address + ) +{ + // Skip the ones in DEBUG path. + // Serial port + if (Address >= 0x3F8 && Address <= 0x3FF) { + return FALSE; + } + // CMOS-RTC + if (Address >= 0x70 && Address <= 0x77) { + return FALSE; + } + // Skip normal IO + if (Address > PcdPciReservedIobase) { + return FALSE; + } + return TRUE; +} + +VOID +CheckPcieBme ( + IN UINTN MmioAddress + ) +{ + UINTN Offset; + if (MmioAddress >= PcdGet64(PcdPciExpressBaseAddress) + PcdPciExpressRegionLength) { + return ; + } + if (MmioAddress < PcdGet64(PcdPciExpressBaseAddress)) { + return ; + } + // BME is in the first byte of CMD + Offset = MmioAddress & 0xFFF; + if (Offset != PCI_COMMAND_OFFSET) { + return ; + } + DEBUG ((DEBUG_INFO, " (*** TOUCH PCIE BME ***)")); +} + +VOID +CheckPciBme ( + IN UINTN IoAddress, + IN UINTN IoValue + ) +{ + UINTN Offset; + if (IoAddress != 0xCF8) { + return ; + } + // BME is in the first byte of CMD + Offset = IoValue & 0xFF; + if (Offset != PCI_COMMAND_OFFSET) { + return ; + } + DEBUG ((DEBUG_INFO, " (*** TOUCH PCI BME ***)")); +} + +UINTN +EFIAPI +MmioRead8Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessMmioAddress (Address)) { + return 0; + } + DEBUG((DEBUG_INFO, "RSC_TRACE: MmioRead8(0x%x", Address)); + return 0; +} + +VOID +EFIAPI +MmioRead8Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT8 Value; + + Value = (UINT8)GetReturnValue (ExitContext); + Address = GetReturnParameterValue (ExitContext, 1); + if (!ProcessMmioAddress (Address)) { + return ; + } + DEBUG((DEBUG_INFO, "->0x%02x) - %x from %x", Value, FunctionAddress, CallerAddress)); + CheckPcieBme (Address); + DEBUG((DEBUG_INFO, "\n")); + return ; +} + +UINTN +EFIAPI +MmioRead16Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessMmioAddress (Address)) { + return 0; + } + DEBUG((DEBUG_INFO, "RSC_TRACE: MmioRead16(0x%x", Address)); + return 0; +} + +VOID +EFIAPI +MmioRead16Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT16 Value; + + Value = (UINT16)GetReturnValue (ExitContext); + Address = GetReturnParameterValue (ExitContext, 1); + if (!ProcessMmioAddress (Address)) { + return ; + } + DEBUG((DEBUG_INFO, "->0x%04x) - %x from %x", Value, FunctionAddress, CallerAddress)); + CheckPcieBme (Address); + DEBUG((DEBUG_INFO, "\n")); + return ; +} + +UINTN +EFIAPI +MmioRead32Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessMmioAddress (Address)) { + return 0; + } + DEBUG((DEBUG_INFO, "RSC_TRACE: MmioRead32(0x%x", Address)); + return 0; +} + +VOID +EFIAPI +MmioRead32Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT32 Value; + + Value = (UINT32)GetReturnValue (ExitContext); + Address = GetReturnParameterValue (ExitContext, 1); + if (!ProcessMmioAddress (Address)) { + return ; + } + DEBUG((DEBUG_INFO, "->0x%08x) - %x from %x", Value, FunctionAddress, CallerAddress)); + CheckPcieBme (Address); + DEBUG((DEBUG_INFO, "\n")); + return ; +} + +UINTN +EFIAPI +MmioRead64Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessMmioAddress (Address)) { + return 0; + } + DEBUG((DEBUG_INFO, "RSC_TRACE: MmioRead64(0x%x", Address)); + return 0; +} + +VOID +EFIAPI +MmioRead64Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT64 Value; + + Value = GetReturnValue64 (ExitContext); + Address = GetReturnParameterValue (ExitContext, 1); + if (!ProcessMmioAddress (Address)) { + return ; + } + DEBUG((DEBUG_INFO, "->0x%016lx) - %x from %x", Value, FunctionAddress, CallerAddress)); + CheckPcieBme (Address); + DEBUG((DEBUG_INFO, "\n")); + return ; +} + +UINTN +EFIAPI +MmioWrite8Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT8 Value; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessMmioAddress (Address)) { + return 0; + } + Value = (UINT8)GetParameterValue (EntryContext, 2); + DEBUG((DEBUG_INFO, "RSC_TRACE: MmioWrite8(0x%x<-0x%02x) - %x from %x", Address, Value, FunctionAddress, CallerAddress)); + CheckPcieBme (Address); + DEBUG((DEBUG_INFO, "\n")); + return 0; +} + +VOID +EFIAPI +MmioWrite8Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ +} + +UINTN +EFIAPI +MmioWrite16Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT16 Value; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessMmioAddress (Address)) { + return 0; + } + Value = (UINT16)GetParameterValue (EntryContext, 2); + DEBUG((DEBUG_INFO, "RSC_TRACE: MmioWrite16(0x%x<-0x%04x) - %x from %x", Address, Value, FunctionAddress, CallerAddress)); + CheckPcieBme (Address); + DEBUG((DEBUG_INFO, "\n")); + return 0; +} + +VOID +EFIAPI +MmioWrite16Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ +} + +UINTN +EFIAPI +MmioWrite32Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT32 Value; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessMmioAddress (Address)) { + return 0; + } + Value = (UINT32)GetParameterValue (EntryContext, 2); + DEBUG((DEBUG_INFO, "RSC_TRACE: MmioWrite32(0x%x<-0x%08x) - %x from %x", Address, Value, FunctionAddress, CallerAddress)); + CheckPcieBme (Address); + DEBUG((DEBUG_INFO, "\n")); + return 0; +} + +VOID +EFIAPI +MmioWrite32Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ +} + +UINTN +EFIAPI +MmioWrite64Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT64 Value; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessMmioAddress (Address)) { + return 0; + } + Value = GetParameterValue64 (EntryContext, 2); + DEBUG((DEBUG_INFO, "RSC_TRACE: MmioWrite64(0x%x<-0x%016lx) - %x from %x", Address, Value, FunctionAddress, CallerAddress)); + CheckPcieBme (Address); + DEBUG((DEBUG_INFO, "\n")); + return 0; +} + +VOID +EFIAPI +MmioWrite64Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ +} + +UINTN +EFIAPI +IoRead8Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessIoAddress (Address)) { + return 0; + } + DEBUG((DEBUG_INFO, "RSC_TRACE: IoRead8(0x%x", Address)); + return 0; +} + +VOID +EFIAPI +IoRead8Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT8 Value; + + Value = (UINT8)GetReturnValue (ExitContext); + Address = GetReturnParameterValue (ExitContext, 1); + if (!ProcessIoAddress (Address)) { + return ; + } + DEBUG((DEBUG_INFO, "->0x%02x) - %x from %x", Value, FunctionAddress, CallerAddress)); + CheckPciBme (Address, Value); + DEBUG((DEBUG_INFO, "\n")); + return ; +} + +UINTN +EFIAPI +IoRead16Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessIoAddress (Address)) { + return 0; + } + DEBUG((DEBUG_INFO, "RSC_TRACE: IoRead16(0x%x", Address)); + return 0; +} + +VOID +EFIAPI +IoRead16Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT16 Value; + + Value = (UINT16)GetReturnValue (ExitContext); + Address = GetReturnParameterValue (ExitContext, 1); + if (!ProcessIoAddress (Address)) { + return ; + } + DEBUG((DEBUG_INFO, "->0x%04x) - %x from %x", Value, FunctionAddress, CallerAddress)); + CheckPciBme (Address, Value); + DEBUG((DEBUG_INFO, "\n")); + return ; +} + +UINTN +EFIAPI +IoRead32Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessIoAddress (Address)) { + return 0; + } + DEBUG((DEBUG_INFO, "RSC_TRACE: IoRead32(0x%x", Address)); + return 0; +} + +VOID +EFIAPI +IoRead32Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT32 Value; + + Value = (UINT32)GetReturnValue (ExitContext); + Address = GetReturnParameterValue (ExitContext, 1); + if (!ProcessIoAddress (Address)) { + return ; + } + DEBUG((DEBUG_INFO, "->0x%08x) - %x from %x", Value, FunctionAddress, CallerAddress)); + CheckPciBme (Address, Value); + DEBUG((DEBUG_INFO, "\n")); + return ; +} + +UINTN +EFIAPI +IoWrite8Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT8 Value; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessIoAddress (Address)) { + return 0; + } + Value = (UINT8)GetParameterValue (EntryContext, 2); + DEBUG((DEBUG_INFO, "RSC_TRACE: IoWrite8(0x%x<-0x%02x) - %x from %x", Address, Value, FunctionAddress, CallerAddress)); + CheckPciBme (Address, Value); + DEBUG((DEBUG_INFO, "\n")); + return 0; +} + +VOID +EFIAPI +IoWrite8Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ +} + +UINTN +EFIAPI +IoWrite16Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT16 Value; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessIoAddress (Address)) { + return 0; + } + Value = (UINT16)GetParameterValue (EntryContext, 2); + DEBUG((DEBUG_INFO, "RSC_TRACE: IoWrite16(0x%x<-0x%04x) - %x from %x", Address, Value, FunctionAddress, CallerAddress)); + CheckPciBme (Address, Value); + DEBUG((DEBUG_INFO, "\n")); + return 0; +} + +VOID +EFIAPI +IoWrite16Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ +} + +UINTN +EFIAPI +IoWrite32Enter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + UINTN Address; + UINT32 Value; + + Address = GetParameterValue (EntryContext, 1); + if (!ProcessIoAddress (Address)) { + return 0; + } + Value = (UINT32)GetParameterValue (EntryContext, 2); + DEBUG((DEBUG_INFO, "RSC_TRACE: IoWrite32(0x%x<-0x%08x) - %x from %x", Address, Value, FunctionAddress, CallerAddress)); + CheckPciBme (Address, Value); + DEBUG((DEBUG_INFO, "\n")); + return 0; +} + +VOID +EFIAPI +IoWrite32Exit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ +} + +GLOBAL_REMOVE_IF_UNREFERENCED FUNC_HOOK mFuncHook[] = { + {L"MmioRead8", (UINTN)MmioRead8, (UINTN)MmioRead8Enter, (UINTN)MmioRead8Exit}, + {L"MmioRead16", (UINTN)MmioRead16, (UINTN)MmioRead16Enter, (UINTN)MmioRead16Exit}, + {L"MmioRead32", (UINTN)MmioRead32, (UINTN)MmioRead32Enter, (UINTN)MmioRead32Exit}, + {L"MmioRead64", (UINTN)MmioRead64, (UINTN)MmioRead64Enter, (UINTN)MmioRead64Exit}, + {L"MmioWrite8", (UINTN)MmioWrite8, (UINTN)MmioWrite8Enter, (UINTN)MmioWrite8Exit}, + {L"MmioWrite16", (UINTN)MmioWrite16, (UINTN)MmioWrite16Enter, (UINTN)MmioWrite16Exit}, + {L"MmioWrite32", (UINTN)MmioWrite32, (UINTN)MmioWrite32Enter, (UINTN)MmioWrite32Exit}, + {L"MmioWrite64", (UINTN)MmioWrite64, (UINTN)MmioWrite64Enter, (UINTN)MmioWrite64Exit}, + {L"IoRead8", (UINTN)IoRead8, (UINTN)IoRead8Enter, (UINTN)IoRead8Exit}, + {L"IoRead16", (UINTN)IoRead16, (UINTN)IoRead16Enter, (UINTN)IoRead16Exit}, + {L"IoRead32", (UINTN)IoRead32, (UINTN)IoRead32Enter, (UINTN)IoRead32Exit}, + {L"IoWrite8", (UINTN)IoWrite8, (UINTN)IoWrite8Enter, (UINTN)IoWrite8Exit}, + {L"IoWrite16", (UINTN)IoWrite16, (UINTN)IoWrite16Enter, (UINTN)IoWrite16Exit}, + {L"IoWrite32", (UINTN)IoWrite32, (UINTN)IoWrite32Enter, (UINTN)IoWrite32Exit}, +}; + +FUNC_HOOK * +GetFuncHook ( + IN UINTN FuncAddr + ) +{ + UINTN Index; + for (Index = 0; Index < ARRAY_SIZE(mFuncHook); Index++) { + if (FuncAddr == mFuncHook[Index].Func) { + return &mFuncHook[Index]; + } + } + return NULL; +} + +UINTN +EFIAPI +FunctionEnter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FUNC_HOOK *FuncHook; + HOOK_FUNC_ENTER HookFunc; + + FuncHook = GetFuncHook (FunctionAddress); + if (FuncHook == NULL) { + return 0; + } + if (FuncHook->HookFuncEnter == 0) { + return 0; + } + HookFunc = (HOOK_FUNC_ENTER)(FuncHook->HookFuncEnter); + return HookFunc (EntryContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +FunctionExit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FUNC_HOOK *FuncHook; + HOOK_FUNC_EXIT HookFunc; + + FuncHook = GetFuncHook (FunctionAddress); + if (FuncHook == NULL) { + return ; + } + if (FuncHook->HookFuncExit == 0) { + return ; + } + HookFunc = (HOOK_FUNC_EXIT)(FuncHook->HookFuncExit); + HookFunc (ExitContext, FunctionAddress, CallerAddress); +} diff --git a/HBFA/UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.inf b/HBFA/UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.inf new file mode 100644 index 0000000..33a27c6 --- /dev/null +++ b/HBFA/UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.inf @@ -0,0 +1,36 @@ +## @file +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = InstrumentHookLibTracingPci + FILE_GUID = 7973B1E7-660A-486A-87D9-8EEE17079B9B + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = InstrumentHookLib + +[Sources] + InstrumentHookLibTracingPci.c + +[Packages] + MdePkg/MdePkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + IoLib + +[Pcd] + gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 + diff --git a/HBFA/UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.c b/HBFA/UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.c new file mode 100644 index 0000000..73e3f3c --- /dev/null +++ b/HBFA/UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.c @@ -0,0 +1,717 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include + +EFI_EVENT mUsbHookEvent; +VOID *mUsbHookRegistration; + +#define USB2_HC_HOOK_PRIVATE_SIGNATURE SIGNATURE_32 ('U', 'H', 'H', 'K') + +typedef struct { + UINTN Signature; + EFI_USB2_HC_PROTOCOL OrgUsb2Hc; + EFI_USB2_HC_PROTOCOL *Usb2Hc; + LIST_ENTRY Link; +} USB2_HC_HOOK_PRIVATE; + +LIST_ENTRY mUsb2HcHookQueue = INITIALIZE_LIST_HEAD_VARIABLE (mUsb2HcHookQueue); + +VOID +InternalDumpData ( + IN UINT8 *Data, + IN UINTN Size + ) +{ + UINTN Index; + for (Index = 0; Index < Size; Index++) { + DEBUG ((EFI_D_INFO, "%02x", (UINTN)Data[Index])); + } +} + +#define USB_REQUEST_TYPE_TYPE_STANDARD 0 + +typedef union { + struct { + UINT8 Recipient:5; + UINT8 Type:2; + UINT8 Direction:1; + } Bits; + UINT8 Data; +} USB_REQUEST_TYPE; + +CHAR8 *mUsbRequestTypeRecipientStr[] = { + "Device", + "Interface", + "Endpoint", + "Other", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Vendor", +}; + +CHAR8 *mUsbRequestTypeTypeStr[] = { + "Standard", + "Class", + "Vendor", + "Reserved", +}; + +CHAR8 *mUsbRequestTypeDirectionStr[] = { + "H-D", + "D-H", +}; + +CHAR8 mRequestTypeStringTemplate[] = "H-D Standard Interface"; + +CHAR8 * +UsbRequestTypeToString ( + IN EFI_USB_DEVICE_REQUEST *Request + ) +{ + USB_REQUEST_TYPE ReqType; + + ReqType.Data = Request->RequestType; + AsciiStrCpyS (mRequestTypeStringTemplate, sizeof(mRequestTypeStringTemplate), mUsbRequestTypeDirectionStr[ReqType.Bits.Direction]); + AsciiStrCatS (mRequestTypeStringTemplate, sizeof(mRequestTypeStringTemplate), " "); + AsciiStrCatS (mRequestTypeStringTemplate, sizeof(mRequestTypeStringTemplate), mUsbRequestTypeTypeStr[ReqType.Bits.Type]); + AsciiStrCatS (mRequestTypeStringTemplate, sizeof(mRequestTypeStringTemplate), " "); + AsciiStrCatS (mRequestTypeStringTemplate, sizeof(mRequestTypeStringTemplate), mUsbRequestTypeRecipientStr[ReqType.Bits.Recipient]); + return mRequestTypeStringTemplate; +} + +CHAR8 *mUsbRequestRequestStr[] = { + "GET_STATUS", + "CLEAR_FEATURE", + "reserved", + "SET_FEATURE", + "reserved", + "SET_ADDRESS", + "GET_DESCRIPTOR", + "SET_DESCRIPTOR", + "GET_CONFIG", + "SET_CONFIG", + "GET_INTERFACE", + "SET_INTERFACE", + "SYNCH_FRAME", +}; + +CHAR8 * +UsbRequestRequestToString ( + IN EFI_USB_DEVICE_REQUEST *Request + ) +{ + USB_REQUEST_TYPE ReqType; + + ReqType.Data = Request->RequestType; + if (ReqType.Bits.Type == USB_REQUEST_TYPE_TYPE_STANDARD) { + if (Request->Request < ARRAY_SIZE(mUsbRequestRequestStr)) { + return mUsbRequestRequestStr[Request->Request]; + } + } + return ""; +} + +typedef union { + struct { + UINT8 DescIndex; + UINT8 DescType; + } Bits; + UINT16 Data; +} USB_REQUEST_DESCRIPTOR; + +CHAR8 *mUsbRequestValueDescriptorTypeStr[] = { + "", + "DEVICE", + "CONFIG", + "STRING", + "INTERFACE", + "ENDPOINT", +}; + +CHAR8 * +UsbRequestValueToString ( + IN EFI_USB_DEVICE_REQUEST *Request + ) +{ + USB_REQUEST_TYPE ReqType; + USB_REQUEST_DESCRIPTOR Descriptor; + + ReqType.Data = Request->RequestType; + if (ReqType.Bits.Type == USB_REQUEST_TYPE_TYPE_STANDARD) { + if (Request->Request == USB_REQ_GET_DESCRIPTOR) { + Descriptor.Data = Request->Value; + if (Descriptor.Bits.DescType < ARRAY_SIZE(mUsbRequestValueDescriptorTypeStr)) { + return mUsbRequestValueDescriptorTypeStr[Descriptor.Bits.DescType]; + } else if (Descriptor.Bits.DescType == USB_DESC_TYPE_HID) { + return "HID"; + } else if (Descriptor.Bits.DescType == USB_DESC_TYPE_REPORT) { + return "REPORT"; + } + } + } + return ""; +} + +USB2_HC_HOOK_PRIVATE * +GetUsb2HcHookPrivateFromThis ( + IN EFI_USB2_HC_PROTOCOL *This + ) +{ + LIST_ENTRY *Usb2HcHookLink; + LIST_ENTRY *Usb2HcHookList; + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + + Usb2HcHookList = &mUsb2HcHookQueue; + for (Usb2HcHookLink = Usb2HcHookList->ForwardLink; + Usb2HcHookLink != Usb2HcHookList; + Usb2HcHookLink = Usb2HcHookLink->ForwardLink) { + Usb2HcHookPrivate = CR ( + Usb2HcHookLink, + USB2_HC_HOOK_PRIVATE, + Link, + USB2_HC_HOOK_PRIVATE_SIGNATURE + ); + if (Usb2HcHookPrivate->Usb2Hc == This) { + return Usb2HcHookPrivate; + } + } + + ASSERT(FALSE); + return NULL; +} + +EFI_STATUS +EFIAPI +Usb2HcHookGetCapability ( + IN EFI_USB2_HC_PROTOCOL *This, + OUT UINT8 *MaxSpeed, + OUT UINT8 *PortNumber, + OUT UINT8 *Is64BitCapable + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + Status = Usb2HcHookPrivate->OrgUsb2Hc.GetCapability ( + Usb2HcHookPrivate->Usb2Hc, + MaxSpeed, + PortNumber, + Is64BitCapable + ); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): GetCapability - MaxSpeed - 0x%02x, PortNumber - 0x%02x, Is64BitCapable - 0x%02x\n", Usb2HcHookPrivate->Usb2Hc, *MaxSpeed, *PortNumber, *Is64BitCapable)); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookReset ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT16 Attributes + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): Reset - Attributes - 0x%04x\n", Usb2HcHookPrivate->Usb2Hc, Attributes)); + Status = Usb2HcHookPrivate->OrgUsb2Hc.Reset ( + Usb2HcHookPrivate->Usb2Hc, + Attributes + ); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookGetState ( + IN EFI_USB2_HC_PROTOCOL *This, + OUT EFI_USB_HC_STATE *State + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + Status = Usb2HcHookPrivate->OrgUsb2Hc.GetState ( + Usb2HcHookPrivate->Usb2Hc, + State + ); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): GetState - State - 0x%08x\n", Usb2HcHookPrivate->Usb2Hc, State)); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookSetState ( + IN EFI_USB2_HC_PROTOCOL *This, + IN EFI_USB_HC_STATE State + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): SetState - State - 0x%08x\n", Usb2HcHookPrivate->Usb2Hc, State)); + Status = Usb2HcHookPrivate->OrgUsb2Hc.SetState ( + Usb2HcHookPrivate->Usb2Hc, + State + ); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookControlTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN EFI_USB_DEVICE_REQUEST *Request, + IN EFI_USB_DATA_DIRECTION TransferDirection, + IN OUT VOID *Data OPTIONAL, + IN OUT UINTN *DataLength OPTIONAL, + IN UINTN TimeOut, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + Status = Usb2HcHookPrivate->OrgUsb2Hc.ControlTransfer ( + Usb2HcHookPrivate->Usb2Hc, + DeviceAddress, + DeviceSpeed, + MaximumPacketLength, + Request, + TransferDirection, + Data, + DataLength, + TimeOut, + Translator, + TransferResult + ); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): ControlTransfer: ", Usb2HcHookPrivate->Usb2Hc)); + DEBUG ((DEBUG_INFO, "Addr - 0x%02x, ", DeviceAddress)); + DEBUG ((DEBUG_INFO, "Speed - 0x%02x, ", DeviceSpeed)); + DEBUG ((DEBUG_INFO, "MaxPkgLen - 0x%x, ", MaximumPacketLength)); + DEBUG ((DEBUG_INFO, "Direction - 0x%x, ", TransferDirection)); + DEBUG ((DEBUG_INFO, "Request (Type - 0x%02x(%a), ", Request->RequestType, UsbRequestTypeToString (Request))); + DEBUG ((DEBUG_INFO, "Request - 0x%02x(%a), ", Request->Request, UsbRequestRequestToString (Request))); + DEBUG ((DEBUG_INFO, "Value - 0x%04x(%a), ", Request->Value, UsbRequestValueToString (Request))); + DEBUG ((DEBUG_INFO, "Index - 0x%04x, Length - 0x%04x), ", Request->Index, Request->Length)); + DEBUG ((DEBUG_INFO, "Translator - (Hub - 0x%02x, Port - 0x%02x), ", Translator->TranslatorHubAddress, Translator->TranslatorPortNumber)); + if (TransferDirection == EfiUsbDataOut) { + DEBUG ((DEBUG_INFO, "DataLength - 0x%x, ", *DataLength)); + DEBUG ((DEBUG_INFO, "Data - ")); + InternalDumpData (Data, *DataLength); + DEBUG ((DEBUG_INFO, ", ")); + } + if ((Status == EFI_SUCCESS) && (*TransferResult == EFI_USB_NOERROR)) { + if (TransferDirection == EfiUsbDataIn) { + DEBUG ((DEBUG_INFO, "DataLength - 0x%x, ", *DataLength)); + DEBUG ((DEBUG_INFO, "Data - ")); + InternalDumpData (Data, *DataLength); + DEBUG ((DEBUG_INFO, ", ")); + } + } + DEBUG ((DEBUG_INFO, "Result - %x, ", *TransferResult)); + DEBUG ((DEBUG_INFO, "Status - %x", Status)); + DEBUG ((DEBUG_INFO, "\n")); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookBulkTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN UINT8 DataBuffersNumber, + IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM], + IN OUT UINTN *DataLength, + IN OUT UINT8 *DataToggle, + IN UINTN TimeOut, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + EFI_USB_DATA_DIRECTION TransferDirection; + + if ((EndPointAddress & 0x80) != 0) { + TransferDirection = EfiUsbDataIn; + } else { + TransferDirection = EfiUsbDataOut; + } + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + Status = Usb2HcHookPrivate->OrgUsb2Hc.BulkTransfer ( + Usb2HcHookPrivate->Usb2Hc, + DeviceAddress, + EndPointAddress, + DeviceSpeed, + MaximumPacketLength, + DataBuffersNumber, + Data, + DataLength, + DataToggle, + TimeOut, + Translator, + TransferResult + ); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): BulkTransfer: ", Usb2HcHookPrivate->Usb2Hc)); + DEBUG ((DEBUG_INFO, "Addr - 0x%02x, ", DeviceAddress)); + DEBUG ((DEBUG_INFO, "EndPoint - 0x%02x, ", EndPointAddress)); + DEBUG ((DEBUG_INFO, "Speed - 0x%02x, ", DeviceSpeed)); + DEBUG ((DEBUG_INFO, "MaxPkgLen - 0x%x, ", MaximumPacketLength)); + DEBUG ((DEBUG_INFO, "DataBufNumber - 0x%x, ", DataBuffersNumber)); + DEBUG ((DEBUG_INFO, "Translator - (Hub - 0x%02x, Port - 0x%02x), ", Translator->TranslatorHubAddress, Translator->TranslatorPortNumber)); + if (TransferDirection == EfiUsbDataOut) { + DEBUG ((DEBUG_INFO, "DataLength - 0x%x, ", *DataLength)); + DEBUG ((DEBUG_INFO, "Data - ")); + InternalDumpData (*Data, *DataLength); + DEBUG ((DEBUG_INFO, ", ")); + } + if ((Status == EFI_SUCCESS) && (*TransferResult == EFI_USB_NOERROR)) { + if (TransferDirection == EfiUsbDataIn) { + DEBUG ((DEBUG_INFO, "DataLength - 0x%x, ", *DataLength)); + DEBUG ((DEBUG_INFO, "Data - ")); + InternalDumpData (*Data, *DataLength); + DEBUG ((DEBUG_INFO, ", ")); + } + } + DEBUG ((DEBUG_INFO, "Result - %x, ", *TransferResult)); + DEBUG ((DEBUG_INFO, "Status - %x", Status)); + DEBUG ((DEBUG_INFO, "\n")); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookAsyncInterruptTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaxiumPacketLength, + IN BOOLEAN IsNewTransfer, + IN OUT UINT8 *DataToggle, + IN UINTN PollingInterval OPTIONAL, + IN UINTN DataLength OPTIONAL, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator OPTIONAL, + IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL, + IN VOID *Context OPTIONAL + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + // TBD + Status = Usb2HcHookPrivate->OrgUsb2Hc.AsyncInterruptTransfer ( + Usb2HcHookPrivate->Usb2Hc, + DeviceAddress, + EndPointAddress, + DeviceSpeed, + MaxiumPacketLength, + IsNewTransfer, + DataToggle, + PollingInterval, + DataLength, + Translator, + CallBackFunction, + Context + ); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): AsyncInterruptTransfer: ", Usb2HcHookPrivate->Usb2Hc)); + DEBUG ((DEBUG_INFO, "Addr - 0x%02x, ", DeviceAddress)); + DEBUG ((DEBUG_INFO, "EndPoint - 0x%02x, ", EndPointAddress)); + DEBUG ((DEBUG_INFO, "Speed - 0x%02x, ", DeviceSpeed)); + DEBUG ((DEBUG_INFO, "MaxPkgLen - 0x%x, ", MaxiumPacketLength)); + DEBUG ((DEBUG_INFO, "DataLength - 0x%x, ", DataLength)); + DEBUG ((DEBUG_INFO, "Translator - (Hub - 0x%02x, Port - 0x%02x), ", Translator->TranslatorHubAddress, Translator->TranslatorPortNumber)); + DEBUG ((DEBUG_INFO, "Status - %x", Status)); + DEBUG ((DEBUG_INFO, "\n")); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookSyncInterruptTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN OUT VOID *Data, + IN OUT UINTN *DataLength, + IN OUT UINT8 *DataToggle, + IN UINTN TimeOut, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + EFI_USB_DATA_DIRECTION TransferDirection; + + if ((EndPointAddress & 0x80) != 0) { + TransferDirection = EfiUsbDataIn; + } else { + TransferDirection = EfiUsbDataOut; + } + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + Status = Usb2HcHookPrivate->OrgUsb2Hc.SyncInterruptTransfer ( + Usb2HcHookPrivate->Usb2Hc, + DeviceAddress, + EndPointAddress, + DeviceSpeed, + MaximumPacketLength, + Data, + DataLength, + DataToggle, + TimeOut, + Translator, + TransferResult + ); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): SyncInterruptTransfer: ", Usb2HcHookPrivate->Usb2Hc)); + DEBUG ((DEBUG_INFO, "Addr - 0x%02x, ", DeviceAddress)); + DEBUG ((DEBUG_INFO, "EndPoint - 0x%02x, ", EndPointAddress)); + DEBUG ((DEBUG_INFO, "Speed - 0x%02x, ", DeviceSpeed)); + DEBUG ((DEBUG_INFO, "MaxPkgLen - 0x%x, ", MaximumPacketLength)); + DEBUG ((DEBUG_INFO, "Translator - (Hub - 0x%02x, Port - 0x%02x), ", Translator->TranslatorHubAddress, Translator->TranslatorPortNumber)); + if (TransferDirection == EfiUsbDataOut) { + DEBUG ((DEBUG_INFO, "DataLength - 0x%x, ", *DataLength)); + DEBUG ((DEBUG_INFO, "Data - ")); + InternalDumpData (Data, *DataLength); + DEBUG ((DEBUG_INFO, ", ")); + } + if ((Status == EFI_SUCCESS) && (*TransferResult == EFI_USB_NOERROR)) { + if (TransferDirection == EfiUsbDataIn) { + DEBUG ((DEBUG_INFO, "DataLength - 0x%x, ", *DataLength)); + DEBUG ((DEBUG_INFO, "Data - ")); + InternalDumpData (Data, *DataLength); + DEBUG ((DEBUG_INFO, ", ")); + } + } + DEBUG ((DEBUG_INFO, "Result - %x, ", *TransferResult)); + DEBUG ((DEBUG_INFO, "Status - %x", Status)); + DEBUG ((DEBUG_INFO, "\n")); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookIsochronousTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN UINT8 DataBuffersNumber, + IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], + IN UINTN DataLength, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcHookAsyncIsochronousTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN UINT8 DataBuffersNumber, + IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], + IN UINTN DataLength, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack, + IN VOID *Context OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcHookGetRootHubPortStatus ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 PortNumber, + OUT EFI_USB_PORT_STATUS *PortStatus + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + Status = Usb2HcHookPrivate->OrgUsb2Hc.GetRootHubPortStatus ( + Usb2HcHookPrivate->Usb2Hc, + PortNumber, + PortStatus + ); + if (PortStatus->PortChangeStatus != 0) { + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): GetRootHubPortStatus - PortNumber - 0x%02x, PortStatus - (0x%04x, Change - 0x%04x)\n", Usb2HcHookPrivate->Usb2Hc, PortNumber, PortStatus->PortStatus, PortStatus->PortChangeStatus)); + } + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookSetRootHubPortFeature ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 PortNumber, + IN EFI_USB_PORT_FEATURE PortFeature + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): SetRootHubPortFeature - PortNumber - 0x%02x, PortFeature - 0x%08x\n", Usb2HcHookPrivate->Usb2Hc, PortNumber, PortFeature)); + Status = Usb2HcHookPrivate->OrgUsb2Hc.SetRootHubPortFeature ( + Usb2HcHookPrivate->Usb2Hc, + PortNumber, + PortFeature + ); + return Status; +} + +EFI_STATUS +EFIAPI +Usb2HcHookClearRootHubPortFeature ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 PortNumber, + IN EFI_USB_PORT_FEATURE PortFeature + ) +{ + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Usb2HcHookPrivate = GetUsb2HcHookPrivateFromThis (This); + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): ClearRootHubPortFeature - PortNumber - 0x%02x, PortFeature - 0x%08x\n", Usb2HcHookPrivate->Usb2Hc, PortNumber, PortFeature)); + Status = Usb2HcHookPrivate->OrgUsb2Hc.ClearRootHubPortFeature ( + Usb2HcHookPrivate->Usb2Hc, + PortNumber, + PortFeature + ); + return Status; +} + +EFI_USB2_HC_PROTOCOL mUsb2HcHookTemplate = { + Usb2HcHookGetCapability, + Usb2HcHookReset, + Usb2HcHookGetState, + Usb2HcHookSetState, + Usb2HcHookControlTransfer, + Usb2HcHookBulkTransfer, + Usb2HcHookAsyncInterruptTransfer, + Usb2HcHookSyncInterruptTransfer, + Usb2HcHookIsochronousTransfer, + Usb2HcHookAsyncIsochronousTransfer, + Usb2HcHookGetRootHubPortStatus, + Usb2HcHookSetRootHubPortFeature, + Usb2HcHookClearRootHubPortFeature, + 0x0, + 0x0 +}; + +VOID +EFIAPI +Usb2HcProtocolCallback ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + EFI_USB2_HC_PROTOCOL *Usb2Hc; + USB2_HC_HOOK_PRIVATE *Usb2HcHookPrivate; + EFI_STATUS Status; + + Status = gBS->LocateProtocol ( + &gEfiUsb2HcProtocolGuid, + mUsbHookRegistration, + (VOID **)&Usb2Hc + ); + if (EFI_ERROR(Status)) { + return ; + } + + DEBUG ((DEBUG_INFO, "USB_HOOK(0x%x): start hook\n", Usb2Hc)); + + Usb2HcHookPrivate = AllocatePool (sizeof(USB2_HC_HOOK_PRIVATE)); + ASSERT (Usb2HcHookPrivate != NULL); + + Usb2HcHookPrivate->Signature = USB2_HC_HOOK_PRIVATE_SIGNATURE; + CopyMem (&Usb2HcHookPrivate->OrgUsb2Hc, Usb2Hc, sizeof(EFI_USB2_HC_PROTOCOL)); + Usb2HcHookPrivate->Usb2Hc = Usb2Hc; + mUsb2HcHookTemplate.MajorRevision = Usb2Hc->MajorRevision; + mUsb2HcHookTemplate.MinorRevision = Usb2Hc->MinorRevision; + CopyMem (Usb2Hc, &mUsb2HcHookTemplate, sizeof(EFI_USB2_HC_PROTOCOL)); + InsertTailList (&mUsb2HcHookQueue, &Usb2HcHookPrivate->Link); +} + +EFI_STATUS +EFIAPI +InitializeUsb2HcHook ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + mUsbHookEvent = EfiCreateProtocolNotifyEvent ( + &gEfiUsb2HcProtocolGuid, + TPL_CALLBACK, + Usb2HcProtocolCallback, + NULL, + &mUsbHookRegistration + ); + ASSERT(mUsbHookEvent != NULL); + + return EFI_SUCCESS; +} \ No newline at end of file diff --git a/HBFA/UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.inf b/HBFA/UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.inf new file mode 100644 index 0000000..888124e --- /dev/null +++ b/HBFA/UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.inf @@ -0,0 +1,36 @@ +## @file +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = Usb2HcHook + FILE_GUID = 55813F94-A25D-4408-BE66-E8F9EDE62310 + MODULE_TYPE = DXE_DRIVER + PI_SPECIFICATION_VERSION = 0x0001000A + VERSION_STRING = 1.0 + ENTRY_POINT = InitializeUsb2HcHook + +[Sources] + Usb2HcHook.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + UefiBootServicesTableLib + UefiDriverEntryPoint + UefiLib + +[Protocols] + gEfiUsb2HcProtocolGuid + +[Depex] + TRUE \ No newline at end of file diff --git a/HBFA/UefiInstrumentTestCasePkg/UefiInstrumentTestCasePkg.dec b/HBFA/UefiInstrumentTestCasePkg/UefiInstrumentTestCasePkg.dec new file mode 100644 index 0000000..1f0bc3f --- /dev/null +++ b/HBFA/UefiInstrumentTestCasePkg/UefiInstrumentTestCasePkg.dec @@ -0,0 +1,15 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION = 0x00010005 + PACKAGE_NAME = UefiInstrumentTestCasePkg + PACKAGE_GUID = F9F21376-CF30-4DA2-B164-F0035465EC3D + PACKAGE_VERSION = 0.11 + +[Includes] diff --git a/HBFA/UefiInstrumentTestCasePkg/UefiInstrumentTestCasePkg.dsc b/HBFA/UefiInstrumentTestCasePkg/UefiInstrumentTestCasePkg.dsc new file mode 100644 index 0000000..331d512 --- /dev/null +++ b/HBFA/UefiInstrumentTestCasePkg/UefiInstrumentTestCasePkg.dsc @@ -0,0 +1,174 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = UefiInstrumentTestCasePkg + PLATFORM_GUID = 638FAA73-FB53-4F99-B57F-CBAFDB365C21 + PLATFORM_VERSION = 0.11 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/UefiInstrumentTestPkg + SUPPORTED_ARCHITECTURES = IA32|X64 + BUILD_TARGETS = DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER = DEFAULT + +[LibraryClasses] + # + # Entry point + # + UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf + # + # Basic + # + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf + CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf + SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf + PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf + PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf + CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf + PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf + PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf + PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf + + # + # PEI + # + PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf + PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + # + # UEFI & PI + # + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf + UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf + UefiLib|MdePkg/Library/UefiLib/UefiLib.inf + UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf + HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf + # + # Generic Modules + # + TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf + CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + # + # Misc + # + DebugLib|IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf + DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf + PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf + DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf + UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf + + # + # CPU + # + MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf + LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf + UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf + SmmLib|MdePkg/Library/SmmLibNull/SmmLibNull.inf + CpuExceptionHandlerLib|MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf + + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf + RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf + + PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf + SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf + LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf + SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf + +[LibraryClasses.common.PEIM] + ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf + MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf + +[LibraryClasses.common.PEI_CORE] + PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf + ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf + MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf + +[LibraryClasses.common.DXE_CORE] + DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf + ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf + HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf + MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + +[LibraryClasses.common.DXE_DRIVER] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + +[LibraryClasses.common.UEFI_DRIVER] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + +[LibraryClasses.common.DXE_RUNTIME_DRIVER] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf + +[LibraryClasses.common.SMM_CORE] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf + SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf + SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTableLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf + +[LibraryClasses.common.DXE_SMM_DRIVER] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf + SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf + +[LibraryClasses.common.UEFI_APPLICATION] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + +################################################################################################### +# +# Components Section - list of the modules and components that will be processed by compilation +# tools and the EDK II tools to generate PE32/PE32+/Coff image files. +# +# Note: The EDK II DSC file is not used to specify how compiled binary images get placed +# into firmware volume images. This section is just a list of modules to compile from +# source into UEFI-compliant binaries. +# It is the FDF file that contains information on combining binary files into firmware +# volume images, whose concept is beyond UEFI and is described in PI specification. +# Binary modules do not need to be listed in this section, as they should be +# specified in the FDF file. For example: Shell binary (Shell_Full.efi), FAT binary (Fat.efi), +# Logo (Logo.bmp), and etc. +# There may also be modules listed in this section that are not required in the FDF file, +# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be +# generated for it, but the binary will not be put into any firmware volume. +# +################################################################################################### + +[PcdsFixedAtBuild.common] + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x1f + gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80080046 + gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 + gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|0x1 + +[Components] + UefiInstrumentTestCasePkg/TestCase/InstrumentHookLibTracingPci/InstrumentHookLibTracingPci.inf + + UefiInstrumentTestCasePkg/TestCase/Usb2HcHook/Usb2HcHook.inf diff --git a/HBFA/UefiInstrumentTestPkg/Include/Library/IniParsingLib.h b/HBFA/UefiInstrumentTestPkg/Include/Library/IniParsingLib.h new file mode 100644 index 0000000..5433c96 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Include/Library/IniParsingLib.h @@ -0,0 +1,185 @@ +/** @file + INI configuration parsing library. + + The INI file format is: + ================ + [SectionName] + EntryName=EntryValue + ================ + + Where: + 1) SectionName is an ASCII string. The valid format is [A-Za-z0-9_]+ + 2) EntryName is an ASCII string. The valid format is [A-Za-z0-9_]+ + 3) EntryValue can be: + 3.1) an ASCII String. The valid format is [A-Za-z0-9_]+ + 3.2) a GUID. The valid format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, where x is [A-Fa-f0-9] + 3.3) a decimal value. The valid format is [0-9]+ + 3.4) a heximal value. The valid format is 0x[A-Fa-f0-9]+ + 4) '#' or ';' can be used as comment at anywhere. + 5) TAB(0x20) or SPACE(0x9) can be used as separator. + 6) LF(\n, 0xA) or CR(\r, 0xD) can be used as line break. + +Copyright (c) 2016, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#ifndef __INI_PARSING_LIB_H__ +#define __INI_PARSING_LIB_H__ + +/** + Open an INI config file and return a context. + + @param[in] DataBuffer Config raw file buffer. + @param[in] BufferSize Size of raw buffer. + + @return Config data buffer is opened and context is returned. + @retval NULL No enough memory is allocated. + @retval NULL Config data buffer is invalid. +**/ +VOID * +EFIAPI +OpenIniFile ( + IN UINT8 *DataBuffer, + IN UINTN BufferSize + ); + +/** + Get section entry string value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] EntryValue Point to the got entry string value. + + @retval EFI_SUCCESS Section entry string value is got. + @retval EFI_NOT_FOUND Section is not found. +**/ +EFI_STATUS +EFIAPI +GetStringFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT CHAR8 **EntryValue + ); + +/** + Get section entry GUID value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Guid Point to the got GUID value. + + @retval EFI_SUCCESS Section entry GUID value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetGuidFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT EFI_GUID *Guid + ); + +/** + Get section entry EFI_STATUS value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Guid Point to the got GUID value. + + @retval EFI_SUCCESS Section entry EFI_STATUS value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetEfiStatusFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT EFI_STATUS *EfiStatus + ); + +/** + Get section entry decimal UINTN value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got decimal UINTN value. + + @retval EFI_SUCCESS Section entry decimal UINTN value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetDecimalUintnFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINTN *Data + ); + +/** + Get section entry heximal UINTN value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got heximal UINTN value. + + @retval EFI_SUCCESS Section entry heximal UINTN value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetHexUintnFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINTN *Data + ); + +/** + Get section entry heximal UINT64 value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got heximal UINT64 value. + + @retval EFI_SUCCESS Section entry heximal UINT64 value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetHexUint64FromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINT64 *Data + ); + +/** + Close an INI config file and free the context. + + @param[in] Context INI Config file context. +**/ +VOID +EFIAPI +CloseIniFile ( + IN VOID *Context + ); + +#endif + diff --git a/HBFA/UefiInstrumentTestPkg/Include/Library/InstrumentHookLib.h b/HBFA/UefiInstrumentTestPkg/Include/Library/InstrumentHookLib.h new file mode 100644 index 0000000..86ae730 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Include/Library/InstrumentHookLib.h @@ -0,0 +1,183 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _INSTRUMENT_HOOK_LIB_ +#define _INSTRUMENT_HOOK_LIB_ + +typedef struct { + UINT32 Edi; + UINT32 Esi; + UINT32 Ebp; + UINT32 Esp; // this is ESP after call instruction + UINT32 Ebx; + UINT32 Edx; + UINT32 Ecx; + UINT32 Eax; +} FUNC_CONTEXT_IA32; + +typedef struct { + UINT64 R15; + UINT64 R14; + UINT64 R13; + UINT64 R12; + UINT64 R11; + UINT64 R10; + UINT64 R9; + UINT64 R8; + UINT64 Rdi; + UINT64 Rsi; + UINT64 Rbp; + UINT64 Rsp; // this is RSP after call instruction + UINT64 Rbx; + UINT64 Rdx; + UINT64 Rcx; + UINT64 Rax; +} FUNC_CONTEXT_X64; + +typedef union { + FUNC_CONTEXT_IA32 *Ia32; + FUNC_CONTEXT_X64 *X64; +} FUNC_ENTER_CONTEXT; + +typedef union { + FUNC_CONTEXT_IA32 *Ia32; + FUNC_CONTEXT_X64 *X64; +} FUNC_EXIT_CONTEXT; + +/* + 0 - continue + 1 - skip this function +*/ +UINTN +EFIAPI +FunctionEnter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +VOID +EFIAPI +FunctionExit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +VOID +EFIAPI +InstrumentHookLibInit ( + IN UINT8 *DataBuffer, + IN UINTN BufferSize + ); + +// +// external func +// +VOID +EFIAPI +SetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN RetVal + ); + +VOID +EFIAPI +SetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINT64 RetVal + ); + +UINTN +EFIAPI +GetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ); + +UINT64 +EFIAPI +GetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ); + +/* + Index is 1 based. +*/ +UINTN +EFIAPI +GetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ); + +/* + Index is 1 based. +*/ +UINT64 +EFIAPI +GetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ); + +/* + Index is 1 based. +*/ +UINTN +EFIAPI +GetReturnParameterValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ); + +/* + Index is 1 based. +*/ +UINT64 +EFIAPI +GetReturnParameterValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ); + +/* + Index is 1 based. +*/ +VOID +EFIAPI +SetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINTN Data + ); + +/* + Index is 1 based. +*/ +VOID +EFIAPI +SetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINT64 Data + ); + +VOID +EFIAPI +SetSkipReturnValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN RetVal + ); + +VOID +EFIAPI +SetSkipReturnValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINT64 RetVal + ); + +#endif \ No newline at end of file diff --git a/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.c b/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.c new file mode 100644 index 0000000..472a3d4 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.c @@ -0,0 +1,1394 @@ +/** @file + This library parses the INI configuration file. + + The INI file format is: + ================ + [SectionName] + EntryName=EntryValue + ================ + + Where: + 1) SectionName is an ASCII string. The valid format is [A-Za-z0-9_]+ + 2) EntryName is an ASCII string. The valid format is [A-Za-z0-9_]+ + 3) EntryValue can be: + 3.1) an ASCII String. The valid format is [A-Za-z0-9_]+ + 3.2) a GUID. The valid format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, where x is [A-Fa-f0-9] + 3.3) a decimal value. The valid format is [0-9]+ + 3.4) a heximal value. The valid format is 0x[A-Fa-f0-9]+ + 3.5) a EFI_STATUS value. The valid value is defined in UEFI specification. Such as EFI_SUCCESS, EFI_INVALID_PARAMETER, etc. + 4) '#' or ';' can be used as comment at anywhere. + 5) TAB(0x20) or SPACE(0x9) can be used as separator. + 6) LF(\n, 0xA) or CR(\r, 0xD) can be used as line break. + + Caution: This module requires additional review when modified. + This driver will have external input - INI data file. + + OpenIniFile(), PreProcessDataFile(), ProfileGetSection(), ProfileGetEntry() + will receive untrusted input and do basic validation. + + Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +#define IS_HYPHEN(a) ((a) == '-') +#define IS_NULL(a) ((a) == '\0') + +// This is default allocation. Reallocation will happen if it is not enough. +#define MAX_LINE_LENGTH 512 + +typedef struct _INI_SECTION_ITEM SECTION_ITEM; +struct _INI_SECTION_ITEM { + CHAR8 *PtrSection; + UINTN SecNameLen; + CHAR8 *PtrEntry; + CHAR8 *PtrValue; + SECTION_ITEM *PtrNext; +}; + +typedef struct _INI_COMMENT_LINE COMMENT_LINE; +struct _INI_COMMENT_LINE { + CHAR8 *PtrComment; + COMMENT_LINE *PtrNext; +}; + +typedef struct { + SECTION_ITEM *SectionHead; + COMMENT_LINE *CommentHead; +} INI_PARSING_LIB_CONTEXT; + +/** + Return if the digital char is valid. + + @param[in] DigitalChar The digital char to be checked. + @param[in] IncludeHex If it include HEX char. + + @retval TRUE The digital char is valid. + @retval FALSE The digital char is invalid. +**/ +BOOLEAN +IsValidDigitalChar ( + IN CHAR8 DigitalChar, + IN BOOLEAN IncludeHex + ) +{ + if (DigitalChar >= '0' && DigitalChar <= '9') { + return TRUE; + } + if (IncludeHex) { + if (DigitalChar >= 'a' && DigitalChar <= 'f') { + return TRUE; + } + if (DigitalChar >= 'A' && DigitalChar <= 'F') { + return TRUE; + } + } + return FALSE; +} + +/** + Return if the name char is valid. + + @param[in] NameChar The name char to be checked. + + @retval TRUE The name char is valid. + @retval FALSE The name char is invalid. +**/ +BOOLEAN +IsValidNameChar ( + IN CHAR8 NameChar + ) +{ + if (NameChar >= 'a' && NameChar <= 'z') { + return TRUE; + } + if (NameChar >= 'A' && NameChar <= 'Z') { + return TRUE; + } + if (NameChar >= '0' && NameChar <= '9') { + return TRUE; + } + if (NameChar == '_') { + return TRUE; + } + return FALSE; +} + +/** + Return if the digital string is valid. + + @param[in] Digital The digital to be checked. + @param[in] Length The length of digital string in bytes. + @param[in] IncludeHex If it include HEX char. + + @retval TRUE The digital string is valid. + @retval FALSE The digital string is invalid. +**/ +BOOLEAN +IsValidDigital ( + IN CHAR8 *Digital, + IN UINTN Length, + IN BOOLEAN IncludeHex + ) +{ + UINTN Index; + for (Index = 0; Index < Length; Index++) { + if (!IsValidDigitalChar(Digital[Index], IncludeHex)) { + return FALSE; + } + } + return TRUE; +} + +/** + Return if the decimal string is valid. + + @param[in] Decimal The decimal string to be checked. + @param[in] Length The length of decimal string in bytes. + + @retval TRUE The decimal string is valid. + @retval FALSE The decimal string is invalid. +**/ +BOOLEAN +IsValidDecimalString ( + IN CHAR8 *Decimal, + IN UINTN Length + ) +{ + return IsValidDigital(Decimal, Length, FALSE); +} + +/** + Return if the heximal string is valid. + + @param[in] Hex The heximal string to be checked. + @param[in] Length The length of heximal string in bytes. + + @retval TRUE The heximal string is valid. + @retval FALSE The heximal string is invalid. +**/ +BOOLEAN +IsValidHexString ( + IN CHAR8 *Hex, + IN UINTN Length + ) +{ + if (Length <= 2) { + return FALSE; + } + if (Hex[0] != '0') { + return FALSE; + } + if (Hex[1] != 'x' && Hex[1] != 'X') { + return FALSE; + } + return IsValidDigital(&Hex[2], Length - 2, TRUE); +} + +/** + Return if the name string is valid. + + @param[in] Name The name to be checked. + @param[in] Length The length of name string in bytes. + + @retval TRUE The name string is valid. + @retval FALSE The name string is invalid. +**/ +BOOLEAN +IsValidName ( + IN CHAR8 *Name, + IN UINTN Length + ) +{ + UINTN Index; + for (Index = 0; Index < Length; Index++) { + if (!IsValidNameChar(Name[Index])) { + return FALSE; + } + } + return TRUE; +} + +/** + Return if the value string is valid GUID. + + @param[in] Value The value to be checked. + @param[in] Length The length of value string in bytes. + + @retval TRUE The value string is valid GUID. + @retval FALSE The value string is invalid GUID. +**/ +BOOLEAN +IsValidGuid ( + IN CHAR8 *Value, + IN UINTN Length + ) +{ + if (Length != sizeof("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") - 1) { + return FALSE; + } + if (!IS_HYPHEN(Value[8])) { + return FALSE; + } + if (!IS_HYPHEN(Value[13])) { + return FALSE; + } + if (!IS_HYPHEN(Value[18])) { + return FALSE; + } + if (!IS_HYPHEN(Value[23])) { + return FALSE; + } + if (!IsValidDigital(&Value[0], 8, TRUE)) { + return FALSE; + } + if (!IsValidDigital(&Value[9], 4, TRUE)) { + return FALSE; + } + if (!IsValidDigital(&Value[14], 4, TRUE)) { + return FALSE; + } + if (!IsValidDigital(&Value[19], 4, TRUE)) { + return FALSE; + } + if (!IsValidDigital(&Value[24], 12, TRUE)) { + return FALSE; + } + return TRUE; +} + +/** + Return if the value string is valid. + + @param[in] Value The value to be checked. + @param[in] Length The length of value string in bytes. + + @retval TRUE The name string is valid. + @retval FALSE The name string is invalid. +**/ +BOOLEAN +IsValidValue ( + IN CHAR8 *Value, + IN UINTN Length + ) +{ + if (IsValidName(Value, Length) || IsValidGuid(Value, Length)) { + return TRUE; + } + return FALSE; +} + +/** + Dump an INI config file context. + + @param[in] Context INI Config file context. +**/ +VOID +DumpIniSection ( + IN VOID *Context + ) +{ + INI_PARSING_LIB_CONTEXT *IniContext; + SECTION_ITEM *PtrSection; + SECTION_ITEM *Section; + + if (Context == NULL) { + return; + } + + IniContext = Context; + Section = IniContext->SectionHead; + + while (Section != NULL) { + PtrSection = Section; + Section = Section->PtrNext; + if (PtrSection->PtrSection != NULL) { + DEBUG((DEBUG_VERBOSE, "Section - %a\n", PtrSection->PtrSection)); + } + if (PtrSection->PtrEntry != NULL) { + DEBUG ((DEBUG_VERBOSE, " Entry - %a\n", PtrSection->PtrEntry)); + } + if (PtrSection->PtrValue != NULL) { + DEBUG((DEBUG_VERBOSE, " Value - %a\n", PtrSection->PtrValue)); + } + } +} + +/** + Copy one line data from buffer data to the line buffer. + + @param[in] Buffer Buffer data. + @param[in] BufferSize Buffer Size. + @param[in, out] LineBuffer Line buffer to store the found line data. + @param[in, out] LineSize On input, size of the input line buffer. + On output, size of the actual line buffer. + + @retval EFI_BUFFER_TOO_SMALL The size of input line buffer is not enough. + @retval EFI_SUCCESS Copy line data into the line buffer. + +**/ +EFI_STATUS +ProfileGetLine ( + IN UINT8 *Buffer, + IN UINTN BufferSize, + IN OUT UINT8 *LineBuffer, + IN OUT UINTN *LineSize + ) +{ + UINTN Length; + UINT8 *PtrBuf; + UINTN PtrEnd; + + PtrBuf = Buffer; + PtrEnd = (UINTN)Buffer + BufferSize; + + // + // 0x0D indicates a line break. Otherwise there is no line break + // + while ((UINTN)PtrBuf < PtrEnd) { + if (*PtrBuf == 0x0D || *PtrBuf == 0x0A) { + break; + } + PtrBuf++; + } + + if ((UINTN)PtrBuf >= (PtrEnd - 1)) { + // + // The buffer ends without any line break + // or it is the last character of the buffer + // + Length = BufferSize; + } else if (*(PtrBuf + 1) == 0x0A) { + // + // Further check if a 0x0A follows. If yes, count 0xA + // + Length = (UINTN) PtrBuf - (UINTN) Buffer + 2; + } else { + Length = (UINTN) PtrBuf - (UINTN) Buffer + 1; + } + + if (Length > (*LineSize)) { + *LineSize = Length; + return EFI_BUFFER_TOO_SMALL; + } + + SetMem (LineBuffer, *LineSize, 0x0); + *LineSize = Length; + CopyMem (LineBuffer, Buffer, Length); + + return EFI_SUCCESS; +} + +/** + Trim Buffer by removing all CR, LF, TAB, and SPACE chars in its head and tail. + + @param[in, out] Buffer On input, buffer data to be trimed. + On output, the trimmed buffer. + @param[in, out] BufferSize On input, size of original buffer data. + On output, size of the trimmed buffer. + +**/ +VOID +ProfileTrim ( + IN OUT UINT8 *Buffer, + IN OUT UINTN *BufferSize + ) +{ + UINTN Length; + UINT8 *PtrBuf; + UINT8 *PtrEnd; + + if (*BufferSize == 0) { + return; + } + + // + // Trim the tail first, include CR, LF, TAB, and SPACE. + // + Length = *BufferSize; + PtrBuf = (UINT8 *) ((UINTN) Buffer + Length - 1); + while (PtrBuf >= Buffer) { + if ((*PtrBuf != 0x0D) && (*PtrBuf != 0x0A ) + && (*PtrBuf != 0x20) && (*PtrBuf != 0x09)) { + break; + } + PtrBuf --; + } + + // + // all spaces, a blank line, return directly; + // + if (PtrBuf < Buffer) { + *BufferSize = 0; + return; + } + + Length = (UINTN)PtrBuf - (UINTN)Buffer + 1; + PtrEnd = PtrBuf; + PtrBuf = Buffer; + + // + // Now skip the heading CR, LF, TAB and SPACE + // + while (PtrBuf <= PtrEnd) { + if ((*PtrBuf != 0x0D) && (*PtrBuf != 0x0A ) + && (*PtrBuf != 0x20) && (*PtrBuf != 0x09)) { + break; + } + PtrBuf++; + } + + // + // If no heading CR, LF, TAB or SPACE, directly return + // + if (PtrBuf == Buffer) { + *BufferSize = Length; + return; + } + + *BufferSize = (UINTN)PtrEnd - (UINTN)PtrBuf + 1; + + // + // The first Buffer..PtrBuf characters are CR, LF, TAB or SPACE. + // Now move out all these characters. + // + while (PtrBuf <= PtrEnd) { + *Buffer = *PtrBuf; + Buffer++; + PtrBuf++; + } + + return; +} + +/** + Insert new comment item into comment head. + + @param[in] Buffer Comment buffer to be added. + @param[in] BufferSize Size of comment buffer. + @param[in, out] CommentHead Comment Item head entry. + + @retval EFI_OUT_OF_RESOURCES No enough memory is allocated. + @retval EFI_SUCCESS New comment item is inserted. + +**/ +EFI_STATUS +ProfileGetComments ( + IN UINT8 *Buffer, + IN UINTN BufferSize, + IN OUT COMMENT_LINE **CommentHead + ) +{ + COMMENT_LINE *CommentItem; + + CommentItem = NULL; + CommentItem = AllocatePool (sizeof (COMMENT_LINE)); + if (CommentItem == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + CommentItem->PtrNext = *CommentHead; + *CommentHead = CommentItem; + + // + // Add a trailing '\0' + // + CommentItem->PtrComment = AllocatePool (BufferSize + 1); + if (CommentItem->PtrComment == NULL) { + FreePool (CommentItem); + return EFI_OUT_OF_RESOURCES; + } + CopyMem (CommentItem->PtrComment, Buffer, BufferSize); + *(CommentItem->PtrComment + BufferSize) = '\0'; + + return EFI_SUCCESS; +} + +/** + Add new section item into Section head. + + @param[in] Buffer Section item data buffer. + @param[in] BufferSize Size of section item. + @param[in, out] SectionHead Section item head entry. + + @retval EFI_OUT_OF_RESOURCES No enough memory is allocated. + @retval EFI_SUCCESS Section item is NULL or Section item is added. + +**/ +EFI_STATUS +ProfileGetSection ( + IN UINT8 *Buffer, + IN UINTN BufferSize, + IN OUT SECTION_ITEM **SectionHead + ) +{ + SECTION_ITEM *SectionItem; + UINTN Length; + UINT8 *PtrBuf; + UINT8 *PtrEnd; + + ASSERT(BufferSize >= 1); + // + // The first character of Buffer is '[', now we want for ']' + // + PtrEnd = (UINT8 *)((UINTN)Buffer + BufferSize - 1); + PtrBuf = (UINT8 *)((UINTN)Buffer + 1); + while (PtrBuf <= PtrEnd) { + if (*PtrBuf == ']') { + break; + } + PtrBuf ++; + } + if (PtrBuf > PtrEnd) { + // + // Not found. Invalid line + // + return EFI_NOT_FOUND; + } + if (PtrBuf <= Buffer + 1) { + // Empty name + return EFI_NOT_FOUND; + } + + // + // excluding the heading '[' and tailing ']' + // + Length = PtrBuf - Buffer - 1; + ProfileTrim ( + Buffer + 1, + &Length + ); + + // + // Invalid line if the section name is null + // + if (Length == 0) { + return EFI_NOT_FOUND; + } + + if (!IsValidName((CHAR8 *)Buffer + 1, Length)) { + return EFI_INVALID_PARAMETER; + } + + SectionItem = AllocatePool (sizeof (SECTION_ITEM)); + if (SectionItem == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + SectionItem->PtrSection = NULL; + SectionItem->SecNameLen = Length; + SectionItem->PtrEntry = NULL; + SectionItem->PtrValue = NULL; + SectionItem->PtrNext = *SectionHead; + *SectionHead = SectionItem; + + // + // Add a trailing '\0' + // + SectionItem->PtrSection = AllocatePool (Length + 1); + if (SectionItem->PtrSection == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + // + // excluding the heading '[' + // + CopyMem (SectionItem->PtrSection, Buffer + 1, Length); + *(SectionItem->PtrSection + Length) = '\0'; + + return EFI_SUCCESS; +} + +/** + Add new section entry and entry value into Section head. + + @param[in] Buffer Section entry data buffer. + @param[in] BufferSize Size of section entry. + @param[in, out] SectionHead Section item head entry. + + @retval EFI_OUT_OF_RESOURCES No enough memory is allocated. + @retval EFI_SUCCESS Section entry is added. + @retval EFI_NOT_FOUND Section entry is not found. + @retval EFI_INVALID_PARAMETER Section entry is invalid. + +**/ +EFI_STATUS +ProfileGetEntry ( + IN UINT8 *Buffer, + IN UINTN BufferSize, + IN OUT SECTION_ITEM **SectionHead + ) +{ + EFI_STATUS Status; + SECTION_ITEM *SectionItem; + SECTION_ITEM *PtrSection; + UINTN Length; + UINT8 *PtrBuf; + UINT8 *PtrEnd; + + Status = EFI_SUCCESS; + PtrBuf = Buffer; + PtrEnd = (UINT8 *) ((UINTN)Buffer + BufferSize - 1); + + // + // First search for '=' + // + while (PtrBuf <= PtrEnd) { + if (*PtrBuf == '=') { + break; + } + PtrBuf++; + } + if (PtrBuf > PtrEnd) { + // + // Not found. Invalid line + // + return EFI_NOT_FOUND; + } + if (PtrBuf <= Buffer) { + // Empty name + return EFI_NOT_FOUND; + } + + // + // excluding the tailing '=' + // + Length = PtrBuf - Buffer; + ProfileTrim ( + Buffer, + &Length + ); + + // + // Invalid line if the entry name is null + // + if (Length == 0) { + return EFI_NOT_FOUND; + } + + if (!IsValidName((CHAR8 *)Buffer, Length)) { + return EFI_INVALID_PARAMETER; + } + + // + // Omit this line if no section header has been found before + // + if (*SectionHead == NULL) { + return Status; + } + PtrSection = *SectionHead; + + SectionItem = AllocatePool (sizeof (SECTION_ITEM)); + if (SectionItem == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + SectionItem->PtrSection = NULL; + SectionItem->PtrEntry = NULL; + SectionItem->PtrValue = NULL; + SectionItem->SecNameLen = PtrSection->SecNameLen; + SectionItem->PtrNext = *SectionHead; + *SectionHead = SectionItem; + + // + // SectionName, add a trailing '\0' + // + SectionItem->PtrSection = AllocatePool (PtrSection->SecNameLen + 1); + if (SectionItem->PtrSection == NULL) { + return EFI_OUT_OF_RESOURCES; + } + CopyMem (SectionItem->PtrSection, PtrSection->PtrSection, PtrSection->SecNameLen + 1); + + // + // EntryName, add a trailing '\0' + // + SectionItem->PtrEntry = AllocatePool (Length + 1); + if (SectionItem->PtrEntry == NULL) { + FreePool(SectionItem->PtrSection); + return EFI_OUT_OF_RESOURCES; + } + CopyMem (SectionItem->PtrEntry, Buffer, Length); + *(SectionItem->PtrEntry + Length) = '\0'; + + // + // Next search for '#' or ';' + // + PtrBuf = PtrBuf + 1; + Buffer = PtrBuf; + while (PtrBuf <= PtrEnd) { + if (*PtrBuf == '#' || *PtrBuf == ';') { + break; + } + PtrBuf++; + } + if (PtrBuf <= Buffer) { + // Empty name + FreePool(SectionItem->PtrEntry); + FreePool(SectionItem->PtrSection); + return EFI_NOT_FOUND; + } + Length = PtrBuf - Buffer; + ProfileTrim ( + Buffer, + &Length + ); + + // + // Invalid line if the entry value is null + // + if (Length == 0) { + FreePool(SectionItem->PtrEntry); + FreePool(SectionItem->PtrSection); + return EFI_NOT_FOUND; + } + + if (!IsValidValue((CHAR8 *)Buffer, Length)) { + FreePool(SectionItem->PtrEntry); + FreePool(SectionItem->PtrSection); + return EFI_INVALID_PARAMETER; + } + + // + // EntryValue, add a trailing '\0' + // + SectionItem->PtrValue = AllocatePool (Length + 1); + if (SectionItem->PtrValue == NULL) { + FreePool(SectionItem->PtrEntry); + FreePool(SectionItem->PtrSection); + return EFI_OUT_OF_RESOURCES; + } + CopyMem (SectionItem->PtrValue, Buffer, Length); + *(SectionItem->PtrValue + Length) = '\0'; + + return EFI_SUCCESS; +} + +/** + Free all comment entry and section entry. + + @param[in] Section Section entry list. + @param[in] Comment Comment entry list. + +**/ +VOID +FreeAllList ( + IN SECTION_ITEM *Section, + IN COMMENT_LINE *Comment + ) +{ + SECTION_ITEM *PtrSection; + COMMENT_LINE *PtrComment; + + while (Section != NULL) { + PtrSection = Section; + Section = Section->PtrNext; + if (PtrSection->PtrEntry != NULL) { + FreePool (PtrSection->PtrEntry); + } + if (PtrSection->PtrSection != NULL) { + FreePool (PtrSection->PtrSection); + } + if (PtrSection->PtrValue != NULL) { + FreePool (PtrSection->PtrValue); + } + FreePool (PtrSection); + } + + while (Comment != NULL) { + PtrComment = Comment; + Comment = Comment->PtrNext; + if (PtrComment->PtrComment != NULL) { + FreePool (PtrComment->PtrComment); + } + FreePool (PtrComment); + } + + return; +} + +/** + Get section entry value. + + @param[in] Section Section entry list. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] EntryValue Point to the got entry value. + + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_SUCCESS Section entry value is got. + +**/ +EFI_STATUS +UpdateGetProfileString ( + IN SECTION_ITEM *Section, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT CHAR8 **EntryValue + ) +{ + *EntryValue = NULL; + + while (Section != NULL) { + if (AsciiStrCmp ((CONST CHAR8 *) Section->PtrSection, (CONST CHAR8 *) SectionName) == 0) { + if (Section->PtrEntry != NULL) { + if (AsciiStrCmp ((CONST CHAR8 *) Section->PtrEntry, (CONST CHAR8 *) EntryName) == 0) { + break; + } + } + } + Section = Section->PtrNext; + } + + if (Section == NULL) { + return EFI_NOT_FOUND; + } + + *EntryValue = Section->PtrValue; + + return EFI_SUCCESS; +} + +/** + Pre process config data buffer into Section entry list and Comment entry list. + + @param[in] DataBuffer Config raw file buffer. + @param[in] BufferSize Size of raw buffer. + @param[in, out] SectionHead Pointer to the section entry list. + @param[in, out] CommentHead Pointer to the comment entry list. + + @retval EFI_OUT_OF_RESOURCES No enough memory is allocated. + @retval EFI_SUCCESS Config data buffer is preprocessed. + @retval EFI_NOT_FOUND Config data buffer is invalid, because Section or Entry is not found. + @retval EFI_INVALID_PARAMETER Config data buffer is invalid, because Section or Entry is invalid. + +**/ +EFI_STATUS +PreProcessDataFile ( + IN UINT8 *DataBuffer, + IN UINTN BufferSize, + IN OUT SECTION_ITEM **SectionHead, + IN OUT COMMENT_LINE **CommentHead + ) +{ + EFI_STATUS Status; + CHAR8 *Source; + CHAR8 *CurrentPtr; + CHAR8 *BufferEnd; + CHAR8 *PtrLine; + UINTN LineLength; + UINTN SourceLength; + UINTN MaxLineLength; + + *SectionHead = NULL; + *CommentHead = NULL; + BufferEnd = (CHAR8 *) ( (UINTN) DataBuffer + BufferSize); + CurrentPtr = (CHAR8 *) DataBuffer; + MaxLineLength = MAX_LINE_LENGTH; + Status = EFI_SUCCESS; + + PtrLine = AllocatePool (MaxLineLength); + if (PtrLine == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + while (CurrentPtr < BufferEnd) { + Source = CurrentPtr; + SourceLength = (UINTN)BufferEnd - (UINTN)CurrentPtr; + LineLength = MaxLineLength; + // + // With the assumption that line length is less than 512 + // characters. Otherwise BUFFER_TOO_SMALL will be returned. + // + Status = ProfileGetLine ( + (UINT8 *) Source, + SourceLength, + (UINT8 *) PtrLine, + &LineLength + ); + if (EFI_ERROR (Status)) { + if (Status == EFI_BUFFER_TOO_SMALL) { + // + // If buffer too small, re-allocate the buffer according + // to the returned LineLength and try again. + // + FreePool (PtrLine); + PtrLine = NULL; + PtrLine = AllocatePool (LineLength); + if (PtrLine == NULL) { + Status = EFI_OUT_OF_RESOURCES; + break; + } + SourceLength = LineLength; + Status = ProfileGetLine ( + (UINT8 *) Source, + SourceLength, + (UINT8 *) PtrLine, + &LineLength + ); + if (EFI_ERROR (Status)) { + break; + } + MaxLineLength = LineLength; + } else { + break; + } + } + CurrentPtr = (CHAR8 *) ( (UINTN) CurrentPtr + LineLength); + + // + // Line got. Trim the line before processing it. + // + ProfileTrim ( + (UINT8 *) PtrLine, + &LineLength + ); + + // + // Blank line + // + if (LineLength == 0) { + continue; + } + + if (PtrLine[0] == '#' || PtrLine[0] == ';') { + Status = ProfileGetComments ( + (UINT8 *) PtrLine, + LineLength, + CommentHead + ); + } else if (PtrLine[0] == '[') { + Status = ProfileGetSection ( + (UINT8 *) PtrLine, + LineLength, + SectionHead + ); + } else { + Status = ProfileGetEntry ( + (UINT8 *) PtrLine, + LineLength, + SectionHead + ); + } + + if (EFI_ERROR (Status)) { + break; + } + } + + // + // Free buffer + // + FreePool (PtrLine); + + return Status; +} + +typedef struct { + CHAR8 *String; + EFI_STATUS Status; +} EFI_STATUS_STRING; + +GLOBAL_REMOVE_IF_UNREFERENCED EFI_STATUS_STRING mEfiStatusString[] = { + {"EFI_SUCCESS", EFI_SUCCESS}, + {"EFI_LOAD_ERROR", EFI_LOAD_ERROR}, + {"EFI_INVALID_PARAMETER", EFI_INVALID_PARAMETER}, + {"EFI_UNSUPPORTED", EFI_UNSUPPORTED}, + {"EFI_BAD_BUFFER_SIZE", EFI_BAD_BUFFER_SIZE}, + {"EFI_BUFFER_TOO_SMALL", EFI_BUFFER_TOO_SMALL}, + {"EFI_NOT_READY", EFI_NOT_READY}, + {"EFI_DEVICE_ERROR", EFI_DEVICE_ERROR}, + {"EFI_WRITE_PROTECTED", EFI_WRITE_PROTECTED}, + {"EFI_OUT_OF_RESOURCES", EFI_OUT_OF_RESOURCES}, + {"EFI_VOLUME_CORRUPTED", EFI_VOLUME_CORRUPTED}, + {"EFI_VOLUME_FULL", EFI_VOLUME_FULL}, + {"EFI_NO_MEDIA", EFI_NO_MEDIA}, + {"EFI_MEDIA_CHANGED", EFI_MEDIA_CHANGED}, + {"EFI_NOT_FOUND", EFI_NOT_FOUND}, + {"EFI_ACCESS_DENIED", EFI_ACCESS_DENIED}, + {"EFI_NO_RESPONSE", EFI_NO_RESPONSE}, + {"EFI_NO_MAPPING", EFI_NO_MAPPING}, + {"EFI_TIMEOUT", EFI_TIMEOUT}, + {"EFI_NOT_STARTED", EFI_NOT_STARTED}, + {"EFI_ALREADY_STARTED", EFI_ALREADY_STARTED}, + {"EFI_ABORTED", EFI_ABORTED}, + {"EFI_ICMP_ERROR", EFI_ICMP_ERROR}, + {"EFI_TFTP_ERROR", EFI_TFTP_ERROR}, + {"EFI_PROTOCOL_ERROR", EFI_PROTOCOL_ERROR}, + {"EFI_INCOMPATIBLE_VERSION", EFI_INCOMPATIBLE_VERSION}, + {"EFI_SECURITY_VIOLATION", EFI_SECURITY_VIOLATION}, + {"EFI_CRC_ERROR", EFI_CRC_ERROR}, + {"EFI_END_OF_MEDIA", EFI_END_OF_MEDIA}, + {"EFI_END_OF_FILE", EFI_END_OF_FILE}, + {"EFI_INVALID_LANGUAGE", EFI_INVALID_LANGUAGE}, + {"EFI_COMPROMISED_DATA", EFI_COMPROMISED_DATA}, +//{"EFI_IP_ADDRESS_CONFLICT", EFI_IP_ADDRESS_CONFLICT}, + {"EFI_HTTP_ERROR", EFI_HTTP_ERROR}, + {"EFI_WARN_UNKNOWN_GLYPH", EFI_WARN_UNKNOWN_GLYPH}, + {"EFI_WARN_DELETE_FAILURE", EFI_WARN_DELETE_FAILURE}, + {"EFI_WARN_WRITE_FAILURE", EFI_WARN_WRITE_FAILURE}, + {"EFI_WARN_BUFFER_TOO_SMALL", EFI_WARN_BUFFER_TOO_SMALL}, + {"EFI_WARN_STALE_DATA", EFI_WARN_STALE_DATA}, + {"EFI_WARN_FILE_SYSTEM", EFI_WARN_FILE_SYSTEM}, +//{"EFI_WARN_RESET_REQUIRED", EFI_WARN_RESET_REQUIRED}, +}; + +RETURN_STATUS +AsciiStrToEfiStatus ( + IN CONST CHAR8 *String, + OUT EFI_STATUS *Status + ) +{ + UINTN Index; + + for (Index = 0; Index < ARRAY_SIZE(mEfiStatusString); Index++) { + if (AsciiStrCmp (String, mEfiStatusString[Index].String) == 0) { + *Status = mEfiStatusString[Index].Status; + return EFI_SUCCESS; + } + } + return EFI_INVALID_PARAMETER; +} + +/** + Open an INI config file and return a context. + + @param[in] DataBuffer Config raw file buffer. + @param[in] BufferSize Size of raw buffer. + + @return Config data buffer is opened and context is returned. + @retval NULL No enough memory is allocated. + @retval NULL Config data buffer is invalid. +**/ +VOID * +EFIAPI +OpenIniFile ( + IN UINT8 *DataBuffer, + IN UINTN BufferSize + ) +{ + EFI_STATUS Status; + INI_PARSING_LIB_CONTEXT *IniContext; + + if (DataBuffer == NULL || BufferSize == 0) { + return NULL; + } + + IniContext = AllocateZeroPool(sizeof(INI_PARSING_LIB_CONTEXT)); + if (IniContext == NULL) { + return NULL; + } + + // + // First process the data buffer and get all sections and entries + // + Status = PreProcessDataFile ( + DataBuffer, + BufferSize, + &IniContext->SectionHead, + &IniContext->CommentHead + ); + if (EFI_ERROR(Status)) { + FreePool(IniContext); + return NULL; + } + DEBUG_CODE_BEGIN (); + DumpIniSection(IniContext); + DEBUG_CODE_END (); + return IniContext; +} + +/** + Get section entry string value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] EntryValue Point to the got entry string value. + + @retval EFI_SUCCESS Section entry string value is got. + @retval EFI_NOT_FOUND Section is not found. +**/ +EFI_STATUS +EFIAPI +GetStringFromDataFile( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT CHAR8 **EntryValue + ) +{ + INI_PARSING_LIB_CONTEXT *IniContext; + EFI_STATUS Status; + + if (Context == NULL || SectionName == NULL || EntryName == NULL || EntryValue == NULL) { + return EFI_INVALID_PARAMETER; + } + + IniContext = Context; + + *EntryValue = NULL; + Status = UpdateGetProfileString ( + IniContext->SectionHead, + SectionName, + EntryName, + EntryValue + ); + return Status; +} + +/** + Get section entry GUID value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Guid Point to the got GUID value. + + @retval EFI_SUCCESS Section entry GUID value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetGuidFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT EFI_GUID *Guid + ) +{ + CHAR8 *Value; + EFI_STATUS Status; + RETURN_STATUS RStatus; + + if (Context == NULL || SectionName == NULL || EntryName == NULL || Guid == NULL) { + return EFI_INVALID_PARAMETER; + } + + Status = GetStringFromDataFile( + Context, + SectionName, + EntryName, + &Value + ); + if (EFI_ERROR(Status)) { + return EFI_NOT_FOUND; + } + ASSERT (Value != NULL); + RStatus = AsciiStrToGuid (Value, Guid); + if (RETURN_ERROR (RStatus) || (Value[GUID_STRING_LENGTH] != '\0')) { + return EFI_INVALID_PARAMETER; + } + return EFI_SUCCESS; +} + +/** + Get section entry EFI_STATUS value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Guid Point to the got GUID value. + + @retval EFI_SUCCESS Section entry EFI_STATUS value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetEfiStatusFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT EFI_STATUS *EfiStatus + ) +{ + CHAR8 *Value; + EFI_STATUS Status; + RETURN_STATUS RStatus; + + if (Context == NULL || SectionName == NULL || EntryName == NULL || EfiStatus == NULL) { + return EFI_INVALID_PARAMETER; + } + + Status = GetStringFromDataFile( + Context, + SectionName, + EntryName, + &Value + ); + if (EFI_ERROR(Status)) { + return EFI_NOT_FOUND; + } + ASSERT (Value != NULL); + RStatus = AsciiStrToEfiStatus (Value, EfiStatus); + if (RETURN_ERROR (RStatus)) { + return EFI_INVALID_PARAMETER; + } + return EFI_SUCCESS; +} + +/** + Get section entry decimal UINTN value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got decimal UINTN value. + + @retval EFI_SUCCESS Section entry decimal UINTN value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetDecimalUintnFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINTN *Data + ) +{ + CHAR8 *Value; + EFI_STATUS Status; + + if (Context == NULL || SectionName == NULL || EntryName == NULL || Data == NULL) { + return EFI_INVALID_PARAMETER; + } + + Status = GetStringFromDataFile( + Context, + SectionName, + EntryName, + &Value + ); + if (EFI_ERROR(Status)) { + return EFI_NOT_FOUND; + } + ASSERT (Value != NULL); + if (!IsValidDecimalString(Value, AsciiStrLen(Value))) { + return EFI_INVALID_PARAMETER; + } + *Data = AsciiStrDecimalToUintn(Value); + return EFI_SUCCESS; +} + +/** + Get section entry heximal UINTN value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got heximal UINTN value. + + @retval EFI_SUCCESS Section entry heximal UINTN value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetHexUintnFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINTN *Data + ) +{ + CHAR8 *Value; + EFI_STATUS Status; + + if (Context == NULL || SectionName == NULL || EntryName == NULL || Data == NULL) { + return EFI_INVALID_PARAMETER; + } + + Status = GetStringFromDataFile( + Context, + SectionName, + EntryName, + &Value + ); + if (EFI_ERROR(Status)) { + return EFI_NOT_FOUND; + } + ASSERT (Value != NULL); + if (!IsValidHexString(Value, AsciiStrLen(Value))) { + return EFI_INVALID_PARAMETER; + } + *Data = AsciiStrHexToUintn(Value); + return EFI_SUCCESS; +} + +/** + Get section entry heximal UINT64 value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got heximal UINT64 value. + + @retval EFI_SUCCESS Section entry heximal UINT64 value is got. + @retval EFI_NOT_FOUND Section is not found. + @retval EFI_INVALID_PARAMETER Section format is invalid. +**/ +EFI_STATUS +EFIAPI +GetHexUint64FromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINT64 *Data + ) +{ + CHAR8 *Value; + EFI_STATUS Status; + + if (Context == NULL || SectionName == NULL || EntryName == NULL || Data == NULL) { + return EFI_INVALID_PARAMETER; + } + + Status = GetStringFromDataFile( + Context, + SectionName, + EntryName, + &Value + ); + if (EFI_ERROR(Status)) { + return EFI_NOT_FOUND; + } + ASSERT (Value != NULL); + if (!IsValidHexString(Value, AsciiStrLen(Value))) { + return EFI_INVALID_PARAMETER; + } + *Data = AsciiStrHexToUint64(Value); + return EFI_SUCCESS; +} + +/** + Close an INI config file and free the context. + + @param[in] Context INI Config file context. +**/ +VOID +EFIAPI +CloseIniFile ( + IN VOID *Context + ) +{ + INI_PARSING_LIB_CONTEXT *IniContext; + + if (Context == NULL) { + return ; + } + + IniContext = Context; + FreeAllList(IniContext->SectionHead, IniContext->CommentHead); + + return; +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.inf b/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.inf new file mode 100644 index 0000000..9147141 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.inf @@ -0,0 +1,37 @@ +## @file +# INI configuration parsing library. +# +# This library parses the INI configuration file. +# +# Copyright (c) 2016, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = IniParsingLib + MODULE_UNI_FILE = IniParsingLib.uni + FILE_GUID = 6E4CD200-43E5-43CE-89E9-D715CF9526C4 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = IniParsingLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources] + IniParsingLib.c + +[Packages] + MdePkg/MdePkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + DebugLib + MemoryAllocationLib diff --git a/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.uni b/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.uni new file mode 100644 index 0000000..1c0f360 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.uni @@ -0,0 +1,16 @@ +// /** @file +// INI configuration parsing library. +// +// This library parses the INI configuration file. +// +// Copyright (c) 2016, Intel Corporation. All rights reserved.
+// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + + +#string STR_MODULE_ABSTRACT #language en-US "INI configuration parsing library." + +#string STR_MODULE_DESCRIPTION #language en-US "This library parses the INI configuration file." + diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.c new file mode 100644 index 0000000..aaf5d6d --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.c @@ -0,0 +1,31 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +UINTN +EFIAPI +FunctionEnter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + return 0; +} + +VOID +EFIAPI +FunctionExit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + return ; +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.inf b/HBFA/UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.inf new file mode 100644 index 0000000..24c0f6e --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.inf @@ -0,0 +1,29 @@ +## @file +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = InstrumentHookLibNull + FILE_GUID = B3044F07-E1C8-412B-ADD5-AD93DB330966 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = InstrumentHookLib + +[Sources] + InstrumentHookLibNull.c + +[Packages] + MdePkg/MdePkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/CygProfileEnterExit.nasm b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/CygProfileEnterExit.nasm new file mode 100644 index 0000000..14224c8 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/CygProfileEnterExit.nasm @@ -0,0 +1,96 @@ +;------------------------------------------------------------------------------ ; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +;------------------------------------------------------------------------------ + +extern ASM_PFX(CygProfileEnter) +extern ASM_PFX(CygProfileExit) + + SECTION .text + +; void __cyg_profile_func_enter (void *this_fn, void *call_site) +global ASM_PFX(__cyg_profile_func_enter) +ASM_PFX(__cyg_profile_func_enter): + ; prolog - begin + push ebp + mov ebp, esp + + push eax + push ecx + push edx + push ebx + mov eax, ebp + add eax, 4 ; the caller to __cyg_profile_func_enter + push eax ; original esp + mov eax, [ebp] + push eax ; original ebp + push esi + push edi + ; prolog - end + + mov eax, [ebp + 8] ; eax = func address + mov ecx, esp ; ecx = context + mov edx, [ebp + 12] ; edx = caller address + push eax + push edx + push ecx + call ASM_PFX(CygProfileEnter) + add esp, 12 + + ; epilog - begin + pop edi + pop esi + add esp, 4 ; skip ebp + add esp, 4 ; skip esp + pop ebx + pop edx + pop ecx + pop eax + mov esp, ebp + pop ebp + ; epilog - end + ret + +; void __cyg_profile_func_exit (void *this_fn, void *call_site) +global ASM_PFX(__cyg_profile_func_exit) +ASM_PFX(__cyg_profile_func_exit): + ; prolog - begin + push ebp + mov ebp, esp + + push eax + push ecx + push edx + push ebx + mov eax, ebp + add eax, 4 ; the caller to __cyg_profile_func_exit + push eax ; original esp + mov eax, [ebp] + push eax ; original ebp + push esi + push edi + ; prolog - end + + mov eax, [ebp + 8] ; eax = func address + mov ecx, esp ; ecx = context + mov edx, [ebp + 12] ; edx = caller address + push eax + push edx + push ecx + call ASM_PFX(CygProfileExit) + add esp, 12 + + ; epilog - begin + pop edi + pop esi + add esp, 4 ; skip ebp + add esp, 4 ; skip esp + pop ebx + pop edx + pop ecx + pop eax + mov esp, ebp + pop ebp + ; epilog - end + ret diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/CygProfileEnterExitStub.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/CygProfileEnterExitStub.c new file mode 100644 index 0000000..8c3685b --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/CygProfileEnterExitStub.c @@ -0,0 +1,39 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +UINTN +EFIAPI +CygProfileEnter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN CallerAddress, + IN UINTN FunctionAddress + ) +{ + EntryContext.Ia32->Esp = EntryContext.Ia32->Ebp; + EntryContext.Ia32->Esp += 4; // the caller to the caller to __cyg_profile_func_enter + + return FunctionEnter (EntryContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +CygProfileExit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN CallerAddress, + IN UINTN FunctionAddress + ) +{ + ExitContext.Ia32->Esp = ExitContext.Ia32->Ebp; + ExitContext.Ia32->Esp += 4; // the caller to the caller to __cyg_profile_func_enter + + FunctionExit (ExitContext, FunctionAddress, CallerAddress); +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParam.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParam.c new file mode 100644 index 0000000..3ce3b22 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParam.c @@ -0,0 +1,157 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +VOID +EFIAPI +SetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN RetVal + ) +{ + ExitContext.Ia32->Eax = RetVal; +} + +VOID +EFIAPI +SetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINT64 RetVal + ) +{ + ExitContext.Ia32->Eax = (UINT32)RetVal; + ExitContext.Ia32->Edx = (UINT32)RShiftU64(RetVal, 32); +} + +UINTN +EFIAPI +GetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return ExitContext.Ia32->Eax; +} + +UINT64 +EFIAPI +GetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return (UINT64)ExitContext.Ia32->Eax + RShiftU64(ExitContext.Ia32->Edx, 32); +} + +UINTN +EFIAPI +GetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + return *(UINT64 *)(StackPointer + Index); +} + +UINTN +EFIAPI +GetReturnParameterValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(ExitContext.Ia32->Esp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetReturnParameterValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(ExitContext.Ia32->Esp); + return *(UINT64 *)(StackPointer + Index); +} + +VOID +EFIAPI +SetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINTN Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + *(StackPointer + Index) = Data; +} + +VOID +EFIAPI +SetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINT64 Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + *(UINT64 *)(StackPointer + Index) = Data; +} + +VOID +EFIAPI +SetSkipReturnValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN RetVal + ) +{ + EntryContext.Ia32->Eax = RetVal; +} + +VOID +EFIAPI +SetSkipReturnValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINT64 RetVal + ) +{ + EntryContext.Ia32->Eax = (UINT32)RetVal; + EntryContext.Ia32->Edx = (UINT32)RShiftU64(RetVal, 32); +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParamGcc.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParamGcc.c new file mode 100644 index 0000000..dfe925f --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParamGcc.c @@ -0,0 +1,156 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +VOID +EFIAPI +SetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN RetVal + ) +{ + ExitContext.Ia32->Ebx = RetVal; +} + +VOID +EFIAPI +SetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINT64 RetVal + ) +{ + ExitContext.Ia32->Ebx = (UINT32)RetVal; + ExitContext.Ia32->Esi = (UINT32)RShiftU64(RetVal, 32); +} + +UINTN +EFIAPI +GetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return ExitContext.Ia32->Ebx; +} + +UINT64 +EFIAPI +GetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return (UINT64)ExitContext.Ia32->Ebx + RShiftU64(ExitContext.Ia32->Esi, 32); +} + +UINTN +EFIAPI +GetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + return *(UINT64 *)(StackPointer + Index); +} + +UINTN +EFIAPI +GetReturnParameterValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(ExitContext.Ia32->Esp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetReturnParameterValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(ExitContext.Ia32->Esp); + return *(UINT64 *)(StackPointer + Index); +} + +VOID +EFIAPI +SetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINTN Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + *(StackPointer + Index) = Data; +} + +VOID +EFIAPI +SetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINT64 Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + *(UINT64 *)(StackPointer + Index) = Data; +} + +VOID +EFIAPI +SetSkipReturnValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN RetVal + ) +{ + // unsupported +} + +VOID +EFIAPI +SetSkipReturnValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINT64 RetVal + ) +{ + // unsupported +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParamMsvc.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParamMsvc.c new file mode 100644 index 0000000..3ce3b22 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/FuncParamMsvc.c @@ -0,0 +1,157 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +VOID +EFIAPI +SetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN RetVal + ) +{ + ExitContext.Ia32->Eax = RetVal; +} + +VOID +EFIAPI +SetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINT64 RetVal + ) +{ + ExitContext.Ia32->Eax = (UINT32)RetVal; + ExitContext.Ia32->Edx = (UINT32)RShiftU64(RetVal, 32); +} + +UINTN +EFIAPI +GetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return ExitContext.Ia32->Eax; +} + +UINT64 +EFIAPI +GetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return (UINT64)ExitContext.Ia32->Eax + RShiftU64(ExitContext.Ia32->Edx, 32); +} + +UINTN +EFIAPI +GetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + return *(UINT64 *)(StackPointer + Index); +} + +UINTN +EFIAPI +GetReturnParameterValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(ExitContext.Ia32->Esp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetReturnParameterValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(ExitContext.Ia32->Esp); + return *(UINT64 *)(StackPointer + Index); +} + +VOID +EFIAPI +SetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINTN Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + *(StackPointer + Index) = Data; +} + +VOID +EFIAPI +SetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINT64 Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.Ia32->Esp != 0); + StackPointer = (UINTN *)(UINTN)(EntryContext.Ia32->Esp); + *(UINT64 *)(StackPointer + Index) = Data; +} + +VOID +EFIAPI +SetSkipReturnValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN RetVal + ) +{ + EntryContext.Ia32->Eax = RetVal; +} + +VOID +EFIAPI +SetSkipReturnValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINT64 RetVal + ) +{ + EntryContext.Ia32->Eax = (UINT32)RetVal; + EntryContext.Ia32->Edx = (UINT32)RShiftU64(RetVal, 32); +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/PEnterExit.nasm b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/PEnterExit.nasm new file mode 100644 index 0000000..94ab486 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/PEnterExit.nasm @@ -0,0 +1,296 @@ +;------------------------------------------------------------------------------ ; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +;------------------------------------------------------------------------------ + +extern ASM_PFX(Cpenter) +extern ASM_PFX(Cpexit) + +%define PARAM_COUNT 14 + + SECTION .text + +; void __declspec(naked) _cdecl _penter( void ) +global ASM_PFX(_penter) +ASM_PFX(_penter): +;--------------- +; P1: Context +;--------------- +; P2: Ret Addr +;--------------- +; EDI | +;--------------- +; ESI | +;--------------- +; EBP | +;--------------- +; ESP | +;--------------- +; EBX | +;--------------- +; EDX | +;--------------- +; ECX | +;--------------- +; EAX | +;--------------- +; EBP <- EBP +;--------------- +; Addr in FuncB +;--------------- +; Addr in FuncA +;--------------- +; Param +;--------------- + ; prolog - begin + push ebp + mov ebp, esp + + push eax + push ecx + push edx + push ebx + mov eax, ebp + add eax, 4 ; the caller to _penter + push eax ; original esp + mov eax, [ebp] + push eax ; original ebp + push esi + push edi + ; prolog - end + + mov ecx, esp ; ecx = context + mov edx, [ebp + 4] ; edx = return address + push edx + push ecx + call ASM_PFX(Cpenter) + add esp, 8 + + ; epilog - begin + pop edi + pop esi + add esp, 4 ; skip ebp + add esp, 4 ; skip esp + pop ebx + pop edx + pop ecx + + cmp eax, 0 + jz Exit + +; skip function + +;--------------- +; EAX | +;--------------- +; EBP <- EBP | EAX +;--------------- +; Addr in FuncB | EBP <- EBP +;--------------- +; Addr in FuncA | <- ESP +;--------------- +; Param +;--------------- + mov eax, [ebp - 4 * 5] + mov esp, eax + mov eax, [ebp] + mov [esp - 4], eax + mov eax, [ebp - 4] + mov [esp - 8], eax + sub esp, 8 + mov ebp, esp + add ebp, 4 + + pop eax + mov esp, ebp + pop ebp + ; epilog - end + ret + +Exit: + push ecx + push edx + push esi + push edi + +; copy the param + +;--------------- +; EDI +;--------------- +; ESI +;--------------- +; EDX +;--------------- +; ECX +;--------------- +; EAX +;--------------- +; EBP <- EBP +;--------------- +; Addr in FuncB +;--------------- +; Addr in FuncA +;--------------- +; Param (4 * PARAM_COUNT) +;--------------- +; EDI | <- ESP +;--------------- +; ESI +;--------------- +; EDX +;--------------- +; ECX +;--------------- +; EAX +;--------------- +; EBP <- EBP +;--------------- +; Addr in FuncB +;--------------- +; Addr in FuncA +;--------------- +; Param +;--------------- + sub esp, (4 * PARAM_COUNT + 4 * 8) + mov esi, esp + mov edi, esi + add esi, (4 * PARAM_COUNT + 4 * 8) + mov ecx, (PARAM_COUNT + 8) + rep movsd + sub ebp, (4 * PARAM_COUNT + 4 * 8) + + pop edi + pop esi + pop edx + pop ecx + + pop eax + mov esp, ebp + pop ebp + ; epilog - end + ret + +; void __declspec(naked) _cdecl _pexit( void ) +global ASM_PFX(_pexit) +ASM_PFX(_pexit): +;--------------- +; EBP <- EBP +;--------------- +; Addr in FuncB +;--------------- +; Addr in FuncA +;--------------- +; Param (4 * PARAM_COUNT) +;--------------- +; EDI +;--------------- +; ESI +;--------------- +; EDX +;--------------- +; ECX +;--------------- +; EAX +;--------------- +; EBP <- EBP +;--------------- +; Addr in FuncB +;--------------- +; Addr in FuncA +;--------------- +; Param +;--------------- + ; prolog - begin + push ebp + mov ebp, esp + + push eax + push ecx + push edx + push ebx + mov eax, ebp + add eax, 4 ; the caller to _pexit + push eax ; original esp + mov eax, [ebp] + push eax ; original ebp + push esi + push edi + ; prolog - end + + mov ecx, esp ; ecx = context + mov edx, [ebp + 4 * (2 + PARAM_COUNT + 7)] ; edx = return address + push edx + push ecx + call ASM_PFX(Cpexit) + add esp, 8 + + ; epilog - begin + pop edi + pop esi + add esp, 4 ; skip ebp + add esp, 4 ; skip esp + pop ebx + pop edx + pop ecx + +;--------------- +; EDI +;--------------- +; ESI +;--------------- +; EDX +;--------------- +; ECX +;--------------- +; EAX +;--------------- +; EBP <- EBP +;--------------- +; Addr in FuncB +;--------------- +; Addr in FuncA +;--------------- +; Param (4 * PARAM_COUNT) +;--------------- +; EDI +;--------------- +; ESI +;--------------- +; EDX +;--------------- +; ECX +;--------------- +; EAX +;--------------- +; EBP <- EBP +;--------------- +; Addr in FuncB +;--------------- +; Addr in FuncA +;--------------- +; Param +;--------------- + push ecx + push edx + push esi + push edi + mov esi, esp + mov edi, esi + add edi, (4 * PARAM_COUNT + 4 * 8) + mov ecx, (7) + rep movsd + add ebp, (4 * PARAM_COUNT + 4 * 8) + add esp, (4 * PARAM_COUNT + 4 * 8) + + pop edi + pop esi + pop edx + pop ecx + + pop eax + mov esp, ebp + pop ebp + ; epilog - end + ret diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/PEnterExitStub.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/PEnterExitStub.c new file mode 100644 index 0000000..d778b6d --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/Ia32/PEnterExitStub.c @@ -0,0 +1,61 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +UINTN +GetFunctionAddress ( + IN UINTN ReturnAddress + ) +{ + UINTN FunctionAddress; + + FunctionAddress = (ReturnAddress - 5); + + return FunctionAddress; +} + +UINTN +EFIAPI +Cpenter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN ReturnAddress + ) +{ + UINTN FunctionAddress; + UINTN CallerAddress; + + FunctionAddress = GetFunctionAddress (ReturnAddress); + + EntryContext.Ia32->Esp += 4; // the caller to the caller to _penter + + CallerAddress = *(UINTN *)(UINTN)(EntryContext.Ia32->Esp); + + return FunctionEnter (EntryContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +Cpexit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN ReturnAddress + ) +{ + UINTN FunctionAddress; + UINTN CallerAddress; + + FunctionAddress = GetFunctionAddress (ReturnAddress); + + ExitContext.Ia32->Esp += 4; // the caller to the caller to _penter + + CallerAddress = *(UINTN *)((UINTN)ExitContext.Ia32->Esp); + + FunctionExit (ExitContext, FunctionAddress, CallerAddress); +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf new file mode 100644 index 0000000..ca25812 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf @@ -0,0 +1,48 @@ +## @file +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = InstrumentLib + FILE_GUID = 06C8E8A4-C8A8-4E19-B38D-13F0E1E48470 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = NULL + +[Sources] + +[Sources.Ia32] + Ia32/FuncParamMsvc.c | MSFT + Ia32/PEnterExit.nasm | MSFT + Ia32/PEnterExitStub.c | MSFT + Ia32/FuncParamGcc.c | GCC + Ia32/CygProfileEnterExit.nasm | GCC + Ia32/CygProfileEnterExitStub.c | GCC + +[Sources.X64] + X64/FuncParamMsvc.c | MSFT + X64/PEnterExit.nasm | MSFT + X64/PEnterExitStub.c | MSFT + X64/FuncParamGcc.c | GCC + X64/CygProfileEnterExit.nasm | GCC + X64/CygProfileEnterExitStub.c | GCC + +[Packages] + MdePkg/MdePkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + +[LibraryClasses] + BaseLib + InstrumentHookLib + DebugLib + +[BuildOptions] + # https://msdn.microsoft.com/en-us/library/c63a9b7h.aspx + MSFT:*_*_*_CC_FLAGS = /Od /GL- + # https://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Code-Gen-Options.html#Code-Gen-Options + GCC:*_*_*_CC_FLAGS = -O0 + diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/CygProfileEnterExit.nasm b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/CygProfileEnterExit.nasm new file mode 100644 index 0000000..0768049 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/CygProfileEnterExit.nasm @@ -0,0 +1,124 @@ +;------------------------------------------------------------------------------ ; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +;------------------------------------------------------------------------------ + +extern ASM_PFX(CygProfileEnter) +extern ASM_PFX(CygProfileExit) + + SECTION .text + +; void __cyg_profile_func_enter (void *this_fn, void *call_site) +global ASM_PFX(__cyg_profile_func_enter) +ASM_PFX(__cyg_profile_func_enter): + ; prolog - begin + push rbp + mov rbp, rsp + + push rax + push rcx + push rdx + push rbx + mov rax, rbp + add rax, 8 ; the caller to __cyg_profile_func_enter + push rax ; original rsp + mov rax, [rbp] + push rax ; original rbp + push rsi + push rdi + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + ; prolog - end + + mov r8, rdi ; r8 = func address + mov rcx, rsp ; rcx = context + mov rdx, rsi ; rdx = caller address + sub rsp, 0x20 + call ASM_PFX(CygProfileEnter) + add rsp, 0x20 + + ; epilog - begin + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop rdi + pop rsi + add rsp, 8 ; skip rbp + add rsp, 8 ; skip rsp + pop rbx + pop rdx + pop rcx + pop rax + mov rsp, rbp + pop rbp + ; epilog - end + ret + +; void __cyg_profile_func_exit (void *this_fn, void *call_site) +global ASM_PFX(__cyg_profile_func_exit) +ASM_PFX(__cyg_profile_func_exit): + ; prolog - begin + push rbp + mov rbp, rsp + + push rax + push rcx + push rdx + push rbx + mov rax, rbp + add rax, 8 ; the caller to _penter + push rax ; original rsp + mov rax, [rbp] + push rax ; original rbp + push rsi + push rdi + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + ; prolog - end + + mov r8, rdi ; r8 = func address + mov rcx, rsp ; rcx = context + mov rdx, rsi ; rdx = caller address + sub rsp, 0x20 + call ASM_PFX(CygProfileExit) + add rsp, 0x20 + + ; epilog - begin + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop rdi + pop rsi + add rsp, 8 ; skip rbp + add rsp, 8 ; skip rsp + pop rbx + pop rdx + pop rcx + pop rax + mov rsp, rbp + pop rbp + ; epilog - end + ret diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/CygProfileEnterExitStub.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/CygProfileEnterExitStub.c new file mode 100644 index 0000000..901efc3 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/CygProfileEnterExitStub.c @@ -0,0 +1,39 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +UINTN +EFIAPI +CygProfileEnter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN CallerAddress, + IN UINTN FunctionAddress + ) +{ + EntryContext.X64->Rsp = EntryContext.X64->Rbp; + EntryContext.X64->Rsp += 8; // the caller to the caller to __cyg_profile_func_enter + + return FunctionEnter (EntryContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +CygProfileExit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN CallerAddress, + IN UINTN FunctionAddress + ) +{ + ExitContext.X64->Rsp = ExitContext.X64->Rbp; + ExitContext.X64->Rsp += 8; // the caller to the caller to __cyg_profile_func_enter + + FunctionExit (ExitContext, FunctionAddress, CallerAddress); +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParam.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParam.c new file mode 100644 index 0000000..ff3e5d7 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParam.c @@ -0,0 +1,171 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +/* + GCC calling convention: rdi/rsi/rdx/rcx/r8/r9 +*/ + +VOID +EFIAPI +SetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN RetVal + ) +{ + ExitContext.X64->Rax = RetVal; +} + +VOID +EFIAPI +SetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINT64 RetVal + ) +{ + SetReturnValue (ExitContext, RetVal); +} + +UINTN +EFIAPI +GetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return ExitContext.X64->Rax; +} + +UINT64 +EFIAPI +GetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return GetReturnValue (ExitContext); +} + +UINTN +EFIAPI +GetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.X64->Rsp != 0); + if (Index == 1) { + return EntryContext.X64->Rcx; + } else if (Index == 2) { + return EntryContext.X64->Rdx; + } else if (Index == 3) { + return EntryContext.X64->R8; + } else if (Index == 4) { + return EntryContext.X64->R9; + } else { + StackPointer = (UINTN *)(UINTN)(EntryContext.X64->Rsp); + return *(StackPointer + Index); + } +} + +UINT64 +EFIAPI +GetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + return GetParameterValue (EntryContext, Index); +} + +UINTN +EFIAPI +GetReturnParameterValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.X64->Rsp != 0); + + StackPointer = (UINTN *)(UINTN)(ExitContext.X64->Rsp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetReturnParameterValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + return GetReturnParameterValue (ExitContext, Index); +} + +VOID +EFIAPI +SetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINTN Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.X64->Rsp != 0); + if (Index == 1) { + EntryContext.X64->Rcx = Data; + } else if (Index == 2) { + EntryContext.X64->Rdx = Data; + } else if (Index == 3) { + EntryContext.X64->R8 = Data; + } else if (Index == 4) { + EntryContext.X64->R9 = Data; + } + if (EntryContext.X64->Rsp != (UINTN)-1) { + // Update both register and stack. + StackPointer = (UINTN *)(UINTN)(EntryContext.X64->Rsp); + *(StackPointer + Index) = Data; + } +} + +VOID +EFIAPI +SetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINT64 Data + ) +{ + SetParameterValue (EntryContext, Index, Data); +} + +VOID +EFIAPI +SetSkipReturnValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN RetVal + ) +{ + EntryContext.X64->Rax = RetVal; +} + +VOID +EFIAPI +SetSkipReturnValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINT64 RetVal + ) +{ + SetSkipReturnValue (EntryContext, RetVal); +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParamGcc.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParamGcc.c new file mode 100644 index 0000000..bcd59fc --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParamGcc.c @@ -0,0 +1,171 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +/* + GCC calling convention: rdi/rsi/rdx/rcx/r8/r9 +*/ + +VOID +EFIAPI +SetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN RetVal + ) +{ + ExitContext.X64->Rbx = RetVal; +} + +VOID +EFIAPI +SetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINT64 RetVal + ) +{ + SetReturnValue (ExitContext, RetVal); +} + +UINTN +EFIAPI +GetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return ExitContext.X64->Rbx; +} + +UINT64 +EFIAPI +GetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return GetReturnValue (ExitContext); +} + +UINTN +EFIAPI +GetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.X64->Rsp != 0); + if (Index == 1) { + return EntryContext.X64->Rcx; + } else if (Index == 2) { + return EntryContext.X64->Rdx; + } else if (Index == 3) { + return EntryContext.X64->R8; + } else if (Index == 4) { + return EntryContext.X64->R9; + } else { + StackPointer = (UINTN *)(UINTN)(EntryContext.X64->Rsp); + return *(StackPointer + Index); + } +} + +UINT64 +EFIAPI +GetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + return GetParameterValue (EntryContext, Index); +} + +UINTN +EFIAPI +GetReturnParameterValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.X64->Rsp != 0); + + StackPointer = (UINTN *)(UINTN)(ExitContext.X64->Rsp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetReturnParameterValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + return GetReturnParameterValue (ExitContext, Index); +} + +VOID +EFIAPI +SetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINTN Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.X64->Rsp != 0); + if (Index == 1) { + EntryContext.X64->Rcx = Data; + } else if (Index == 2) { + EntryContext.X64->Rdx = Data; + } else if (Index == 3) { + EntryContext.X64->R8 = Data; + } else if (Index == 4) { + EntryContext.X64->R9 = Data; + } + if (EntryContext.X64->Rsp != (UINTN)-1) { + // Update both register and stack. + StackPointer = (UINTN *)(UINTN)(EntryContext.X64->Rsp); + *(StackPointer + Index) = Data; + } +} + +VOID +EFIAPI +SetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINT64 Data + ) +{ + SetParameterValue (EntryContext, Index, Data); +} + +VOID +EFIAPI +SetSkipReturnValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN RetVal + ) +{ + // unsupported +} + +VOID +EFIAPI +SetSkipReturnValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINT64 RetVal + ) +{ + // unsupported +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParamMsvc.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParamMsvc.c new file mode 100644 index 0000000..ff3e5d7 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/FuncParamMsvc.c @@ -0,0 +1,171 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +/* + GCC calling convention: rdi/rsi/rdx/rcx/r8/r9 +*/ + +VOID +EFIAPI +SetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN RetVal + ) +{ + ExitContext.X64->Rax = RetVal; +} + +VOID +EFIAPI +SetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINT64 RetVal + ) +{ + SetReturnValue (ExitContext, RetVal); +} + +UINTN +EFIAPI +GetReturnValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return ExitContext.X64->Rax; +} + +UINT64 +EFIAPI +GetReturnValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext + ) +{ + return GetReturnValue (ExitContext); +} + +UINTN +EFIAPI +GetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.X64->Rsp != 0); + if (Index == 1) { + return EntryContext.X64->Rcx; + } else if (Index == 2) { + return EntryContext.X64->Rdx; + } else if (Index == 3) { + return EntryContext.X64->R8; + } else if (Index == 4) { + return EntryContext.X64->R9; + } else { + StackPointer = (UINTN *)(UINTN)(EntryContext.X64->Rsp); + return *(StackPointer + Index); + } +} + +UINT64 +EFIAPI +GetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index + ) +{ + return GetParameterValue (EntryContext, Index); +} + +UINTN +EFIAPI +GetReturnParameterValue ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + UINTN *StackPointer; + + ASSERT(ExitContext.X64->Rsp != 0); + + StackPointer = (UINTN *)(UINTN)(ExitContext.X64->Rsp); + return *(StackPointer + Index); +} + +UINT64 +EFIAPI +GetReturnParameterValue64 ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN Index + ) +{ + return GetReturnParameterValue (ExitContext, Index); +} + +VOID +EFIAPI +SetParameterValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINTN Data + ) +{ + UINTN *StackPointer; + + ASSERT(EntryContext.X64->Rsp != 0); + if (Index == 1) { + EntryContext.X64->Rcx = Data; + } else if (Index == 2) { + EntryContext.X64->Rdx = Data; + } else if (Index == 3) { + EntryContext.X64->R8 = Data; + } else if (Index == 4) { + EntryContext.X64->R9 = Data; + } + if (EntryContext.X64->Rsp != (UINTN)-1) { + // Update both register and stack. + StackPointer = (UINTN *)(UINTN)(EntryContext.X64->Rsp); + *(StackPointer + Index) = Data; + } +} + +VOID +EFIAPI +SetParameterValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN Index, + IN UINT64 Data + ) +{ + SetParameterValue (EntryContext, Index, Data); +} + +VOID +EFIAPI +SetSkipReturnValue ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN RetVal + ) +{ + EntryContext.X64->Rax = RetVal; +} + +VOID +EFIAPI +SetSkipReturnValue64 ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINT64 RetVal + ) +{ + SetSkipReturnValue (EntryContext, RetVal); +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/PEnterExit.nasm b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/PEnterExit.nasm new file mode 100644 index 0000000..a6f5be4 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/PEnterExit.nasm @@ -0,0 +1,346 @@ +;------------------------------------------------------------------------------ ; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +;------------------------------------------------------------------------------ + +extern ASM_PFX(Cpenter) +extern ASM_PFX(Cpexit) + +%define PARAM_COUNT 14 +%define RSVD_COUNT 16 + + SECTION .text + +; void _cdecl _penter( void ) +global ASM_PFX(_penter) +ASM_PFX(_penter): +;--------------- +; P1: Context +;--------------- +; P2: Ret Addr +;--------------- +; R8~R15 | +;--------------- +; RDI | +;--------------- +; RSI | +;--------------- +; RBP | +;--------------- +; RSP | +;--------------- +; RBX | +;--------------- +; RDX | +;--------------- +; RCX | +;--------------- +; RAX | +;--------------- +; RBP <- RBP +;--------------- +; Addr in FuncB +;--------------- +; RSVD +;--------------- +; Addr in FuncA +;--------------- +; Param +;--------------- + ; prolog - begin + push rbp + mov rbp, rsp + + push rax + push rcx + push rdx + push rbx + mov rax, rbp + add rax, 8 ; the caller to _penter + push rax ; original rsp + mov rax, [rbp] + push rax ; original rbp + push rsi + push rdi + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + ; prolog - end + + mov rcx, rsp ; rcx = context + mov rdx, [rbp + 8] ; rdx = return address + sub rsp, 0x20 + call ASM_PFX(Cpenter) + add rsp, 0x20 + + ; epilog - begin + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop rdi + pop rsi + add rsp, 8 ; skip rbp + add rsp, 8 ; skip rsp + pop rbx + pop rdx + pop rcx + + cmp rax, 0 + jz Exit + +; skip function + +;--------------- +; RAX | +;--------------- +; RBP <- RBP | +;--------------- +; Addr in FuncB | +;--------------- +; RAX +; RSVD RBP <- RBP +;--------------- +; Addr in FuncA | <- RSP +;--------------- +; Param +;--------------- + mov rax, [rbp - 8 * 5] + mov rsp, rax + mov rax, [rbp] + mov [rsp - 8], rax + mov rax, [rbp - 8] + mov [rsp - 0x10], rax + sub rsp, 0x10 + mov rbp, rsp + add rbp, 8 + + pop rax + mov rsp, rbp + pop rbp + ; epilog - end + ret + +Exit: + push rcx + push rdx + push rsi + push rdi + +; copy the param + +;--------------- +; RDI +;--------------- +; RSI +;--------------- +; RDX +;--------------- +; RCX +;--------------- +; RAX +;--------------- +; RBP <- RBP +;--------------- +; Addr in FuncB +;--------------- +; RSVD (8 * RSVD_COUNT) +;--------------- +; Addr in FuncA +;--------------- +; Param (8 * PARAM_COUNT) +;--------------- +; RDI | <- RSP +;--------------- +; RSI +;--------------- +; RDX +;--------------- +; RCX +;--------------- +; RAX +;--------------- +; RBP <- RBP +;--------------- +; Addr in FuncB +;--------------- +; RSVD (8 * RSVD_COUNT) +;--------------- +; Addr in FuncA +;--------------- +; Param +;--------------- + sub rsp, (8 * PARAM_COUNT + 8 * (8 + RSVD_COUNT)) + mov rsi, rsp + mov rdi, rsi + add rsi, (8 * PARAM_COUNT + 8 * (8 + RSVD_COUNT)) + mov rcx, (PARAM_COUNT + 8 + RSVD_COUNT) + rep movsq + sub rbp, (8 * PARAM_COUNT + 8 * (8 + RSVD_COUNT)) + + pop rdi + pop rsi + pop rdx + pop rcx + + pop rax + mov rsp, rbp + pop rbp + ; epilog - end + ret + +; void _cdecl _pexit( void ) +global ASM_PFX(_pexit) +ASM_PFX(_pexit): +;--------------- +; RBP <- RBP +;--------------- +; Addr in FuncB +;--------------- +; RSVD +;--------------- +; Addr in FuncA +;--------------- +; Param (8 * PARAM_COUNT) +;--------------- +; RDI +;--------------- +; RSI +;--------------- +; RDX +;--------------- +; RCX +;--------------- +; RAX +;--------------- +; RBP <- RBP +;--------------- +; Addr in FuncB +;--------------- +; RSVD +;--------------- +; Addr in FuncA +;--------------- +; Param +;--------------- + ; prolog - begin + push rbp + mov rbp, rsp + + push rax + push rcx + push rdx + push rbx + mov rax, rbp + add rax, 8 ; the caller to _pexit + push rax ; original rsp + mov rax, [rbp] + push rax ; original rbp + push rsi + push rdi + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + ; prolog - end + + mov rcx, rsp ; rcx = context + mov rdx, [rbp + 8 * (2 + RSVD_COUNT + PARAM_COUNT + 7)] ; rdx = return address + sub rsp, 0x20 + call ASM_PFX(Cpexit) + add rsp, 0x20 + + ; epilog - begin + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop rdi + pop rsi + add rsp, 8 ; skip rbp + add rsp, 8 ; skip rsp + pop rbx + pop rdx + pop rcx + +;--------------- +; RDI +;--------------- +; RSI +;--------------- +; RDX +;--------------- +; RCX +;--------------- +; RAX +;--------------- +; RBP <- RBP +;--------------- +; Addr in FuncB +;--------------- +; RSVD (8 * RSVD_COUNT) +;--------------- +; Addr in FuncA +;--------------- +; Param (8 * PARAM_COUNT) +;--------------- +; RDI +;--------------- +; RSI +;--------------- +; RDX +;--------------- +; RCX +;--------------- +; RAX +;--------------- +; RBP <- RBP +;--------------- +; Addr in FuncB +;--------------- +; RSVD (8 * RSVD_COUNT) +;--------------- +; Addr in FuncA +;--------------- +; Param +;--------------- + push rcx + push rdx + push rsi + push rdi + mov rsi, rsp + mov rdi, rsi + add rdi, (8 * PARAM_COUNT + 8 * (8 + RSVD_COUNT)) + mov rcx, (7) + rep movsq + add rbp, (8 * PARAM_COUNT + 8 * (8 + RSVD_COUNT)) + add rsp, (8 * PARAM_COUNT + 8 * (8 + RSVD_COUNT)) + + pop rdi + pop rsi + pop rdx + pop rcx + + pop rax + mov rsp, rbp + pop rbp + ; epilog - end + ret diff --git a/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/PEnterExitStub.c b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/PEnterExitStub.c new file mode 100644 index 0000000..9d9b414 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/InstrumentLib/X64/PEnterExitStub.c @@ -0,0 +1,134 @@ +/** @file + +Copyright (c) 2017, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovR9Template[] = {0x4C, 0x89, 0x4C, 0x24, 0x20}; // mov qword ptr [rsp+20h],r9 +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovR9dTemplate[] = {0x44, 0x89, 0x4C, 0x24, 0x20}; // mov dword ptr [rsp+20h],r9d +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovR9wTemplate[] = {0x66, 0x44, 0x89, 0x4C, 0x24, 0x20}; // mov word ptr [rsp+20h],r9w +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovR9bTemplate[] = {0x44, 0x88, 0x4C, 0x24, 0x20}; // mov byte ptr [rsp+20h],r9b + +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovR8Template[] = {0x4C, 0x89, 0x44, 0x24, 0x18}; // mov qword ptr [rsp+18h],r8 +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovR8dTemplate[] = {0x44, 0x89, 0x44, 0x24, 0x18}; // mov dword ptr [rsp+18h],r8d +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovR8wTemplate[] = {0x66, 0x44, 0x89, 0x44, 0x24, 0x18}; // mov word ptr [rsp+18h],r8w +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovR8bTemplate[] = {0x44, 0x88, 0x44, 0x24, 0x18}; // mov byte ptr [rsp+18h],r8b + +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovRdxTemplate[] = {0x48, 0x89, 0x54, 0x24, 0x10}; // mov qword ptr [rsp+10h],rdx +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovEdxTemplate[] = {0x89, 0x54, 0x24, 0x10}; // mov dword ptr [rsp+10h],edx +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovDxTemplate[] = {0x66, 0x89, 0x54, 0x24, 0x10}; // mov word ptr [rsp+10h],dx +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovDlTemplate[] = {0x88, 0x54, 0x24, 0x10}; // mov byte ptr [rsp+10h],dl + +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovRcxTemplate[] = {0x48, 0x89, 0x4C, 0x24, 0x08}; // mov qword ptr [rsp+8],rcx +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovEcxTemplate[] = {0x89, 0x4C, 0x24, 0x08}; // mov dword ptr [rsp+8],ecx +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovCxTemplate[] = {0x66, 0x89, 0x4C, 0x24, 0x08}; // mov word ptr [rsp+8],cx +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mMovClTemplate[] = {0x88, 0x4C, 0x24, 0x08}; // mov byte ptr [rsp+8],cl + +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mSubRspTemplate[] = {0x48, 0x83, 0xEC, 0x00}; // sub rsp,28h +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mAddRspTemplate[] = {0x48, 0x83, 0xC4, 0x00}; // add rsp,28h + +typedef struct { + UINT8 *Instruction; + UINTN InstructionLength; +} INSTRUCTION_TEMPLATE; + +GLOBAL_REMOVE_IF_UNREFERENCED INSTRUCTION_TEMPLATE mInstructionTemplate[] = { + // 1st group + {mMovRcxTemplate, sizeof(mMovRcxTemplate)}, + {mMovEcxTemplate, sizeof(mMovEcxTemplate)}, + {mMovCxTemplate, sizeof(mMovCxTemplate)}, + {mMovClTemplate, sizeof(mMovClTemplate)}, + + // 2nd group + {mMovRdxTemplate, sizeof(mMovRdxTemplate)}, + {mMovEdxTemplate, sizeof(mMovEdxTemplate)}, + {mMovDxTemplate, sizeof(mMovDxTemplate)}, + {mMovDlTemplate, sizeof(mMovDlTemplate)}, + + // 3rd group + {mMovR8Template, sizeof(mMovR8Template)}, + {mMovR8dTemplate, sizeof(mMovR8dTemplate)}, + {mMovR8wTemplate, sizeof(mMovR8wTemplate)}, + {mMovR8bTemplate, sizeof(mMovR8bTemplate)}, + + // 4th group + {mMovR9Template, sizeof(mMovR9Template)}, + {mMovR9dTemplate, sizeof(mMovR9dTemplate)}, + {mMovR9wTemplate, sizeof(mMovR9wTemplate)}, + {mMovR9bTemplate, sizeof(mMovR9bTemplate)}, +}; + +UINTN +GetFunctionAddress ( + IN OUT UINTN *Rsp, + IN UINTN ReturnAddress + ) +{ + UINTN FunctionAddress; + UINTN Index; + + FunctionAddress = (ReturnAddress - 5); + if (CompareMem ( + (UINT8 *)FunctionAddress - sizeof(mSubRspTemplate), + mSubRspTemplate, + sizeof(mSubRspTemplate) - sizeof(UINT8)) == 0) { + *Rsp += *(UINT8 *)(FunctionAddress - sizeof(UINT8)); + FunctionAddress -= sizeof(mSubRspTemplate); + } + + for (Index = 0; Index < ARRAY_SIZE(mInstructionTemplate); Index++) { + if (CompareMem ( + (UINT8 *)FunctionAddress - mInstructionTemplate[Index].InstructionLength, + mInstructionTemplate[Index].Instruction, + mInstructionTemplate[Index].InstructionLength) == 0) { + FunctionAddress -= mInstructionTemplate[Index].InstructionLength; + } + } + + return FunctionAddress; +} + +UINTN +EFIAPI +Cpenter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN ReturnAddress + ) +{ + UINTN FunctionAddress; + UINTN CallerAddress; + + FunctionAddress = GetFunctionAddress (&EntryContext.X64->Rsp, ReturnAddress); + + EntryContext.X64->Rsp += 8; // the caller to the caller to _penter + + CallerAddress = *(UINTN *)(UINTN)(EntryContext.X64->Rsp); + + return FunctionEnter (EntryContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +Cpexit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN ReturnAddress + ) +{ + UINTN FunctionAddress; + UINTN CallerAddress; + + FunctionAddress = GetFunctionAddress (&ExitContext.X64->Rsp, ReturnAddress); + + ExitContext.X64->Rsp += 8; // the caller to the caller to _penter + + CallerAddress = *(UINTN *)(UINTN)(ExitContext.X64->Rsp); + + FunctionExit (ExitContext, FunctionAddress, CallerAddress); +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/BaseSynchronizationLibInternals.h b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/BaseSynchronizationLibInternals.h new file mode 100644 index 0000000..804455e --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/BaseSynchronizationLibInternals.h @@ -0,0 +1,108 @@ +/** @file + Declaration of internal functions in BaseSynchronizationLib. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __BASE_SYNCHRONIZATION_LIB_INTERNALS__ +#define __BASE_SYNCHRONIZATION_LIB_INTERNALS__ + +#include +#include +#include +#include +#include + +/** + Performs an atomic increment of an 32-bit unsigned integer. + + Performs an atomic increment of the 32-bit unsigned integer specified by + Value and returns the incremented value. The increment operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to increment. + + @return The incremented value. + +**/ +UINT32 +EFIAPI +InternalSyncIncrement ( + IN volatile UINT32 *Value + ); + + +/** + Performs an atomic decrement of an 32-bit unsigned integer. + + Performs an atomic decrement of the 32-bit unsigned integer specified by + Value and returns the decrement value. The decrement operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to decrement. + + @return The decrement value. + +**/ +UINT32 +EFIAPI +InternalSyncDecrement ( + IN volatile UINT32 *Value + ); + + +/** + Performs an atomic compare exchange operation on a 32-bit unsigned integer. + + Performs an atomic compare exchange operation on the 32-bit unsigned integer + specified by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue, + then Value is returned. The compare exchange operation must be performed using + MP safe mechanisms. + + @param Value A pointer to the 32-bit value for the compare exchange + operation. + @param CompareValue A 32-bit value used in compare operation. + @param ExchangeValue A 32-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT32 +EFIAPI +InternalSyncCompareExchange32 ( + IN volatile UINT32 *Value, + IN UINT32 CompareValue, + IN UINT32 ExchangeValue + ); + + +/** + Performs an atomic compare exchange operation on a 64-bit unsigned integer. + + Performs an atomic compare exchange operation on the 64-bit unsigned integer specified + by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and + CompareValue is returned. If Value is not equal to CompareValue, then Value is returned. + The compare exchange operation must be performed using MP safe mechanisms. + + @param Value A pointer to the 64-bit value for the compare exchange + operation. + @param CompareValue A 64-bit value used in compare operation. + @param ExchangeValue A 64-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT64 +EFIAPI +InternalSyncCompareExchange64 ( + IN volatile UINT64 *Value, + IN UINT64 CompareValue, + IN UINT64 ExchangeValue + ); + +#endif diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/GccInline.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/GccInline.c new file mode 100644 index 0000000..5529af6 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/GccInline.c @@ -0,0 +1,167 @@ +/** @file + GCC inline implementation of BaseSynchronizationLib processor specific functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + +/** + Performs an atomic increment of an 32-bit unsigned integer. + + Performs an atomic increment of the 32-bit unsigned integer specified by + Value and returns the incremented value. The increment operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to increment. + + @return The incremented value. + +**/ +UINT32 +EFIAPI +InternalSyncIncrement ( + IN volatile UINT32 *Value + ) +{ + UINT32 Result; + + __asm__ __volatile__ ( + "lock \n\t" + "incl %2 \n\t" + "movl %2, %%eax " + : "=a" (Result), // %0 + "=m" (*Value) // %1 + : "m" (*Value) // %2 + : "memory", + "cc" + ); + + return Result; + +} + + +/** + Performs an atomic decrement of an 32-bit unsigned integer. + + Performs an atomic decrement of the 32-bit unsigned integer specified by + Value and returns the decremented value. The decrement operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to decrement. + + @return The decremented value. + +**/ +UINT32 +EFIAPI +InternalSyncDecrement ( + IN volatile UINT32 *Value + ) +{ + UINT32 Result; + + __asm__ __volatile__ ( + "lock \n\t" + "decl %2 \n\t" + "movl %2, %%eax " + : "=a" (Result), // %0 + "=m" (*Value) // %1 + : "m" (*Value) // %2 + : "memory", + "cc" + ); + + return Result; +} + +/** + Performs an atomic compare exchange operation on a 32-bit unsigned integer. + + Performs an atomic compare exchange operation on the 32-bit unsigned integer + specified by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue, + then Value is returned. The compare exchange operation must be performed using + MP safe mechanisms. + + + @param Value A pointer to the 32-bit value for the compare exchange + operation. + @param CompareValue 32-bit value used in compare operation. + @param ExchangeValue 32-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT32 +EFIAPI +InternalSyncCompareExchange32 ( + IN OUT volatile UINT32 *Value, + IN UINT32 CompareValue, + IN UINT32 ExchangeValue + ) +{ + + __asm__ __volatile__ ( + " \n\t" + "lock \n\t" + "cmpxchgl %1, %2 \n\t" + : "=a" (CompareValue) // %0 + : "q" (ExchangeValue), // %1 + "m" (*Value), // %2 + "0" (CompareValue) // %4 + : "memory", + "cc" + ); + + return CompareValue; +} + +/** + Performs an atomic compare exchange operation on a 64-bit unsigned integer. + + Performs an atomic compare exchange operation on the 64-bit unsigned integer specified + by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and + CompareValue is returned. If Value is not equal to CompareValue, then Value is returned. + The compare exchange operation must be performed using MP safe mechanisms. + + + @param Value A pointer to the 64-bit value for the compare exchange + operation. + @param CompareValue 64-bit value used in compare operation. + @param ExchangeValue 64-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT64 +EFIAPI +InternalSyncCompareExchange64 ( + IN OUT volatile UINT64 *Value, + IN UINT64 CompareValue, + IN UINT64 ExchangeValue + ) +{ + __asm__ __volatile__ ( + " \n\t" + "push %%ebx \n\t" + "movl %2,%%ebx \n\t" + "lock \n\t" + "cmpxchg8b (%1) \n\t" + "pop %%ebx \n\t" + : "+A" (CompareValue) // %0 + : "S" (Value), // %1 + "r" ((UINT32) ExchangeValue), // %2 + "c" ((UINT32) (ExchangeValue >> 32)) // %3 + : "memory", + "cc" + ); + + return CompareValue; +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange32.asm b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange32.asm new file mode 100644 index 0000000..f2368ce --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange32.asm @@ -0,0 +1,39 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; InterlockedCompareExchange32.Asm +; +; Abstract: +; +; InterlockedCompareExchange32 function +; +; Notes: +; +;------------------------------------------------------------------------------ + + .486 + .model flat,C + .code + +;------------------------------------------------------------------------------ +; UINT32 +; EFIAPI +; InternalSyncCompareExchange32 ( +; IN volatile UINT32 *Value, +; IN UINT32 CompareValue, +; IN UINT32 ExchangeValue +; ); +;------------------------------------------------------------------------------ +InternalSyncCompareExchange32 PROC + mov ecx, [esp + 4] + mov eax, [esp + 8] + mov edx, [esp + 12] + lock cmpxchg [ecx], edx + ret +InternalSyncCompareExchange32 ENDP + + END diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange32.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange32.c new file mode 100644 index 0000000..5b7c207 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange32.c @@ -0,0 +1,44 @@ +/** @file + InterlockedCompareExchange32 function + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + + +/** + Performs an atomic compare exchange operation on a 32-bit unsigned integer. + + Performs an atomic compare exchange operation on the 32-bit unsigned integer + specified by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue, + then Value is returned. The compare exchange operation must be performed using + MP safe mechanisms. + + @param Value A pointer to the 32-bit value for the compare exchange + operation. + @param CompareValue 32-bit value used in compare operation. + @param ExchangeValue 32-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT32 +EFIAPI +InternalSyncCompareExchange32 ( + IN volatile UINT32 *Value, + IN UINT32 CompareValue, + IN UINT32 ExchangeValue + ) +{ + _asm { + mov ecx, Value + mov eax, CompareValue + mov edx, ExchangeValue + lock cmpxchg [ecx], edx + } +} + diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange64.asm b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange64.asm new file mode 100644 index 0000000..e2a1b85 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange64.asm @@ -0,0 +1,41 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; InterlockedCompareExchange64.Asm +; +; Abstract: +; +; InterlockedCompareExchange64 function +; +; Notes: +; +;------------------------------------------------------------------------------ + + .586P + .model flat,C + .code + +;------------------------------------------------------------------------------ +; UINT64 +; EFIAPI +; InternalSyncCompareExchange64 ( +; IN volatile UINT64 *Value, +; IN UINT64 CompareValue, +; IN UINT64 ExchangeValue +; ); +;------------------------------------------------------------------------------ +InternalSyncCompareExchange64 PROC USES esi ebx + mov esi, [esp + 12] + mov eax, [esp + 16] + mov edx, [esp + 20] + mov ebx, [esp + 24] + mov ecx, [esp + 28] + lock cmpxchg8b qword ptr [esi] + ret +InternalSyncCompareExchange64 ENDP + + END diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange64.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange64.c new file mode 100644 index 0000000..c9ea3ba --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedCompareExchange64.c @@ -0,0 +1,44 @@ +/** @file + InterlockedCompareExchange64 function + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + + +/** + Performs an atomic compare exchange operation on a 64-bit unsigned integer. + + Performs an atomic compare exchange operation on the 64-bit unsigned integer specified + by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and + CompareValue is returned. If Value is not equal to CompareValue, then Value is returned. + The compare exchange operation must be performed using MP safe mechanisms. + + @param Value A pointer to the 64-bit value for the compare exchange + operation. + @param CompareValue A 64-bit value used in a compare operation. + @param ExchangeValue A 64-bit value used in an exchange operation. + + @return The original *Value before exchange. + +**/ +UINT64 +EFIAPI +InternalSyncCompareExchange64 ( + IN volatile UINT64 *Value, + IN UINT64 CompareValue, + IN UINT64 ExchangeValue + ) +{ + _asm { + mov esi, Value + mov eax, dword ptr [CompareValue + 0] + mov edx, dword ptr [CompareValue + 4] + mov ebx, dword ptr [ExchangeValue + 0] + mov ecx, dword ptr [ExchangeValue + 4] + lock cmpxchg8b qword ptr [esi] + } +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedDecrement.asm b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedDecrement.asm new file mode 100644 index 0000000..15eff7d --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedDecrement.asm @@ -0,0 +1,36 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; InterlockedDecrement.Asm +; +; Abstract: +; +; InterlockedDecrement function +; +; Notes: +; +;------------------------------------------------------------------------------ + + .386 + .model flat,C + .code + +;------------------------------------------------------------------------------ +; UINT32 +; EFIAPI +; InternalSyncDecrement ( +; IN volatile UINT32 *Value +; ); +;------------------------------------------------------------------------------ +InternalSyncDecrement PROC + mov eax, [esp + 4] + lock dec dword ptr [eax] + mov eax, [eax] + ret +InternalSyncDecrement ENDP + + END diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedDecrement.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedDecrement.c new file mode 100644 index 0000000..916f54d --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedDecrement.c @@ -0,0 +1,36 @@ +/** @file + InterlockedDecrement function + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + + +/** + Performs an atomic decrement of an 32-bit unsigned integer. + + Performs an atomic decrement of the 32-bit unsigned integer specified by + Value and returns the decrement value. The decrement operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to decrement. + + @return The decrement value. + +**/ +UINT32 +EFIAPI +InternalSyncDecrement ( + IN volatile UINT32 *Value + ) +{ + _asm { + mov eax, Value + lock dec dword ptr [eax] + mov eax, [eax] + } +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedIncrement.asm b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedIncrement.asm new file mode 100644 index 0000000..f17f1ae --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedIncrement.asm @@ -0,0 +1,36 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; InterlockedIncrement.Asm +; +; Abstract: +; +; InterlockedIncrement function +; +; Notes: +; +;------------------------------------------------------------------------------ + + .386 + .model flat,C + .code + +;------------------------------------------------------------------------------ +; UINT32 +; EFIAPI +; InternalSyncIncrement ( +; IN volatile UINT32 *Value +; ); +;------------------------------------------------------------------------------ +InternalSyncIncrement PROC + mov eax, [esp + 4] + lock inc dword ptr [eax] + mov eax, [eax] + ret +InternalSyncIncrement ENDP + + END diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedIncrement.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedIncrement.c new file mode 100644 index 0000000..ec74a29 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Ia32/InterlockedIncrement.c @@ -0,0 +1,37 @@ +/** @file + InterLockedIncrement function + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + + +/** + Performs an atomic increment of an 32-bit unsigned integer. + + Performs an atomic increment of the 32-bit unsigned integer specified by + Value and returns the incremented value. The increment operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to increment. + + @return The incremented value. + +**/ +UINT32 +EFIAPI +InternalSyncIncrement ( + IN volatile UINT32 *Value + ) +{ + _asm { + mov eax, Value + lock inc dword ptr [eax] + mov eax, [eax] + } +} + diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SimpleSynchronizationLib.inf b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SimpleSynchronizationLib.inf new file mode 100644 index 0000000..06c17ee --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SimpleSynchronizationLib.inf @@ -0,0 +1,54 @@ +## @file +# Base Synchronization Library implementation. +# It does not use Stall function. +# +# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
+# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = SimpleSynchronizationLib + FILE_GUID = 787FD4EF-DAB5-49ca-BCBF-B2892C27FF7B + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = SynchronizationLib + +# +# VALID_ARCHITECTURES = IA32 X64 +# +[Sources] + BaseSynchronizationLibInternals.h + +[Sources.IA32] + Ia32/InterlockedCompareExchange64.c | MSFT + Ia32/InterlockedCompareExchange32.c | MSFT + Ia32/InterlockedDecrement.c | MSFT + Ia32/InterlockedIncrement.c | MSFT + SynchronizationMsc.c | MSFT + + Ia32/GccInline.c | GCC + SynchronizationGcc.c | GCC + +[Sources.X64] + X64/InterlockedCompareExchange64.c | MSFT + X64/InterlockedCompareExchange32.c | MSFT + + X64/InterlockedDecrement.c | MSFT + X64/InterlockedIncrement.c | MSFT + SynchronizationMsc.c | MSFT + + X64/GccInline.c | GCC + SynchronizationGcc.c | GCC + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + PcdLib + DebugLib + BaseMemoryLib diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Synchronization.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Synchronization.c new file mode 100644 index 0000000..0b49a46 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/Synchronization.c @@ -0,0 +1,326 @@ +/** @file + Implementation of synchronization functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "BaseSynchronizationLibInternals.h" + +#define SPIN_LOCK_RELEASED ((UINTN) 1) +#define SPIN_LOCK_ACQUIRED ((UINTN) 2) + +/** + Retrieves the architecture specific spin lock alignment requirements for + optimal spin lock performance. + + This function retrieves the spin lock alignment requirements for optimal + performance on a given CPU architecture. The spin lock alignment must be a + power of two and is returned by this function. If there are no alignment + requirements, then 1 must be returned. The spin lock synchronization + functions must function correctly if the spin lock size and alignment values + returned by this function are not used at all. These values are hints to the + consumers of the spin lock synchronization functions to obtain optimal spin + lock performance. + + @return The architecture specific spin lock alignment. + +**/ +UINTN +EFIAPI +GetSpinLockProperties ( + VOID + ) +{ + return 32; +} + +/** + Initializes a spin lock to the released state and returns the spin lock. + + This function initializes the spin lock specified by SpinLock to the released + state, and returns SpinLock. Optimal performance can be achieved by calling + GetSpinLockProperties() to determine the size and alignment requirements for + SpinLock. + + If SpinLock is NULL, then ASSERT(). + + @param SpinLock A pointer to the spin lock to initialize to the released + state. + + @return SpinLock is in release state. + +**/ +SPIN_LOCK * +EFIAPI +InitializeSpinLock ( + OUT SPIN_LOCK *SpinLock + ) +{ + ASSERT (SpinLock != NULL); + *SpinLock = SPIN_LOCK_RELEASED; + return SpinLock; +} + +/** + Waits until a spin lock can be placed in the acquired state. + + This function checks the state of the spin lock specified by SpinLock. If + SpinLock is in the released state, then this function places SpinLock in the + acquired state and returns SpinLock. Otherwise, this function waits + indefinitely for the spin lock to be released, and then places it in the + acquired state and returns SpinLock. All state transitions of SpinLock must + be performed using MP safe mechanisms. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + If PcdSpinLockTimeout is not zero, and SpinLock is can not be acquired in + PcdSpinLockTimeout microseconds, then ASSERT(). + + @param SpinLock A pointer to the spin lock to place in the acquired state. + + @return SpinLock acquired the lock. + +**/ +SPIN_LOCK * +EFIAPI +AcquireSpinLock ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + while (!AcquireSpinLockOrFail (SpinLock)) { + CpuPause (); + } + return SpinLock; +} + +/** + Attempts to place a spin lock in the acquired state. + + This function checks the state of the spin lock specified by SpinLock. If + SpinLock is in the released state, then this function places SpinLock in the + acquired state and returns TRUE. Otherwise, FALSE is returned. All state + transitions of SpinLock must be performed using MP safe mechanisms. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + + @param SpinLock A pointer to the spin lock to place in the acquired state. + + @retval TRUE SpinLock was placed in the acquired state. + @retval FALSE SpinLock could not be acquired. + +**/ +BOOLEAN +EFIAPI +AcquireSpinLockOrFail ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + SPIN_LOCK LockValue; + + ASSERT (SpinLock != NULL); + + LockValue = *SpinLock; + ASSERT (SPIN_LOCK_ACQUIRED == LockValue || SPIN_LOCK_RELEASED == LockValue); + + return (BOOLEAN)( + InterlockedCompareExchangePointer ( + (VOID**)SpinLock, + (VOID*)SPIN_LOCK_RELEASED, + (VOID*)SPIN_LOCK_ACQUIRED + ) == (VOID*)SPIN_LOCK_RELEASED + ); +} + +/** + Releases a spin lock. + + This function places the spin lock specified by SpinLock in the release state + and returns SpinLock. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + + @param SpinLock A pointer to the spin lock to release. + + @return SpinLock released lock. + +**/ +SPIN_LOCK * +EFIAPI +ReleaseSpinLock ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + SPIN_LOCK LockValue; + + ASSERT (SpinLock != NULL); + + LockValue = *SpinLock; + ASSERT (SPIN_LOCK_ACQUIRED == LockValue || SPIN_LOCK_RELEASED == LockValue); + + *SpinLock = SPIN_LOCK_RELEASED; + return SpinLock; +} + +/** + Performs an atomic increment of an 32-bit unsigned integer. + + Performs an atomic increment of the 32-bit unsigned integer specified by + Value and returns the incremented value. The increment operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value to increment. + + @return The incremented value. + +**/ +UINT32 +EFIAPI +InterlockedIncrement ( + IN volatile UINT32 *Value + ) +{ + ASSERT (Value != NULL); + return InternalSyncIncrement (Value); +} + +/** + Performs an atomic decrement of an 32-bit unsigned integer. + + Performs an atomic decrement of the 32-bit unsigned integer specified by + Value and returns the decremented value. The decrement operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value to decrement. + + @return The decremented value. + +**/ +UINT32 +EFIAPI +InterlockedDecrement ( + IN volatile UINT32 *Value + ) +{ + ASSERT (Value != NULL); + return InternalSyncDecrement (Value); +} + +/** + Performs an atomic compare exchange operation on a 32-bit unsigned integer. + + Performs an atomic compare exchange operation on the 32-bit unsigned integer + specified by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue, + then Value is returned. The compare exchange operation must be performed using + MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value for the compare exchange + operation. + @param CompareValue 32-bit value used in compare operation. + @param ExchangeValue 32-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT32 +EFIAPI +InterlockedCompareExchange32 ( + IN OUT volatile UINT32 *Value, + IN UINT32 CompareValue, + IN UINT32 ExchangeValue + ) +{ + ASSERT (Value != NULL); + return InternalSyncCompareExchange32 (Value, CompareValue, ExchangeValue); +} + +/** + Performs an atomic compare exchange operation on a 64-bit unsigned integer. + + Performs an atomic compare exchange operation on the 64-bit unsigned integer specified + by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and + CompareValue is returned. If Value is not equal to CompareValue, then Value is returned. + The compare exchange operation must be performed using MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 64-bit value for the compare exchange + operation. + @param CompareValue 64-bit value used in compare operation. + @param ExchangeValue 64-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT64 +EFIAPI +InterlockedCompareExchange64 ( + IN OUT volatile UINT64 *Value, + IN UINT64 CompareValue, + IN UINT64 ExchangeValue + ) +{ + ASSERT (Value != NULL); + return InternalSyncCompareExchange64 (Value, CompareValue, ExchangeValue); +} + +/** + Performs an atomic compare exchange operation on a pointer value. + + Performs an atomic compare exchange operation on the pointer value specified + by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to + CompareValue, then Value is returned. The compare exchange operation must be + performed using MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the pointer value for the compare exchange + operation. + @param CompareValue Pointer value used in compare operation. + @param ExchangeValue Pointer value used in exchange operation. + + @return The original *Value before exchange. +**/ +VOID * +EFIAPI +InterlockedCompareExchangePointer ( + IN OUT VOID * volatile *Value, + IN VOID *CompareValue, + IN VOID *ExchangeValue + ) +{ + UINT8 SizeOfValue; + + SizeOfValue = sizeof (*Value); + + switch (SizeOfValue) { + case sizeof (UINT32): + return (VOID*)(UINTN)InterlockedCompareExchange32 ( + (volatile UINT32 *)Value, + (UINT32)(UINTN)CompareValue, + (UINT32)(UINTN)ExchangeValue + ); + case sizeof (UINT64): + return (VOID*)(UINTN)InterlockedCompareExchange64 ( + (volatile UINT64 *)Value, + (UINT64)(UINTN)CompareValue, + (UINT64)(UINTN)ExchangeValue + ); + default: + ASSERT (FALSE); + return NULL; + } +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SynchronizationGcc.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SynchronizationGcc.c new file mode 100644 index 0000000..1025a7f --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SynchronizationGcc.c @@ -0,0 +1,342 @@ +/** @file + Implementation of synchronization functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "BaseSynchronizationLibInternals.h" + +// +// GCC inline assembly for Read Write Barrier +// +#define _ReadWriteBarrier() do { __asm__ __volatile__ ("": : : "memory"); } while(0) + +#define SPIN_LOCK_RELEASED ((UINTN) 1) +#define SPIN_LOCK_ACQUIRED ((UINTN) 2) + +/** + Retrieves the architecture specific spin lock alignment requirements for + optimal spin lock performance. + + This function retrieves the spin lock alignment requirements for optimal + performance on a given CPU architecture. The spin lock alignment must be a + power of two and is returned by this function. If there are no alignment + requirements, then 1 must be returned. The spin lock synchronization + functions must function correctly if the spin lock size and alignment values + returned by this function are not used at all. These values are hints to the + consumers of the spin lock synchronization functions to obtain optimal spin + lock performance. + + @return The architecture specific spin lock alignment. + +**/ +UINTN +EFIAPI +GetSpinLockProperties ( + VOID + ) +{ + return 32; +} + +/** + Initializes a spin lock to the released state and returns the spin lock. + + This function initializes the spin lock specified by SpinLock to the released + state, and returns SpinLock. Optimal performance can be achieved by calling + GetSpinLockProperties() to determine the size and alignment requirements for + SpinLock. + + If SpinLock is NULL, then ASSERT(). + + @param SpinLock A pointer to the spin lock to initialize to the released + state. + + @return SpinLock is in release state. + +**/ +SPIN_LOCK * +EFIAPI +InitializeSpinLock ( + OUT SPIN_LOCK *SpinLock + ) +{ + ASSERT (SpinLock != NULL); + + _ReadWriteBarrier(); + *SpinLock = SPIN_LOCK_RELEASED; + _ReadWriteBarrier(); + + return SpinLock; +} + +/** + Waits until a spin lock can be placed in the acquired state. + + This function checks the state of the spin lock specified by SpinLock. If + SpinLock is in the released state, then this function places SpinLock in the + acquired state and returns SpinLock. Otherwise, this function waits + indefinitely for the spin lock to be released, and then places it in the + acquired state and returns SpinLock. All state transitions of SpinLock must + be performed using MP safe mechanisms. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + If PcdSpinLockTimeout is not zero, and SpinLock is can not be acquired in + PcdSpinLockTimeout microseconds, then ASSERT(). + + @param SpinLock A pointer to the spin lock to place in the acquired state. + + @return SpinLock acquired the lock. + +**/ +SPIN_LOCK * +EFIAPI +AcquireSpinLock ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + while (!AcquireSpinLockOrFail (SpinLock)) { + CpuPause (); + } + return SpinLock; +} + +/** + Attempts to place a spin lock in the acquired state. + + This function checks the state of the spin lock specified by SpinLock. If + SpinLock is in the released state, then this function places SpinLock in the + acquired state and returns TRUE. Otherwise, FALSE is returned. All state + transitions of SpinLock must be performed using MP safe mechanisms. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + + @param SpinLock A pointer to the spin lock to place in the acquired state. + + @retval TRUE SpinLock was placed in the acquired state. + @retval FALSE SpinLock could not be acquired. + +**/ +BOOLEAN +EFIAPI +AcquireSpinLockOrFail ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + SPIN_LOCK LockValue; + VOID *Result; + + ASSERT (SpinLock != NULL); + + LockValue = *SpinLock; + ASSERT (LockValue == SPIN_LOCK_ACQUIRED || LockValue == SPIN_LOCK_RELEASED); + + _ReadWriteBarrier (); + Result = InterlockedCompareExchangePointer ( + (VOID**)SpinLock, + (VOID*)SPIN_LOCK_RELEASED, + (VOID*)SPIN_LOCK_ACQUIRED + ); + + _ReadWriteBarrier (); + return (BOOLEAN) (Result == (VOID*) SPIN_LOCK_RELEASED); +} + +/** + Releases a spin lock. + + This function places the spin lock specified by SpinLock in the release state + and returns SpinLock. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + + @param SpinLock A pointer to the spin lock to release. + + @return SpinLock released the lock. + +**/ +SPIN_LOCK * +EFIAPI +ReleaseSpinLock ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + SPIN_LOCK LockValue; + + ASSERT (SpinLock != NULL); + + LockValue = *SpinLock; + ASSERT (LockValue == SPIN_LOCK_ACQUIRED || LockValue == SPIN_LOCK_RELEASED); + + _ReadWriteBarrier (); + *SpinLock = SPIN_LOCK_RELEASED; + _ReadWriteBarrier (); + + return SpinLock; +} + +/** + Performs an atomic increment of an 32-bit unsigned integer. + + Performs an atomic increment of the 32-bit unsigned integer specified by + Value and returns the incremented value. The increment operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value to increment. + + @return The incremented value. + +**/ +UINT32 +EFIAPI +InterlockedIncrement ( + IN volatile UINT32 *Value + ) +{ + ASSERT (Value != NULL); + return InternalSyncIncrement (Value); +} + +/** + Performs an atomic decrement of an 32-bit unsigned integer. + + Performs an atomic decrement of the 32-bit unsigned integer specified by + Value and returns the decremented value. The decrement operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value to decrement. + + @return The decremented value. + +**/ +UINT32 +EFIAPI +InterlockedDecrement ( + IN volatile UINT32 *Value + ) +{ + ASSERT (Value != NULL); + return InternalSyncDecrement (Value); +} + +/** + Performs an atomic compare exchange operation on a 32-bit unsigned integer. + + Performs an atomic compare exchange operation on the 32-bit unsigned integer + specified by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue, + then Value is returned. The compare exchange operation must be performed using + MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value for the compare exchange + operation. + @param CompareValue A 32-bit value used in compare operation. + @param ExchangeValue A 32-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT32 +EFIAPI +InterlockedCompareExchange32 ( + IN OUT volatile UINT32 *Value, + IN UINT32 CompareValue, + IN UINT32 ExchangeValue + ) +{ + ASSERT (Value != NULL); + return InternalSyncCompareExchange32 (Value, CompareValue, ExchangeValue); +} + +/** + Performs an atomic compare exchange operation on a 64-bit unsigned integer. + + Performs an atomic compare exchange operation on the 64-bit unsigned integer specified + by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and + CompareValue is returned. If Value is not equal to CompareValue, then Value is returned. + The compare exchange operation must be performed using MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 64-bit value for the compare exchange + operation. + @param CompareValue A 64-bit value used in a compare operation. + @param ExchangeValue A 64-bit value used in an exchange operation. + + @return The original *Value before exchange. + +**/ +UINT64 +EFIAPI +InterlockedCompareExchange64 ( + IN OUT volatile UINT64 *Value, + IN UINT64 CompareValue, + IN UINT64 ExchangeValue + ) +{ + ASSERT (Value != NULL); + return InternalSyncCompareExchange64 (Value, CompareValue, ExchangeValue); +} + +/** + Performs an atomic compare exchange operation on a pointer value. + + Performs an atomic compare exchange operation on the pointer value specified + by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to + CompareValue, then Value is returned. The compare exchange operation must be + performed using MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the pointer value for the compare exchange + operation. + @param CompareValue A pointer value used in a compare operation. + @param ExchangeValue A pointer value used in an exchange operation. + + @return The original *Value before exchange. +**/ +VOID * +EFIAPI +InterlockedCompareExchangePointer ( + IN OUT VOID * volatile *Value, + IN VOID *CompareValue, + IN VOID *ExchangeValue + ) +{ + UINT8 SizeOfValue; + + SizeOfValue = sizeof (*Value); + + switch (SizeOfValue) { + case sizeof (UINT32): + return (VOID*)(UINTN)InterlockedCompareExchange32 ( + (volatile UINT32 *)Value, + (UINT32)(UINTN)CompareValue, + (UINT32)(UINTN)ExchangeValue + ); + case sizeof (UINT64): + return (VOID*)(UINTN)InterlockedCompareExchange64 ( + (volatile UINT64 *)Value, + (UINT64)(UINTN)CompareValue, + (UINT64)(UINTN)ExchangeValue + ); + default: + ASSERT (FALSE); + return NULL; + } +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SynchronizationMsc.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SynchronizationMsc.c new file mode 100644 index 0000000..14834c0 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SynchronizationMsc.c @@ -0,0 +1,353 @@ +/** @file + Implementation of synchronization functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "BaseSynchronizationLibInternals.h" + +/** + Microsoft Visual Studio 7.1 Function Prototypes for read write barrier Intrinsics. +**/ + +void _ReadWriteBarrier (void); +#pragma intrinsic(_ReadWriteBarrier) + + +#define SPIN_LOCK_RELEASED ((UINTN) 1) +#define SPIN_LOCK_ACQUIRED ((UINTN) 2) + +/** + Retrieves the architecture specific spin lock alignment requirements for + optimal spin lock performance. + + This function retrieves the spin lock alignment requirements for optimal + performance on a given CPU architecture. The spin lock alignment must be a + power of two and is returned by this function. If there are no alignment + requirements, then 1 must be returned. The spin lock synchronization + functions must function correctly if the spin lock size and alignment values + returned by this function are not used at all. These values are hints to the + consumers of the spin lock synchronization functions to obtain optimal spin + lock performance. + + @return The architecture specific spin lock alignment. + +**/ +UINTN +EFIAPI +GetSpinLockProperties ( + VOID + ) +{ + return 32; +} + +/** + Initializes a spin lock to the released state and returns the spin lock. + + This function initializes the spin lock specified by SpinLock to the released + state, and returns SpinLock. Optimal performance can be achieved by calling + GetSpinLockProperties() to determine the size and alignment requirements for + SpinLock. + + If SpinLock is NULL, then ASSERT(). + + @param SpinLock A pointer to the spin lock to initialize to the released + state. + + @return SpinLock is in release state. + +**/ +SPIN_LOCK * +EFIAPI +InitializeSpinLock ( + OUT SPIN_LOCK *SpinLock + ) +{ + ASSERT (SpinLock != NULL); + if (SpinLock == NULL) { + return NULL; + } + + _ReadWriteBarrier(); + *SpinLock = SPIN_LOCK_RELEASED; + _ReadWriteBarrier(); + + return SpinLock; +} + +/** + Waits until a spin lock can be placed in the acquired state. + + This function checks the state of the spin lock specified by SpinLock. If + SpinLock is in the released state, then this function places SpinLock in the + acquired state and returns SpinLock. Otherwise, this function waits + indefinitely for the spin lock to be released, and then places it in the + acquired state and returns SpinLock. All state transitions of SpinLock must + be performed using MP safe mechanisms. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + If PcdSpinLockTimeout is not zero, and SpinLock is can not be acquired in + PcdSpinLockTimeout microseconds, then ASSERT(). + + @param SpinLock A pointer to the spin lock to place in the acquired state. + + @return SpinLock acquired the lock. + +**/ +SPIN_LOCK * +EFIAPI +AcquireSpinLock ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + while (!AcquireSpinLockOrFail (SpinLock)) { + CpuPause (); + } + return SpinLock; +} + +/** + Attempts to place a spin lock in the acquired state. + + This function checks the state of the spin lock specified by SpinLock. If + SpinLock is in the released state, then this function places SpinLock in the + acquired state and returns TRUE. Otherwise, FALSE is returned. All state + transitions of SpinLock must be performed using MP safe mechanisms. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + + @param SpinLock A pointer to the spin lock to place in the acquired state. + + @retval TRUE SpinLock was placed in the acquired state. + @retval FALSE SpinLock could not be acquired. + +**/ +BOOLEAN +EFIAPI +AcquireSpinLockOrFail ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + SPIN_LOCK LockValue; + VOID *Result; + + ASSERT (SpinLock != NULL); + if (SpinLock == NULL) { + return FALSE; + } + + LockValue = *SpinLock; + ASSERT (LockValue == SPIN_LOCK_ACQUIRED || LockValue == SPIN_LOCK_RELEASED); + + _ReadWriteBarrier (); + Result = InterlockedCompareExchangePointer ( + (VOID**)SpinLock, + (VOID*)SPIN_LOCK_RELEASED, + (VOID*)SPIN_LOCK_ACQUIRED + ); + + _ReadWriteBarrier (); + return (BOOLEAN) (Result == (VOID*) SPIN_LOCK_RELEASED); +} + +/** + Releases a spin lock. + + This function places the spin lock specified by SpinLock in the release state + and returns SpinLock. + + If SpinLock is NULL, then ASSERT(). + If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). + + @param SpinLock A pointer to the spin lock to release. + + @return SpinLock released the lock. + +**/ +SPIN_LOCK * +EFIAPI +ReleaseSpinLock ( + IN OUT SPIN_LOCK *SpinLock + ) +{ + SPIN_LOCK LockValue; + + ASSERT (SpinLock != NULL); + if (SpinLock == NULL) { + return NULL; + } + + LockValue = *SpinLock; + ASSERT (LockValue == SPIN_LOCK_ACQUIRED || LockValue == SPIN_LOCK_RELEASED); + + _ReadWriteBarrier (); + *SpinLock = SPIN_LOCK_RELEASED; + _ReadWriteBarrier (); + + return SpinLock; +} + +/** + Performs an atomic increment of an 32-bit unsigned integer. + + Performs an atomic increment of the 32-bit unsigned integer specified by + Value and returns the incremented value. The increment operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value to increment. + + @return The incremented value. + +**/ +UINT32 +EFIAPI +InterlockedIncrement ( + IN volatile UINT32 *Value + ) +{ + ASSERT (Value != NULL); + return InternalSyncIncrement (Value); +} + +/** + Performs an atomic decrement of an 32-bit unsigned integer. + + Performs an atomic decrement of the 32-bit unsigned integer specified by + Value and returns the decremented value. The decrement operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value to decrement. + + @return The decremented value. + +**/ +UINT32 +EFIAPI +InterlockedDecrement ( + IN volatile UINT32 *Value + ) +{ + ASSERT (Value != NULL); + return InternalSyncDecrement (Value); +} + +/** + Performs an atomic compare exchange operation on a 32-bit unsigned integer. + + Performs an atomic compare exchange operation on the 32-bit unsigned integer + specified by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue, + then Value is returned. The compare exchange operation must be performed using + MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 32-bit value for the compare exchange + operation. + @param CompareValue A 32-bit value used in a compare operation. + @param ExchangeValue A 32-bit value used in an exchange operation. + + @return The original *Value before exchange. + +**/ +UINT32 +EFIAPI +InterlockedCompareExchange32 ( + IN OUT volatile UINT32 *Value, + IN UINT32 CompareValue, + IN UINT32 ExchangeValue + ) +{ + ASSERT (Value != NULL); + return InternalSyncCompareExchange32 (Value, CompareValue, ExchangeValue); +} + +/** + Performs an atomic compare exchange operation on a 64-bit unsigned integer. + + Performs an atomic compare exchange operation on the 64-bit unsigned integer specified + by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and + CompareValue is returned. If Value is not equal to CompareValue, then Value is returned. + The compare exchange operation must be performed using MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the 64-bit value for the compare exchange + operation. + @param CompareValue A 64-bit value used in a compare operation. + @param ExchangeValue A 64-bit value used in an exchange operation. + + @return The original *Value before exchange. + +**/ +UINT64 +EFIAPI +InterlockedCompareExchange64 ( + IN OUT volatile UINT64 *Value, + IN UINT64 CompareValue, + IN UINT64 ExchangeValue + ) +{ + ASSERT (Value != NULL); + return InternalSyncCompareExchange64 (Value, CompareValue, ExchangeValue); +} + +/** + Performs an atomic compare exchange operation on a pointer value. + + Performs an atomic compare exchange operation on the pointer value specified + by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to + CompareValue, then Value is returned. The compare exchange operation must be + performed using MP safe mechanisms. + + If Value is NULL, then ASSERT(). + + @param Value A pointer to the pointer value for the compare exchange + operation. + @param CompareValue A pointer value used in a compare operation. + @param ExchangeValue A pointer value used in an exchange operation. + + @return The original *Value before exchange. +**/ +VOID * +EFIAPI +InterlockedCompareExchangePointer ( + IN OUT VOID * volatile *Value, + IN VOID *CompareValue, + IN VOID *ExchangeValue + ) +{ + UINT8 SizeOfValue; + + SizeOfValue = (UINT8) sizeof (*Value); + + switch (SizeOfValue) { + case sizeof (UINT32): + return (VOID*)(UINTN)InterlockedCompareExchange32 ( + (volatile UINT32*)Value, + (UINT32)(UINTN)CompareValue, + (UINT32)(UINTN)ExchangeValue + ); + case sizeof (UINT64): + return (VOID*)(UINTN)InterlockedCompareExchange64 ( + (volatile UINT64*)Value, + (UINT64)(UINTN)CompareValue, + (UINT64)(UINTN)ExchangeValue + ); + default: + ASSERT (FALSE); + return NULL; + } +} diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/GccInline.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/GccInline.c new file mode 100644 index 0000000..862cb47 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/GccInline.c @@ -0,0 +1,170 @@ +/** @file + GCC inline implementation of BaseSynchronizationLib processor specific functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + + +/** + Performs an atomic increment of an 32-bit unsigned integer. + + Performs an atomic increment of the 32-bit unsigned integer specified by + Value and returns the incremented value. The increment operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to increment. + + @return The incremented value. + +**/ +UINT32 +EFIAPI +InternalSyncIncrement ( + IN volatile UINT32 *Value + ) +{ + UINT32 Result; + + __asm__ __volatile__ ( + "lock \n\t" + "incl %2 \n\t" + "mov %2, %%eax " + : "=a" (Result), // %0 + "=m" (*Value) // %1 + : "m" (*Value) // %2 + : "memory", + "cc" + ); + + return Result; +} + + +/** + Performs an atomic decrement of an 32-bit unsigned integer. + + Performs an atomic decrement of the 32-bit unsigned integer specified by + Value and returns the decremented value. The decrement operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to decrement. + + @return The decremented value. + +**/ +UINT32 +EFIAPI +InternalSyncDecrement ( + IN volatile UINT32 *Value + ) +{ + UINT32 Result; + + __asm__ __volatile__ ( + "lock \n\t" + "decl %2 \n\t" + "mov %2, %%eax " + : "=a" (Result), // %0 + "=m" (*Value) // %1 + : "m" (*Value) // %2 + : "memory", + "cc" + ); + + return Result; +} + + +/** + Performs an atomic compare exchange operation on a 32-bit unsigned integer. + + Performs an atomic compare exchange operation on the 32-bit unsigned integer + specified by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue, + then Value is returned. The compare exchange operation must be performed using + MP safe mechanisms. + + + @param Value A pointer to the 32-bit value for the compare exchange + operation. + @param CompareValue 32-bit value used in compare operation. + @param ExchangeValue 32-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT32 +EFIAPI +InternalSyncCompareExchange32 ( + IN OUT volatile UINT32 *Value, + IN UINT32 CompareValue, + IN UINT32 ExchangeValue + ) +{ + + + __asm__ __volatile__ ( + "lock \n\t" + "cmpxchgl %3, %1 " + : "=a" (CompareValue), // %0 + "=m" (*Value) // %1 + : "a" (CompareValue), // %2 + "r" (ExchangeValue), // %3 + "m" (*Value) + : "memory", + "cc" + ); + + return CompareValue; +} + + +/** + Performs an atomic compare exchange operation on a 64-bit unsigned integer. + + Performs an atomic compare exchange operation on the 64-bit unsigned integer specified + by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and + CompareValue is returned. If Value is not equal to CompareValue, then Value is returned. + The compare exchange operation must be performed using MP safe mechanisms. + + + @param Value A pointer to the 64-bit value for the compare exchange + operation. + @param CompareValue 64-bit value used in compare operation. + @param ExchangeValue 64-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT64 +EFIAPI +InternalSyncCompareExchange64 ( + IN OUT volatile UINT64 *Value, + IN UINT64 CompareValue, + IN UINT64 ExchangeValue + ) +{ + + __asm__ __volatile__ ( + "lock \n\t" + "cmpxchgq %3, %1 " + : "=a" (CompareValue), // %0 + "=m" (*Value) // %1 + : "a" (CompareValue), // %2 + "r" (ExchangeValue), // %3 + "m" (*Value) + : "memory", + "cc" + ); + + return CompareValue; +} + + diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange32.asm b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange32.asm new file mode 100644 index 0000000..185ae8d --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange32.asm @@ -0,0 +1,35 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; InterlockedCompareExchange32.Asm +; +; Abstract: +; +; InterlockedCompareExchange32 function +; +; Notes: +; +;------------------------------------------------------------------------------ + + .code + +;------------------------------------------------------------------------------ +; UINT32 +; EFIAPI +; InternalSyncCompareExchange32 ( +; IN volatile UINT32 *Value, +; IN UINT32 CompareValue, +; IN UINT32 ExchangeValue +; ); +;------------------------------------------------------------------------------ +InternalSyncCompareExchange32 PROC + mov eax, edx + lock cmpxchg [rcx], r8d + ret +InternalSyncCompareExchange32 ENDP + + END diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange32.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange32.c new file mode 100644 index 0000000..2238aa2 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange32.c @@ -0,0 +1,48 @@ +/** @file + InterlockedCompareExchange32 function + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +/** + Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. +**/ + +long _InterlockedCompareExchange( + long volatile * Destination, + long Exchange, + long Comperand +); + +#pragma intrinsic(_InterlockedCompareExchange) + +/** + Performs an atomic compare exchange operation on a 32-bit unsigned integer. + + Performs an atomic compare exchange operation on the 32-bit unsigned integer + specified by Value. If Value is equal to CompareValue, then Value is set to + ExchangeValue and CompareValue is returned. If Value is not equal to CompareValue, + then Value is returned. The compare exchange operation must be performed using + MP safe mechanisms. + + @param Value A pointer to the 32-bit value for the compare exchange + operation. + @param CompareValue 32-bit value used in compare operation. + @param ExchangeValue 32-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT32 +EFIAPI +InternalSyncCompareExchange32 ( + IN volatile UINT32 *Value, + IN UINT32 CompareValue, + IN UINT32 ExchangeValue + ) +{ + return _InterlockedCompareExchange (Value, ExchangeValue, CompareValue); +} + diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange64.asm b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange64.asm new file mode 100644 index 0000000..0658212 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange64.asm @@ -0,0 +1,35 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; InterlockedCompareExchange64.Asm +; +; Abstract: +; +; InterlockedCompareExchange64 function +; +; Notes: +; +;------------------------------------------------------------------------------ + + .code + +;------------------------------------------------------------------------------ +; UINT64 +; EFIAPI +; InternalSyncCompareExchange64 ( +; IN volatile UINT64 *Value, +; IN UINT64 CompareValue, +; IN UINT64 ExchangeValue +; ); +;------------------------------------------------------------------------------ +InternalSyncCompareExchange64 PROC + mov rax, rdx + lock cmpxchg [rcx], r8 + ret +InternalSyncCompareExchange64 ENDP + + END diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange64.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange64.c new file mode 100644 index 0000000..5a7eac9 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedCompareExchange64.c @@ -0,0 +1,47 @@ +/** @file + InterlockedCompareExchange64 function + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +/** + Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. +**/ + +__int64 _InterlockedCompareExchange64( + __int64 volatile * Destination, + __int64 Exchange, + __int64 Comperand +); + +#pragma intrinsic(_InterlockedCompareExchange64) + +/** + Performs an atomic compare exchange operation on a 64-bit unsigned integer. + + Performs an atomic compare exchange operation on the 64-bit unsigned integer specified + by Value. If Value is equal to CompareValue, then Value is set to ExchangeValue and + CompareValue is returned. If Value is not equal to CompareValue, then Value is returned. + The compare exchange operation must be performed using MP safe mechanisms. + + @param Value A pointer to the 64-bit value for the compare exchange + operation. + @param CompareValue 64-bit value used in compare operation. + @param ExchangeValue 64-bit value used in exchange operation. + + @return The original *Value before exchange. + +**/ +UINT64 +EFIAPI +InternalSyncCompareExchange64 ( + IN volatile UINT64 *Value, + IN UINT64 CompareValue, + IN UINT64 ExchangeValue + ) +{ + return _InterlockedCompareExchange64 (Value, ExchangeValue, CompareValue); +} + diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedDecrement.asm b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedDecrement.asm new file mode 100644 index 0000000..3f7ea3f --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedDecrement.asm @@ -0,0 +1,33 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; InterlockedDecrement.Asm +; +; Abstract: +; +; InterlockedDecrement function +; +; Notes: +; +;------------------------------------------------------------------------------ + + .code + +;------------------------------------------------------------------------------ +; UINT32 +; EFIAPI +; InternalSyncDecrement ( +; IN volatile UINT32 *Value +; ); +;------------------------------------------------------------------------------ +InternalSyncDecrement PROC + lock dec dword ptr [rcx] + mov eax, [rcx] + ret +InternalSyncDecrement ENDP + + END diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedDecrement.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedDecrement.c new file mode 100644 index 0000000..94d344c --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedDecrement.c @@ -0,0 +1,40 @@ +/** @file + InterlockedDecrement function + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +/** + Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. +**/ + +long _InterlockedDecrement( + long * lpAddend +); + +#pragma intrinsic(_InterlockedDecrement) + +/** + Performs an atomic decrement of an 32-bit unsigned integer. + + Performs an atomic decrement of the 32-bit unsigned integer specified by + Value and returns the decrement value. The decrement operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to decrement. + + @return The decrement value. + +**/ +UINT32 +EFIAPI +InternalSyncDecrement ( + IN volatile UINT32 *Value + ) +{ + return _InterlockedDecrement ((long *)(UINTN)(Value)); +} + diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedIncrement.asm b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedIncrement.asm new file mode 100644 index 0000000..ed29655 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedIncrement.asm @@ -0,0 +1,33 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; InterlockedIncrement.Asm +; +; Abstract: +; +; InterlockedIncrement function +; +; Notes: +; +;------------------------------------------------------------------------------ + + .code + +;------------------------------------------------------------------------------ +; UINT32 +; EFIAPI +; InternalSyncIncrement ( +; IN volatile UINT32 *Value +; ); +;------------------------------------------------------------------------------ +InternalSyncIncrement PROC + lock inc dword ptr [rcx] + mov eax, [rcx] + ret +InternalSyncIncrement ENDP + + END diff --git a/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedIncrement.c b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedIncrement.c new file mode 100644 index 0000000..bb5c718 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/X64/InterlockedIncrement.c @@ -0,0 +1,40 @@ +/** @file + InterLockedIncrement function + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +/** + Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. +**/ + +long _InterlockedIncrement( + long * lpAddend +); + +#pragma intrinsic(_InterlockedIncrement) + +/** + Performs an atomic increment of an 32-bit unsigned integer. + + Performs an atomic increment of the 32-bit unsigned integer specified by + Value and returns the incremented value. The increment operation must be + performed using MP safe mechanisms. The state of the return value is not + guaranteed to be MP safe. + + @param Value A pointer to the 32-bit value to increment. + + @return The incremented value. + +**/ +UINT32 +EFIAPI +InternalSyncIncrement ( + IN volatile UINT32 *Value + ) +{ + return _InterlockedIncrement ((long *)(UINTN)(Value)); +} + diff --git a/HBFA/UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec b/HBFA/UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec new file mode 100644 index 0000000..5251dda --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec @@ -0,0 +1,16 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION = 0x00010005 + PACKAGE_NAME = UefiInstrumentTestPkg + PACKAGE_GUID = DA14F9B4-A294-4171-91AC-C81E39D7153B + PACKAGE_VERSION = 0.11 + +[Includes] + Include \ No newline at end of file diff --git a/HBFA/UefiInstrumentTestPkg/UefiInstrumentTestPkg.dsc b/HBFA/UefiInstrumentTestPkg/UefiInstrumentTestPkg.dsc new file mode 100644 index 0000000..7dd6d99 --- /dev/null +++ b/HBFA/UefiInstrumentTestPkg/UefiInstrumentTestPkg.dsc @@ -0,0 +1,175 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = UefiInstrumentTestPkg + PLATFORM_GUID = D2C24BA7-0B1A-4C06-85CD-703226264AFF + PLATFORM_VERSION = 0.11 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/UefiInstrumentTestPkg + SUPPORTED_ARCHITECTURES = IA32|X64 + BUILD_TARGETS = DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER = DEFAULT + +[LibraryClasses] + # + # Entry point + # + UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf + # + # Basic + # + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf + CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf + SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf + PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf + PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf + CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf + PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf + PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf + PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf + + # + # PEI + # + PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf + PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + # + # UEFI & PI + # + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf + UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf + UefiLib|MdePkg/Library/UefiLib/UefiLib.inf + UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf + HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf + # + # Generic Modules + # + TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf + CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + # + # Misc + # + DebugLib|IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf + DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf + PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf + DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf + UefiDecompressLib|IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf + + # + # CPU + # + MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf + LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf + UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf + SmmLib|MdePkg/Library/SmmLibNull/SmmLibNull.inf + CpuExceptionHandlerLib|MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf + + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf + RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf + + PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf + SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf + LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf + SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf + +[LibraryClasses.common.PEIM] + ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf + MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf + +[LibraryClasses.common.PEI_CORE] + PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf + ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf + MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf + +[LibraryClasses.common.DXE_CORE] + DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf + ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf + HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf + MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + +[LibraryClasses.common.DXE_DRIVER] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + +[LibraryClasses.common.UEFI_DRIVER] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + +[LibraryClasses.common.DXE_RUNTIME_DRIVER] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf + +[LibraryClasses.common.SMM_CORE] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf + SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf + SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTableLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf + +[LibraryClasses.common.DXE_SMM_DRIVER] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf + SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf + +[LibraryClasses.common.UEFI_APPLICATION] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + +################################################################################################### +# +# Components Section - list of the modules and components that will be processed by compilation +# tools and the EDK II tools to generate PE32/PE32+/Coff image files. +# +# Note: The EDK II DSC file is not used to specify how compiled binary images get placed +# into firmware volume images. This section is just a list of modules to compile from +# source into UEFI-compliant binaries. +# It is the FDF file that contains information on combining binary files into firmware +# volume images, whose concept is beyond UEFI and is described in PI specification. +# Binary modules do not need to be listed in this section, as they should be +# specified in the FDF file. For example: Shell binary (Shell_Full.efi), FAT binary (Fat.efi), +# Logo (Logo.bmp), and etc. +# There may also be modules listed in this section that are not required in the FDF file, +# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be +# generated for it, but the binary will not be put into any firmware volume. +# +################################################################################################### + +[PcdsFixedAtBuild.common] + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x1f + gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80080046 + gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 + gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|0x1 + +[Components] + UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf + UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.inf + UefiInstrumentTestPkg/Library/SimpleSynchronizationLib/SimpleSynchronizationLib.inf + UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.inf diff --git a/HBFA/__init__.py b/HBFA/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/HBFA/tests/TestRunAFL.py b/HBFA/tests/TestRunAFL.py new file mode 100644 index 0000000..3ad92e9 --- /dev/null +++ b/HBFA/tests/TestRunAFL.py @@ -0,0 +1,266 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2024, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +import unittest +import os +import sys +import io +import contextlib +try: + from unittest import mock # python 3.3+ +except ImportError: + import mock # python 2.6-3.2 + + +class TestRunAFL(unittest.TestCase): + + # Test bad value for arch is handled (-a 'X64') + @mock.patch('UefiHostTestTools.RunAFL.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.RunAFL', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.HBFA_PATH', '/root/hbfa_workspace/' + 'edk2-staging/HBFA') + @mock.patch('sys.argv', ['RunAFL.py', '-m', '/root/hbfa_workspace/edk2-' + 'staging/HBFA/UefiHostFuzzTestCasePkg/TestCase' + '/MdeModulePkg/Library/BaseBmpSupportLib/' + 'TestBmpSupportLib.inf', '-i', '/tmp/', '-o', + '/tmp/test', '-a', 'X65', '-c', 'rawcommand']) + def test_args_badarch(self, *args, **kwargs): + print("\n[+]Testing bad value for arch: -a X65") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFL.main() + check_string = "argument -a/--arch: invalid choice: 'X65' " + \ + "(choose from 'IA32', 'X64', 'ARM', 'AARCH64')" + self.assertIn(check_string, buffer.getvalue()) + + # Test bad value for module is handled (not in HBFA_PATH) + @mock.patch('UefiHostTestTools.RunAFL.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.RunAFL', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', ['RunAFL.py', '-m', '/tmp/TestBmpSupportLib.inf', + '-i', '/tmp/', '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_hbfa_path(self, *args, **kwargs): + print("\n[+]Test bad value for module is handled (not in HBFA_PATH)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFL.main() + message = buffer.getvalue() + # Check against expected print string: + # ModuleFile path: /tmp/TestBmpSupportLib.inf should start + # with /root/hbfa_workspace/edk2-staging/HBFA. + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x70\x61\x74\x68\x3a\x20\x2f\x74\x6d\x70\x2f\x54\x65' \ + + b'\x73\x74\x42\x6d\x70\x53\x75\x70\x70\x6f\x72\x74\x4c' \ + + b'\x69\x62\x2e\x69\x6e\x66\x20\x73\x68\x6f\x75\x6c\x64' \ + + b'\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x2f' \ + + b'\x72\x6f\x6f\x74\x2f\x68\x62\x66\x61\x5f\x77\x6f\x72' \ + + b'\x6b\x73\x70\x61\x63\x65\x2f\x65\x64\x6b\x32\x2d\x73' \ + + b'\x74\x61\x67\x69\x6e\x67\x2f\x48\x42\x46\x41\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for module is handled (no value set) + @mock.patch('UefiHostTestTools.RunAFL.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.RunAFL', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', ['RunAFL.py', '-m', '', '-i', '/tmp/', '-o', + '/tmp/test', '-a', 'X64', '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_no_value(self, *args, **kwargs): + print("\n[+]Test bad value for module is handled (no value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFL.main() + # Check against expected print string: + # ModuleFile path: /tmp/TestBmpSupportLib.inf should be + # start with /root/hbfa_workspace/edk2-staging/HBFA + message = buffer.getvalue() + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x73\x65\x74' \ + + b'\x20\x6f\x6e\x63\x65\x20\x62\x79\x20\x63\x6f\x6d\x6d' \ + + b'\x61\x6e\x64\x20\x2d\x6d\x20\x4d\x4f\x44\x55\x4c\x45' \ + + b'\x46\x49\x4c\x45\x2c\x20\x2d\x2d\x6d\x6f\x64\x75\x6c' \ + + b'\x65\x3d\x4d\x4f\x44\x55\x4c\x45\x46\x49\x4c\x45' \ + + b'\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for module is handled (file does not exist or is not + # in relative path) + @mock.patch('UefiHostTestTools.RunAFL.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.RunAFL', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFL.py', '-m', + 'root/hbfa_workspace/edk2-staging/HBFA/test/test', + '-i', '/tmp/', '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_bad_value(self, *args, **kwargs): + print("\n[+]Test bad value for module is handled (bad value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFL.main() + # Check against expected print string: + # ModuleFile path: + # root/hbfa_workspace/edk2-staging/HBFA/test/test does + # not exist or is not in the relative path for HBFA + message = buffer.getvalue() + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x70\x61\x74\x68\x3a\x20\x72\x6f\x6f\x74\x2f\x68\x62' \ + + b'\x66\x61\x5f\x77\x6f\x72\x6b\x73\x70\x61\x63\x65\x2f' \ + + b'\x65\x64\x6b\x32\x2d\x73\x74\x61\x67\x69\x6e\x67\x2f' \ + + b'\x48\x42\x46\x41\x2f\x74\x65\x73\x74\x2f\x74\x65\x73' \ + + b'\x74\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x65\x78' \ + + b'\x69\x73\x74\x20\x6f\x72\x20\x69\x73\x20\x6e\x6f\x74' \ + + b'\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x65\x6c\x61\x74' \ + + b'\x69\x76\x65\x20\x70\x61\x74\x68\x20\x66\x6f\x72\x20' \ + + b'\x48\x42\x46\x41\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for input seed path (no value/path) + @mock.patch('UefiHostTestTools.RunAFL.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.RunAFL', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFL.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-i', '', '-o', '/tmp/test', '-a', 'X64', '-c', + 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_input_seed_none(self, *args, **kwargs): + print("\n[+]Test bad value for input seed path is handled " + "(no value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFL.main() + message = buffer.getvalue() + # Check against expected print string: + # InputSeed path should be set once by command -i INPUTSEED, + # --input=INPUTSEED. + check_string = b'\x49\x6e\x70\x75\x74\x53\x65\x65\x64\x20\x70' \ + + b'\x61\x74\x68\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65' \ + + b'\x20\x73\x65\x74\x20\x6f\x6e\x63\x65\x20\x62\x79\x20' \ + + b'\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x2d\x69\x20\x49\x4e' \ + + b'\x50\x55\x54\x53\x45\x45\x44\x2c\x20\x2d\x2d\x69\x6e' \ + + b'\x70\x75\x74\x3d\x49\x4e\x50\x55\x54\x53\x45\x45\x44' \ + + b'\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for input seed path (path does not exist) + @mock.patch('UefiHostTestTools.RunAFL.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.RunAFL', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFL.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-i', '/tmp/tmp/tmp/tmp', '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_input_seed_path(self, *args, **kwargs): + print("\n[+]Test bad value for input seed path is handled " + "(bad path, does not exist)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFL.main() + message = buffer.getvalue() + # Check against expected print string: + # InputSeed path: /tmp/tmp/tmp/tmp does not exist + check_string = b'\x49\x6e\x70\x75\x74\x53\x65\x65\x64\x20\x70' \ + + b'\x61\x74\x68\x3a\x20\x2f\x74\x6d\x70\x2f\x74\x6d\x70' \ + + b'\x2f\x74\x6d\x70\x2f\x74\x6d\x70\x20\x64\x6f\x65\x73' \ + + b'\x20\x6e\x6f\x74\x20\x65\x78\x69\x73\x74\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for output path (no argument) + @mock.patch('UefiHostTestTools.RunAFL.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.RunAFL', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFL.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-i', '/tmp/', '-o', '', '-a', 'X64', '-c', + 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_output_seed_none(self, *args, **kwargs): + print("\n[+]Test bad value for output seed path is handled " + "(no argument)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFL.main() + message = buffer.getvalue() + # Check against expected print string: + # OutputSeed path should be set once by command -o OUTPUT, + # --output=OUTPUT. + check_string = b'\x4f\x75\x74\x70\x75\x74\x53\x65\x65\x64\x20' \ + + b'\x70\x61\x74\x68\x20\x73\x68\x6f\x75\x6c\x64\x20\x62' \ + + b'\x65\x20\x73\x65\x74\x20\x6f\x6e\x63\x65\x20\x62\x79' \ + + b'\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x2d\x6f\x20\x4f' \ + + b'\x55\x54\x50\x55\x54\x2c\x20\x2d\x2d\x6f\x75\x74\x70' \ + + b'\x75\x74\x3d\x4f\x55\x54\x50\x55\x54\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad input value for command line mode (assuming we are on Linux) + @mock.patch('UefiHostTestTools.RunAFL.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.RunAFL', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFL.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFL.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-i', '/tmp/', '-o', '/tmp/test', '-a', 'X64', + '-c', 'gnome']) + @mock.patch('UefiHostTestTools.RunAFL.SysType', 'Linux') + @mock.patch('os._exit', sys.exit) + def test_args_bad_command_mode(self, *args, **kwargs): + print("\n[+]Test bad value for command line mode") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFL.main() + check_string = "invalid choice: 'gnome' (choose from " + \ + "'rawcommand', 'manual')" + self.assertIn(check_string, buffer.getvalue()) + + +if __name__ == "__main__": + sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + import UefiHostTestTools.RunAFL + unittest.main() diff --git a/HBFA/tests/TestRunAFLTurbo.py b/HBFA/tests/TestRunAFLTurbo.py new file mode 100644 index 0000000..b8cb9d5 --- /dev/null +++ b/HBFA/tests/TestRunAFLTurbo.py @@ -0,0 +1,270 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2024, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +import unittest +import os +import sys +import io +import contextlib +try: + from unittest import mock # python 3.3+ +except ImportError: + import mock # python 2.6-3.2 + + +class TestRunAFLTurbo(unittest.TestCase): + + # Test bad value for arch is handled (-a 'X64') + @mock.patch('UefiHostTestTools.RunAFLTurbo.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.RunAFLTurbo', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFLTurbo.py', '-m', '/root/hbfa_workspace/edk2-' + 'staging/HBFA/UefiHostFuzzTestCasePkg/TestCase' + '/MdeModulePkg/Library/BaseBmpSupportLib/' + 'TestBmpSupportLib.inf', '-i', '/tmp/', '-o', + '/tmp/test', '-a', 'X65', '-c', 'rawcommand']) + def test_args_badarch(self, *args, **kwargs): + print("\n[+]Testing bad value for arch: -a X65") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFLTurbo.main() + check_string = "argument -a/--arch: invalid choice: 'X65' " + \ + "(choose from 'IA32', 'X64', 'ARM', 'AARCH64')" + self.assertIn(check_string, buffer.getvalue()) + + # Test bad value for module is handled (not in HBFA_PATH) + @mock.patch('UefiHostTestTools.RunAFLTurbo.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.RunAFLTurbo', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFLTurbo.py', '-m', '/tmp/TestBmpSupportLib.inf', + '-i', '/tmp/', '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_hbfa_path(self, *args, **kwargs): + print("\n[+] Test bad value for module is handled (not in HBFA_PATH)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFLTurbo.main() + message = buffer.getvalue() + # Check against expected print string: + # ModuleFile path: /tmp/TestBmpSupportLib.inf should start + # with /root/hbfa_workspace/edk2-staging/HBFA. + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x70\x61\x74\x68\x3a\x20\x2f\x74\x6d\x70\x2f\x54\x65' \ + + b'\x73\x74\x42\x6d\x70\x53\x75\x70\x70\x6f\x72\x74\x4c' \ + + b'\x69\x62\x2e\x69\x6e\x66\x20\x73\x68\x6f\x75\x6c\x64' \ + + b'\x20\x62\x65\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74' \ + + b'\x68\x20\x2f\x72\x6f\x6f\x74\x2f\x68\x62\x66\x61\x5f' \ + + b'\x77\x6f\x72\x6b\x73\x70\x61\x63\x65\x2f\x65\x64\x6b' \ + + b'\x32\x2d\x73\x74\x61\x67\x69\x6e\x67\x2f\x48\x42\x46' \ + + b'\x41\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for module is handled (no value set) + @mock.patch('UefiHostTestTools.RunAFLTurbo.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.RunAFLTurbo', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', ['RunAFLTurbo.py', '-m', '', '-i', '/tmp/', '-o', + '/tmp/test', '-a', 'X64', '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_no_value(self, *args, **kwargs): + print("\n[+] Test bad value for module is handled (no value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFLTurbo.main() + # Check against expected print string: + # ModuleFile path: /tmp/TestBmpSupportLib.inf should be + # start with /root/hbfa_workspace/edk2-staging/HBFA + message = buffer.getvalue() + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x73\x65\x74' \ + + b'\x20\x6f\x6e\x63\x65\x20\x62\x79\x20\x63\x6f\x6d\x6d' \ + + b'\x61\x6e\x64\x20\x2d\x6d\x20\x4d\x4f\x44\x55\x4c\x45' \ + + b'\x46\x49\x4c\x45\x2c\x20\x2d\x2d\x6d\x6f\x64\x75\x6c' \ + + b'\x65\x3d\x4d\x4f\x44\x55\x4c\x45\x46\x49\x4c\x45' \ + + b'\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for module is handled (file does not exist or is not + # in relative path) + @mock.patch('UefiHostTestTools.RunAFLTurbo.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.RunAFLTurbo', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFLTurbo.py', '-m', + 'root/hbfa_workspace/edk2-staging/HBFA/test/test', + '-i', '/tmp/', '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_bad_value(self, *args, **kwargs): + print("\n+] Test bad value for module is handled (bad value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFLTurbo.main() + # Check against expected print string: + # ModuleFile path: + # root/hbfa_workspace/edk2-staging/HBFA/test/test does + # not exist or is not in the relative path for HBFA + message = buffer.getvalue() + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x70\x61\x74\x68\x3a\x20\x72\x6f\x6f\x74\x2f\x68\x62' \ + + b'\x66\x61\x5f\x77\x6f\x72\x6b\x73\x70\x61\x63\x65\x2f' \ + + b'\x65\x64\x6b\x32\x2d\x73\x74\x61\x67\x69\x6e\x67\x2f' \ + + b'\x48\x42\x46\x41\x2f\x74\x65\x73\x74\x2f\x74\x65\x73' \ + + b'\x74\x20\x69\x73\x20\x6e\x6f\x20\x65\x78\x69\x74\x73' \ + + b'\x20\x6f\x72\x20\x6e\x6f\x74\x20\x74\x68\x65\x20\x72' \ + + b'\x65\x6c\x61\x74\x69\x76\x65\x20\x70\x61\x74\x68\x20' \ + + b'\x66\x6f\x72\x20\x48\x42\x46\x41\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for input seed path (no value/path) + @mock.patch('UefiHostTestTools.RunAFLTurbo.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.RunAFLTurbo', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFLTurbo.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-i', '', '-o', '/tmp/test', '-a', 'X64', '-c', + 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_input_seed_none(self, *args, **kwargs): + print("\n[+] Test bad value for input seed path is handled " + "(no value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFLTurbo.main() + message = buffer.getvalue() + # Check against expected print string: + # InputSeed path should be set once by command -i INPUTSEED, + # --input=INPUTSEED. + check_string = b'\x49\x6e\x70\x75\x74\x53\x65\x65\x64\x20\x70' \ + + b'\x61\x74\x68\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65' \ + + b'\x20\x73\x65\x74\x20\x6f\x6e\x63\x65\x20\x62\x79\x20' \ + + b'\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x2d\x69\x20\x49\x4e' \ + + b'\x50\x55\x54\x53\x45\x45\x44\x2c\x20\x2d\x2d\x69\x6e' \ + + b'\x70\x75\x74\x3d\x49\x4e\x50\x55\x54\x53\x45\x45\x44' \ + + b'\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for input seed path (path does not exist) + @mock.patch('UefiHostTestTools.RunAFLTurbo.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.RunAFLTurbo', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.CheckTestEnv', + return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFLTurbo.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-o', '/tmp/', '-a', 'X64', + '-c', 'rawcommand', '-i', '/tmp/tmp/tmp/tmp']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_input_seed_path(self, *args, **kwargs): + print("\n[+] Test bad value for input seed path is handled " + "(bad path, does not exist)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFLTurbo.main() + message = buffer.getvalue() + # Check against expected print string: + # InputSeed path: /tmp/tmp/tmp/tmp does not exist + check_string = b'\x49\x6e\x70\x75\x74\x53\x65\x65\x64\x20\x70' \ + + b'\x61\x74\x68\x3a\x20\x2f\x74\x6d\x70\x2f\x74\x6d\x70' \ + + b'\x2f\x74\x6d\x70\x2f\x74\x6d\x70\x20\x69\x73\x20\x6e' \ + + b'\x6f\x20\x65\x78\x69\x73\x74\x73\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for output path (no argument) + @mock.patch('UefiHostTestTools.RunAFLTurbo.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.RunAFLTurbo', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFLTurbo.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-i', '/tmp/', '-o', '', '-a', 'X64', '-c', + 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_output_seed_none(self, *args, **kwargs): + print("\n[+]Test bad value for output seed path is handled " + "(no argument)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFLTurbo.main() + message = buffer.getvalue() + # Check against expected print string: + # OutputSeed path should be set once by command -o OUTPUT, + # --output=OUTPUT. + check_string = b'\x4f\x75\x74\x70\x75\x74\x53\x65\x65\x64\x20' \ + + b'\x70\x61\x74\x68\x20\x73\x68\x6f\x75\x6c\x64\x20\x62' \ + + b'\x65\x20\x73\x65\x74\x20\x6f\x6e\x63\x65\x20\x62\x79' \ + + b'\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x2d\x6f\x20\x4f' \ + + b'\x55\x54\x50\x55\x54\x2c\x20\x2d\x2d\x6f\x75\x74\x70' \ + + b'\x75\x74\x3d\x4f\x55\x54\x50\x55\x54\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad input value for command line mode (assuming we are on Linux) + @mock.patch('UefiHostTestTools.RunAFLTurbo.Build', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.RunAFLTurbo', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunAFLTurbo.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunAFLTurbo.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-i', '/tmp/', '-o', '/tmp/test', '-a', 'X64', + '-c', 'gnome']) + @mock.patch('UefiHostTestTools.RunAFLTurbo.SysType', 'Linux') + @mock.patch('os._exit', sys.exit) + def test_args_bad_command_mode(self, *args, **kwargs): + print("\n[+]Test bad value for command line mode") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunAFLTurbo.main() + check_string = "invalid choice: 'gnome' (choose from " + \ + "'rawcommand', 'manual')" + self.assertIn(check_string, buffer.getvalue()) + print("\n[+]Testing bad value for arch: -a X65") + + +if __name__ == "__main__": + sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + import UefiHostTestTools.RunAFLTurbo + unittest.main() diff --git a/HBFA/tests/TestRunKLEE.py b/HBFA/tests/TestRunKLEE.py new file mode 100644 index 0000000..aa3acf0 --- /dev/null +++ b/HBFA/tests/TestRunKLEE.py @@ -0,0 +1,188 @@ +#!/usr/bin/env python3 +import unittest +import os +import sys +import io +import contextlib +try: + from unittest import mock # python 3.3+ +except ImportError: + import mock # python 2.6-3.2 + + +class TestRunKLEE(unittest.TestCase): + + # Test bad value for arch is handled (-a 'X64') + @mock.patch('UefiHostTestTools.RunKLEE.Build', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.RunKLEE', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunKLEE.py', '-m', '/root/hbfa_workspace/edk2-' + 'staging/HBFA/UefiHostFuzzTestCasePkg/TestCase' + '/MdeModulePkg/Library/BaseBmpSupportLib/' + 'TestBmpSupportLib.inf', '-o', + '/tmp/test', '-a', 'X65', '-c', 'rawcommand']) + def test_args_badarch(self, *args, **kwargs): + print("\n[+] Testing bad value for arch: -a X65") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunKLEE.main() + check_string = "argument -a/--arch: invalid choice: 'X65' " + \ + "(choose from 'IA32', 'X64', 'ARM', 'AARCH64')" + self.assertIn(check_string, buffer.getvalue()) + + # Test bad value for module is handled (not in HBFA_PATH) + @mock.patch('UefiHostTestTools.RunKLEE.Build', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.RunKLEE', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunKLEE.py', '-m', '/tmp/TestBmpSupportLib.inf', + '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_hbfa_path(self, *args, **kwargs): + print("\n[+] Test bad value for module is handled (not in HBFA_PATH)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunKLEE.main() + message = buffer.getvalue() + # Check against expected print string: + # ModuleFile path: /tmp/TestBmpSupportLib.inf should start + # with /root/hbfa_workspace/edk2-staging/HBFA. + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x70\x61\x74\x68\x3a\x20\x2f\x74\x6d\x70\x2f\x54\x65' \ + + b'\x73\x74\x42\x6d\x70\x53\x75\x70\x70\x6f\x72\x74\x4c' \ + + b'\x69\x62\x2e\x69\x6e\x66\x20\x73\x68\x6f\x75\x6c\x64' \ + + b'\x20\x62\x65\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74' \ + + b'\x68\x20\x2f\x72\x6f\x6f\x74\x2f\x68\x62\x66\x61\x5f' \ + + b'\x77\x6f\x72\x6b\x73\x70\x61\x63\x65\x2f\x65\x64\x6b' \ + + b'\x32\x2d\x73\x74\x61\x67\x69\x6e\x67\x2f\x48\x42\x46' \ + + b'\x41\x2e\x0a' + check_string = "/tmp/TestBmpSupportLib.inf should start with " \ + + "/root/hbfa_workspace/edk2-staging/HBFA." + self.assertIn(check_string, message) + + # Test bad value for module is handled (no value set) + @mock.patch('UefiHostTestTools.RunKLEE.Build', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.RunKLEE', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', ['RunKLEE.py', '-m', '', '-o', + '/tmp/test', '-a', 'X64', '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_no_value(self, *args, **kwargs): + print("\n[+] Test bad value for module is handled (no value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunKLEE.main() + # Check against expected print string: + # ModuleFile path: /tmp/TestBmpSupportLib.inf should be + # start with /root/hbfa_workspace/edk2-staging/HBFA + message = buffer.getvalue() + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x73\x65\x74' \ + + b'\x20\x6f\x6e\x63\x65\x20\x62\x79\x20\x63\x6f\x6d\x6d' \ + + b'\x61\x6e\x64\x20\x2d\x6d\x20\x4d\x4f\x44\x55\x4c\x45' \ + + b'\x46\x49\x4c\x45\x2c\x20\x2d\x2d\x6d\x6f\x64\x75\x6c' \ + + b'\x65\x3d\x4d\x4f\x44\x55\x4c\x45\x46\x49\x4c\x45' \ + + b'\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for module is handled (file does not exist or is not + # in relative path) + @mock.patch('UefiHostTestTools.RunKLEE.Build', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.RunKLEE', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunKLEE.py', '-m', + 'root/hbfa_workspace/edk2-staging/HBFA/test/test', + '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_bad_value(self, *args, **kwargs): + print("\n[+] Test bad value for module is handled (bad value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunKLEE.main() + message = buffer.getvalue() + check_string = "root/hbfa_workspace/edk2-staging/HBFA/test/test" \ + + " does not exist or is not in the relative" \ + + " path for HBFA" + self.assertIn(check_string, message) + + # Test bad value for output path (no argument) + @mock.patch('UefiHostTestTools.RunKLEE.Build', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.RunKLEE', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunKLEE.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-o', '', '-a', 'X64', '-c', + 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_output_seed_none(self, *args, **kwargs): + print("\n[+]Test bad value for output seed path is handled " + "(no argument)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunKLEE.main() + message = buffer.getvalue() + # Check against expected print string: + # OutputSeed path should be set once by command -o OUTPUT, + # --output=OUTPUT. + check_string = b'\x4f\x75\x74\x70\x75\x74\x53\x65\x65\x64\x20' \ + + b'\x70\x61\x74\x68\x20\x73\x68\x6f\x75\x6c\x64\x20\x62' \ + + b'\x65\x20\x73\x65\x74\x20\x6f\x6e\x63\x65\x20\x62\x79' \ + + b'\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x2d\x6f\x20\x4f' \ + + b'\x55\x54\x50\x55\x54\x2c\x20\x2d\x2d\x6f\x75\x74\x70' \ + + b'\x75\x74\x3d\x4f\x55\x54\x50\x55\x54\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad input value for command line mode (assuming we are on Linux) + @mock.patch('UefiHostTestTools.RunKLEE.Build', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.RunKLEE', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.CheckTestEnv', return_value='') + @mock.patch('UefiHostTestTools.RunKLEE.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunKLEE.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-o', '/tmp/test/test/test/test', '-a', 'X64', + '-c', 'gnome']) + @mock.patch('UefiHostTestTools.RunKLEE.SysType', 'Linux') + @mock.patch('os._exit', sys.exit) + def test_args_bad_command_mode(self, *args, **kwargs): + print("\n[+]Test bad value for command line mode") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunKLEE.main() + check_string = "invalid choice: 'gnome' (choose from " + \ + "'rawcommand', 'manual')" + self.assertIn(check_string, buffer.getvalue()) + + +if __name__ == "__main__": + sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + import UefiHostTestTools.RunKLEE + unittest.main() diff --git a/HBFA/tests/TestRunLibFuzzer.py b/HBFA/tests/TestRunLibFuzzer.py new file mode 100644 index 0000000..abae500 --- /dev/null +++ b/HBFA/tests/TestRunLibFuzzer.py @@ -0,0 +1,263 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2024, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +import unittest +import os +import sys +import io +import contextlib +try: + from unittest import mock # python 3.3+ +except ImportError: + import mock # python 2.6-3.2 + + +class TestRunLibFuzzer(unittest.TestCase): + + # Test bad value for arch is handled (-a 'X64') + @mock.patch('UefiHostTestTools.RunLibFuzzer.Build', return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.RunLibFuzzer', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.CheckTestEnv', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.updateBuildFlags', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.restoreBuildOptionFile', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', ['RunLibFuzzer.py', '-m', + '/root/hbfa_workspace/edk2-' + 'staging/HBFA/UefiHostFuzzTestCasePkg/TestCase' + '/MdeModulePkg/Library/BaseBmpSupportLib/' + 'TestBmpSupportLib.inf', '-i', '/tmp/', '-o', + '/tmp/test', '-a', 'X65', '-c', 'rawcommand']) + def test_args_badarch(self, *args, **kwargs): + print("\n[+]Testing bad value for arch: -a X65") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunLibFuzzer.main() + check_string = "argument -a/--arch: invalid choice: 'X65' " + \ + "(choose from 'IA32', 'X64', 'ARM', 'AARCH64')" + self.assertIn(check_string, buffer.getvalue()) + + # Test bad value for module is handled (not in HBFA_PATH) + @mock.patch('UefiHostTestTools.RunLibFuzzer.Build', return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.RunLibFuzzer', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.CheckTestEnv', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.updateBuildFlags', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.restoreBuildOptionFile', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', ['RunLibFuzzer.py', '-m', + '/tmp/TestBmpSupportLib.inf', '-i', '/tmp/', + '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_hbfa_path(self, *args, **kwargs): + print("\n[+]Test bad value for module is handled (not in HBFA_PATH)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunLibFuzzer.main() + message = buffer.getvalue() + # Check against expected print string: + # ModuleFile path: /tmp/TestBmpSupportLib.inf should start + # with /root/hbfa_workspace/edk2-staging/HBFA. + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x70\x61\x74\x68\x3a\x20\x2f\x74\x6d\x70\x2f\x54\x65' \ + + b'\x73\x74\x42\x6d\x70\x53\x75\x70\x70\x6f\x72\x74\x4c' \ + + b'\x69\x62\x2e\x69\x6e\x66\x20\x73\x68\x6f\x75\x6c\x64' \ + + b'\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x2f' \ + + b'\x72\x6f\x6f\x74\x2f\x68\x62\x66\x61\x5f\x77\x6f\x72' \ + + b'\x6b\x73\x70\x61\x63\x65\x2f\x65\x64\x6b\x32\x2d\x73' \ + + b'\x74\x61\x67\x69\x6e\x67\x2f\x48\x42\x46\x41\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for module is handled (no value set) + @mock.patch('UefiHostTestTools.RunLibFuzzer.Build', return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.RunLibFuzzer', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.CheckTestEnv', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.updateBuildFlags', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.restoreBuildOptionFile', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', ['RunLibFuzzer.py', '-m', '', '-i', '/tmp/', '-o', + '/tmp/test', '-a', 'X64', '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_no_value(self, *args, **kwargs): + print("\n[+]Test bad value for module is handled (no value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunLibFuzzer.main() + # Check against expected print string: + # ModuleFile path: /tmp/TestBmpSupportLib.inf should be + # start with /root/hbfa_workspace/edk2-staging/HBFA + message = buffer.getvalue() + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x73\x65\x74' \ + + b'\x20\x6f\x6e\x63\x65\x20\x62\x79\x20\x63\x6f\x6d\x6d' \ + + b'\x61\x6e\x64\x20\x2d\x6d\x20\x4d\x4f\x44\x55\x4c\x45' \ + + b'\x46\x49\x4c\x45\x2c\x20\x2d\x2d\x6d\x6f\x64\x75\x6c' \ + + b'\x65\x3d\x4d\x4f\x44\x55\x4c\x45\x46\x49\x4c\x45' \ + + b'\x2e\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad value for module is handled (file does not exist or is not + # in relative path) + @mock.patch('UefiHostTestTools.RunLibFuzzer.Build', return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.RunLibFuzzer', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.CheckTestEnv', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.updateBuildFlags', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.restoreBuildOptionFile', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunLibFuzzer.py', '-m', + 'root/hbfa_workspace/edk2-staging/HBFA/test/test', + '-i', '/tmp/', '-o', '/tmp/test', '-a', 'X64', + '-c', 'rawcommand']) + @mock.patch('os._exit', sys.exit) + def test_args_bad_module_bad_value(self, *args, **kwargs): + print("\n[+]Test bad value for module is handled (bad value set)") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunLibFuzzer.main() + # Check against expected print string: + # ModuleFile path: + # ModuleFile path: /tmp does not exist or is not in the + # relative path for HBFA + message = buffer.getvalue() + check_string = b'\x4d\x6f\x64\x75\x6c\x65\x46\x69\x6c\x65\x20' \ + + b'\x70\x61\x74\x68\x3a\x20\x2f\x74\x6d\x70\x20\x64\x6f' \ + + b'\x65\x73\x20\x6e\x6f\x74\x20\x65\x78\x69\x73\x74\x20' \ + + b'\x6f\x72\x20\x69\x73\x20\x6e\x6f\x74\x20\x69\x6e\x20' \ + + b'\x74\x68\x65\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20' \ + + b'\x70\x61\x74\x68\x20\x66\x6f\x72\x20\x48\x42\x46\x41' \ + + b'\x0a' + check_string = check_string.decode("ascii") + self.assertEqual(message, check_string) + + # Test bad input value for command line mode (assuming we are on Linux) + @mock.patch('UefiHostTestTools.RunLibFuzzer.Build', return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.RunLibFuzzer', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.CheckTestEnv', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.updateBuildFlags', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.restoreBuildOptionFile', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('sys.argv', + ['RunLibFuzzer.py', '-m', + '/root/hbfa_workspace/edk2-staging/HBFA/' + 'UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/' + 'Library/BaseBmpSupportLib/TestBmpSupportLib.inf', + '-i', '/tmp/', '-o', '/tmp/test', '-a', 'X64', + '-c', 'gnome']) + @mock.patch('UefiHostTestTools.RunLibFuzzer.SysType', 'Linux') + @mock.patch('os._exit', sys.exit) + def test_args_bad_command_mode(self, *args, **kwargs): + print("\n[+]Test bad value for command line mode") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunLibFuzzer.main() + check_string = "argument -c/--commandline: invalid choice:" + \ + " 'gnome' (choose from 'rawcommand', 'manual')" + self.assertIn(check_string, buffer.getvalue()) + + # Test bad value for -p profraw (not True, true, T, or t) + @mock.patch('UefiHostTestTools.RunLibFuzzer.Build', return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.RunLibFuzzer', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.CheckTestEnv', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.updateBuildFlags', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.restoreBuildOptionFile', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('os._exit', sys.exit) + @mock.patch('sys.argv', ['RunLibFuzzer.py', '-m', + '/root/hbfa_workspace/edk2-' + 'staging/HBFA/UefiHostFuzzTestCasePkg/TestCase' + '/MdeModulePkg/Library/BaseBmpSupportLib/' + 'TestBmpSupportLib.inf', '-i', '/tmp/', '-o', + '/tmp/test', '-a', 'X64', '-c', 'rawcommand', + '-p', 'ABCD']) + def test_args_bad_profraw(self, *args, **kwargs): + print("\n[+]Testing bad value for -p profraw (not True, true, " + "T, or t)") + with io.StringIO() as buffer: + with contextlib.redirect_stderr(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunLibFuzzer.main() + check_string = "argument -p/--gen-profraw: invalid choice: " + \ + "'ABCD' (choose from 't', 'T', 'true', " + \ + "'True', 'F', 'false', 'False')" + self.assertIn(check_string, buffer.getvalue()) + + # Test bad value for -s sanitizer (give a wrong value) + @mock.patch('UefiHostTestTools.RunLibFuzzer.Build', return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.RunLibFuzzer', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.CheckTestEnv', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.updateBuildFlags', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.restoreBuildOptionFile', + return_value='') + @mock.patch('UefiHostTestTools.RunLibFuzzer.HBFA_PATH', + '/root/hbfa_workspace/edk2-staging/HBFA') + @mock.patch('os._exit', sys.exit) + @mock.patch('sys.argv', ['RunLibFuzzer.py', '-m', + '/root/hbfa_workspace/edk2-' + 'staging/HBFA/UefiHostFuzzTestCasePkg/TestCase' + '/MdeModulePkg/Library/BaseBmpSupportLib/' + 'TestBmpSupportLib.inf', '-i', '/tmp/', '-o', + '/tmp/test', '-a', 'X64', '-c', 'rawcommand', + '-p', 'T', '-s', 'abcd']) + def test_args_bad_sanitizer(self, *args, **kwargs): + print("\n[+]Testing bad value for -s sanitizer ('abcd')") + with io.StringIO() as buffer: + with contextlib.redirect_stdout(buffer): + with self.assertRaises(SystemExit): + UefiHostTestTools.RunLibFuzzer.main() + # Check against expected error string: + # [!] Unsupported sanitizer provided in option -s: [ abcd ] + check_string = b'\x5b\x21\x5d\x20\x55\x6e\x73\x75\x70\x70\x6f' \ + + b'\x72\x74\x65\x64\x20\x73\x61\x6e\x69\x74\x69\x7a\x65' \ + + b'\x72\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x69\x6e' \ + + b'\x20\x6f\x70\x74\x69\x6f\x6e\x20\x2d\x73\x3a\x20\x5b' \ + + b'\x20\x61\x62\x63\x64\x20\x5d\x0a' + check_string = check_string.decode("ascii") + self.assertIn(check_string, buffer.getvalue()) + + +if __name__ == "__main__": + sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + import UefiHostTestTools.RunLibFuzzer + unittest.main() diff --git a/HBFA/tests/__init__.py b/HBFA/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..e69b085 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,23 @@ +# BSD-2-Clause Plus Patent License + +Note: This license is designed to provide: a) a simple permissive license; b) that is compatible with the GNU General Public License (GPL), version 2; and c) which also has an express patent grant included. + +Copyright (c) 2024, Intel Corporation + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +Subject to the terms and conditions of this license, each copyright holder and contributor hereby grants to those receiving rights under this license a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except for failure to satisfy the conditions of this license) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer this software, where such license applies only to those patent claims, already acquired or hereafter acquired, licensable by such copyright holder or contributor that are necessarily infringed by: + +(a) their Contribution(s) (the licensed copyrights of copyright holders and non-copyrightable additions of contributors, in source or binary form) alone; or + +(b) combination of their Contribution(s) with the work of authorship to which such Contribution(s) was added by such copyright holder or contributor, if, at the time the Contribution is added, such addition causes such combination to be necessarily infringed. The patent license shall not apply to any other combinations which include the Contribution. + +Except as expressly stated above, no rights or licenses from any copyright holder or contributor is granted under this license, whether expressly, by implication, estoppel or otherwise. + +DISCLAIMER + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ee389ac --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Host-based Firmware Analyzer - Fuzzing Lite (HBFA-FL) + +The the Host-based Firmware Analysis - Fuzzing Lite (HBFA-FL) is based off of forking the original HBFA from the [edk2-staging repository](https://github.com/tianocore/edk2-staging/tree/HBFA). The original release of HBFA is described in the white-paper: ["Using Host-based Firmware Analysis to Improve Platform Resiliency"](https://www.intel.com/content/dam/develop/external/us/en/documents/intel-usinghbfatoimproveplatformresiliency-820238.pdf). The original release authors were Brian Richardson, Chris Wu, Jiewen Yao, and Vincent J. Zimmer. + +The goal for HBFA-FL is to update the original codebase, enhancing some features and removing/streamlining some others, with a focus on functionality for Linux environments. To that end, HBFA-FL removes much of the original HBFA code base, including support for Windows and unit-testing; we retain support for fuzzing with AFL and LibFuzzer. This repository is effectively a fork from the original version of HBFA at this commit : [ead8f4f8eefdb2eb762184e1a5809c43d6908952](https://github.com/tianocore/edk2-staging/commit/ead8f4f8eefdb2eb762184e1a5809c43d6908952) + +## Getting Started + +To get started using HBFA-FL, we recommend taking a look at the documentation, starting [here](./docs/src/SUMMARY.md). diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e69de29 From ede8e16f9e3b2a3e9e1872e2aa7b98d6791125e2 Mon Sep 17 00:00:00 2001 From: el-tipton Date: Mon, 19 Feb 2024 15:19:00 -0600 Subject: [PATCH 2/5] Adding docs --- docs/.gitignore | 1 + docs/book.toml | 6 + docs/images/Step3_Select_Boot_Manager.png | Bin 0 -> 16247 bytes docs/images/Step4_Select_EFI_Shell.png | Bin 0 -> 20077 bytes docs/images/Step5_EFI_Shell_Press_Escape.png | Bin 0 -> 17212 bytes .../Ubuntu_boot_select_firmware_settings.png | Bin 0 -> 17611 bytes docs/images/hbfa_covreport.png | Bin 0 -> 90231 bytes docs/images/hbfa_covreport2.png | Bin 0 -> 138869 bytes docs/images/hbfa_crash_AAA.png | Bin 0 -> 8252 bytes docs/images/hbfa_crashes.png | Bin 0 -> 37503 bytes docs/images/hbfa_hangs.png | Bin 0 -> 37147 bytes docs/images/hbfa_helloworld_AAAAs.png | Bin 0 -> 5259 bytes docs/images/hbfa_helloworld_debug_Acrash1.png | Bin 0 -> 57192 bytes docs/images/hbfa_helloworld_debug_Acrash2.png | Bin 0 -> 26502 bytes docs/images/hbfa_helloworld_debug_Acrash3.png | Bin 0 -> 101042 bytes docs/images/hbfa_helloworld_extended.png | Bin 0 -> 12375 bytes docs/images/hbfa_helloworld_list.png | Bin 0 -> 130848 bytes docs/images/hbfa_helloworld_list2.png | Bin 0 -> 31715 bytes docs/images/hbfa_helloworld_reprocrash.png | Bin 0 -> 386844 bytes docs/images/hbfa_shell_helloworld.png | Bin 0 -> 1510 bytes docs/images/hbfa_shell_ls.png | Bin 0 -> 10432 bytes docs/images/hbfa_shell_map.png | Bin 0 -> 4777 bytes .../hbfa_source_UefiHostTestPkg.dsc.png | Bin 0 -> 423883 bytes docs/images/hbfa_source_helloworld.c.png | Bin 0 -> 424217 bytes docs/images/hbfa_source_testhelloworld.c.png | Bin 0 -> 447686 bytes docs/images/hbfa_summary.png | Bin 0 -> 47661 bytes docs/src/README.md | 31 + docs/src/SUMMARY.md | 21 + .../Doc/User Guide - How-to-Add-New-Case.pdf | Bin 0 -> 1646119 bytes .../Doc/User Guide - How-to-Run-Test-Case.pdf | Bin 0 -> 2084632 bytes docs/src/archive/originalHBFA/README.md | 11 + docs/src/fuzzing/README.md | 12 + docs/src/fuzzing/building.md | 32 + docs/src/fuzzing/fuzzingwithAFL.md | 107 + docs/src/fuzzing/fuzzingwithLibFuzzer.md | 89 + docs/src/fuzzing/generatingCoverageReports.md | 266 ++ docs/src/harness/README.md | 0 docs/src/harness/includedfuzzharnesses.md | 74 + docs/src/harness/wheretoharness.md | 22 + docs/src/setup/README.md | 5 + docs/src/setup/linux.md | 198 ++ docs/src/tutorials/README.md | 7 + docs/src/tutorials/writingafuzzingharness.md | 2342 +++++++++++++++++ 43 files changed, 3224 insertions(+) create mode 100644 docs/.gitignore create mode 100644 docs/book.toml create mode 100644 docs/images/Step3_Select_Boot_Manager.png create mode 100644 docs/images/Step4_Select_EFI_Shell.png create mode 100644 docs/images/Step5_EFI_Shell_Press_Escape.png create mode 100644 docs/images/Ubuntu_boot_select_firmware_settings.png create mode 100644 docs/images/hbfa_covreport.png create mode 100644 docs/images/hbfa_covreport2.png create mode 100644 docs/images/hbfa_crash_AAA.png create mode 100644 docs/images/hbfa_crashes.png create mode 100644 docs/images/hbfa_hangs.png create mode 100644 docs/images/hbfa_helloworld_AAAAs.png create mode 100644 docs/images/hbfa_helloworld_debug_Acrash1.png create mode 100644 docs/images/hbfa_helloworld_debug_Acrash2.png create mode 100644 docs/images/hbfa_helloworld_debug_Acrash3.png create mode 100644 docs/images/hbfa_helloworld_extended.png create mode 100644 docs/images/hbfa_helloworld_list.png create mode 100644 docs/images/hbfa_helloworld_list2.png create mode 100644 docs/images/hbfa_helloworld_reprocrash.png create mode 100644 docs/images/hbfa_shell_helloworld.png create mode 100644 docs/images/hbfa_shell_ls.png create mode 100644 docs/images/hbfa_shell_map.png create mode 100644 docs/images/hbfa_source_UefiHostTestPkg.dsc.png create mode 100644 docs/images/hbfa_source_helloworld.c.png create mode 100644 docs/images/hbfa_source_testhelloworld.c.png create mode 100644 docs/images/hbfa_summary.png create mode 100644 docs/src/README.md create mode 100644 docs/src/SUMMARY.md create mode 100644 docs/src/archive/originalHBFA/Doc/User Guide - How-to-Add-New-Case.pdf create mode 100644 docs/src/archive/originalHBFA/Doc/User Guide - How-to-Run-Test-Case.pdf create mode 100644 docs/src/archive/originalHBFA/README.md create mode 100644 docs/src/fuzzing/README.md create mode 100644 docs/src/fuzzing/building.md create mode 100644 docs/src/fuzzing/fuzzingwithAFL.md create mode 100644 docs/src/fuzzing/fuzzingwithLibFuzzer.md create mode 100644 docs/src/fuzzing/generatingCoverageReports.md create mode 100644 docs/src/harness/README.md create mode 100644 docs/src/harness/includedfuzzharnesses.md create mode 100644 docs/src/harness/wheretoharness.md create mode 100644 docs/src/setup/README.md create mode 100644 docs/src/setup/linux.md create mode 100644 docs/src/tutorials/README.md create mode 100644 docs/src/tutorials/writingafuzzingharness.md diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..e9c0728 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +book \ No newline at end of file diff --git a/docs/book.toml b/docs/book.toml new file mode 100644 index 0000000..7a42fb6 --- /dev/null +++ b/docs/book.toml @@ -0,0 +1,6 @@ +[book] +authors = ["el-tipton"] +language = "en" +multilingual = False +src = "src" +title = "HBFA-FL: Host-Based Firmware Analyzer - Fuzzing Lite" \ No newline at end of file diff --git a/docs/images/Step3_Select_Boot_Manager.png b/docs/images/Step3_Select_Boot_Manager.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa33783253c2f26a8115f96ff90363594b46ddd GIT binary patch literal 16247 zcmch82UJttwr;Rt1q+CPh)R{Jbb!9{BS=Z}kpn(|bI9?x78}@$h=#W(~4+fjV3Bx?8$g zTf4a1K|R(^;~*f=U67)jjE;B8%7j-6?Es0qvD@BI*T%=gWZ-+vQG@3D>$K;uPdU&S zy|xgNFMH5rcimE%M>D<2PAFtb^%3q}XcNZnvfd$==l9U__n+3@ZE%`u*zH`Su6C;# z7jSQDpOC=J&-{}0w4F=oYDYpHD@3x!uNeBZG+32VcTc=G>eO zaOFI}y0f~yeQs-OYq?DaLkCJi|6sWcsidq-8_ph3SXgLS?_DAv!H`MC1kNccQj53t zVG;$11p0e>(*_6ibai!e)6$--VGoLSCcMlNf4zL3s_~3lzo=h^k|`rJ^y0wKP|P6( z2t-5CR;puWh5^P|_!&e!*c!*}#Tr;qQE~BHP+nf1mZfF-kn1TxNX-n4j00u1>Su$# zFkSe$G>|Xs_WN116bKY}e{gs>CyGUZ>p3t^B$I^FbtIeu6gdAR^}V5y5iQkQT&L>g zZyI;6YA7m(y#8|6)#{dl$HC8dULzro1r7NFV0881C-;O!M7U@!vKdc~j^<@$v7bFf z5topVpONvGn83UA%*>}>R>rFG)6(wS{{rT@Z)FhAz`)=nDi4ToU|=A(yj+KtmR8_$ zkl5{}7b3#K53Yw;F>(XkS;kxE78UWOb42m-^5zv5b|}(`;2K|4mY4tLu{;}CAL7(E z?Pc1lt&Q%lGn@T|9Q03^8hrVfHQ&^6u4AyB&SoLz3Pkc8pPilEkEI7zVz)b6?&<*p zym@lZ5JXYU*IR00#%q>(rNdM7c?R8`z2rMSOS*6@FY^WS=}o5Q#4wG=IqqF|H~s6! zUa#BwZbsH^XH$~Xk)j9Nw|*ON(zLeR`fF}(t{|FSs_9xePgoC*ld8i}$d4!_xjV>V zSX-%=+8de2;Px&O^)jCQwq9oGf^Sru?{osLd#3HWzxeBKu>GJR{GO65Ob|N67H}k; z`V$K#Q&-trOnojQ7}709nT>zS);Cy^-0&jKoRy_H-+(#bua(6JSN1LBGxx?REZ>eB z04tE)M+$v?jHDHg{6mW%wN72WeIfpt39I!6+Vd_NCS`0aS9R*BCi-oEd|?n?Rf%An z)XwZw?qJM+k!hnEAkW{Cl%HwltQ|9&>xga;-p=XUUJ-no?>FOEyVWbTNLrt){W&Qi zRDw(-f2hP}NdypW8}vC~%ziL|Tud{XnJVo!DQUj@7J85I}F)zs>IVr*oR>Y8V zno2_RMi*G`bemVeshBYEtID+0)O)tpfX3vNmX>nPypy{x(D8lfwN+bhnA; z=bxHgYE0C5^M;0OJ@D*>hrekhHy54YFDD5^g7`tMe^ue-vr1#RJh$9W^Vw%JNy(S{ z%&;58TUGG&xT^P&0b4OGrL;%GA>3HuHn~2C)4TklPd7)ZD8l;BKpv?)V<$B zzOl7wi7n4De|%BsZC?w?n{xGZ@}0r?&MXHBSNbKf#9OEQA%+6P2{Vz6S#ew2YH%p( zWv8n+=7t?NU{+s$y;N(v6#OJI+eVSLnJvLM+HH)I+5h31tK9u-6YgD-;OTcPLcZGz z6Y&lEbID1Pew9VFOL>yfpFLdPgVN3m*-xhL;&Y!8N?VEezm)S}tJg>aMV=v(DMWoq zA;-d-kPSLXpLJ#-AKdW0O^Pd!T|SbF1^P^g_A?_9=gCAB`EtSv*=|mp#ls=)L2x`i zlZ+@hryR`_ECTJ_dDs6f4t~XM&3&zZjeSSc>fi}!e$|MuSMN+*2o|lF`=DtkPS9)+ zvklSnuXuXp*L4_!n3@!B#h=OCWpLc~&Y-0rq`SA{Ma5bLP9Ei&+Q}@aA;IwJ>*)F~ z9HA>$kg&Mqd@)Wp&kwChT&6_{HX0+WN-=l0LJT$ui`^2Ax!QbObNgS`9ApF+n0p$kR-h zeW{g6(T&F$bwly5KIfr~8g1y1l$lW~VT^&6YcXf?fGJZD>-VZ@n_qj$y`xwYk!D$; z>3($Z;iEr67G9F7$+hx{&yUbE$zhzs&3;+);i9XUav?dHYY)CbyGoHQ2~_hyg@ z9usZAa>KtrI?)|(>U6t;RAEky+w5) ztiH6KcZ4Ykr*4h2eVSkC?EIch8&wO7AF0*gudjY~Pw|TT$G*1w`&?_IPggEK(5llN zdu&&H!E;<8of@AVnDHaNW0b+PklOTPrVqDh&I66qNZM-ylwAD}x^woar_zj=;U-~~ zAC`I>j8)ALY4c>au%pc#J%i{1Ud$qNSEX-xc8qpmP@Pm8pW~_gEOS=A)q10#aBXRJ zx02f;b}4Y}P$>Z=q(iFJ&6CZ(!yx7q9?3lDyc-s&nHT9t&_qMv{rL(9Oocg7tOrpW z1FgN42K@GeH*QRs@(FlL&8*ZZtP&kl6?!L+M_bV# z(|6UqTJ81-KWwu`0d*y5w_CM#HZ_sxWRl)4piOXu^e6|^DORZ(W&PCvk7iP4oR_ok zti06f^c)jWXuULC7&iL0%3+|n3;)V5%U+R_P-BBR+&gWOk38C7oH$xg;e8IxRh~Lp zx>L|sYrVBSSzjR$soXpB9z19Q6LOpxEz~-2d+IP`*SWQeuY5Zf>Sb%qkx&>g5<7Bp z`j(_`IbZ$y6IB#gSJ1X|oOeHr{V%n)jI&prO}#tl3@5D=ZTOi)O1oA?2YTTi!}mzrJFoiFsjCb|Q_yC@H);w2Mz8 zopNx#!d*N|OCn|JUZmXZ+sEOa-Z-Ev-!Vj~!CLP@)pvkcU2VsyoA| zXsBi4bm(7Cv@}99p5NrJ_lz5S!}Fk9{~OiP$0PoB=>XIbz8c}uqpUTKh`q&Z>sfps zzfEj&@6Xu*Z|<@5TaslMCg#sd))1XLK1eEli(L6|l&(x;%TO2jl=%utUS-;G0H4p6 zU(RNgV>t!y&lXTjbcM-_U_Tw085X|pF=;k-O-6ug%LZ{T-xk5wEqN1<$|1J`;vx&4 zT~|3bFIRP@QBI^Gm7~wu_8jcz?w#(~Fe6=@b6rwpLq28EK?1};!VC=!vFonXnNLD( z&RC4Dzsc$_&VFB#5J{djA-4S3G2CA>TcRVIe%uj@{UD>8`409h0X3HBXFm=-%2=Zo zE=M$>h_h3W{@Nkig_$kt!5pjR+xD}ThcfKem2qNe$bf8>#QTc1>t8SJdb2KPwBJ1~ z-91gWZi>uZ8S*f8RZ7EGm4n0@yLQdptk4lry`~t2J?2JJ^lTQS1 zOPV&{5jJr*g`0J$JmygvDG+bJg$!Do#iGI%l3Fm)sfvemp3TszlWpIh`qpMT9Jxf5e zsITc=f8o^2hy_A8)|eD>gxE)J6E!)O`UTYnG)X}M+B{=HsWgQOiK8XVAxYJSQb%Ff zfHCeo5^-%9$c*ybxBpUsJzhLVA}PH6VZ4!KYBJ81?iL%#Wcq-m+qC(1pBdT5sRn|W zb#{JiGhWnOLzR(#fN3@WmVDWs-moAW>ILECEOiRO+ErM2KGxy5Jt8Zk*nng#B$0&` z)`kL7pXPr9yG?m;qz1X)e{tEfax4RxePj^ex2o;z6uAsO_k~?pSm_nby!No#{>Fu$ zq5S3dty-4FRMM#zIb}T!O+7zqNA;I*C4pLXiod_7(Lu6M4Na2wG~APL{dt5J53qF< z-SX92*Cp;E+xblTM`A_Z4B^`%}&sP6EETac|xOCf?W-E?J2C-|O0)VTrC=UQ*C$Hm^#lFeVj zGg#-kHN&NJFts+y0!liD(JLKa-_xJxyv3tir#3O*we|w+JH80Ex6@Bd-8=J=gFEdV zYr4lLd6e(43w%Ai^|a@>Mi8alW?@y{lpwjM4C9{@jFBt~E}I;x!I4m%jL{Aws|i=j z6!;03Z;f6hYN0!)azaQkmsK96iAQBR9i0;%g=wx$!gXvb91e(A@~)iK8EMD{$1^N- z*QmUCVkoo)E2L76TEXBuFPTm`AFR&{5}J}?V0u%m^yZ;reFIDjBSw;{vW#EN946~k zlZG*G8z7=BOYPQ|%24k2d%oRc922hJEnX#eapXa9XthND&>eoWEIRTdlS^q6$*s|7 zb=#2;ZW$E`y@$7%)5=TO^NK2T@5x51B(l3N*sw6WU$xb;F$!VXDSQ=U?M6<6DKU}5@-p|=~-fr!M>_E@^26nD=Qy3xM zDmK?dLi>vh$KvnP*?4BONZSI$aE1yK+cU0~8PB?+0+Jx~1R^Nt$DSmSd$p6?yT!r9 z-#k0eI|UH?N~<#m4nOaN$ZN1*yyg0eitDNd3tQ;!3ml^wHAz?4(JwA|LYw)fzg&h}U-ZY) zn2a7L>)D`|-L{KAF5ik?DtEO^FCcNzJ~od=c#$(E&RK-liP+qg-@4tf(|PV`_$RQ( zTCSQI+4-s-sR=eZTCW1FFHx~o88v!!W|r~6w2G0J6+e^Lx=sf2-D_Jk&vEI9l`3Gg;y=dFJb&__fI`?~EzF zv3&f=yPh2+VW|L9J{7f6 z?&=s5f$@uqG{${U)d$JlE=6Of=9oRnOYM@LBCeedy8mOUMsZapUusWJ7CYpMNWo_sB|7K37TkO3QMpW!Ga>=49pmjSsHiVjY13 zfjEZf`w9t;>?u(WjjjoR-G-@SI zNE~m+N8%jYRF9viT2K9Gqwg>EA$;&~BT8MPIS7$mvbZKlXwxn3CY_(2F*g9a4np&B(SN@_CpVT0HKYil7$>D*c$KgxnUQtNMBzoYt5_|vunPSf zHg1at_UKpA(cm?R(GA>w%FV~*%t_)5lJILvnI;daliw=jeMk>3fG2rd$d4gqCuiu4<&^h#FYkPEHCN75G5}RvN2fHPyaq0XCoxNMi zwkyxAJ}f<4kTY=`*!6h!cF&_xt2$HjO5K$!RC#PxEe=jP>GxW=bnQb}=^X-ou$p*1 zYtMV76&H6)OFM>v(aYmh!EHpYOHEPs9khrxGrYtUmimdyk81FqWoN&a8gr4F>ElNN zV29t-hlE}`4P*Tc(k31-dDpt^!KEa3`^$XYJFgdx7-NbJQq^=%mrvcJ%ya)f8g<)bN4s!; zEZrA&WavD0AI7AWrXkld&;HPFF_zglOE@4vsVpHr$8!EdTSAYCg4$7{uV`$3K)Ebh zHy=59qgt(?%&$9{I8s8mVz96}a8rX2N# zW!embL;JHEDJVuHcZc+ zlvOyICIF*<_(VZ%FA@uX65#U506^1#k3oYti>6OaI7^J2(2(ngtXytPy}*mtqQ2X9 zOz`cV3kjKF->P>f{R%JfReyH5sI3`abe!7vIWol|Y z960h3`ISQDN-H}Z1uhFD_I)^4WPIxws zfOi-hbW5ER=P(!ZWzV)SYj_mM$9YWY!zJh)hD!~`24vvW5KX$Nb#BxkavQ_T$@Rp8`j}MVH#8R|La(CQP_2XmlnNR@pD}4cAevFJvRsL~tak=&Nk8QPU_8w5( zp*Rfyi1cq#0aP$9vclpBI|DvIy z5k1$5!ozL@9KKY1IZ+E^07|SOSD^Wst?6?qm!sy25@rTy1}ZO{28R48$QlT=AhM_a zQ$zd1g-;c#=%Za`--U>ZP;aJ703%Tky3f2UgCJazZ1_g`xO+CcZHe={97}0Q;trk? zl}_aY)f6CU%@Pzy1P9AkW0X(~I4p*I=`GfK>{-)<-V~Iq=nNK-D0?zN+|kCZGSzpP z7q0jcvY__MXUXa6M!Ux2V2pf>I>gAU(}A-97%UJv(k^>{wDLun;Ws>CTI%CqY4@sf zp{gLEivyzXZj~Z9Mv~aWEB8;itOW_jz3}8CCow zh?ZlwdcYgqp-eXq3(y zc&!kzBX8odV-L1oZUGZg*6?r0qDG9CjOSUBh37ZMVEY+R`|$@igj_dueZ3L*A(+b^ zZfY?t*_YiPiAA5tO`|2vv(`at7LR2(&tc1hi zdEFV;?C|`j%;SDVYWqjHa@JZm`~mUX$jtVZt;p&!qrLrD*pTDbMNxc(+?6t5kuMBG zDaLC}nkH`$(l=Iw@g-!3#?FlIqmKc&d8~+qBS4=8ENqXj%tDRbTH1`zhK*EsEnuZc zGDD~VBV{r?`-tc%^uTfO>sw480m-L}77QpdTC3O94_Gq-m+Sw;8;%jA)aXn|MiZ`m z)G()Y_`vv~e#6vzPOKqsvV^|TIaInMv`!g!&|wW8_2;)CvBQZ!D~K!Zs^I0`WZ2pS zt~Zwn(tjG4+v8XBET#1=KDik-H0Wj8my%_IbNP6X1iY zNnI5$48|rcDclwxo4OMu@6i7aYKJ4eapW8`VHmGjn#TN%}qdym7DCrrYAiZ*RMX@{xM% zm#S7yH<mvdYWSlHM+^|9WfpUGs(xX{N8=Yo0i`Q$_gg&L}+HYqt2+lDZd5c_(wL zNKBp5#m@-ZuH5a~Riee@u_-#>b->fGDI=8b)USZSrmqCya-pj?RH}7rt4En1KRIwr zh3pq7YRM%_q4Ht0Of(@<&fg6Bp1!X zBjfpx4|PS={hreKr@#H^yUNYv+f!ApZeIq;eZS=3=vBF1;jkisTv$WmiuUtG@-s8E z*dkseQm)$7T`V-tVN;d#*e*7`n33nlQDzGz2vs^76*j!Bw9$p?t{6+z`-a4eh&W74 z%-fGo^a%3=%f4w98EVtArLR;{^Ui6l#o4^iDA4Hc4xh68f_O1nO{|qaus4kLOgAW?L zg_GrU+fjM?kVB=Z%h>EpKc-w}>hhQ;K)hHs$Nb{d!VtmAE29-L_ga=E)NW9ZWeu4c ze>%!W)mR1w^{CBSYss3V^Cd}r`;^cCWE zOhw%}x!;PPy3DU|j^y!UFX!i(Nf8c+IPB6SMBmx=P3;{)ndWkIzO9+JGXG-M?w@kxC?f5~sJW_^>V>g}yE>vo6o=^!oT9p7~b-2vi3 zX)?$VC;{R}aV*NY&*YXl+6t zdJSt>7b;+Y$M>5nqTZzBJMvBCNJ$+@)&9x_KUHeg9mz!RteMo5gL}~2nZLBCdTzq#Zud`1{=O0p#TEC> z%g>`*tXFHX#@+GC4^IG@{R4zV-9(?BD`25ZH0`XZN1O z6m@@^G^vjSG!ex2sH)4i1%K<$;POzl=N#^8Tr^Y`ncEJJ4l6TGe7{MOXNR<)t+2#mB+~b88TU=4G*L-pr2gw zf6}l$mG0si3mD-eE><_)G~xv^$Ug6d&UX-a&Q3t5X-y^?3- zNMT5s#xZNd_Ws0tO#ZCPvRSEHA6#n1KOhE$c0uTYKwcl4hExj=|L7}_uVLPo_%$JX7Lp{*y{_Sc3p30?N!V|lFox7qV z;GU_>JZ4b$&WCJM&%B{WG!1eWjP9{rU5syThH~8FEPuD1z5)W>A^kZEz*=0`X1n?H z5;JHIDGqfM#aONvs<>1yx(o*QpGx3)!BhFyw+PY}(LIy)DkxNWz3>6`;)iRZnZ^%B zk=&I5W_d?XbBS_|@ricuI(YZ=Y~5ky=T2-R^Xa-a!4NhyTqumq=M3ocrAh^g=1LH& zQe`h8N@;-1x#Q(YFfsHyM!79+7(j*r3=)w%+@_k)iC6_xc?@RGel{ZQ%Y00h^YobRpao2`*#;52vk)q zaLuE1QDjtU-`Qk&WbGC| z^8=Stfo8LXXWwVICg=pIjlQ-(H)Rf2kIdfyb&JpsO(Bv8Fpk6;P#=szz1+0)$ht&3 zf)zg&x72YX#NwGQqLymIvsJxOZC`D$?AxM_gy&F+AS$xYSG#ek@rQL?A6ZOtw|B)% z-1E9~4x~=X}-fxQy-|Y8G zti2_vx!#A@xOUvcSPrXVC+}L=S}e+~(YPo>mqCFRHv&vLe~+fD5}~_|r#&s(GcJF2 zo_kYe}ZoQhOsy-slb@sv4Y*mv{6gypmxKEu!Ir(CJCfVgKO8QJD zNe(FL$fvHdgepv4|Lk2OmUts#T#0Z?7~xYi{fu?YZH3jPhgE3Aa@C`a;!|Pk05frf zr^*PCHDneoRozl?<{{(a(G#~B{+vC?n~>-><5;ExLC|OBkSOMzYr(;yuRx%S@iE^y z&9;8bF}5(*zppw|{2u#mglhVS=SNPEw981t5g4`GwMcr^jJ3>L}Nru6ZI9Z+B;_lU66&g4Iw3oM`7R3~-XDIs z(99b+^3mKBN)6(KG(IFK<{iN|(m%X%>Y=;}>dvB--K4DMoxfo2#C(pwk`lD1P{J0V zLO4}5tOU|lEf~4^=h~$UH1CsEWbXFpPi81%wMdf@D-@tcwh^O8y$!3pwQ6Y`$~Cob zzsD!H;FT10e$meCI0iVtm|lK5uEFQHmAOvBVgkP*{x~e=zMDP%^&sjWC4LCK>2}(& zW2nDy2Ji~D&p<#l^?!2)h`;|ojV7n0hd++jTTsj4Bwok2KVLm&fxciD3_KB39U^o0 zkK8Tav^7ux&jz^&7&TF?A14Gt_bE>N+2*41@tiFFdoabn0x&*Q=*pf*hLM}=SPcb~ zEB)t=`7$V}=safp9AJr{z3`FY+@KThsXTQ0guIQB;e?zUmo)!3`L!TvfaZTBzyA%9 zotenXsjc-zP7U<;TN%IUb4K+?sTyk?S)3NI-aSZY*+<)-v5o=%wA8@88)#>1T))-`9(+c@@b3mQLz^P{@)&aFg zm?oomjyy;-+Hq*R13Bx@MlGFV9#c{h^8uCf&@=%p-Zt32+IJ4c5rh<~KRIW4&$?w$ zQU9Ex`BCQ5ytS7>DQtN#+0Ku@4QY0hB(C4gQCY7-9AOLP7+6b*HCZ_EslS!17x_Le zBId0obS^~qfmdFZ7NTlVtlpm2KkE=|weIk$1~+!jN4XRSPIUDz?lY3h`nCjzX0!7I zxh7!Ei_GS^JG>Ka9L+2SDry$e7A@BkhOK*M7o%_2wY)(gIVX11TDw@W#;e*{)|m(5 zaZX5ezJ$7t0Z8D;Wl)PPkF=4^?wi$tU4G^Z3Tg0`r~A&cN$;15)*MGqYR=K68>1k? z!Xt5UD?1~bwTR&vMdr^|$or)YcWF1zcHoEIG;u=*f!|Xgqiw%6&9PDkPry|dc`t;M z>Zb$H7Ysp{l*?&(kGRcuXG-eem1ZTUh@o?;unOGuq1Oy&qF2u5YVg~668kEGiI)g_ z_i?1UP56;7iDY-_x@2_c?=tp%Zk3Q|VUCt}sFgC(4{_^Iw4=>R-DU$Q^Hs-?n9IgO_p&*+CFKEHv`_) zXe+a+UwvH?+p)W|UnDp-Yq~Ku^zGK;-(!OVxLYy1p}ne>=C(*{^CP}Pw4S5jgv`(VvzDZv-PGWS# zP&G6}p0@w(aPd5*l`@omiW%e_;kpZ(sswK{&-`6zh157t&YuKZ<+;L>ipscNWcqK{ zr1_F%pBV(Q7x$4gS{Bi4gotp)%)~hF??bRH=l16F`9!;-4sn!Jpg7wz51^a{Re;ge89tDuhKMf}G8Sg1~VE5{}=%(n@uN=G{^pa5Hp%TMdiy7vva}T zUm_^(?K7O24mR)mOXkn?rITk_>7R)VC_G}N2@apB%QnyG-~1CyMp-3DD`{!SGdI{? zm0zBtYxYvNX$hY_5!n~tKh@o*l^-??bP~M5&hVrU{>^CT{a}RuL}=G74S?4+PIC}Q zt5mS#S*d1D$(UGTR-?UfNb5@hRmIY%e6^V$%|bl6k=AKbv(tN{KBpB$`aZMfx5e3; z6FrMcU8-lY4u^n%x7iu?;3-g(@mf-P|EXesP((`&)1JgR`X9SSd>ZwyXZsSAIDD7@ zzF&q~Q72BT-UVd*&-nQbkM!uJGYvY9p*b^8JjfQi4|>*sBh<=inib*YPanO^Jo`}O zLggc7;uit`pMBVovjban;HEqc_OylT>r%N|szEp_-H9THgMG8?KYZDF*Y zG8n`2LQx-4gjc6g$SbuBNN_+|wN1~c$2|lRKs6HRr)^K0Z`zoOYDW<{<9mo647LP| z<_%N*sl^u1(pvmyyyr&3Lg`n=h@3a?!4csJN3=OozYi3wVW{& zP6mC(?NhR96Zm>ic+lLP4JSVr=?7BnQ#v-g9LIqIm7=F0o{ExDI0G5 z=tt6raR4Zqe;a|6SijPMuA;a7W!YY!F!QtK8{- z5@0~z?*oPmTBp~)LotS`;@5|X^NNlb`)%NWo1Ev0%0W%+nl=8(3iVEHVJ_-uaS%wO z-H9!*T@c9dH6Gut01@w908SqRhw3FxG=-IoOHdPCFV{AcFq=*`&GVvb9!yv!)h$lK zZ{ti#y-xkTwjhwE{J{70g5)NI=&Vx6^$Q$|=A{{rG*8_C&Ny2A=oC@=J``7=#sQNU znOy8rt4h_q0le}cz>=va&uBBs{}3G{?Uwr7uw$X>0tgg+0mv-*B3!XA?y*DnWAm>y znI-_ar2*A@5K}-uvT_(3_GVAnA{sr`R^y{4)Wk_LnuJxG}9weQoW&tZ7)@ z@GdZw-^h}o8inUoDKASn;>J*Ojh&lv_z}3(l2xqpwpU{0Z`CSzDal>nidx-C;Y3ER3!BJcg#I(ugwuWq&kyNqp~0kFWI?9D;a@BK=UZd)5Sftdt8 zk2E{`_VDg6K+rC(Y!tsY*a6M@1)Qk>?j7&Ig>xeVV+hc;=Ja2~;yWo$H<;BcG0tr| z>>E|EU=QF`hV|3>h9FDm^#1L|Bxj$Vm9hufwYA`x6%ynsD_t|->@#e+Dcad{0Z~Z5 zaP2>}@Rs%A7~D#0etGZL?bD#oj$cOeQX@rv=rdQSOyZN5HQgXYrPOP;sVQa& z{w-usT`wSQB__wc4?_V-j7#D{aE#erH{+@iJE|EatL$`j(#Qa;Ubi$ih=X;& zMS(c4@$kdfvmlLSV;{PQ8b7>KE`in=f!8Pi(**tGr&m3FnuhT@1Qdu~KM&xc|Gwt> z-zXFQ-3D;D&rw8z-`^N4&9ctwWZloa{Cuy28sH@se%SAHK;Hu`UOFzQA$QuEq_~Q5b4Q#TtdP++D#V&Fbam}6`z;7HI^cC2>3a{}*_%%vP-ZFB zNAn^B>QgxPmEzxLa!ZZv0gHW6QHC`T1VmEx;)((M)lf=aV5{yE?|B#FvZvtkpdnY9 zvqV4#11mp|uMb}C;>vCWP~^|>EC#*VhG@B<`3LjcGDVzs=?lV4g?v&OE^ zrA*+e_UOwQP7Gzkrs%Y##50?@j%f0ju^Hbh6Cv|1^ zrrU9y8~!4Qx)R|{KyDf;mR^Wz_`rdwtxekB2SkcVq%%RdPI8B+Rs%JcmfFV@_4-7B zDQN*)%*Es7u=*o1Kz5*Unr(0(XWiPVPAi|oQmeIVfQ_u5p4mo^J4Y~&-dm#`QS83X z<^cqJ1AcXa1VDkiP+94#?OLgLOA*-Fm$rG$IOG&X)e&&XT&KK|ug8NYH!Cc}Qd99H-Yw0}_l-;5IoRR5y! zh`(;h_yi@;kJs@%-W=dFD<3?rB?Bbc2fQ1C^$SmrX+E3-MDy~Ko5|9&woBJ@lU5G{%vE9 z8rm>=JZbkP+?}msM8&woD(+b8w*QX(|0L3_9L>M;QebyQFM^nL+;y(cYijKn;(-5W zh^YPj&^3V5&${IxKgW zNaz3iZx*6PpwcIk_yYSf)9u*$z{qS+=(tuo&iMmFVDvO`_=u8 z$84Xh=wo=&F)vLEMGb|bq8Pv?0q(26Ki*n80nG%mAxGE~mYdEppFnZ|0(*iA`ixrB zofyv_Hy1A&Fnhd>2R#Ki(tl}ve=5QM=bbY9uXj%-|19_9Sq1`@|Ka?KC-GMSc7L)T z18($u$IxJl6TQUeV`b@kcjiQ#ZP_RK@lNJ0K={vf(Z7`)Yv3OmOEv6~(g|OUec31S zKy&Am`&yEe7aLre}BJN*BDyw_PI3UR^x7h~MbB-35Xw!46e;5M^DV$iCcAdck>tASJ7@vcAAjWLb0e#yVn-Q ztOeA9SANXTC%E`w9YLF^cMUBHOhOm zU(K@Fs~>{ItepV`Y#w zA;@*}yfC`Dm_iec*mU+}UCN^NchZAbk zrIJ#m6J+Cl^c5UJ3PeMd?l7%6sIT6!366|S33m&hwff6Rq)$hTDfmN<|wUjo9tGNI6 zh760K=bh8E?j+Flwk*GkAl73Ow5c9HHtaI%Wzexvsjyr>0rz>(|6yMGQ-6FRXzlNP ziGPLM|5FtCr^W}>8|O}}S6+$t#CW6W+fJbRAcE;zV04h^qw|2X`fLl7eaD-iWaev3 We4ku=Py~+@rK*4+EqGKg^d4#u1tCO0N+_XOjv^vOLT^EO4+0@{ zR0I^HlYq1+NJ|Kj5=ugnZ*%^7pZmVweeZL5@ge{vnE5;-1U!5gWWsiM!HWn+Z zqS=k!{+M%OkHG#LC#RntmVUJ$aLmHQyLqDSyYcbk%}@2U#qAF=TlOEcJMs6Ok4gKh zdJP^F6f!q;7xIRRXNLzZ3FfqswO?)xCB55O<^%^)afz?=CWC@ae$}2M&7n{zLt{7u zE^y@@&)KWD)R*gWUmQLAS9euH_bl*lKM3@A{bHh?bfO*^NJ%D?(g*bw;Di!OK^4yo zE?(iH7caPMl5js-Cvt8_>CN&0g&uzX^pu=!9`FSfPYQE)cQ^C$!XAG9@rC$13u%c- zBcNj}KF|6HooEWt!gh4%(AU=&-gTZccXY&bL<<#$Xeo484fpqFPav?(R=`_#zd)f- zN?ubM)E4Hl;B}w8hQ>z1&=A@$9VqLVwz)YvEj^vyA>_62%@srNANMFMD3DZEQo879 z1PTrgRt9p4`1RiqRC0?WRycGEfPq%25r>9yr>0;yJiZi%vy9bPeOXHi3x>oKMn>>I zPW`HATrMFJt&o0xaiF~*(E7f7Gl+C_%HP`|FvLiO17^RxP1P;ta-+f_F%U=_Oe7HULpLX(`bn~;ExEZj zpKvhvJzI%4J8-N}H%AY=XMmLCATYGJGxo#$AP`+^~ zr=Xx9Z9gvvbT`N3Vo_-Ae(_+$JNvny?ggYb#KQ2(8L{J%m`y+WE-Gj+Hwhc z5=ei4L1TSrSn+M3-)!ydE(Ay3PMUV}@JPgYPO1q+wO6hH?cK7HPOR~#j%lx**j!(C z>q%37qtTm$Qw7GiEGz3AY#+B6>s6@|?X9|BcXasB1uw#Pz7gAGN3R9G;^DU{a~dT! z_`YGq?yF{ixych+=6_`+g<;uyEG)y0#41u5DD z1Oya)x)kMoGV1nhw}KEC8MY~e^6ThnpgwV}`QD=}t;A!+%+vH+SP>mqVb+w^H^IE$ zuo*Zkxd7_XBDUS^$3`YEysXV2_A;`1w`cjKf8s|L!7XOyok|bwu>lpHTV(wDX1hdm z8Y7go&W|283A6`;DclW(h{uwS>)Z~NoZws>%9Rq{+x&Mxg?s-V$9mXlk%^|DX4osQ z#h6n0q3AyOp|Rz7AD$qdGd1}-#$$%uhSwqH8-j0@c&O4y`N1|tcCq@oFsma|w)sfG zY&jjTQU_iQQ&Dxe0uQZ07aBTu8r9@w7dkBk?jIhoqTaU+imhNwE6_)6;agWogMEe6 zw|ijYWjvy;#lCOO?aa%iZGRS)3q&L~_{s^6Y28q#`X&^F{WLLj`?hXma1yzfo>N_| zSXI@~&@fCS5*21Ho{FlHWs>$5y1={vl+4y2e#y=r-p*l%Y;XE?Pw;xE<^+=la$J`O zdHOUOK zgST}bmMi5QX-|x$sF3P)6i){rW-!SJ+!Dc+t{nz7%xp-ukS@k5^n$gR>tiB{>lU4i z+?h-!JD+JZW!QOibKzZ__bI4Wg=6@<;G_-VG)*=wH$qKk@v}K^RFhFQ>?APV==9sR zu(u|^G(Dp1gy%DSV<@#F4gn55yFJn{mxid}u$hR}pI_2t8-XkOLT)Vi;}L}k+2cx) z&%}?h-mCR&5A`8|9!gB>T>R`?usF=>guhSQZs2q{F7olU7AJEUB*wTWn0Qv*f*0e} zf2|N!PBRwqKx+upOlJm=^e;x)Zhr?WQ4*Swe>X}9oFd1BYnJ!MiziwHZi)Evr z61hBr$(9WE@PKqhmDDOc?u41RaA{Ny(wuh0Ikq) zP`9CxzlF0+!?U*kIn^{?_~b&s@C{Kd^FmRr8x)0Gboe)P_yEl_BY!@r%>r!p{k4=G(G69x!Q<8&QE*J+DegGu9@XCo5EP9ZKQ3>ub}1<2j!}&>LY8& zwrwd27bIF8lj{fzYpNYgM=iu&qt-nPp7*@uIO(9ISIGX=$r$~oBq3x{v4PqTsaoV+B#0c3sa+-s$v#YNa@!Kiv9Xu3l*k4(2uDNmH zc8|?cc%Z>4fpEcn#P6xWS!1`o@rsJ z#Kmtyt%an?wX~!Pve{ejN*(H>Y^|Ly#tXl^dwjq|AFkPPI>D!hJ%XX*8!^K&-3@sK zHw0_xZXUruQyGIR=!Af!h}fdd@X33j#_;FoS~j{H0v6565$E1!N@7ZUdsE5=;0-&l z2vl$|!mNPwvs;F@@s_cV@v+?3ZB??=Rt~#?&7fFbJn8r8xb7WW3*v zQ0;GC9O2f!n6Dg5*$7T9NkI&MDn9K#HlXfKskP!chf9y)OrQ3f_{^2anChS8Y-W7L z)GQE65;LX0493Ytbdf`C@Eq5Q!|`gaqyqKRrwLWV zh!xjOJCrZkHfKP}sNGIG&~!SCg|i1md5!Fs}bI@COhmwIpqVL4b5LF;dm z(Q}`oTN|n)t7@wlHO@qXo-3hqz4As_Tb1?O)&AR~&($cEA~i_6YQgkzrF)Gmzu}hq zll=WX!xg7K=f5^Z{6-3wvmbIcxYeVkHLNSS*+_G6{gYt$$+B#kj{o1i@W|4(8 zug&++S<|C@%kMnPa_zcF_Lq1bntJyLrLkxjN*7o|X6l`QQ37;NTY?Rrw?USMjcZm= zfoIc-4zOk-(EBShPI5&)lX+4U9O~7S^PHj=uWZI#Qb!H(BZmCPTw|RY=+U#}K&qvj z+;aXEp;M=nXfM`~t30#eDsFz;+bz?A<+gH(&hYX3U~v`;)ssc{(qzAp!_ATS;4T#o zouQBTG=o^JI6t~{xt!iB@3_$7(OgUY2b2wNB4$VEg;%~@H+^2mtqUJsQSI+$;^l=A zw3^5#O}w)X-4^j<@F|Q8d-K?a&2O&HE*ewbrSefGpB1<*sCz9^v*LXWX+!X2#~i++ zUMBBM;#SQDTx@VHDyJzue?#2QLhQI0>4=qRVZcHKly-}m1r*m=LOzC)%S;SOYtF_GG z>pbVGGj;IS6KpJ9y|<~1Z4rHo&padN9UIIXGc+vpy*N+gTbAKHn3Vuc?}_JX*@W{c zpw3T8*V<2#>W#zK#(KLD^TrOPl)h!l&Juzxo_ySa*+ZhFs$fR+WnQJ#by2MqFSSY+ zxNI)Y*?5)4joa#mP~AhFNKb6nld+4X;Wi83_@b>~RQY#Cf*Vu*L}J>iV{3n5z!&)9 z*V1*IBe)n(%PcN5CK+;Hr(f3~+|&3w?kYthX0`k~1=|XX_nS*~_4E%O^-2xmdY-*Z zKSku=ym0Q{A3zIz+&w%@jm(M*q0i%`<8c{+cHD?Z`q$InDb?(7^bxp*+>5hm%5Gne ztF6C3n-;n`(?DnFAipkJ&1{JFziSMj+}4*aw`^NGd2(V_yk34XvMm{0^2*Rf zF5Ip=YB1^k=HS!?PVq>xMlLCXbA2-SyQ$ibHmQa8-a$6<-Ph3QZp*xEBED_e3`!f~ zlp8w+B@-WR+4;X=qkddsl*;mGG3*#U^BZyWG0lcx7}m#wd$GTHECF$*=qB&k!tkA- zw^=Qe8**Uht`4B~fdp1*o1PFeXSGuH>kz4RK0MoGg|Lmv$BQF=WvQ(`E>B2SB3FJH zTiL9p2X@M&HRc&}Kcpd#F;pcV-oN~9Swu5*MuAQl&l*}?p6<~4j2&u_Fa9taNCpO0 z?NA6+pxNr;7r~}RN!k_b>#6onf@mqy4V@)ECobx5cVy%>)sBUOJ(%NC%8g8<9BfR= z5{v>3zX^n)xQFAEAEvyp9b9e6N3nXID&?%+$V8%M=m8cMMm%k`{U-VXHhRw_4Vpi) zQ{Ue!R8!YCtFU~=RqKYoA3K~9%q}=hOOvqiPw znJZR}=wF;yOP^=|9YOR@&a=-=6Ku=6>{BHun9!#Je;@Zlu$sE87TCp&T$i`|ENvn6 zgmy{5G9dwxmi^3V)D`Wz>f@na4lbSx7(5HLfBTNJ6XDrRfi#Eo8KSm-bRx+Ct=L#2 zAG_K`r82AJ=2q<^?Y3MNjLS2Yu4sWmL#L+g%B4qm|jIa$tIf$b zOrO`r>$`DRA$v_X%Qhx)<1f>dIP^r+f@8qqOUw4sHv71&yNoq#MMr~PgfZ>$K5bHnt}u@-B%g^nBz{VNZ^Ucj);pfA za_NO_bXI7N$bT5M9q{Qs%eI=)A=L^`-R=;PS?07grsD|1ZK7Bc*{cU)M z(eUU_D5}2Fwz-XOAR_i`p_RUL8LYrEx@`nweFRaXredm_<^3i`gRab?1+)}^`$7$4 zd%|uO8l0JHdN^2TI9*vgYRB~A=xTC8@L8=ZoeiGvZPc8w-h%N8ZuE5QLc2hlauCV8 zO9fwoyChX^S8!Wj%~DYDPX6CFy5=*-E#2b?ap)SW?&N^tnw#mX>X`*J&Q6UXm#aa2 z-MvRTn-3?~`mYN32Jr}L{eAP=PH2B&%&Zr}WwW$_)&iyf7^<~=X1IMlSyhuF?^)jF z-)PzgCKO*+VciNB_Q^6D^UB}~wwFVeD5^NAdyEIhW;v|YEQdL#`lo6b=+l}V6*dwR z5Sc}g+#b&R%W9I0YcxI@^%ZKZ98a)JDD&VQ`C`sHRQd5(Pd%F$9hunuZsX0(qthjx z-6<=A=sx%|xe&S8<^_+~$K|%&h2(Nv%drY-w=Exj8>C1Zn0V^UGo>>g^Zgy;vY?=# zF!#; zxW7+3fZAaf*5uiB;YIUf&uLake^?lL+6v24^eW!bFE$O%*whbo>61qa0APU_8eac0 zrWcXrmy=aHhxm2gyv7%uAfsG*Nve1>zqcaZnP=oDpJ>Hd1r}y1i(?!bFa}mRm5%7Q z;tsdgef^q~=M=4KZ_dZUhXrn$X>Oz+K@xd91l`Jq#(E`1HhL)Q&zo1Jn|z{LwjDX9 zBS{yOnsC|qQOrF1Qk~al3bc}4(pk~)=zeD3cHKEbK^^z67xn9tN60@g4n>PSt;4RH z-mQsa*O@TQhN_~8$IZwMzSg%FuDyOB?=~f>(60hWR9N`;upY3B9rZ4h4U_jqu?~57 z6t`)G)@JQ&VAmJa6&5kz25nB4P1mfRw1B=(NLcoVx4oj7WyQ2sLj^VysrhTDkMf12 zRMJ0?4^u{@&uEo}a-lw%pG^ZK*f=RT*b6^Q=IQ0i*B#b6Bi0#DBj~gPd|1bXY9+U6Q?>bz#_-r1giHF6P)!H&g!AV| zFwN)jdJYccE{L>paj|KLVoH2J!p!Awjas3rwQWjQJ(D@G3Qt4+M*geM^0BM0D zC+6GQeJ=I*bZuYf44y&@T3+l5>fMXTi_xUnH?O4I ztuH*);W=l!vX&@Rv9EWlN(Wi%X1~3sbx=?fNkZG2e}%uV;D%!i=S;pJ(x3767lluj zwd;!#LlrU$MEr4=NODH_hHhMqXg=0nQ!ij@)wl<>Dj^rg(M~7*-Gxr?y*!sNeKMH7 z2vpk(hal6AUdJt(EMa)|U{FMJsP z;N6@?5T3o+a2EA;Xs~WZe!#_*cJ3bPIB3zztg|X#npfm)tq$b5ir;wR>BWFPKg7Cj z3l@_BqeM;|*LiEw59|y6x>QWioEhIQNPC4=#{D1C%C=mH7fD-*tIxoY67u$gwww``1UC0 zEB2~hc;o{3uTHz3A`-dXvX?k9QI?dH^tmADi>>ekFJO#EcFpceUQ57f1dJvP?kFWC zrK0?NiT;cB)1xoNkAXmWe`{f&c6RB2X$3j^b>!|*pZcJeDS)m)>@@9aX+OJo=T3NM{##tGD z!odAYQ_sJBgW=0*w;`Q?E&BM(ioyR_j2im=ptR;DmPF>;Y%abx_zuXwe)E#yUJ_vl zKUrqu3oUiVH~o4Vwz*iWhG0BIc8b`Yp$n>jKnnq{(eIbJEBYflGYT+T-<+yzjIpfk z5RrhTWMudF75m0&Tik5QJ3;jjlU19CaNKgs`c1VteopQ@O2u(P-L;{2>;0Do@{eA> zb{-JuYR~1v=HSPTdcg-o_5q5|@%xJEY{{`I%|;RUoT z4M;Q&+vDI_xdBFjd2CUb2bv^vTqRUtDj1W*t7)xE{gzfyw+EzMa8~k(M0w!61ANQP z1NT#uF?2H#4-cjfk~n#t+|k5~2%J@gtm7eB_b=t70UIey(f!!%$408NLkuD(*rHoT z;p8b2VJW?(aLt$*S0EhRRFLKUmc121d!d%hB5fjx!!yXG1irKff>$Utj(^pS*J`taOH27lv;~Fh;sX zHt^}8f_0mwYL7mvqaG2f)2HUBsky<+;ktI`PznB`clq%Mdrj1|R3UlPm;+numf6&* z5XETRcHEv{-ONgqg%iT%2UbLz3^qp{vJZejkM4#^JeqZ%t<5ay6HzhY<7_*ksLh}9 z)|X``1IOJ(9(73JHsg@C_3o3w<3E*_LZucaqQbK=tm#h1oURW1gJZ=Y_MEKLgGtnO zENNIG+%|haD)ctg9{F6JF&t4d|M>+Ej`vJJN^iqLBjZCphVXW~Q<+uexVU1}xJ6tb z00E0vk%bG>GFaj!hhi`CP}AxiTTL@yvYoN)L8<9;l^-$=TSsPIUVu0-9f#=FC%>3? z!%!TjHr(plV5Q*6j@U*_vo2qmaDHyg)VCj97(08zG4I$+!g_~3Du~WFN3mOf3bS|U ze|mZz&Qk7#^@Orr68%Tb8*6U$1L1?Xvo9cbW38}cvzhGjnvpMsZpkCA3v*Ix67)ra zofi>pCyb3fr>1k03nBw83!_O}8ts!>E`7EUhVdVDIxXTyzOLqZFByh%8eo*(MTibK zvRh2}jhQhm{#|d!f;Tmh?~g~oljXY3&konJZm8`%Zm#KMcajw`>ZbRhnr}Pj1cdK> zEk;f(k9lD=Yc`*BBF5&8hf_9*3guxY;f)^k8|<$m$ho(T?#xWSVcphsQ)(0W#-vK; z+zl;KS`CGJ3VWqgl;~ibP~9c3iQK$t+uXyXv#G1Kc0ujRkMPa7To_SNp$u&?+}NjC zinrq~rfs__wTczfEH&5cBP5sV3v0ih2LgECpN0CHm5;t9Ao7#SZ3&eGm>T`F5b|43 zz#>0wTn|67k+h*fxj9x*Y}Z$#hZrdfqUkwer$QFESaSuz^quJd!q8|zM}?M+I=1zN zrS*E%9Clofo2F&PdN9Ia5gneDN@G;{W_RSdJKg}p6O zbK5iW0RZiD6DAJ^M%DuBf#9EXao?j{`il_4HDJy=#qoHo=XCh}`hLKP8iAx{vFp<&te~Mf|X;r%*I;t$}JB zK>h;ESoRKd-M_P=JFxydH|6Jyjys!&G{DCW!Jo@yz0L}GRB#UElIgJj?avp&W$41! z!#S-XP*UR$BTY5tSxx#c&SFxkLeYh;vmRW_rF_O`%SYIZ3zO?z)*_o9G?m1h?THI* zep`8XRk@e`N+1zxRN{4j6#DB}bAlVmKC9hrX7S)?1ljFH+lsxK? zV>Oe97}L;e4j$TwYCZjtl4^0DRKJoIZ?+F>wSY5#_p~X!cRy|ww2!nK=1h9misG3CxO8Gvpai%W?lVPhWxji)%f+fbT3H}VB|pe5|Z;) zW;&(*bMuJ`6!`dPSNJ-`anLfEPhSn7P|&B(wya+wkWS$8af(gA#HQKc72sOzfz_2o zK&^m|sdK#mKAhtc_0<5`0{YaeHvOI&9|OD}bfvmOWNjtu)%u^a0B`f|1CO=8`tYZX z>mO-UF#OLeE`m`zZgLroE6>apn||g1S+#q9`m~Py;;fk$W>#=3_&FW|^3l7O|H9Ct zqOe9{KqEookwO1sE6YNSugfi-0a6`PM9>Bhf9m7OA-w)whqBuakO&~b<2sxCybHjE z_R<-VqrjqZW7~f4IOvXYAHCqbl04?um{K|)+5bdY`+W@ zVp9`@xddvPRyRyL4}e&S$dC0>;v)Ni^6ow8v8i_fdP`fp?(jj-+$x_vhZ~X%bp2zs z2gxDdG;>|?O(+|=tohQ4w#DraUG#}*Y)m<-k$f$shEyH~DtbQg&)mk~$7Ow$koWrt zppsO{D+J28#4XA3{gLJN$>y11UiSrYJ)C09^U zV#pw%g350zuc|Iy1&Qg2KLIh6(SVk&4?PRr0Oj%EpZx}kHaS6W9xxsYSr~VZ|f`M>%H|H195|ysML1-~IJx zaKG(SME?fcaJ}m9r~iTEZv{P@dFq$E0Z;@RQ7s-fA_|nT9{#U}|5Nl|hk(N%|LunI zT3`MSP)z{QU(-}(=Ki2&#L*@ms4JkfZPS&nZHj{@%LlOn101>Hvr|oR{3`Z{m+8`fBq&8x%|9P@;BTjm0SN8=6_76{OJ}8 zS&82XAi(g0KsNX3JuKtjv)JG`0963;dBBHQd4b{hPW9r@Ol+>z(wNi%#7qr5-3w|H z7EZ>qpUME4Rf`PlyEvpv-iHxmHDig?yoS&l<7Zs1MsCFco0hvp#7MDYQl8xVKyiER zm2Xb$($K*V)cOyrR|~_(6Mxix^~|&d?Vz`>=qom!$cRxG-misv^} zX6+ux#>G^4NEo4Yi1%W$;X^yg2o+b;q`50yDCVB`k>h!tH^N0_!W|8}1Je5Xe(sR3 z#b%Fe6!;!{kviWW4dLvEI|gN5T;s?x^+jATx6|lq*SIUP zV66-<3M#pt+4|Inv9Hm-cKi!zd1nzBRz5|fZ4kO;l2bp;TehCYviZieu&cRhd@rI~ ziMxdOn9p?T{ED9JWc)kvI*A|xWmxS+UM+q`3VviY;&yrb-|_FIZCVc}(Kq%zj=YRN zl6&XxL3WYRDgF|4%MVi<1=Fxam0zOz6b^ONI zyk*z~{s36mkMRL=WKA9sN1}W4#p| zR&AdL={k-irv+wy{n-mcvLt8IH!zvQ6TC)^m5vNsmcYrvJPP+?rSGw`Zrjwp%Pdjn zaj|_W6Y&d`(4f+8z9CWZCtLpZYP>cTHmEl_!d^rV{gH-*7FwmW61 z5T)S8+#?ok5bns@DY#xvv3g-H?9_*ajdNe$L=i-tQ76GjXvMtpG4Ze2hq0IajvspZR(>j8}*3-e!)5bhkSn4al%Uh z%fS2RBSHxVQgQYEvUY7A zZWyggIVib8q)^7+2`ig=IR4<+p>g)bTiyqTE4~cGY-8?R^@)N%i$oqu(|1H%}Sf8 zxaF65J^K8# zX3RBe{pL$03(x;6j{Ol7cRAtQ#|ztO7DT8d3^NM zEY5pqD*f{VRQvvGi5NrQ)QpQ?R~NM;zrK^nZEA+IU{qh*bCTBztC|=p4}l<`D_-Lv zGgrE`>S!YhQLnM21&Z@bbX=))^k@uPSlS9ARYF2wl+m7>t|uJh0^}l6JNrsK!7B%X z_-gnY*>v-k@r-|N%-=9*Pki5n{;|F|q@sR3O?K0^)6nIkNqxD)Uq7t;gF^9nS6-4C zEaGwc2Eiqe?r77`j?CF1hc4E5$R(wB@QF=MOu>#5NPb3AjMYz_o`&4R}4F9T1`o}`b z%@guaE{Vy?-4E(&I>A@y+zzidkH4Gd99T|)%AJrwtF;Y_io?L6bMx+{BkaxiF>#ZU zzFU`NA}vjD%c2ZX?ebwYr$fxcReHFFt2R-$E+2AY77`bA?IYc#(b{PKpm?d^6Fi{L zNx(sYY`j@1M<0C=-B)vDeACG@KYhb1qf?h0uZ`Ughz5AEA*j@gdqX#oMZ;$TrK493 zW3aYz3Y!l7?0s<=*^VQXeNFX=r~SrlAL;qXjN8?JT}~<-_mMK1Rd07Y(Q3}Z8EM9E z?K__|@F6VaHCIx6qoAvxWAlpoM>RKf#3UHL%pt$&8Y(cc^5^G`vS47%49#R@XM z8elvf!+@UjDM=0{crcDSxM+A%E2H{6g3%0v4Vx4AG4tg8dJm*lm5zR0Fg6&sFnUT+ zesYMJ0UyJdABZ!8*By9x^?lwd3HHoz`owIXyIj@*rAtGl;jE<7i58N8K3bQ8vzYxJ zT_^uZ-eBX*wyeK%K_*t|=B~C}F9Qv2%qWcMgd{EQ$3?e;)Z;LE0g$7|BGKC#Pk8J` zuEjqd468D3`+gD+j5L?7^DNP2Vr}o3p>XEL%vtS_9AVJiWK}huuSGkgi-mEAhLVc7 zZ>H2>8?ZY>OaaCh%c4o(d-7rv!_6HI8%)vnQ% zo)hAcVP5qGF*A|8Hl~{0Vj2Ftnd?HJ=1tf5ysi4g1u3n<25Q$M!BNxgR4DVK{N^;C zRyyKaN^%Z1_heD53Ks7siM^ZU&0u5>O2wXq*ZOk>W-h#u-2hmApt5#6A5fuY?TcN< z2cNL^fwYx;k~s^ldUkw*iT|;v-w+tf6Mxv>(iaA-5Wp-4WH#6p{#%w3n^dCy2&ClB zxP7RenYn;0?V(wxx$M#jt%o~dx0DaOatM)JTd!~CA4Rn2V6B(7QeFE!f*TulWEE{- z^)aL%km39xzjX9KjGaiB`@3>OB|E_-APr`WVa~Iyx9G zxssmr!>)2)ITFXiIQl?V0yawP62goniy87)-<+XOmG&PY*#gtU~M6Jc$QOQDer6B zX@q2Xeu;%n--ouEFZp{_Rz^)Cf?HY8=80lf0XRaE-k3O#Z>h`w>rl-M@~N@f!0HL{ z7NzD_6<1H;M}}{oFZuLM98$XDI5hIUKG6Y2k_#K!I55evU)&e(5`Qbv5{v$n_!nNr z@ns}OefbUpfbIQ<;> zF(Yo;-1Xiddjcjmi{{NvgYJD}u?jtR_xMjeJKKcu@5(9pRtDTjDZDKQQQeas>e$%= z{Wz=G{LRnQsW3E03HMeb+DZm~>1GPB4 zdl@<}tzv7DdZ(U>TYJL}tm-{>H*FcZXx*r#6w0pjVJbP?_KnJC1YV6M)o?PpxR1q* z+~jytQcC1YGx}9|eij)78cfS@#=SBm>Cmv{nrL(8QmwZ%xU7rqQwr8!rNm%T{Enty zx$aFM|2%cO{zi9Y<89%2$OJ+UZF?mBYwEhA9A@VAg)q>H;M_Rbyz9rG-*94s zaR#@KhtIZF|5{5|xRw|nbDqA$Wppbjzx}7Xb@=Im9{55lDpnNqRPW~AGYOc|RMs1U zs;|@F6;-{pHKb(xOK`7gw$X*?p%C?^Q{?k()XU?*q*uG`EC)aQS5K((ta?1}2Uxfs zNQS=}rE!*-se-lbKi-yTzWUGgb3469&JeU-Nwf2G?DxIQBK`B;v;UUG6^jm2c9~jB zHhqLFRjQ_i-9k8oH+M&Sc`7*URO=&PZzdsMf0iUpY9GOxzA>Vtc0BM2u0UnK~#rkB8qbg+;?P+i4oD1ba~C&qQ4a!%__y_$>A>5c&Dg`xmRO{$M^MyjUjj z%B40LEp;R0R%Bn^&Sk2iMFw5@WzxrFVC<28-w_;NATUf7D!CTs_)9o zpS_b$`-?xckaYIQZ_h@5wsF^^FtHN{_!V^a)(OCM0yeCw(udUhVEwZ<<`0!kX_W-+ zWpx}U1V1#K-y<8oY~j_v^|3d1zA)Typ0TEGe3z~!xppwEcV=GT87b&uX02l$Y4Z#0|UA~Y(a#c!Hb)OO+6?^qk zh5R^>SS@Tu#RGF14e6i~BN+}OfVprUhkw>=WCaJO9;n}&;+#GaZ{4_+^BT!mUwk9k zYJ^E|k?f@*R-2|(JRJL>ZTUa8_JD>l!;(+TP$xcQ(~=CQ^OgkC9dexF_kRN><8jNJ zw1jME(H;;B`tKTRnP&We@GjA-{W_}=3@P!Thbfm$&2R%{SZMHDf021|M>?n^q@rZU zOWkQY%IEIOOdp{puIk}eaHavbrA@v+ zR8ezF#$d0DkMcVrSu+fzy!Ct-Ba`#|w%A+>vEi`>bf zxH*AunV$?QY`^i;Tnh}tPtxcrLZ?+*S)LUn_Ql%<)>dl*P%pX6h-j}tg z5lx^lY#vlK`G}x{xD4mF*Is>~X#imd#aJ2Jcjc;u4%QpCi82?v@vF>nQdR?paNr@jVx4SOUZw`3=@BGqNJo3THOel~Xn*zdMYA;tY$MMV63P zUoo9$6Cd76d|d}wB{+FP>KvXPcM&zfXlcf;8laV0v8lc?jZH0fz+!f!fiuMDJPs1G zDK^}jzb^jtMtn<6)}!VVdmC@Hi65#$6Saz-7o8yFr7W9+v^j6O#QT5V8paq|&Dwbz zapc1#3E}r#Mr!NGiDW$I-yvuG91#IuSv+&?N21v9)h7$akuJw(UE7+tW`fD>hao-kp7Y1;BR~kdRqqaZrO1&VF^c?Oh$iVK-vvqK>@ENlty6d|8 z`TsCAi|9au7;AoVzwW8k@bS5eB=GQcFU_+?YGG|M9~}i9_r6l3!Y2 zmYR~FVM(>Ex)-FgHos{~z zi&^Raf^>wj%jf{mUY!;fN%j*K+TEPEqbq}=iLal2IcP5B#Lc@^o@;wD^d5>bf%x@& zgc^u_avHMoUum^Sbo*aJ#Ys_8ssN=KL_kcKX+WydE5FzyzxqQ=$k$iMgM z%zOQm{aruZ@0AmRcYs!Pk_E3`Ts$M3&pO+TIyryQr0`8g7^Pw}ukhS7HsZ`4&_ETc zcJ%t&M>Jqxt%zxi)1JdxZIS*k^^o8_K-#2zLNTyhSm%7CJISigNgxPJI<&(LX zt^Ye#4*?r|ubrjA-wvu7tK(n#T=+&%2@ z&-w;cOmk@yb&(!6L8h02OPvGk2o%<*0$Npcl~)(tYNP%OGlkWJI1L>AiQ1KRWdbNo zDAY)2+9LJ!bxr>H4THCfib&7dM!5hPb?L-eRHB2(Gbj@X&@imGV*+KA>JMZ*m$?If zSP0phT$=(szx>YNxOtEGo1#wV+$3nrbW_QLfZ);nP&Nnzz+~51UI4o%){RYGGs;C7 zOzZ)DmM)!7S&6jFB05VV;sbesxVU(Cmw?cT;<_m`FZRF!yz{i5g zLd5!Boj)3{4FcsPkM6p5pg7^(yT?cW6HCdqmW-N9l?NX9{m>KJT@h^x!{>MYsJruW zO)5ZeQ4CQAW=(JY37WWOhWr27|K&z8|HSOng5&=a_qh**xBk}~#7glhzr#d`Z6TRI ziIX%h|B0~ZXGZ-NmiPbP&Q--B83DbxJn`bv6PLv+XQIX*vVQJ-DgnWU35gBGpuJ%HD;(kGz(7) zLx6^}=nK;=dG|jH<7IL^DfDDf*H$Q#VFw`R&c1)6WmWB$_M~Zr4)rau9qL1y52G4Y z$Q!=x`$p~QG~UN-xm_3DU&&GQvAhYXeYP7Y$gF^t2SM(EF<=YL>gImZp7z zwWJ>oCO9*jryq^CO7_(d8Cyq#cTzn?*SD~A9|g}&yeQ7C6+;q5*JX4CFxY8C+GeAd zE%@&n+E8087 z$6WNhZ`FBx!{5w)u%At)Hdk;lolrXuEQLw5yl^2<_PN<)&CBL$?2NpbO3m{Ym@>3h z@r&Ztq`vCyNy$k50w|NEg+E!tH#vQiPyZZYQkp$JUFpp8We3?-l!c4_vC_MEUhS$@ON%Iv!OGD7Ta~Ti+69q!<@mMHq2FCOFEo>; zr4@Tu+lT_LA&@%_p^yb>cD9XP;aJTZh=?$PmC% z(5!~rhK~+>0Zj|oojABImC+w3DI5!WdZ(RwH#_Um#{-~s?&6^P2ji?v!G}S&idVOs zZ>fR6KnRa7!{W^YVGQW$wEyM*zqsvd{xxhZQxp8?`oe^bsdu^(!Ak=ka#?+mU7pav zz7&;3;EHr<8y{GBCgUcL7+CBaPUhE#}c||FXt8e7lv+Fh6gE>Gk_z z^mOT*lmt~hC)Z8mZoYsqlF2dMrwRYmZG;apNAlQgcERf+$%NPv1JL3FxeVrm!7HD7 zowM*ttY6PV=XYzUtltitQux%>cdM0k{rD0MdJClPRI$EKI~<+tj@fS|CFB`tT|Sjb zw)CQ-jA%{ksLe`qO-Y(3Qo41OH2YJIym>0UW8UfoH1q~V<@kIfoRvhI-%=?DcWquA zPo%j9$&I-}!%}FDbQFx%LpKjUX)rZTu?+7AlLuFsN5#V4wWyEw#YRo?Ii@7P2`;B0 z<9XJe`k|4AU7IDH(Tk9dCvM$$E+*&v=3Um^PKxa-IE zD?IB8NcvdaWk@V$ya>m58?_pwb!kHG2DWvB0-0r(vzyFDHzdA+=?z|Y3&2Yxc0ZRG zf-HULC_3XdUBlsw>9EkXJ${r36kCQQ|D)9NK9HIKHo~*xv`nW;uqyN&<{oEDvM2XQ zJW2Fh4eQKW25^M)rQSVA_9V4YwN}M&e{LOe!RiHRE7t&I$Pim%ubgn%zR^`eUpY-@ zV^tt{g+&I%!K}3pfFfn#E_}`O0Sr?wA?tMFuf_on|D71#8iYQ5-pFO#W8Nyc_#$JZ zIQD6bw$df=*M)hp*+y!_#V#xi2w^>a4dM|B&!CoCvP_pqmAUB5K&sW&eb}?GjYpv;gFbR?#JvG;>WU7 z7yp6?hXXqKzZ?&!>TO<<`Qt{$eDmN84)^Tu_rAzLqY^%IPy@Blcl^U`(+l8qTxf*b7*QYmP* zwg2+GzDyKt;{^t79j9nKDL9lp;_K)VMv}7)lX5-Tm%m*MUQ*O2xG>8}w@$94x13g8 z3ig_;#S$7LoBz44)wU6P2)#LH)v7xVM5^YmvYPCOdAlK5FUHg(P?1VK1W;+%j$g}n zv7$yp=!8kvFm#z1c-p%I@KJ^isXmNftZjw{8<2T|SJ%-ywH(Lm!Aw@^1fqG;yn$hvF|Z;-P77YX4@nLC`W5*g+})hg3Y>m9MHVUnSQA z(b4qLtV2hc8d;Na{bDZ94MCG*rZnhz;5bc-=BbVPF7aWzCetfHTG*uVWQj=*K(rt@ zKY+YesW(L&A7f^@0f^qS9CHAaXSrnlDMj*WV)wJ1N-HmZm%VO-FKjVKr)66kXgPtB z@(*_)UXBQOtU_7dc(NZ06vtKnuafKQl52Iwnf~car$2M%ofbO5be5M2!GBSwX4E4}fkj$G4Cs-uP^?`gc=kv68Q z)SnGAQ!QTKH-f#aj09fF^8fz2Xbnge))*A43 z92IGp^;9Vf>hj+JHviu>egIjeQVg50PWB698{AqZEuihR`ePvmIt6bx6CnrY8ylJ} zw9609uw3MuU}ANvx$SP97%J9cPJ%)hq;ValiDc9sY!sXWnK`~p?O8dmYhygEGmwIzEXx|XMKdi|lDC7i=>*CY z7a4OndP=a>0-+ef*eeX;wn7T)4HT`P5n=yyFhAq1{{2(>*62oD`HVE=>?$`R;sjw& zIOi^s=}J{U>IT}Zw9`K5@xofKDiM=c9zZN}43c`j8}`ER{aP(mF}}Uwz|#$ewIM)| z6#ngFiEA7%jW5fL=EJ=lj(d+6bn`Q`o0d>l^a`ff72>Rs1&7YSHq@XWOAHUm2YwpD zgSMzfyk@1RRP}p961BjxspbU@r59|!D*Plz=+~A(!m|(4hjD2@_MY_V%u|-aTSy8oLcaCwfd>f2vQ2k9Y(od;=v+Fu#PPfNe^qDSe{@GKG9k) z^L{O_qCR&@{#mK&9lNP(E9g6%SLRJDx*Qdx4e@mlt^CjpC!>c3n8k!NGnVTBN%Dr~ z%zjsd-5rjLF7<2%{ouW}5^h%V&9s}`a}iyc9zewXCMyhH&=L^AJJc+70SyIxcb7g{$xocB$jIfxq6Y8_qNB+!UDU~VBkVjDG@>$9wM!T&z;!OzpqcNJDqnFbwt2_$uDVCOH<+IM z6E$ZcswWV08x4mqrLk()k$of1ghxwO2ce7E%2I<)|*4R+5eo)+-AtGpUE+Q@+Yz7SO&`-2hzTBP(hFIwPv#7nP0A z7Su2``blkORO=OiC1B`Uj#m=KSmyQwQ$ow{8lWPC1R7(rbck{Yv@qY;61tx#PrP#! zXef9w%X(Tb6E$Cal?$X&uLNHOjc=s1(MR*%6i*gFd-bt4pvD2ITnrR$=>c?cE3g|7 zXs*IebU>}~4*jxNXb`bRHX*~HiVT;lBGh=$Si4PkgD7rL1cEe@zjfiu@<6Ka)L_Z7 zsQRT3g9T*KA;o>sEL=-G7Mu8C34$Mc!2be~6S!kC-twaaB>j5sR<22c?p7fe$VgO zhg+xJ9XI{B<3|t(w8`nz@17vgS_KI79q5Pkz?FgDH*N)feV=gL$@>T3E9Hl;;EiPCg$W4vL6_$A%jvgvN)5$0b~VU*@eP+krs4K~BHhdtZ6DFqQl;Jp4RF zNiAu}3vN+2+){K-&3@h7Um1UNR+Pv7S^kotNRiWeJ$j0pwA;w zRaLr*aK7WF&DU3J{Yl8g=D4Y%zG91r`1r%Dc*!S~Td|VYLyb~s15#Y6^{nz1F!Qhl z&gJPU3oEN4iGUrEl43)LlT(u>FLfFQG#=QqXOD)e-uqy9SlHgsVS5ZP5N8ZW;S!jo zz_*=8%IB?kg@_Jmi%--8#=Kf+VY?k-X<29%J@zF6BJ+UTAJqWaw(Q@(zafz` z=IZWlCr=^Hi3hTPdoeMt5UYjG4i=9j4yn=w7F5gh(4p)MZ41~Re?0kwEGsMXe|hoz z`_4{bSqJ(DKvO}ze*qi6N!z?pQM9ruEHG*PJZI@34B}wL-3c^ktPV1cm}*IkRhtZ> zb7sftg6TPaz0{`F?k0CDeAzd3Q}(b^<`X2Jz?Cql0-vGC&ZV*YYry>os0>#3GC6Z` z?W210m=6P&rN})wIXSin!DJ98eLw?bdM=7mB2m?g8D>MP!} zOsgYv(V`~?YcB|1l*|g0rJMF+il`(WPXO1I9XD>ptPTtZ7Q$-BU|lmX`MPWTpoPv} zn`>LHGUzE0#!CLUr5NS+Wu|ou_6K8VA?ekxmZIDOc5cK%zGRr=HkD6RvY=l~2_q|M zCP^0H@GP@STyoKC)c8 zMyq7yjNO&@vUuhDb(S-3x>T%=asZo)D`2aXi>-XzXqn|_Dz&#bvq<$Jskl%Y-oB(H zu)X{k#filf{fx};*Gbk9k~JQbY(0{po=%IQV4}VW-lH8yISEz%(SB(#k0>dq!RxCx z4D%I&+z9dkvb5m@p7LHGP%0^Q=&ZFW*dM@Zv_S6}JR z&!3>qPrSSons4au*@bp>a|;i9Dq_AtQi_BpX4M|t=+Un0t7I;fK1@(ZZESWCgzb|_ z?+6KFKAP;#dL>8RXQ0vZ#xd_;_+`emUfr4>f~VCRxL7YDW;9j5AcsGuov_Hp+}D&3 zn&MyP?q%70CE*1b*84r(^~Frm!L63N%jPPL{7LiewNpX;U2Qk~ZQuus#~3Br#tK+m z+rsA{Svrqe?0#kPw5wk+@~fkyi*9!h&S!yVil>qi(a+IYHtf7k zVVfK1CiCsv-vOV23RwMvUOyN;l0_pcg_|hog-~4%3Q|!~!T(buWp}zR`bwtd%mYUw z*o;Vq4Zjv;B11leg894lxxYn3-wK zsXUIIOjj~Ftkkc!ea25TE*t0hV6fuS<~E13rCn>qQ>uY=*Q;z+6yPsye!KF$lC_=o zqf6l_a}6;E^qefWikSswUfp%34Y;y#l@E`K@(3)gGNZB7RV#HVGxMX8Zd!Y>b(Y;> zLh5{uM9Q+58H3v0+mtgsj>hKj**vsc>Ct#ho&2*Ne-5rZYQcmQzH5d2>e#-Vi0E6A zh0%`*!WK!(WC0Xw1@@bIVYO9I5LUo)oUvfY0}(SrRqH9$rS}3ua&(onbUu!5QQ3Hb zX~VnA?A7;BB~bAq))$C8g#GZgkUk4PW^GSWR@EC*$W*w zyTp?wOFhcFZAp0iD*|& zPri(D*=CG7o_SPAihgBabP4z&9`r3#$ASUmh^l#}Lj_=V`opEQR9$|G`3rbX^gE*#svssPqqV+0&SWdr8Ss;>0$R8ODiTmbMmpB_dDuw_2&x{H(j?BsPnV)1 z3SJ}+c6k6g;hp&tBmM1IYvPVMwFlw*d2RX-rnkF864kVnC?6zu zv2E?BN5eW(Sp7c!7>*G!Vt!yj^7YNF$%|v!{M+~nm2DAgSj_go_05|(S?(EE-2gk; zVPM7(UX5gslH5O0uiUMXpG4^f+wCnVm5ff}VTogI`{w#Mk%6A26Zc1xgG%dD;ej8t zr^0CqHdE+Ge|KrI#?0L`2YezY%t3c0$&Q~vH?>SU9U{=+bw#4GV50;^4kQ@iZ!DQP zNmO;^G<2krd#3_>^!rfp?wC#}dtK{YSkxcCX}MJFFsw00(743tClBu~7N%iaTm%Ml zWhnMLj8`I4x~$Ohp&trqsl}I=B_4I0k>$`|kQu4u7UJ*XUUN!Cc8tCav*W9G; zK@5LUzI4d?OKCj`3|D>#CoWO2)GQBlXy#e(N>iPOTdir&VDs(j0wRp%@SgvaDLvgU z@5A|%k#6QV<$1g1d{u$LV#|IA>fAwDUEJlmCQpnHc9CQfflW@{@0>;1fRTtLWf8{x zu_{G@;-7*?3r9nPQHu`Il*qkGVT|MKB7L6y%$JL`*61PTd716tGyUV#~-`iA4f zNU56#j)6nqv^!Q2E|7{!5f(91=yZQoL9z-LneHXWA+KWaiGR>9FuI-?qI+i(^zUpl za@BW2P{v$yy?*L<(SkM}anW>F&Fgk=9##d16qs=;?+?ji2<#1(qH$WP+3P90%5vA2y)Bt&)@i!gKnM}(O1Q}w>u6o{ zy^dJPf;O~}3ft>~m5rr*(b(MGg=4d=En?gvyR$7t1N-zdjQa;2c_rW!DVw-JXHu)n zJdk14XzijV1-3I!cU&{ClJ$0zM2?!kJf9vhvY4sBvF;kCB1;qA)@ivkbYANGvO&e; z%P%P0h|0|FotMtxbDn1;Jb~#3=qE#sWg}#E2RkIsr?_(0xLRm&LuBaTiH|8oG3Cnn z0Sw2DnE2#jcDWk+!HN8eTwjL=yR0fJc8JY}A4B$NX@mD^QR>nm1~Sa@P*A%>lc*@| zek%3-8|Y@~fQAX>?!wE^r0q_=Zj2o0q*=CMP1|6S*P{GgYN4}!ne}3>j)P~mvm>4w z$*WHFP>tM-`Ec6Z`A);s=NpI#b!?6;RTWgH5Fxs|?%T+oPUB^td9XA3`W~@e(oL+e z)}^~y1@|`v;?Yy@bMaw;W5s8&07`X=v=O{--Sk8G-Mg8vn3#}lF=Q9fr0V0&#GyNa z$;yS?>|65#s(XCziu<`U+?+igsqf1ctH4Hx&&^xRL~q+f!MvUjsQh?4pX-t^CBb$l zYAO!YBiSgy{MsExsAX(lc5pJaVbF82WaVUC3(Uuz-rC=>&Slv0<-@r3TF&Z8y}M9` z)E53&Es@QrE!p08KR7>puFbQVeje>y*d=5K-?QGIQ)Q<4ML|ZtF6;47F0=(*VXO1` zww$NR^@^A=(QJclL(J1$lpZF#roJ6q$!&^`7H=7g#uu161z74uksjCGh}Slj{BE~$ z!=M4ZWRLh14Sk?z*tQRa7esD2(0}3)+JpmZC)@XE@^7as6nMkA^a~n z4YCtd4n0Lci(m9GuL#=Fr&NRNb8(4`JDq~w|=+@#fq6rIBM(_j9{;@EQu_L>j%Cx@YaQ~K>7$#gX zre7O*J5j68EoQfg+z|aWaeb;bE?6+ff%okzU>5o<;zJeTY72^I=(`J-&u)f%-AbG( z>Lbp0sdBT7j_#@4)soz-TijLD8rRdLv2Z`Ml$iW}2Hf)mQ64r-B62e~>GO!eJzKYS ze>kh)9?XJ;HRgr|`{E`Z@a zf_N_?ryx0E+WT+=a|!XzsWZIu7B@jy2u18YWpR`ig1)S-sAlBbV)mgj^Wqgn6n@Da zbYWWN*?T@3aZ#T-Qx4V?3!4HEsc|ba5+eFHE&mp%2s(4-^sxwl*5KH+)#X&qc+kcv z=*!hK#j|7$)v~t=`I>wNavgnj9Cn%fP(I(0z#z+aYXmJp5rX3S{=xLcymis={;YOc z&g2VAEjssYo0Qnn`EY z!{@Tz^y}H-o$SU?auH^w-#4G9SusJW) zf%HD>-5#hnZ&G-A(R>m{sR+V%Trme9wSy}vX{<*`?ZYi7(PZe}a?Tj*2_`kvw_hce zD@}KJWH2vE))7};SLJTona`A`t8%vPLepRU9=Gxq%QC{MPNJ7cyqWiYi`cZNQOt!j zw7KlPNkc-WjLYmT#|W^*m3A!aj%p=B;u*QO+|!a(6+h3=I2=&fhe@nb>WEep|1$$9>Ojy75Rx{Hb@@0JGbg(O`(Rl(osfRG=E-{xEdO=N6pE#Q3AR@6us1``-1&Mt!CjUI~J- zi0x+g%bem`P_bhfhW-8I_+v>r%=_{05Bo5TQHId_9P}l}IAXHlon%XsP8+eGK-BuRZ-epX zw3jK-f*f^l-$a$?HXC7=&GZ>wqc#QYxGUSX{c=(qnf)Ya1wWiH;1xZ>e1^@KD2)pz zY!$FEWXJZze$50%IfTL$<0vy#FAOIy6)e1Xckh}%u)KeS z8|~aW^QxotAr^{3EfRUJZSG0Nm;5$UeyWrQpoNww+0YM{0bPMnp^?^f;2sLajGQW+{P6B8_itGzEVeRpRV{xcIWAyVC1}ALtOE_xMsZ!K<6N?rVBq-iC^QS^4v^89=PA za@B&FzTi<)j8dMNCJN%Fzu0}%A8sfk$>ID(2;yXBDu0(2G}Wb!n0lCQ^tYAA7kji# z+bMsJC&)a_Z7yQQ!de$3javo9a79hq1#q_R_BeG-A2zoUbjLF zaJMFVdRX!1ag!fJKZxZL0UqFeOG!y^<5gY=;Bp<@TwTMa-)Fe#F0Rt(H`FzgmUB}S z9~{2j-Tgn9-ijc`HaC}Y&s8Se&W)&oY`?Nv98YRxV==ODj+YG$Y7S(~KKfl^?Ln%ubCq}T_IJBoT*5B))i&RqX zaQyoo3La4*8_O7jW#`{=1RF7vLzEmm1Ta6f1XY?@=L{-34BPgFr!?cGyj!Ei!$fD~<Iu}%j;yzp;2r-M{s#ri<|0$kZA`&)bf8^&nA4VAbTnEd z@tAR>8&P-diROPy8{VVvB2F8?DO&Yc&V;PUHNTAbDU%pdRq#Wfysc|07O5;O!h>;9 z>JmSs?$I4tpBid+sc$Tu-X_K{i%s3F_knHZ_E{=6@%k(w!35k?Rbc!KuO!#h4jH^Z zCoIaRU8W1~;gLjnh$SZ~RZv6oxPPlv&|%8VwrCSIK8)wP2#O$z^pv?4VG~^U!tmz~ z_g*}K3}!-jJ&qo9W_)75YB6wD$uU zSj?r-6I81M5ki{EsZ+L6Az3&!S3hZDPnAa zM@j2`$2O5g{0C7n|Kq%yMxK6nryjP5nJSR+>s2BT1cf5*>QgC{a<;fKZDl4%e2eg< z9)bW&e}O8f6O#?#Qe458xz;SZ$@y!fEQ%H!8Nm=Ild++l=-fQGiYmWw0;k0F8To}2 zs)Ss-Ph}PFl3WqwvDqk%#q6zE*;A`MvJ9yi*yHFIr@~}574Vj^s2F}Tc4oqC zD^W6`-4N^kdMpUjm#DA1ylfMGUZWY%yQ^=awnzzKee)Sw%sARk>21Fmeez0tzjEp3 z-W(#!Ac8$q;@(}8HDyYN7uc-4DoS^F?Bd_XGfnt%-lN}M&32z-`@GN+!OW11d%)@D zJ*35S36H9>k(DZ&xTjPD2MrM@QWhtDEEkfM2kWgxRhD0!sQopn zFQbT|c^>;sP4whn%w_~)UcI!ymKKx?S6z`FeDhxZ#TwF8q$n+5+oEe>RWL<>ys?9S zJ*dC{-J;*^y-1$#nIv6kbqz^48TatiVT4QF%cxWlLOP7kNnb5$4IJZ!747xn;9DI-S}Oq zUdC)QGK^462n(G(rIH9ie{!nb9zE50<-CSQk9)Z_p9L5I6Z5jas(G;zoRJCJ%W`c# z`|OC7?+di0*0{c&k|j%!{+U;>-P!-;@KD`a%>A&iEF1AiNBo!?Ia}RN2fGI&&yXKY zXJ_cy)YOb9&9iV+d}{=!b>fZoZ`@vKS?@L z1BfwzD6fKiA;s=Esx*;hc=q}3^1XXdrMbhUFRa)Y#l(W*NkJ^?RB)vIwtf%uS~|er z8d*TGffc1inxsXEl;h~B|* zF+=wYogH+Kl6=%Ko% zb1t)7Cw{q}YzMZQOO*8Gh*O?@yt2)3J7wg3)A(8U_hJT^lHk^__(F)EYqI$AUK`#s z#nIKO0LNmyLoV?biA%KvRw`EMZrm=v9VAu2XVffWt4Gu7a+@Is>yJi?Cq+zNFREYa zyV^kh<%z1#k|~cI6Z1Ev-N6~$yVX>%Zl`~auS)g_Cr{m>olG&3U7%*K2 z;Vsh9>24^??6-r+uqmSXaLdJ&PK%-^K*R+(?Qr9P;l{3lgnyg`=zpKleeH%|SLu%s z-csdEmP$TYV|4ZigoPRlKVdnpyz0kNwVn4-Doj-taNCIBiuanZ?o1SG1IiHbEc2x0 zO0v?97sSU(Rti*R7_ln0|HEb!>%lMSGk>L`NRf9Ex_F8cj2DV@!L54C0XQTfwc!eF zA$fr}^MSqp4(c!&;`BcLRTY@>Izkm)m-;@^k~r5W+a@(@K$Qxvr3scex?L|ixn!_&0ZINTS_w^_N~ArK0nI?m z_WHN{L_o)5YYG|P(9S;tHve>#e-{q@SFisW9RAm8{MTv#2Dk42wtbC!cw`Mqdmhi~ z+1q{l7lSCYxq{hr8Q<1G@|DseCG#y-`W9X{n=nn8uP;Lk3KE9_wsN_;1Qwe-$ApNFM~c>^_^mtudY{ zab*;T@FZ)675)~;oA%`a!yhhZy;H%M0N_Y)gUX9)PP&W zCQa~s4P#j<&Mf22IxlkRnJSij1D-0E_|EaQ4Vk(dSY@ z&*8ov9~y+dh~SByT)hJvH|ubjP2V3-I0Vsr(;w8P(U$khj^12V^hyJCI;KK=LOo!^ z5&WU$%cgvr+On}c_gm&kfn)Sw8^7>{Oge@wHvX*!P9 zlSLpEalIn!PoS&69o(m{(X!R#2X32Z9kRqd#Lq99lqB^HZXcyJB=Vh!FuGq2!?!|C z@bn;sXXIPd5YEVijV+iRB*`Ox8MoAtn^{YUcR#`jEkjxxX@Fk!{`B_@)Rp&t=A-{K zReisHYR&fRFrF4%lqvLO3^SZ$8H^=H)D)oD!*`cW^?Yu!e=+d2+3)HH_J~qb#7)3Q z(qSs#yxxTy0~#8UKUWuLyds$P0D;ED>pJ?`?nVIapZsn4#17^(Gs<5RNQSPS-?MDW zPTaauxq4#jmC4_vg#zSHA5fP*0nd0uyN*7U{F*#|LJ53YfASxB^yA}|WkLtp8ld;y z<&G0O)+KqY-h!3Auulf9e|-2O?MGQtzTbLfoa1s0#g8x;V+lk&181k6w8d}88ug7! zIQGA$^Z(Riho&upHXg@`8Gir6aND+Q*@)faA)Fz`E_#xDEO(^ zG|X(?122l8cfkq&=;A`A>%Nt!flhlLhcupla7`66=)Rkvy6FgkSuEdI2Ot3MC+XvL zxbN?T+|0@|@Uw%BGcijN{w2#lM8{!14{p&oqHf(M zrQI>Frq7vQ^l2VmRN~^uzGUR3OHap_>XUc2r2h3sqE6F%?6N<}4se}$sRLAzwo&p= zfQBai3oM%Z4@SGcyW`X7*^_zYp3~HsYw<)ytg&C)EdI>6FAXpcX~!u@!o=kRxQ&%* zvmK8nc#TuOYug?HCY1Isp`?&OeQ42jM)~%_Q6O!C9EXgYNj>z4p-?p~2Ev=$e6_hF z(3%))>fUFJW(VrgXEZTValr?7$H@39UA>nP$F~4xxz;0YI{NK*MaLxW&$| zcSKYi4ycnN9QhBzZ11>v5u{6NQ(7Frf8FjHmKEkqAa*F0BXF(=_;OF{JgaGJ?h6-` zF%LgkS^xdQsL1RfAmC-k+4Rk3sCSdD?brG_i+}W^cHd$E>OZ8{gsfnWim<^iEB~e zVxS~`lQ*w54nW|?1~({9Z{cpV@>5fyzgNxgp5lG9D{kC@t|@RUs4-?b&6c>WA&!Z5 zjH-by0LTMscJCHCaJa{=V*HKm$5l zyO3){M`S?3K3Tcqp=B?Hwp&MiP-ThwmZ^NK(@Bk{44D4*Pk`M0rywSrMn3FnfOw^V z!fJ+6Xpso13lL#1WMrccJc5arG^*>)kIX5gIJ-ynCH~)atn485p!nAQjJUw2BdGB6 zc&qeFYz&qMf0Xy?_ z_WXFr=0L@~O@ILqK~-p$6=|cq$>Ftjs_2w%0LBO^(a^~1pYU#Xw_>>ty^LL=N;4r`r63LU| zCrVf>0UuHZW^hHgGmmB~p1)YYeS+A5AgkF@fdktIpwBgyelI6ktCgx>$!buyhENmAI^;Tmn9 z$#T;bD~<7J^Ok)TfgSA_SgSo&1?shRkp5X3Ei4`PZU5-Y@Cu2R!u7-pzFAKaO{*t+ z-raD3&Z-^qq*11aqXK~d5U%PKiL3{EB;yMonxf20$=qi`S((qM=^?9FatNsdsa$i~ z1{kug(Q3yeS94-qbmIyTYJ%5g`ZjusU3IWYeQ%Xomt}qPyJlY5Y?M_NSjCn>Q?-{R z8m}gQTV5MHCoUN60e5z+yu0!N4BLpr_6bGWkxAChdq^$kOcvO1!g_@)^n+Lfl#m95 zoYVncC7vq!=}ib1+cP+1-^h$oD5_hbofvZ-cKqBuI2?3t@h9n@k1e{u@6)1C&DWn0 zcLeOjzL&nhSWVqTFQ)y*g@SIo%&NhDuiVpMT3(_wLv8WH`!yuWcGsiVRfl+J@h-0l zeFvQ)O;wIr?aF9Q{qWt_M^wmaP+uDxEedbryTp{G`;699ju$XtLc#=^1pbsU5lx6O zpq~zIr*9eNO%Fe7M`D{=jR1G(I~(hr454GI?u|R2s%`TlF%A{Qvf+t}jEXlFQRLB< zRxZyKtLjL~UVHVEpR?z#%X)yjzsfKj`VaCI8Jk+xz6#Cbw4K6xSCdktf&f+x#k(#r zniOL2&qBaD&{ccD7*0Gp?2_-Ck%q!ejyrF|)zvU=+>CQgpN=o-3EcES*dums{S}QQ zp~XOj~=R4-PdHRQ|euSXA@jUKVny}#aO&1dmj`g?ntfl5(f7IMJe-( z9+01daDm^!8d5BFObMVm&BaFbP3|?Z$)4>kyTmFWPx=9Hz+HKiDK(x0>n7q+%bC-q zrE5+{za<^MKntwQjstS3SIRzPw9 z>Ud?VIK5lAp4^Jq2W6SAyZvlfCJanH2E}Qu)`kH1e&Da9_;BILtM+z}$+|6@Cazfl zVE&Br=VGIcg>eoGmAp^&eies5&;sf;qcW~pNEfp08kGU<^E64~VHWueRy$9;1E`h3 z)ch-(EgpFsUlBg1ebfM2gG-WHD*e{fe(#z zf&;5{ihI7n1%F~H=jseKkLb!J%8lcFhYyHno?^SF<7ez>D~R{ z)_@I-3Izd6e+)Y!ZGdvnGe}Acjy%Yp4<~JQAhl?;4L48d`&AWmR^~OUCF-s`*Twqw zQymCzFGmk_ssZ!Zqc}$OS%2L@oJ){`NJy{8oKa>BLUWd=n;U^ z9~me%ug&`ux;?G)Ikb2CvRyHUYXQ6ylIws>e0}Z%Akm}M3~Sk*jP19hJDx)|VFD24 z=OA==lM*;&R6h;rA^=uI0s!p^_`TPmr(>!4ry+hP9#0Q{h#7}~Of-Q=aCi3d?@1Mn z!(^C-RkX;tIZk&kE$i4QAPHAl$mMD(RyNAgwye48xK;XRv(L>en1?EE+2lD=ctqWz zZyw&HK%TESgW~4LhHF<-lC_^mQ&V<~`tk7YA^K;h&<6Dl#kWKe2fsA`?TrC8@eFT! z-?t6J0Y@_)Sp#quv|O6~?-gwA)~&PwYBWw~cn{qU@HNj2{e zAos@qiIP74*g}dRGsSX?xK`!=jsY*J0HB_B?y2t0AmU`|*HRn;|8KaPU(u}ih&AoQ z@p;_jKOP*9C+y*t^=-T9YOzN&EdEL}7_Q9>=?$qj`;jq=cbte*G^LEz3pimtm@+$ygFLeo z;BBmJ|C!XR*AC#bY9$f?6~Rs_Mq`^id6%&VX}E<5z0?}NcHcnmGJL-niWAj9I2BxX z(Md9$CtC5wFrJnAQmO6}x?=)@uOg2URl>~ZX=-s#RB&U4pYx!g8FRo==?BR%b!T5Z z`Bbn313Ztvn34*fhmR#$bIhclr{b79@_0!oS!zlY&TA@;AgdfcY&wXp@9&)B3+LxX zC3f_F=Dbw<#*zb`y)in~D;0D>sH2&Fu~@o}{WkVCEYu^ckLyZ)DF>8v|w{Pb|W!gN;f#9u~w zU~jVZaos64Z+CyXyMrX+&2u>#bS?=9WdoXhi>uA}_ zsk;XW@s}PCYD(?zjtKcHjT62&WZ*aiPg1zAf;Q_UTu}xaZXKmiUhomR-gT$f`@w$_ zfkF5*U`PX8=K5sqXE*oVYl`~U(AF`F|18=no0Vx^9S8Wut9G;E;qeIB59jMe9;^#< zyC?p;J1Z7bV@$dT79bNbpzj0PUo@xfn`{G*4+d>A%Jc|Te1Me1oq&k#vw^V)nd`a6WQdT+t{qN+xWNv52alYQV*uNR-5pzldckN2==?5!^VJ#4g+~ zNbS)nD&Xj@H~sBz20WkojXwi9Fy2 z|1ARB%zSq9tKCOXSmASn0uDJ6?|pDII06a0?pj@-;aMi8XgcANQQ{V5Ap@>pRD>KX z$U&Ei6m?|XgBYXU=5~$Z00<^cDcOEmmbZRMR#gB)ss1Fc5+I%|-MLj}QO-kZuD$6N zeiWSNoY)~>ZV1r)u9{XA!l(w|fGCCRMzctbfzg*D9U)|s%~6;pyqn@ECSdgSoSnB& zeCH8Uy90R%F~IdG=8~y_bE@4K@)~ad?5#U$L465d_}xhe6&sM_TY>q$y1-4<%6EKhSuik1J&ThDR<-7k!6c<(Vv&~~ zCuW++(ep4>Gcv_mq3{icLPQ!S;@tZiJ5xd)obOXUHk!M0Pz@RJ4_pK5|C;}N(y zMM;$CM&+PpfiI_YY*CYs*1`H_LM_-{;QlO!aHO!Dl*h%6&8_>>y&voFYx{Ua$r#OD zQIZ?mRFBJrSCSmU=jYy09jzx~;rshluteW5z)Pp5y>b8EVNucfik9`<(eRr6)cpLR_2~-vg(gg%<_|Ed6~Cg*MBMju z2d}9+Pl^?$7y9D%>EA9~K>(X$X-JNK*0;1~;?UvQ%^;GgZ65~dO&;dIS^&WNuH8<3 zTK=yl_b#8v@>X7o6{R=pV*a9USjZCtWJx=-WeQS~tNZp)ad$J)KcY3UZ~3nnJ^Po; zPlyL^BqqY}y6tayjlNBM!8nhJna56X*LG09k!d7a>!?g8+SZLQ%*r_O<80G+slo=N zun|SZSbJPu6wM8Bb7RZpu10Xt_cO@E%dLtg>3EHx-d_?BYmWSU86u@|4d!;(lG;m9 zpRB9MB}$8E!g%zW=uzgZ*>#-g@u;ATFG%vnhH~we+Qz9+Yp%sX`fSAGDWxz!q)tX+reVPwizTe4A?mkxsDiX)^fbsfpW&N%GDxC-`m*~ z@DHmWEv}tb_|_5p?S=Bwr+0l( zTh|EG?ru_ml;zL~TL74@@3#G4xMtMfi#h;`2cGaBsA&Al`u^+38vkh>z3%wAYyS2}MeaXVx)Z@N4^zNg3 zfTO#I+dUaC`$zZgxqChE@FsI(wE^G=V4(B+4Zqa6QUBEA_h51?a-R06)@a9^_ocb~;Xg;ppHXiFO|q;)AR|^!D~{z%UksMMXtpBn@60W}S>Pc7k1jM8_RGJoXPBoK)A)$gHi^f-i>KG-xyCD4(bfrF-So&wag#3bg~{6YLW09xclPNFJP0pZ9RDW;TNL57MyB@vuF2B z#Kgo*O;3l;myc;5`_#*s`VlBe5spCV4b>rTXC_q6ox9}a<@LJ#o?3RIy*K;#<#-(r z50BRi6~w6JE(;IN6Pzh*HNoTQ0%rk>{qVxPyi-F%Lm8EomQklB1w=$5 zG!`oChg*Ud78V|Ocp#V0gI(lJyOkmd1VWX#BLrNMRk?d)e0)6kI{JE^q}~&?q2XbB zaKFQc_Rf*X(S})PM@PV3R}++s>}UH6e4s)3dw6-9;$^JvJ0u5oJ-Tr^ZfbUR*lagA zU22gb$DpocmzP6tW%lUl>fU$YTF;mO)ek)EiUI+7O-)w^umzALASRaHE&8Kq$BrG@ zeUD}BqPm36S6L+01^GIgCsy#k?EXaK- zy<*vfrHNU4D5Qa0Y+YqQ=MEaxVo@-iKi=VI~7jX?2%bD`B%)ULIJ(l88?8V80UDS+P!>-=qlegM$_Hd;fZbT=< z`BA4Gj~PjHzh#WKc@XwVt$({)bm!EuW053yfMpOl=9_-z0i5=t_wHuvt^8Kf*HiA||p%bIzm=|xuO-$YuR5yB(YmN{eHMkc&XooGnl0zJ2 z&69-fNAc`a7|%LKV(P)Z=)=xoT7)H)#a2b%&@l{DUIeE_nWH>=X6Q;EL^Pc9(3Uiw zzH;ojN&^kEV$+qPtMg7_eNM6KPUwKbE3fUgM}>uilH-(x=bxIyXPUi$*o|NKcx6&Q zRx(O;Jfz}#>}8G#Mrlz8LI%usa-PTMN^oM(-Z}@h({XL+7%rf0B;I}PUJ$8DD)YK? zlvbx7;`R^vXod)X(f450wP==n`p}QViv`VM;o{7%=AQjwPcpL#&0g41vI+VUp-~BL z;#SBzhsV|yv=*Bv)X0xks0cFTb|_lZS}2Z`9{yG)#m?)!08qF5`Fn2gbg7#7qll=V zD>-%yG<)pTodPnvSI)fvS0c|Bq3MfooidS#&GMYOTip=u%#;aie#=vW51O|f@5eoQlHXRuRpD)wA--RN)!ZMbK9@KaOC2b5bB(S!FhB2hEiA@`0LHB}=w-uY zU3R*A$!`*^DH!c85;c$)aO^xnlRBk%E%drlt@jH*gMIvR>lDI) zJB~pa)MTzW!qmKxgyDRVUo~3wYh-g{As#NVK>v1*zcp5MsR7^EJrCbEpA}NtEv!}R z)G$8zz+LvzGVdi^KStla69J>>u}vgHZ1eygG5caMJ5H*pn}q)r3_Tj26Ed)v_+&dA zH!XVp^0k}06VK;Kp{eiqv-&McPlhfn;hTSD+~H?0r}0tP@KXje_% zhjGZz zr#Z2n)i1=AiNJn)E<9d_g1LQ``t3@*gpsKPH((3bw|kK(8vz-+9)@MmW{F)qa4~bO z9~8F~Lj!4Rcu)<6i52IO5z~;CkBs?xP|YKR$CoiEP@Q5!UPPS^K56DH1&UbBt7U9tvcnC(>x3( zeVzKV+2{adc!xky)k)rE>Ry+s7p@6yO%N`t!;OjVm6$fNs0cnRp(54z%_ zd+qUpPA;vn$4zIR9#(74O0cF6yZp)pcvUKdU)c`?ujPsat}n1dumR*G&yKdVOn(Y} zb){aSsA5zA228#{qtT~iDpcOzmesSeN)a*bxXblBkccuIzJynBY!(;y@+BAmZ|-JY zKLtjteJ~hIL0FGYv4g>GKE7rUfki|_)X4u)d*d_*AS$V-n7CMDMC_v! zOz(n-(^fs3?x(FLL~_~&cD*VOD$;)_j?^XujjKc-s$o)xDIJ_%4)4~#KH+QHZ=%Tw zVx1bhz&iPMxEOy{oZB5IlPt)>;L=rsKUf=ViN?i_eh>tI1ukWBHUw<{d!Yyo=bD~e z?JH*;XU#VYXU0MgfsHKAPd-%mI=G5DBNy(nFdbFePyMDrv>Ef!O)aPP3$&;Ydw1YD zAV^wZ&q3}TaC)e!&*#BKnhLFVKz$z{d?G`2Iuaq00EzinyZ%ng8a-QVL0xKGGgsyjuAAyn}<|MPZfzh5OSJTB`A%P?{?5L;|A7yOB9rr9D-;z7{S>W zHZ|v9lgX=i)R-uDoYCT3b~0_r(X9KR2fZEF*o+%FlkCWTu>XvkxLytGhsFB$XkxMr zU(}%L0q7kX(QoOvUgILl9l14r7?+bKt)qlrZtS>k(09oAWxP4xn0Qz79nMn~g2F%B^$tQW3Q*szP5ceEb9S#lkr_hF;LJK?6Ot4*(n z5ncpwHf#3n;i$DeZzV5h&=dS|GM-RA+Ep3ZIvKepn#y=Rx2V?(P{+93}%5gX}IFq@~f=k4#qqK|?^ z1{bfa&m|ArXs#oEL{(6wa1HHIYTCTFZ%ELdR_-8Xv)AJNh}A5U5f%Ekw>C|VI86oZ zA4n4jHvWQ83YPIrbq%U5gzp#nlcRa|O3G(#O`)%;ni8yGgW*OTcB#Pc#~QCQeeT@i z#F=X1Inp}BQ(q6^IyAyw*Us{rZZjQU=YyTrreU>(5!7mpW^NmXchEP-Owr}X7Bn*A zkT|QGyQqCyJj5i3zTb0^j6G#tTRQzLQ+8;+%#+Y49&N&$5N}YJuxT2Kh989wTAdk- zw?HuF7e|&ji(TiY&*9R z)%|Hx=qJQID44%%6>F%XjIH9qHv)HC_wMQRT%V;0J4)8+RNk^1dqNG5Z(fM<867Sh zXt@Y&x-(k8Sa*lkgjU#j(G!QlU#c4KD?$wKPUQh5vdfygG5F&YVdU`VaA?F6T#(ls zd+MO)piwQq!oFE7%yOirzSXl|p<1_jJj4j+13}=c4h+jcq|HQ&&zgN0fSA=zqPV`_)BgZQIs0BtccBXQon`?`{s9`+uTu?xT z!KfN%I|Im;MPrl5#%OY`LKpU~%;Nj~guT_iY)!ad&jX*ga_(zgD_ynC!sB}a6I>R~ zSr*Ros!CELeLRQLnEcm59T7f(nq3%GT{z5YL`8&OVwQ-uS<%7g+lXpdJO#xPtlqou zw*UHc=t2R%n+961CyJ-pDvI$aXt`LtNyBVGAi-wMuZCWu(nyfu_OuFY=$Eld$5J2% zgi%-}78YfF7zx;ZI*Uy6G?YE^ zJZur&m0sT3?6nxZg>W7^eLNJGdQb{}e|f)C#O{QQmBDm<;_++m8Fsz>rKDulyGT@X z))@PetM<(50DLxbk%^==u}Grg)logykkaNg%U@K3$cQM9ks8_OX7l{zZ2a>9&;w+w z2;-XyqHow?C#{HRDQHwZ-`LrT|^vJPev1!DW9Fctqta{pb zvk6w#Y;?J{;#5=!O`H+-tNP5V?}q5;`e+L=oAre~p5%T)#bRd~@e5Q`e7+o^2KS>7 z7oRUhF4mo~-hbG)&(s(+^I+ZVUvC6tIJyXhACd{Xt|M8UF5oCqrB=vXxKlKom*Zh2 zf+{^ZbW0+joO(%!{|Vp7{@F9AFjL%}{XD3tu)u);3p3?W0wK~*py;|Z@6I7j4m17+y8l|lkMOdJ&QlW66u{CNz(devk z6y6mA&%3*H+hDGWK4rn`U0JMeM}=G2Jkl2_rnHZLsgG~whA@n8uf6gqB6j85qjt2Z zgXeL;idp-$R4#z$*r76+A!^lftSViU9ARprsRAdzyMy$|RXZeeS})7v@^Tjc=jwU> z>IM|CO%4We$IKEc$QTAOG<|HOU(QG5pksQe(n9sJ#9|(5{iJ)v3c6y=(Y$$uM#CG* z%Vb4mj(6-&Xu4>_@LONW8jBWoua$9MTjLvF$|pypCk5>r_kGdmB((rWIi})bA0wgB z0PA&CI{AK~Ljt~OmKt!ZaJ|jMe(`;#oxkZm4N)I&?@=a#I18OSfP#$@B6lx>yLt0< zhI}!by92S{~O}41gka>hxB3P{yC@`5doaLWXWF;eX67OKhVjvNGXg!_y+^X&#mlGIYM;cvw_ z)=G8KzXnn|e`27owMaTqU)FEdy^Bd9Po!-JJGImuN6;otLKY)&%`|wB4dLgCc5Bjl zv-SH&ixp1$OL2nU*;f$}@BAIX-+=@}W=!=sRq8#$5rRAYyV7k{`k-+bS&9({x zt$4Wdf$9Q(QxG?T8@zHOqqMl-%zWN*^Yh2e6l0J!1v-ig`#bfcG@b9w6*FZ09e>Ue zoBFUzyixFQjTTu1Y;#^0M6Y1~ZPU*45t8J+oGSDIPVYCie=lOQ)2t7^s9l?@@dDoh zf(C@OK}gg^-@#buPhm;4vYtRf$wA-3wi<}75oqIYF*Wv__Lc@>fnW3VDICiO9GZGK z8+&6L+c|1;D67Vl(;~^hSL562z`bjPpZN8Iq_A~BQ0gPrDSr~@_1V~U3KFicFtA*_ zIl(C!3abqdKp+Te;QQbRzhq9k0})^@`5%fa-2q=M7pc*=UvI8`qThT@MAS`UbE@mN z23c*TBZDI4S`Py^&dajDZ%D8ea%W{tm7Fow{uAE5d<;z^9BgeSP+BX#-QC#I$yg~d z|FZ!+l&GH@ZOq&bmf%M9DN&qdIUF}IjM3TM^yMny8u%D2U0M_LLjTx&c#e3WELj?? zI=|y|wK%_l&hd2mbl>KoJ)Aff4Z#N6lIzvSzNNW~qon@}&UT8k z{wXc^dy?>vPp^U|A^lBjWW?pIUEtRnbBHf!GOZdMAoVh4iAehpy@%OO>HK*>4#ObN zp+w?Lcit@B=KNKT@&RGTLPG>9N!6Q+9q;-Bto$o4YW>Xg*W)xRc5vVn{}Yw_N3Fba zwlu(h8Cj#bX^XL#di9L%*vT}G0k-Jx;~wn_T6w-DK|^7cOO;aOjituQU*t^v+i`;g z-v)iFEt@IImDquwOW!idj1(2UyzalWJbt!c&ngSDHCqj58es4`hbIsIBfDTzqIO{V3uCk}w*5iCrOr*?$8Kah--+|q(ok<7b z^*oO7YU}wZYC7aIbmXu1`ReH*j0L~5Tm9$7YELbUT5Q=@cN@B}G^bl!c!wBnlLV-` zr6JL(!SVPnW&X39N_2RzvNQ$p_uotmB`z^k_#_=Gx4jEjRO8**)x$$)@_h zuHVfCOg=7i!DFUYwjaLzBZH=A6Akkyo>%l)FB1B!LSS97DR3E?S}AbP?8gvc5Wu$3 zuscgsp*tSB8xXMZA^F!Bull9U3~IxDay&AEh)D}9O6yRWiy{P71gXxuJyrynUBm?1 zM}vfs<-TxryN90_z_kP?H_dvREDzR1;YJikJJ$w~?14Y(Zs;Zfb+@ltds8L_ZjW%x z@PR%d4OJ5j5wE-t$U|RS6i>WD+l$T?=~4XC%C2G*;~p>ooBVNkj>LiChE0s;=~eG5|Onz6J|c7T|a zs*T1UrnT99Buy%_(&5B!Twe33AU_0R0gJ2m1HJ1moO_k_z0z!N(KrNHS9Spj=G|?9 z%iHAo^^evCA%HL)1t3^WhTQ2xXhs$m&F;N{RY})XZ={rQ-|?6XJ#^)l;I$9`ic~<{ zL=^Hcrt3tvrQ}MCJ#cg{CYrp?OV=YAsf;9&r6_(jPG)G#3IgrMcfK`V6{Zp({=PM{(%RO*%+)wNSiMpi3s zsc)|4!TA*Qrm2K%{{@T+oN(!zv*ri*{M(<(W6`Gvj(`sbKp&NjYM4ys5YkG#f5?3%8#Fg9;E(v++l0W zc;P^IfxJRuEQIjR}-hv*;Ai2ewDU$O70KB-Z*_P)xp=nAMTWFTsbBW0m($3rbbPS2!!py$|-d<`10=g9m}UXv+ca;E_mP1hVrgyHb50 zD6Pq3jexDO!0@8D3~#ULUI7ndO%T7NoZ|$14zLd%=}SH)FU&X)I?D~z>BPS6YtLkV zpYSIIZ%0+xD-$xmI=hAYE&ib8c`r2$WBdQ4=XoD#zVEC=bXaqS71CD*m{Nh?tqa^% zT#@dq8QhiQ2nn_OnJ@r26!mEAuIRN&ENCr%el=2})u#I|mQD6L`mg7qwFr(U0!OEc zW}G~V?XQs3uawX0qD*S>Z@ZXWz{%&5f4O!c`K~la5R|mOzPt%~>U2&db5iavxsMXh z{^pe)1p(>hSFzqsdJ&})qCfGH;eWYfu;JNQ=_-G(*QbrPRK&f~9aegi4qEN5TLpdW z{IPuNBM;Gdo?Lk6x~sU9-6YO&&Ms`%U9D%*2-bd4#L?TA0RSX6M1hvV{bsXyzm)i= z4xau6RQ|(5oinNTO(pQBjCuqiq-WkTTtKdg8W{jgCybTBi}lDDuDXb`--CQ_Mu#O% z`$|NBHg)nh32xh{ymN>kSDwHO{Qh|eRbT}T+3)Og)}`R>RhQu_rDH9uKD=iQHrfr5 zu^#z>Poaw%P~P{-qlU;0T-~j^qfSIIZtX`O5>>_?sBSIsf%l4k_7^-%atn!HT3j`^$BXh z+Y9?eXkB+H!~#qCQG17b*-NcZ3h53^ipZL?otsg=&ZZnfD%`tQQ4%c zIo772pIXE)@lmDwMf0ZSQKd9G{YW;rMX7+~^AdPyaZOpLe}+9i1slN5Gd?3Ar)a68sA*nLNN7{r*O-n5Sci$A9FXGqOEFjyF;M3@Tc& z_X??BSItiT`SYcyZ7)%SBBwnBK(qF0)Ax{!p*HqJYb8JrfDMmu=SSWCx6JO(xv6v4 zZVmodDnxqh|IvN`wBSQn`7F?mQXRnr;F~zn*u4B3@BRkG4+EHtoCt6Ll_A z7^LQjxVUPV`hWO(;p{L8l1A3Eo}6L306@>Tu0LKrp6P6uLKcyu-xIX0HF_*#;L75e zDxJIA4Ig#@|6*!{J>l8_3&$KYs`c0$w*(LV%@f%NidqK@dRjvyK)Z zvHpbcX-J=P_(-eb_mn(&&=xHoMC=Y$dw`z28LdLXR6WrgbbKF)|2_FZ?autQ)3+Y<>}m2fbIhpCD}80o<6W4FFq=0)voA2<+(5)lcUWU*SC=x#U%Y9% zJ^M6*7nR<56#=!BQVB?Nkr7Lxt+X>%R}!6@l2*a?9V!zG;vXXAM!Qm>ytYyK=k#g_ zWqX=ZxQ$^;7`VSU*1AXZ)YXC*vI0C#jF+NBcuTk1zlzxE= zkd{1S66hi+9*C17K7V1fKe+O~tdE(?p10|dFbmZaj5Qn;6c80=&J~=Y=6+A8m7~73 zPyF>BKP#ZSd;2uo*TfAv=G&hg3|k~7Nh1nyH?d;XY=`JnVY#sz6ccalmD15EoJV$F zATzrJAwhz4IWtQZnYknb9?-94Q&mobhbK=@4}C-sd~@=IRb@>VET>z+NwVGnC9I{Z zHGgkS@|iBqLmh(EEsmH!5)F+Qglk=E%A11>l1@0I($P5#O44Vf90+bpWO+j*BO*X> zAN;9;?&Ts8DiHDZZA~Vq@8H)%(~*+h7(aRu3A7Bb!ojvL=FG9s+y+xft@1}!d1XeldLH(XJIJ<*t#z=1eLP$%M@d4E^rD~L+Q)k>~TW{gp9i0OKo4$HV54cP;BP_ z$jhdIe3M0D#74fWa2A*hxplEOpWI6FCA_FL&dly|`aMu(f z3_}QdC5ke`OrvdZD`}mJT!4iiXaNyfPU?3_h5bRyR7D zi7N2@f#$Xzf>7%@#NzboH`wK+O=7Yl&gr!{))D49Ws?p)WcyrZxpMJU-b!ik%-!Y8 z`Uxqa>o&DGo%h4}a1YrtbQ(AC<_kUDAO1PmaPfKjh4`kzUYmTcTeSsU^O@Nt`UD-5 z{fQ5(B-ZY?UlB#9<2^FA3(SJ)m5*38BGXiKiM0lL`|=Or+!;0Vs4y=1l$qLU%~55c zwc8R5BNapeC<%?36->J8upbg>%%hg?qDuAA!kagX1HsqK5$^NgS3?rCAe9XrIiwq) zb&EqyhB<)xvq4Mh|C8SI-U@P?A1d>21kuF1U9uHlpJA;;4h!}44LNNPHIa54O*(J| zjMZ0v$*doEpR@l4)?BN@?ZdPy3QGUvFmK8bGMX5={qW=V{R=9CzTo#(zj6Za)zLMp zYTtPepB=M<+JlbSUhB?>!A4ITpFGR0dT0uR3Dxqxf??9BVSXT#N%RNztY_4pgq*K# zUI5A1x=;6#fsVUgMMvJ~zm&s+yG(i`04Toe7XnP@EBX{Yg3zRRyfZeyFFho&9M*Sx5_Bz-)F$wmhir!#iZSD59A~!zVP#7cmgiT2>h~P5NR1s7`-AOgsT7 zI%Gt-Nz5dfYo~ZMNjW2GyxwcmbSHaN9*OP$j7QF`Dk_k$0mx8wa@i2l)#yb4J}7Z! zMLfkm!>+@-Uk79nSn_9q`{xUcdv1hpThY|At+DTXngk9+>3si0O&D6%eCU@$OKFs6 zLGA#c^P252?`ThK;u*)W7|6-A?UMze3uY!cwbStX>i6>%wT42)P$%WBr2YU5$z_fqDV!m6{bWS&p~YK6JJC zx(jUE*j=#kG)IBYm=MJIJ_O2>rRB+yX%wyfVf})_8qKi6#07OwKjd?kwd}cmPt2dZ z^+NTGrB4Orc8KQ*H13^r^mgDp3k=`a=qxEhEbC)4LWH(QGaV|Hco_W3G9=`B-twow z6>nQ%|K*VZ+!f`7>aISvRJ$2@9I>KFMFj*Foa1&bcmV0j+~EStPG9eVc@rEM_+ggA ztl^c?T0-*~Mu%z`zryZC4L-IOQeBWZ=pjbC(=DK&cG^!b`94G29!4 z{-5q^+y9!pGtgdb#5IZsjgN2Umlpm*RuY4i3`fru_L|}5?Su#jnNn`w z;xDv_jr@UwgEo>{NzhaaHcW~Gc8pM(%2Bsh+BUqupoP!(F#Yat=&9QvhgrfgJV6WJ z<>Zs*3$>>)Yf0jy&Fc|7i;A#R{zVI{CBs_}>+hde(lPsg!TDiH&@-?x%+wHoG}aI3v47- zBcdi_K9@J-DIKw_`)KCWi>BgH4G@Nc3*QKZmY(!V&zUt6XgpwDOI>j$UdQR4mHCkA zbo3tXXi^%_$v$NyDCkt*rIzI&70eJQlm`{L50@|fZ&}V zg3ScYAViXrn^(KHZd{r?iy`P6YfXHyKnFT*T!QTWp#JERJZT#Qf4FCO}_#dDCi(ul6b2fHa zw4XmNUTJH&0#i|w`6}Nx*}&^V6{p&?w#dt;f*f~w^`t>nsf6y(mU4z(5>=?UPumP( z28Tv#)C}XYHy=-x-!9i4I?db?4oKmEKP~Yak?J3B;x;RDl4;L>25iSI4N>8Prp{;=KBrs@lRKVEH-sP zN+)&}!@W9d_q}s|Vg205BNuiz?0x;@sn5v7&zas z*FMEIXm z6tcM}1~J-mkGT?;*%>rkICeDhX0XxKrwS@o99ug9Ke6v5rPjInH(atF0c%R#`-6@M-jAvNwwJ@NnZ2yIw-_r2=ngKd`F4${O zafg`^N|EftlaaqL?b^c{*GxX}%b{VLmGx&nw0FGU&Q9*_hg`HH3@)F>rA`F~mEK{) zqR40pss#4IrMgY=_xDk_)Ar?^RIBWnRV!t7F)N?GhQ{5P&R|zLXS&{cwb*qJtv(N3 zVamTI+XNepyKQ^=4jQf*j=+j>1^yxY|rGC_4l|^wL}Y_ zuRZS&3^8#S>9Q8PYFN)IKi=bJiVq`amUU(r(?&2Tnm(xoV(|keBI`LQZci)T^pf0KS#94+&hH42K1K9{l*)dT6q>Y`(?6q z&<)q$yt=L|stGNUo-O26HO&G4W=g8O-JjPps5}kRHa;&2n`UUw^^VEi5xO4l)`h2X z*S(0O`sS2m_7ETXJ<{?y^yXQyxm;NqL9)5HeF3j!P!mo~IURV;tPgp((c-x*y}b1m zv06y{P6sx8v34PyT!=+b$?fceml5CD6EE)GGatyd-TweHm$>-Hv z^|9Bps0Bq8x&XuoD}Ei$-sbv#+AjmVpTv1hM!KOt6E#+fv)sjlowJFdjyr%KcYP-Z z?++_uOviYTRWKk~nAv9o(E>B|N2^2>;+)SRV4prLe8=*s7mI21vgdijJZ~`5e*1LU zKN1j13<8pE@3)Y3_&SMWp#jRGCKo*EllkA4uuQ!fX|U?NWV#>#EO*vU0P@mc&Qqs* z^(qj&F!zoZC?$!uv&mn-9+`eb>w@<{dsN)=jfC5^#T6043Xgodu#PhwIjw<1)eBFU zOeP=iq$!3fyF#l^I-&N6p#9>!4cBl}9M_-QC!vN^8V$0lR<8IUFQFVowV(G!f5uK< z$`g1Nk4_dlpAPdKq+J|bmi>%_pnJ#oj=n}=eayALV_>|GG274_hbHewxwH#-Q=2Bo zoR0n!m&Oyum!foTV>qUHqjG+6!N6eRmubBG`x41EGca$b# zUFpSZaw%q1Cf1$V=r_6Jy!hX}?w3#RMc;gvTjN%>dq}=(8ZGF`H`IZj> z_5q1bxQkb72~mSriJdVbjrFa%YWTLXP@Of^Uz#mG3>hDuhgPzZjq~kH%W*dc-?MJ3 zm<;0FSckZFw|Z-O-UD1y-fJwoL9e%IW2ZHKPf17Q+O4?EtQ;mDLAy|RR4C@Ze(5|R zD!>b4eDLzQWS;y1Yh-~3j#d}}XycT$mp3)8Qxf>)T=HE5hN;!vv~{PPX?mVIYp9TY zyNOghyu(hQZAqnUdaeDPHKxR~(vOO5Th=atuF&|7Y;Od4 z1t>dV7lKkcu+EH|;^!@olZsg~fw!QRnA7vJjG(wRlrRsB=J9F`@m+a86aSb4WAOFrZ_n@qla285&X3rZ@+~bT&z{qz$gk`OSU6QlWdzvW42Z@A8jF>apCruq$H<#pC3wD@dbiOQm zoqTit37R=(W(tp>LGZ%5f3mUJU?&jsF&0H z?Z@|k8R_%8@_CQ6@rs#=?nN<1i>b+_W2B{5~1kj;&V0O2{ z3!9!GagE}$|x ze01po0DUL*^rz!7JjV5BaGGiAyXyKM87K~H=e+{{FM&&({|f*B7fqj*qn_byYGc)T z>iUzhy@NNwfUx`HRGW6vpjUHa8aRG+|d+asv#I5c6HewIP8SoJ}Ciu7W1#8aZvWW&KufO2D z9p7N|w!rAm%;1RPPrmJ?U?ZnR%SN*DZy5H}0?ZGhxn3rhwSiKvYqA*7r)*Y^qv^)1 zgOzj@$W8=%ePU~s2*h;c!(??1^|UvV=V!KXKg@<%W^;`ntO|}eAdXn&tIrXyk@ES; zc*Ks&v8c|gStd;1nV%mIOJ>%NPR~s(tBR!GHu(z(FIN0q<^KR_|I_BKc(NNWfAbpi zJG(XMUq`ngOnw69kTqh(aB~Tb(RzH(DG6dmo4A#f7oPBGVHEmqQw&dOgx^%G;R;)$ zja;NX(;z2ry&mymT~MVBJlmAX--8&q4^HZ^FRb?{M<5mdwBCO_jDJfg7;@IXAsJ1t zKt~V$#2kp$d?;k?KRLa15I?A8Kj``9o9b~2t{EVoid}xNxkC+;J2eM<$ry>vEgY+% znN=(Q{U604FM@yAPU?J%8k_)}%G?B)*74h^SuMj1!fe`{Uowd8Cg-KhE1)pxuc z$kVX#o$bFRK>vB0ra?1Z&Gls1V$s$XcsiK@t1SrD$*n~`P5Fjpt=MetX|aQ|^MBUd zO<_g+4Pk<<-#GRxHpFq3`BM15QT)Hl`fqDb8t;FC+}Vt!gl;VpiXc)S(qk+)MSDrr z|I7$=bd|MlFU4jDh)Y%+amtAG^w5q<|1?vlDw){O{Ji V*7s#Oe<1)ETr$=vykPss{{`anA_UJ3NZKLB($F?f&*jC53Dz?>0#~qs;+qT`Y?c99lf6lpM+_yXK!>xy1 zwQH|6_gZVuy{3NQit>_3@c8fm002o^N=z95fMfvxz(Qf6KmU<1&h!5Kf^-s*R)PKe zc*B~6eV*evi)%Q4w=;8gGjucsnA_Ufm@+yUJDQr>I$78`UqEyU005)_X)$3H_sr9E z7kA9XMVQNr@`3f}Ex10|%Kr6SAqR^9a+lmBqhRvjl*TFWe(i|XlpX9Gjijw0E@{|4 zsan?!!GyT1@d4VmZtaN!k88f_<*at6i>%?yZ*J#UVPRdk#!+7f{yE&kC$^n}v;6D# zKZoQ{4BUTT8o>4X>i`b=pLU_zp}o{h=j$flO>jOnQkE0*y~qww1bv3)fwNQ4?R z(?k5rB_nTjh`HMN!-el_O9kI4fgwux`}>y+qiG_WC;jsF@C&W9NJ07r(FgXcVxbyM zG?|`jWa>Q6B%Y|g_qJ5sf2~Q)2Z;%DE8ufMWfUdJ*kmYt<@9ibeXkEz)@E0|F4xs( zuX-n73w{h;j$Tqy!6+yjq57H$`o6q7X{cR<+dWthwz?EhH5SUjbzfHr^mCptlS-R5 zGXl7e!eTr89}f|@9#_f7V2Oi+%Q^>(g@CaAyr31AA0i=-xsiPeruvW?&;-C@kj1Fy`I#qF6EX+g687Ipwx2;F!!6Vo^2fa_@#wSH}^mU;2*> zO;Vrk-9V0t!lYt^Hc!!+12kpf=~o)_#X zh7l;FLd%z&iy06*BjbEsnOYzl2E6De2^92_mQt{f)YS~f2#8qDZjIXwG~ugSI;v*` zPfl1JP9%($^J%Y{jjzUR+>1Y`OJG7Ko&W)a?&=Zu8(2DC45d=d&`{mUAL!o(;4Lq7 z#f!T=dg!@eV=~)5H3z`=k46FjPw~0UWcdDMLPt13JjvWZW$1~?^AOv*iR~IgHKDk! zv2hfn*V3M0nXcJ-E-`&1Nm+?*B99VnmO$}%hV9|>lEXP00VZ=iN+w9|Q!5T32z@t= zqZ#{?8F4YngNXCf6ILdpjhrjk<`y^z9r#LbtcH`k6hy9%(-K^ybFs}3XjMZ#oLte< zXUj)!8Af~`!*yG_-!6?{`U>juu1i>Ja~H;e;P2hOuc2vQ?`7p5Rj)S5yD`DKT`s+i z!SIYvJ3}vCJ{5P z6KA8%dN9Nw^X^7|XxP#lqXdVuzovoDp^$1Bn zkaYmJ78TDGC+~;>>f0mKLh0qY!+3O|`%5B(6dDyX=H+=4q4`8*zn4wBp)GESjEz#$ zqPYeEdic!^PfzKg%Q{4P)+OA1I4c6U>>IVg>e2XPaRaaHZBxFz=u7&~OI;LRP+|-8 zL!-?=aGo^tUcez9I)y`2{n@AvuG;hv8ZQj8jfy>Ke7X_%kvd;F4L6SiBt{xFB9OAvtw|v@a%c zKQ($vtWZ}FUtuF3#MKQFRI$(}KSI)bSILT75Xxnfs-3U;33~Upy578nQUj;T9P$LH zH6Tfw)xPk{K0r>xq#7O{5?iPZA|R(w$I*`&?CKzO6NMU$lzt1F>A^6lz24nOBbCEd8q{}z@vq*oprgVs^g2c2y9XE2aQ&t8A6MMc*Wv$DBq8~*PWy=_- z*cyRg%_y6jBu$q5vuC9cA6)yPx6eb{p1qVZ_#xv|#M6t1Zrg?^^1ixg_bthCIG}kGA#lGoVsB)$Mp9%si_VbV?^S6M} zFA@siSg9X411(bGiKO(aZ-J0m*s&r_hVPH(78Xs>r6UMit zmPPRsvf1jdr*I=aq|D632OMMl1)Qs-#TnoJ5j8Alc%}@2#Dm<6Ga9?IF*_qrE;<%l zk%KAceHsuxs48TO7*mxN*j@3qb!Gw=EEcZjw4a|J4jGsuG#lL1?-x0z&e9MgTV+ed za@Gd_1Q?G>>)`SQjP^aAGw+F$4eOjvr$!ig{7Naj4ln3SGr=a~9!^d;mnBSZk(Rl0B*4WqR zJWNoMoiC;XJ=$2mXFL4R!S{seWB~0_Wh)Pkc)z+Oxz8KSRDvW>DP6F8^Q>%xAibQ8 zgSoe1$dM&8kH;)=PPFnaj8U5kFCoAjH}?mF@lRW#1b5iU_vu$&I?XICPj}a^NO09u zC5GA&zLX}qc6>IiWzXiS#nQjOM?%MEH`HhHB*o40`YHeF9;_qxE0P}1lGZcR6h^1_ z!*AcF4o8ML^U+!p$$b#OgBpXS>NO)LAL(R`2FLQeqfb)=EgMp9yx=IhmEPQH%3b{t zBIW}jpS}9yuSC3r8*uwKnqqm|ohB?4&=#R!-@&9iX=k{RB}Uy->q6_kmyoD(vM;0x z1@^`Bc>Bd+Hz5U*!wZz^N_dFLqH zW4DAMN}mtWG1>7^s(%Yck8ss{2&$~`NX_6H9_5A}FTU5N|3W@Elv>7|WL?)ac@#_a zR;*=tXR!~ovx}wLHGkx5X)=d*xn=!wkcK)`?{Qz2mf@qpUzox?{<+Gj|&9KC-c<4OD|oD!QX zl7PPouFZihI8q;#=fY){g@4;vUD@i8+5Z zYxstV$GV&INz!GSpeXpaTu$K#hVI!jrhhA0Pj?%=as!f~+w*NKExu z6{&IC4HXXf5t$gWjvzpPd9NcYYjv(p%Wd@B;>gyHrrJ+xeTEPD*86vqIb}op8hV5r zyxjhW<7<>yGV|#Ux{}^&%4s68vvsPug&9&(dpy}yAVI*TV5)+WpbIHX@0Jt`RTZ}A z;j9PH^6uH?_T*vK!g`U%g#NqYE)-|vMdPvZ(N=Q?^e{reUZtF6pSs{w>D`aR!7o0; zi#<6+l#O#Q522ne$w2iETd{p;urz~xIU5OuTqr??-`p2&h4^L?fn?o5JXJDiRFKN| zvAOt;4wu$?t<2+V_JJaHoB6Bi_p?16^L>A@$4cI6mqs?Z7x{7oq1_`ARRD1CI95|1 z5E*Z?GFnZ(SZ`cE(C^?}se{X*eejjnU~ck#a~c~zhZasXfBp_OuHBfjP?ZMU)oQ`F z)+g1>Vm_Lw8$YBqb-`hs_KF=V+LKDpoF!3~OMidhn*RAS;Ul?aRFETJ4Jb_t3$I;@ zzZ8_gSs}?zC_C&h7Z8Z{PgM-S$ZT>YlWjn2Y)b1vQm4bL_{P6^j{fUD5}CW6?}C2 z^Q|a3gxS2iIe0J}LeJNmg;syNkg6-?Fp<3ouhO>9g#O78F^7yBv*==s8yiV{#b?hq zyYm@Z9?SGB_Y>n8DX9B?9G_mypR_lB^-b&Uz_i8V0y&uEEm-0?T#_F4nluB8iI_8& zMm$V4lsp=%UXKDtt`4azg`;hayofWSwHlt?U zFEz&JI387Y!gMmS2RGz!jDmFSL%C692|rlsJ&kW^860*ZU>h7J$|v7=ZXbwO+AJ|D z@a-;}#8`5FlT;ST{p7&Zj5wQgrpZ}TNd zwhTqWNHls;P~_LL0{04j^fyTIA7hz3=VKEweNHy=XGQZ<}t1lgbTaUlIEli$C^d+j$~$ zlXd$kL?9yv*mm=_?GrJz7JHR5_lo<5>WpG7MVadoC=f7Jiw|D&Z-wlZQkdv}?U0<% zzKqfAQOIyf58qUbWB#yD817`zoD&2NC5SQtJYLaqu-P59(GCzpywswVNHvRgS{ufif8CThy-$=*b-<}8jGNP7crIX=0 zT)x!TbavPMMaMaABI_`MqZpTaZY&YbDK3}%R+$pD;tV%hoYkE#ex0MKVh_QUJ>jD) znt2$%^gXu0fodcds4c3C*hry)#E>Z%5GEzJt-pv7iyX%_JEa>7ycd>(9IvDy&S0`* zNv%|;ZcXwD+NdCBr&S<$CTlUeu{1d)Fl8~47MXzH`0g0~8Rhg*Du7JV@Q{`&ai+~| zu{KLm)QVy!v64k46_7hbe|Zj53vWy6>rDB@9f>dKGMy0^PBoE|Exr@TKrT@I{qA@u ztkrr6%wXG*JKo4;Z?N7-%3!mUjV9pyy;Zufb0$+ZEomNk!t1mt<@mMu`y$zDHc{&H z%cV=4I|*r(WF18$!sBh9mx^jqPNMR7>;$gID^Q$f^9H>swictpTVuHOr4;qKAY_|+ zDrDu|J}c@MR0GOk>OC|CJp=EojIq-dC7!?rO<^g?uW2CD!E}HU^bLwMVaY{EANpC9 zS91an9${#NS>$0%N*HbSgrA;vCLbz8$yov~6-HBreTL~0^oZ*%@T!kEsj;z)%MdES zgneK-w^pL&NZHZ_=jsr-+X~fYlIe}&Gl#;n^Y;MHxQg?PC`jA{bgQ4}Nintg+h|nV zO8JUq+~D4?8(j@c-%quZMGEKv+1mg~nW9$B;5J^&r^DxqyqrgbW-whqb$rA)39o7M z_%!6dmuCuq%~*w^kLQxXsIeSSfE`_24eJB*F_V{YsykRBDn|3QMq$#Er>#*4CJ5CQ zg;`R~D|HU%t+_X7vGBU?3Qyx6Y8M%`vb3}A|2_KTdB)gPeg_$az*<`yp`&Jmg+FtY zLjgDjF4dfLSTq1iUI5-KQ~4&`VTk$xW1P5Pzk@%fb-F{4&=ik4 zGlVq5dB*tKptX1V%0}H|(*hg>u9XGzA1n!%n_*Dy2!xKKyD#oS>f%|4OsK3-d9pTQ zGM;kvZ15U&nRGVAaAJpw2XoBiQQ4+7IGiAMvawX*W65qVJt*4Q-Ste?EicF!$iL4u zK_;3#TEA;wCZ#k&5zTzOW9fTyA)GK%Mvf|BYpTwbYpHN9b9IluV07B_Lrk+`Ypv<6q5qDgS7Z`~!$=&-YCTkf>_Ji!ihqh4 ze7)*W#P#UB-%xw?eJ(l71Zw&jMTKG-k1&%aQIG66)!hs9kh6-}P~YJPJ-oE0@cE6( z5Kk(m3BdtM5ti!zBHu0=#dF>Ec=eX$o6L@qGJ6;S(7;du7N{*z=KNG_bzZg}#BGzBRBdiq81-E`=yyig$+!5(+~Qa=y~QSG_1;fJLZ~ z!Neq`_58OIzRPeh-4{+6g;9hk*7u%^*2KPW@NWFGXIKB|clNqIyp9g!yu?nXZD?Cl zbVvEg!BdFmVK6W=If35Aw=BApv9AS@gAG%2$_Y3CNbc9bH^unsKT`5TUv-A&s}R4m ztu%^%Mw7BWL6QfP+q;23XI&p!^$5kB`=MkS>==<@QOR-SH8oNO#-oFSu80)k>)DfOSF zfkVgE)3c8Qth64WCeRA}`rB=nlU^84Zjp$_Ebvu`#VIt@$53#Zih_?%y3M54lo#<> z^WH-xl`tU8|upGdP45ehf zRI?Mw&VEAI#&B-nvO6RCE_yB+N>e~&Ygv42IS*wPH%L2=OB{OBEZUF;u+og%M?gtM zxV9ce3Fa&%U|vlmjQnBnVeTV};YL!EhpXd1Gk}M@j}@-7SG>pyixtED1>)fXj~dH* zdrz@jLXC!;X*nmGyQQ~ZqdLP4u81k(q8>pldTLGoqd2a&N>6vlzP4J>>WYO99>s~V z`t*cIit(AQ8}d#tJr+%GC&f43rRa~LJ5yYq=Pb27W1-XZZu_J6T2*sps$$|2`#`Ic z`R=+clG5xvKD9DfOLL)x`YwMa1J4%eXA(B5MO?K~TF5%DS)MAU(*A2oXR{mj!A_rW zCCCrJ7co*C)BolU+FF@Iu5|s4#Wew$);3M}p3Jl15{7~jYJr;3hb))zlHwRpBL4cu z1)7F))ZpRiE+wY{mT+pZ+j}=MXK3e!dDGc`Ggm-K8q+_F^S)=Z4Ra)tf#j?}p#r!V zl?x{*`3L{}$@Qdto5d-=U4E!T-&G*&G{?*XJ*NcQ&Lm$t455`%Q)3cF?4m-OhnP_2 z5_qg~Z3k-{_4e?us12W@Kr)C-jc~ksL=bhJ&T|oX9t#~HQ~pe^&a5~~>UjrlP0)!4 zS|5e2_=3JOpNf@U!brBNyLJW64fC@ENcmu?R6&f(U;zw{GAAC~yScu@g%&m!go59VD#ZSL=N<(e8~zUY6UEZz;UxkG@i`W2SzH0 zNuQF9K3`(6fd1C<2eUqz^sCe*DjOZU4B_-Gq-1I(1`R$Wu%2iQ!8Vvko&X~xY%niW zYl{$5CDVjeCK6^FZ6{tyndb4O^-9rl0QXzhf%w4E583EqMUZ(i8OSa!d)mAy8a;E` z$AAD=-Xj;d5#!d{9(iYYM8y<1f5d6;JfG_RtrkgN(dBRU6j&k8Rc#l>X*TjGJ@Yfv1f9(yVN7*6iMCJgd!uJ4^? zqWxB)k_KT(HbZ=m@eo@Sqqmy4(FLrR(qF51_fr6q;Jn`v8M2=Meq@j8juPx|u;L4C z!g6W;wrw&iN2EOYUudbr0RHIy<;~9C-_@)V&A1dbpwQMoTpIbZgc@y-i;huk`pH2E zMfq{Mw|>E#R_@_1MI7g}$iaWZ^+w_JBbo%4DO$cUr*ZbvB(^5O7MQw#wyS8F;+afo z1hPGgxzZB3@+MD9ENm!K?{|*nzhCQ+-U!D2aVOo=m`%JO zaOWW#1o(ThM`BPYCbO@S`-MAD@A&RqLAuz@>(T29L~mTVE#rYnFI;+X$NaUrMn@y zM_$teoz}tF%c$5rHNOnHN9p5~sjGp(Z@PVTQFNH0V`iN*ChMhIz<4BPX{4a`Ag4fiy-tuFp#0_PQ|AcH9R5$L%eI5hqb5NZ6dI zC)erBvYD{ti#3qw*Qp;#Rw&i>s2flIuO`O5QU*Smj@ZL$`eyqb7G%Qqpry7D4b(eB zs*@?mah|4tyO1pR>vEl-)3_sx^(}A-#FL0;RfgPA*@5-yx<{uAG|GpKNUw@xY-|D4 zc2AYwJc6bO8ooI(Bg3i*_t$q+HkWC#?PGy*T_@D0Tl1vkrM&S>EceZ(J=0Kwzp*)1 z%BRdN6%{~9El-Da?fT3JyA5ZKXV^Z3GG1NQp58=pu!24&RAE&a6w*Rg(B`!9Y5F%j zf-LI1^hErt)cdU>&6}FH7zyvFkrUD-{R=}1k008zlmB4>09qV%{V30|_ZGHWp&K@F ztgZn3m4lu0<%&li1Dzr?YgoC*t8q^fA!&(mHi`15;!l7`nC7UZkOlq+1;_t^LqW+?*l@>;h zxHOS5h9jaw^_7RI+(;N+93n_C7#6i86jb-nJym*rN1ez!mruMyx9^zdo3pE!g=FM> z-K1B-ilO7;i;WKMZU&-UdxKlAF?UO@N4bYwNzM2Dftp!{x=SULsx5iymzY61w7<60 z30m<*d5bT*iyMo{6~y=SJB{xq?3D;$_wO#3OD!#)872$6E2^cgGR0@Cig7eH3Z{bA z2(Nb46!rTfCObns>`0b|z@*9*i+pe(Rm>KQKa*F?p39>-ECWlx8)p)vrdfUEdLu#B zPD^K1#toJC=;XOoQEI)IhBgvmX(B&4rax=>OwlnuYS|3IBgqJXfqX3tIdQj+DZ+D9 z)7Qu&%1snCXYxOG=;~>YK7KKQV*Cz)Bk=RlLJJ_b1b3(HL>J{x)@j*osAkMA z?Dk=|R?Ff_tH-vlJ3a~Ct&iBaY}P<8vhkx!cIWn^cl-pcbruC&2wG*AZ&CdJ7Ko-F!Wk9 z%?@&k-`|iq-d7yH$r#K29g1&V3_gcL^W7%>y>U;)&Q)xMx)%?^-?jj3C$NDgTiFHn8M}@ed?Y#VEID4WFXEPu{XczHBw+ z%IeCWK~fj{yZ)iv-oC=wQgSmi6`k$y*VJFr-Y;Fh$pi9)WFD|@&#w`Zv~t@(5%TT& z!36`2RJ32*)oA$@bY2A${X#in%Op7xt^<*{*`My!h7DwX%1ZujB&X5*tbtLc?9F~? z^Q7y@aHaU9V>ddHm(<*2Q<@O*g>x|CNpa+D(ie}~R@j z6bhL00ElS^wD?QJwpkQZS$IP8&seEnG*PT zCr^K5816Ijn|{-U)I2{NH(>8P%VOg^c&=Nljd3-%6$#y0OpM3V`(68Zzp&gOL7KF1 z5t2to?bi@3QDOPH2=(&|b4?N23w<@&JpT#@Su^;c{dNs)!*5rhZDfq;+4@Csx`=lh z%s8JgjKC$u&CE)H74!4Gb!q%=Y?zezLz6;*0fF@L9ktYOyg9oUfnT+kBS_f zXJ^}RlXKZ=lzjL5nzr~lAy9#D*vdy9hc4UrlLh!7{D%1ddh=8(|nMe zUzgB6T|~3FiRfElDQZkAbEmKVQC7`z)Mdts9zeaS#P7d=xGNOdyZ z1)JxagJHIEr`{f?&>%`ys&s8$rDPtY5|_#C+wD_*i<6_(+s8lP##mWtdtc;(=r(e) z>DJ7k1}`}=o|Wl8==Kb9Kb1fR{yVVNsZ2OvoM+nK;k(6j3&@%MYg3=Ez&dZ#shEwK zoZZ@OaVO0bSORKw`AxG?-4#QF^ASnP!p!mH zalzZLn4i3x9GqB)lm54VxV9Sg5GHK;mPg}P{dC$E3k-%T~(=np>KNFy5tk5{GkQPI7!38OR>f*XBH0E;Bk2) zQz%#aKhoO({zYMktw>i^zg@Nt#)lC;J6HX;b4pvJhQO=bsgqS`ZhmNvB67ZUhj?k_CZzoD1cd1)egf7ngZXI;h*%AW4f8UcfZ|-@Q+2r!- zA^5d0`ICBB`hbu9AI{H9T2@P;`=S$aXDR$Um){w+QNm2zlL}NqdiP2cF&8d z2`VI5trf{`=Cio%>!x_RwZhrgdD&8ENlc%tfSBkI>E7j?BL%) zi3$N-_KZF$AI?k|{XNxeF2FVr7$V8OeF(la#W}{x8I|pCWK;^90{_ie@wGG^YZ2k! zqHFwAgCz}2vft6$C9$ZPA)V%q`LW9GvwHeFMeUsj;blpt5zj|(GXG4K=FB9&|HzVo z8jpM%_#jFb9H>|Z`Mlg4PL{eU7NM7XmNh?R-ftH1d_^PPf2-z}{7@A+K4xO6x}jqF z0T7D5$(|29N$XVv%Slo_w4R3s?v6BvnPKI(hF)mXlEDUEk(dHs?Kj=|4=#woTm6q< zE5xc3I{hFCvm5BWrd3ehdzvns{X2^oWwEHMT^~eWly2;|^fpGB@XLZCs92m)s(lw6 z#mZp)F*hhUcgAA4-CMor*{qf@&z@uY%U#UTIx0!5ApuXTU%TqJy42V*Ll5)J5pVVF zt{H7D!TjUe@*rd(!2%5eCj_$x?}zzOx6I&zJ!oDt;v%!`G=<1vQ8AIe9xRcK;Vq%+ zaZs~V2*Si?1lsVyt@|^>Gz3-sMEYl7j(7b8qUMH+6-E6oWS-W$5T|_a5F5Vv*o0$A zEKa2$rbIUi2_yi%PR0%d#^#si0;VP3iGAN-)1+SW5vu&~#Ig0>ElMm>DNGBtkC2Ug zEUVYIV3fT;fbf3sm1H(}25dR*Is(7vtx%Pl+IGtZbOVZL^-jKkh0ZKq3N?J%ihEaQ zFD?TQ`pcjK(9})x{ zLh*xmUeqN!g5y{&e_;fXnq60c2!)%SLBSNAn8Dba50RhUt7vTQB+$No5UIajL6RbK z+_1||c)J1{vA;o$WCmMI^&fkP`>*LClEJ}49qwS`FV+Ee**3VpL_L1Iu$>#) zTdQs)X2Do*5}+5HyvzPu!D+K0SIFDVfc@Rr9njs^=Bs)Ww14eg@4Ct=XZ%D?FfVFm z7VKrP(yDE4lth}EnnNR=fo1xOp_;wR%_;G!ms-zgve)}xpgshr)^tH&;~Ra?YqlEh zhdjh)1-tKm8q&6$AXe`;Ke7eUt7a{_z6>0E&!vbVCK~L%`2!_f+a@sJH;p7uCGe$d zZRMEc7uS34lwwD+G7w)Ub1G%>ePUB*Oo-Z*Z0u%$Cq;qDQhCbN_mO7 zY1PLzAO@m_6AnJWOl~!&Mj0R#OmEIihU0%P3@c*P0D$GjncRwi_uuE42r3YU5mLKB zs=t10Qm74@i%h**NcA%wf0A^+6oW`s3oXK1hUN9cnC;*TIl^%Q5?8k%mh0jMx=hmz z?fLUOeCbgLHC)T24LT5%{HlWY`1X?mxAmM!e$y{PCmo%`5h>xEY9|(phUGC8vH;Bh zO$CeS49ed*3^{zTj3@;%AN zAB*CMzwkqV+@?w4|5&Tj;Mtw`^Qx=A0~Qu@IA6;SQn|96z`kXuf|}gqZuNX)Aqo$u zg>0>m5fBhGG&H(o$)G6V)6%uOdU_BQnBT&3quUJ3E#Y{pLflVQze~-7t!M+M%zKDU z)?VRsf4KLyJ`+6dM?g=B8Qv8)UfwwSHw05dLdzROWZMb;Cj+4_K!`(Vkpntn!OUWZiz<_3Vji*4|Eyr zZ!U9VDG?D6XDkX>dQJoEZBI-vPkoz$XvD^@u3CWKT?nFRy=+%#x(zj*;u`y?$H`#7 z44wR07GF$PBsfKpsX2uL#z>LS22i-C-a$S5|{$h00=ktfd$h#&=KVYG8; zZr#mUVmq)?6$&X7m|^GMs{n0bY-czzAvr`1c8?TT^TUTEQ)`s~M({GI4ss~^PcRhB zxA*TD%b$q2@#zPehw<1FFHXhSPXo0f{=UAofpfRAt6IG9 z=ZDQ6<56h*421qg>u>5ON#%{#Ft_8p5amzWx$sFXNs+fLD8VEX@-2E6@jC)WsXt1YdH_ zh`*r){u2y`pjSO9jyZ?5r2ND7p%p#p$)oup&pE>@&M!%$1>?1~HJGb!&xRx6JFP!6 zhTfV_ANb{UV!A4HcelvClnJ6LH_7#NQSr!fp@&L_t6u`&b~XIUxz@!|nv8W8OPV)5 z*n5=g;;29tecePT4P^&Lu-k=?vc6Y)_G*kZHS-sUg6Q z4B!eB*dAf%l`yx7(B9o6c8<7-HwNzxSrAWy7B_3s@oAeLL6{Ek?d?HpMgfa4s zg@c8qPD{;HMC+Xy!4t$Xureslzqqm1XE=6aQL!j1eOSun5IJlR8PjA)UvN22(WcBb zcr{27LjBfZ&!(Qzrl&D}2NEJjZ}diyIi7BKZZFr+-5th0gsS*q$0o0nu-co*t% zBV9ad3zKVfxh<(g-P5-aREX|OU@aZ+z(opJLz@Q!3bhHmxeEyrTu;U3{M?C?;n!nR zJyk%dIzj~@IbMV@)wqm2^QBv~h%>x|E-jA8^4#7hP&soj3?}o6%!+GQ^_E|x=re($ z$+!`_;Sv!!zEQWb;DizSiCpg8vw0Rkc-lyE_lkRxb>Y+nqNwfY{he8-r{+IC^p(CF z$l9(nLI_~kHWCH~4Kq#>w`^FJ%fS$Vjz;!J?osia`~&$kkU}9{9E^sYhuFlWz4rHO zn^K)|(6y(r!n^!v?GLP#ncR`6KW~Ppg%ml2e(tCAucDbK((1n^CbX3E@lgX%4UEj; zPx9!nG3^@@!4$!gVs9BhDDd!0TG&nHeIj5#z@(t#vMWTGz_5N%q^L+u<^^_0SoN*B zhv8D#jgBdU07Gr1IqDTB&3F~PZ*g2=cMd(d2!E!)S#GK#m?pphM8xLBzmOJXV&%Gn zH7NA6vQR*k{}WogV%mHa+*7~xb`6k~+TX+L+Cl9mDEYu|oipiJnQUB!@+ zmWV*MXTAUG!hk%H9cb6|Yp@-WkrG`*UPj;*X5Zi7rIY^sM8XV4@(25QAs<-xvO7A( z1zEzktgQ=E<=2c7oKh}RQXVQ2RKh7AcO38MBk0U*V#H2R=dS-e;Pi(f_+bKSY8V986T~9+;5sg(z6x+m?itd1opIu zlkaqg)&Ej34jMUSd`+~3)OW#(Fo1e#Je=vn43+1DDycGfdIjPBDGlxB!wt%evZk$I zBm-e8mjL{Qo;-%=%Y|%SA^K7iiQ?$@Oy96WI#YPKdi1~xeo$2t)Iy+e+=hr-k}Q${ zDGmi!$c5aM5Q?Qr4Yw{iS@`#u_tusJ8W1pQIF%5jtfxK1^qW(z_yf}+2pK4aI*?~d zNp|+4`z@3PreIC;IV`LipzQnFkYaT?Q^_Su`{gB8Qgt2OA<5*S zV|-jGL>oM^jEfesGD6*=3<8ua{j5MBxN8a&g`bpFB#PguzXP$UY8!V;y+e-zXF~i> z%uwA{CkMVPfN(&H4c`_mz#pLfL%e%fI4-aM@%*tNU%Et7hZuI~GYY7|5n&0=YK7q& zi_{~fwUHZf_v`jL6eR3w^G4_T!v!vBj9LZdT>!`tUjw;!mFNn`(ZK@ZH|CkhY;Im~ zpF_W?kswM=T4Bc>?^GAq5S@BzwqCWwaf%hWs^Qj{5}bGPm+To+LU#4RO{A2#qo%?@ z;z%TVIE2YHgw%cSPJ=s%5uN_dj!hun5o<;e(`7RyJ(mjMPo$G2r&RHmDQMirfUS#( zd(n^kP1pzqNAe50F-C4Mu$!YHJWP%uf|b(V(Ite{olrjO8MSIwrxt5fRT?WQO#r(A z3mm|BUgd>Q@vP9h0%7iObPYwgc}H&+V-5BZzlu=HkB-yaiY<`f@B$gLF%B~ax74(? zh||Fk$B;wM;~@ifc?O*u<^1mZV6DO}q*DKJL@1EcvHzW=m=r`W!j# zI9Lugxffk9WPXwDgXLhHqSinL)1o}v48EcJV#Q_$k8>kou`C3qJ4QwrH3f+4X;=Mm zh>|g_lL7CC@I5Ufquc2 zeJ&1+l#%H?x@+6SW}AeHh!vgK=;hfd&0%c_vhZJdrVon1KM<#X;hLSQ_9*X9#pAo` z4h+~@TM1_uB*?!PiJI-<%j)}*Fv2_pg+j(Had%PQF`b)Y>Dr-R*Vg7Vmc_LE!j22P ze0*hny?^lYXbe;jG5`_R?dP6FS50}{PI9@@BYEJn*P@HmxJ_F`y>sJhi8~<@8$|nj z0z*=H@C7n`@l^+go$CNZTQ%J9w1$BxU-(l!7O>9D`|hc37lcGCwL{i>#^MFPs;%s>GA-P*6@#$9hW-DWM_W%=O) zi++RfQ<6C9-RFl06X5n1Q{c|YKTDMTb~Wj?XJ5;G;1)^t?a1aa4L0W#sIjz6a4%16 z?^YYq03>Z`@5CJ3rQ?M&0So^D!A6UZW`9KwnFb`4I%P5PTXup%K;~!3E25wzwV1<4 zEx7b_f?P@FVJkQUeL5lI9ItKD6&!+EvZ zl@OEx1@j{GOZn1H`a_UjY?j*ycxcXI{(aDlT8pBZ#@ckEM&>Y`frfBXYY{?K0iUS{ zbDWOmatO>A+y_@xm3WAP;l6wE&?%EGCTD$Tlm|9{(k8KsCLf@@2_3CLx+~0u{8F^p zu7dHr91^U*<(*dARNieo@&KIu4}zeFx8yk3puL;aY4bj&dQUGD{LTghq9UEHN%L${ zQRZ1vjX(Kr6sE%0Qb1BzdmA+@xm#O%sj|5q_4YFZCcyEd*Q5I@6B|)G4kPr1P@Oc* zR~vP5;=QXg;v0@sX-vP}>VUAu0-kDlg;L>- zqtt+1Z;M;05V+8WJ7R|gMzFN1je)T~ivC*#=q2vYl7El_|jLb7c$ zxIi}_&<+%3vIUPbDd7a6gcv9nSEK##yc%#4v$;F@ml2h_fxWG~!r(*?M^|7yieS00 zA3DMD83ZT-1J-!(Ro7SWp6Y;D_Kgq_E%Sq9wJzJyn}juP4mgW_ox$<{XmyWFV06Ek zZ5xdFdFlR?kqyidJKH{SC|Ncr*Q$l*jnNa@1F7u6F4*6d$M`S!uvp6~EWtxv*svNC zsF}(4ENU~6bNkAT{)Yw7GeutfonLJs0YGjb0-a5MBg|6)*YRW!m6AeW&}qi^k`La| zv!Y`yC)_&HN4e8-5ozjXjQk|&5IrztHNW9FkT7;)L|mamFh^1pKe$vYLaC8fbAT7Qu%52J5_9EG z)a;+A(XV)fSS-U*kdgtAbJiP(OfzL+v*3Z!#`QL8&odRt)D44658!ca&m0qcL*g-N ze(sro!2zUd%Ss5f^R`Ii#cy#*6`-*-MD~;B-SLi&Lv5fYs}priSC;~~;k7y!hmL2U zigKRo8~&q7J<4k~%}HT(cbFxS;;sRkuV7--<)aSY1bBG`P90 zNR9KR51#6(Z*-E(9Nnp_gk#JZY*>ESKk#UwO)G%je&1i`_ocN;(&_<6!-P7ocm^&} z-K}SDX2U@3f06f=QE@$AzBf+r1b0FR?oMzC65OS62=3mvy9IZ5Yur7!Htz23u9x5c z&df9OtaWG2x^M5BdQnwfeb(t+eRl27{_ca*lSJHeQBYtbqUw#BJL3@X(hoE14(^Xy ztBtgA+i?DkirGn_p0rBxl`HplMmr=O@ZfFr-Iz1}@6arWDG^=oPyjg`4Y_A)D*Ppj z?DHjt{fW`!=AcXKMK>Obgn4kZw`DZ5(U{7=bBapnQ=)XPKcOud$KAhDeX9~|@&=G0 zuX`HxtFDg;Slb_rsQwkB{HM8lp~6s0Lh0U!L5q=tqAP72co>snI$)R8fk^Lq5V$+z zp$jYXe0Xqas9}qt@C$);@4;^EM{f}8W#yV?0wS@@7_o_d)2P<+U&9XZ)c9N8WY zi%IvXSmNC1xy^gjPaV>bv~wlvcnL{;d^~+M!+tOGIh`!vv+yUQ~4T(6e~;d{U(nSr_`6c&(^%ZP$7t9DhWngdtP>*oBd*a zQn~UykVm180^su%bP(tr|n77N|>diL` zJ*o50{45;e{R8KDzL(iM`Z(Ss+~In$nLkV0u9^2y%jF3U$lyD} z!ZD^XHZ#`8H8QZ^5O4qe?JFxmj&3 z@*lR)RM~ozoUBPJyf#nKJW>!nDqVlG(7Cpn+H7Rf*WETUrZY!GkrZDLJfK&$T-O4z zPZsVu=YOo%O1l^AJ42#DxB9-@o#}-jHKEW$Tp`Otc_7BSC6+;_cVP%pU95L%sQrQH zFEEPO+&ss2sF-!gX9RRhHMWCQ;i>qcT@Qnc4vlBt3a)L$3=bz9G@3H3mHk1g@QyD$ z^@dCNdrb zpTEj{-=3{PhyizeL zXTPC3T8Foi@(edyl+!4wAPX6aP!Nzl38DO>!BIfIdb0UnlqdFx9y z2|#}HN1dJz2EEjlSY0>}78i*Z1_lztC$&Eh(N~=B7y)7r62+Hi(vLdJeU9^huu=}5 z11i#Yp4aIGfu0}__X57-F8&d_ShMFTBT@^jB`Nu}qLNtH0-R-T%{@Krj~QgkjY2#; z5w;?g@S^Pi+^k4>X>n#8T2ze?iag}HFec7=L7wNlzl*PptNBgy?z!*&wvzBum0A4= z4g-5JqM`kKbL@UVfvJR^Z(Z`{XNQWU7h(8(Gz1)gw=t%Pv-R&>Xx-s0DttP(@R`PF z^`Z#V>_$a1l7q&D1=Mw;k;B*NAQ_wQO*#w904N+5sF+N8b_~3Y%iL`%tI@`W>t6kUCG6O?}WH67hKG4YSg)mJ{ z)|S@mEgPjH&E@(oRvI-wAy#uMd$gcOU?PcwD7WdlaPI~ggsEVUS-TaiURXK)y+B&d zUo{fAarc!&cCEKkl;#Pp;^8vyuI~1yXsOzO1MNz4lDO=#@RscAK&0G>Q74kev$LV| zvljp3DHYEYQL>*Ou9t&JX8RHeWBSY69#rO{qL-Q|`Qv;--80tBE#P9Th}m(fY==bJ z`0l0WrMc4wL)03%V~x#%s5{aSVCTtNi~Q%~8MTFZwnO4-d1Iz6L1+PFbNf22sC_^n zFbvLO--}k`-)*#_j(_4PSkJIw+Pl~{*1 zDIy`&-%I#SKMqArho%gjXCkLPb3=zOg=5gM#$7?s)0%KP{x7x$jYV^uQ`%|MRrJ;T8>(Xj^TxQ8{^p&cmXF->9WPG{ zq!V9vj?cu`mO!|SYB)7#^ja@){}I-3fUld^3*Tvc>-pAjGd6u*&XvLmwB8rMA5uK} z<8Gh1`fU}tlwKsQb^AJoui3CPa6m6_Z2E%@VIrD!Ji{7 zxSv)WeVuqSV3^Ed6GjDybKfK14Ruq(3~tE3=c5*+gqFXa8O<^3jA@o7UPwp4&ab)P zI=udNUQ)(XB03U>$;LLerMklnjuLlxpRvOsuW{lBl`Cha)ddQ$tfZ%x%!>i+;YRK- zFNY@}kW2lo)dEu>OIlmx5Q?u_FVJ=H26?f3$dtL?hT2XW-ROJkLG z0J+78v$Z#8=#Hd5z+H&Bm6N>2#2vp{?tXvP8XLjj!}BTTa9P@4;V(xHo`h0`zpHtr z%izvj?s2Yp3f((^RJ$UyK6SzA%;%QJ!g#wCzMz(-^x8GyZGA$U0|N$DT2l?EG<&Ye ztc?J%NRB!)C};!oG2(7p&WdOW6Ss#$nGiuuOo;qzCTp_PwcNZ`Jb{1oNGd9}XtpL4 zitgIRql>Gqz}n*ePaRYXf=++pwE|i_A;d;f8hckbC^_Wfe&HO*{PA$w->u5BG%Uj^ z`9fpexUVrQG&O0k!VDQtG`!`5At+uYhae!MJARjE#3hZ5Umsy`GH6_fR(#`IR#5&( z9<^%Z28cWz{QTbj0$f~6DVEHr^{7gI# zb6~q)u{*opv74+(ZgS1NWkrMAdT|sb9YskQm#Fzub_>75+mlV^2Ck(e#mDJA&5<37 z>S2W!t*kV+6cv5#8=~1NfGs; zUzi@4gBH3oiv}{8kIs9rl>WSi*knHqJa0AJDMQ@kBbXeM(!5)`J;W^a0rY1bvr;Pw z?Gub2SnE)gW(e%}*3gZh^g~!@@y5#N>Wl<|;q7%<`I<)5Uu6i(q+}~={XLXCGu@rI zEIRS~+QjkEK}w&Fv3pLU#cQ{pkJb4szFX{T4Wu(WG1F{}O6)ybIV*Q1*oT-|)NKUv zGx_~G*BOZV(F3dv_vPJB$pXX9RtK%1BIRY0bT^QQvA)lJ9Yrh#39DKU4FvkefY-au zennoWL0|&bcmtYXIlpkS2FZfx-tHH_#1duWzT(}F+BUqg1d)R|3Q8cA#lIl&FM~M{ z`j9>>7jhOfbu=_f$Vm0w^LD$A1Hv3ZbB~c?7NxkE4tPnuSIFJ9k~xq_Nc!As#}Zw! z{Rq<8;O@@d*D+A&2%~j{CWva0$6|!@bW0x18_Lhek&mxV+STR%$R;=Yt78c|`Q7nI zOM;VqjbP|_4gn7Ii+uSeN7@$>t>(Ip274}vM;IvDQ0pR6wO?y1gq~t8@3?l;K@lc@ z$Zt=KsG#7)MD^jBJhzbLCpJ_6NbIfg91ja0+cF@qR=#qO;@ggG`nA{=-FNx;8+&PR zWSr9Z)taKSHqz;l(xz$mbfIV7-4Ztsa3$#N-JGU9^1}y*SHQ{C@R!!;IbGh=d4fOX zTRJl4@17s6xG6r1f?t_nDx{=5_28;d9-x4PrrXrI&Y4CkNtU(sJ`VQ=iNsEjh;GX| z#_OD6U-KZh%0H$2umwv`-gHfyP4WQx zqzy6Lq;K%&VDD{p>{|$|il$ido*2tNOFF4WXz_I*VJum&x(2|Q$~`xJ z$}!zn;MYtUnDl@*Ld7!4)F!YIc8alYgW(ioxigO4fszj)UP(;LYoFNe3t3KO^2SEB{5r*mh}T`ep1@yPcWpGZBXHD~W@IbII>rfSujjVEOeR0>_RiC5uuTHt*Cl zngHyJTixzmgE-JNi9k)3`#7rUa84LMKwPjz3q)s*6Bvlx^vqJxTI$(aQ#RSsa3YH27H?vI1DWd++J#=XF#_4;Hz%_vQU{`B zCx?sxbR}f`YCsa~%WMc&F*8Y2AadQoE(M~c^oqNj?`>8Z3@tSOsdQ$TL8Nl?YY`Y& z5zyH_YMJGtr-GB-OZ9#&9TNi;EeC)=Bntc{^rBulufGuu{_O6+)=vuadBcXOtf&&W za&(#IuKU2jSV?>NpYbxCHTO8t zGHI5l-5Qp1e@COUq`G&AZJ$W)I(3g2c9JQPBiz0bw@Tyqwib}eWmK1r1TsXy^Y@fR z^)i}JgUMdmcVkUx3NPO&fk4#p#XeGAkziI}oPbyms*llhJTv+ypindo%lUn(@g?8j zua=j+eX}j3xf%9i-x8h*{V(I?(j8Wu+`X8%%G`j6?c0*@A6#|}q2ip(=hrfsP>6*W z-EFtemAsP*1Z+|!Y}@2yVLDZR{V&^oIFLMtsbHS#edPCqF9VcOS&|VhL|Ri7i7+)) zE>s~BY81u$R+YUwl?K4}`$dk{~uA(VXuu?eZ- zzW5SDEuQ5=!9K|pj#D^xJGkl&!<`~n?n0zP1DJkCk6*q%&tN4)CXQ91(gQCEm%gUp zxZjtk9p1l4cH-ExD1A#VZM91FWk`6-L_LAogL3T}GhM`Ym?#9kBGX%JS0EMFemHuN zp0=NaxCfmMKebsAQ#*)lyN^%FG`Y^9g0f<}qE6i}1f$L(9T68g#T;Ek9}u)sAUf+;kl#!QhMfW)h!kopI&kD{1VE#}EPd+@mAr zmO}}#WmE_<380i}6+=ei`^$+Z%TdWU7+vsVL1lt7!oblX!(^4>$Zf8oaz4FM;80@U z!MZykF3u5GPU@E}G56@nDd6I7s|vx}y(29*?4h0Ys&E!(9Caxse6iAD@1GRIzDSK@ z3{`dEezR3Nb5(IcCqtLwVyXia?$Ss0>@ts=(#;s@{e4kwSVR>p3u|gv8W{H}Oji4h zU7G+wZ!`UW+%!m0wUU^!>~v>*g*JbLyIJ3{$d1eHmxK$*c5ocj(wlEqNGD(9!zoXQ z6tBeJIoQ!Rb3V$c#OvW@Z(DFQ=LUQe5yuG@9&SH?Z$$lci^6a~R_B=_RG9!5ioh1^ z4Ke`wPvbMV3FMNYP~o8}yL>4*wEi>$%@9S*IAyI)Etbl5Rrc^U!phBI+}gbZ?m}pH zttzV=)l!1yUe^m+p9PkS3_H)_qHrTMlN9 znITluFjQ2A!dHiS7pCWn?Qbe0d8a6!Qz$LN>pgpN-7oI>8S_fe0i#CQEGQog$wCq;> zKxIw`s=W5jK6W-#SYtFcp?IIyZvl8oxpvm`mAh}J9`x#TYd`s$a-Yc12>hB_;+%yl z0n-l$aX&eVma7vre(?b#DpmJ41WCUY@=wA+aE6ZDU5)6|8WoV2zq)psyub%?6CF+G zc-Sz(IcV#8-v};dzIr$b58--KVnV6Z49ziFbnX7Y_#(Hor?!ceqh zfuod)*gmS$_MRaqQax}Y=6L=gZeJcwMM+72QlOr(z>&mgztcelg={DFsD>dTso$JJ zI;Zo)iJ=^;*Eo}@MW#uOHn~cxD|={s2z}W=a_4%d`M;xiy2J?(sjC)$wCOYI4wz|B zK5Z~PvBhE}eHMOMZmQkZXm_NRq7_g*`PPoVKSz_|#W4>rKR;$)Ct$JIL+yKO@AfUS*h9%fPEijI@HIbcd^4S6?Mko%w(tW;octWiNugrAyoW1YRc^p+Y z+kMgJ#=A|6-!W|rk0!)MKY@Y;0)Ly}7^ms(_)9k+*xEY)nP@fEN=3y5GeB=*NLH z6iVOP?5M z7IeVmHuK{z$s-LOEr)}Y7!&E^j}r-pbYzjld3Ksq@h9@@g(GyWgthRsb>VEt8bY5U zlC8e-ZE{1z&9_#9+PBs3iiClqo-POuw6B`XPs~qes*V*yZ7m;8)|;H|$xE_kkhjNC zoQ~lGsXH;}+iD=KZ$#!5gCWOCPg~yN%cBS5-*sg2nSozkstn|^SlSQ%E2U6(KleJg zd;{gE5897D6IymBCdm5A!1g7T1>KRUGYm4Mo13hUV`MUnZZHfPoSmo?)xjgv^DsYG zoBCm1ST85Kx0+m@?HPoj^|G2x4Y}8cO-B22HWs$y36k?{ay^HuR8a5I7!LT|rnC6@ zGslLK++-(d1*WF~`auPnkMx=qgTEE|ti&DK`+3=NsP%W3JNbPk8|!{A*Lf1sjO>h1 zBRveksFoomA?^)gugngh@l9CXFkwgVJE<6Hax!g(Z!b(v-n4YL@r>%$B!jYVyO_b} z)*CY5ymSN!sBaTckRp>%1PS!;!n~c{ND%_yrx)Mo2^O-ei9#OwA_$j^J1vzth;?X2 z=*i6eryM67jS!BrK18`yaeI9s+p3N1Q`y}QOULP+@<{~V&+k~pTda0bTCKa5dr}zZjnG6b8iaWWuIhQ#!*xr zSJgo7+oP#=8>GyRR_cnOyL%%&0tQ@);O^cTe)FZ@x1=!eSzma zb{n@*wsa27M;tJgiLE(ysp0rG%>(&%bMeFV6z&rkkjtFC4xd= z_Mb)N?-sftT#0nav=p}(!Ez(nBGIP{~S1f7|pqth6+?m;5JIShR6WcBROGZQPumePZ=)Q6w)fXPNO(oXHHmtmEY^!4DZS9-j6P&f}mv}-XBp!n`86+%<8bG9<3t-I^j z_w!FQv8F!WBL_X-RG9*+PLr%3&c{~%2iVzBe_*^28tR!)>#izPYlFD(q2c;%j?@rS zKvG!?`{uYp%ugxv%zvYFT8jTp1YgP|I0Ki&TmH;ge{^YK&wi2_FVi zqf&bMTBz=**tTuGk%%*R6T$V-L5AEKe{TA`nSrVlQ4S2!;4Vrr)^=U2k0W5jsnk|V z^A$|%bU9aq4x9Ox?j{0F*0Y=QG76)zZfB|}O`Q;vP9j0^`>>&Ul+#5_e?sua9V zLW9{isHqXm7ZIp~xguCJ?R6gt6|ZbH`{ggfA*C5p{9H&P%kMSxcPa*;4>fYzDRRP1 zioe-Sm!xGf-qWH2_BxRtA${Lsd_e(=_n|%q5!KhcL0=`C?@VleP_4);;28g=1+e}GS_HB2Ejl}pgzr~#ZvV2&unu{92LrE*+nXOnA(tmcZqz46 zF)Be;mb7U)S%~qWt+t{9Fc_@tM!*4P3 zhf;8Z!pww)_AXN~xx9{0wP3f3p&>-$+&Q<^W%j(N<)coGmgvjlvp)8|Zh%lJCaj2x zdo`dxOiuN3=E#6>x2!HHw(9z8WnV$u#VCZ%*-?R~E<3d*(Ku8`W`>~O>x$@=OCQTy zq(5PUf9~}5aY3y2x3oTi-74k|XkA%rA*tzRT{JcGe}36_Lvv9ck(cS_TGZ>gR-RD$ zS$uTvILN#a*|};*RbsH78o*_(lQkA1)JvNXB#aGKA1i<5SfRlk6+^yLjOryZFgAb- zK0gKb5S6YwPap4uKNbx_JV6ccd22#YR)Mb<5MR0sCw_`y2G=aks08ipBFw zmpx??S!~qf(Y?VP&69ER@gpziZ$z^h4vF&pnQUpP z+m!LnFq|Xdgx<;ItCHu&yaF$nSZN{ONuw^ZviPp#T-R^p#X83N|`ah-?z(#9E63vp62Too&`^j)yrRF;7!0VxPX9K<`)88-jPlPGTy)0>H|YG1Cze>!ux4?|$$Ypq83zU^zK_@k6X$CN;YrQ~qd z<+~>b1`z@5TwE}?KZ1wDHtyQ&bY=9`#<{)eFk?-|49eTf-6t!*Yx90AW`> z#{-S^A|A@{3NsoSJ<}>!7V@+C_#`(H;#T#$1;djvg3bspfvryADB+G;@% znh76|t~T;GTvl_;Jh8~lf?Zfj|6}tnb^IidfGyqXK{u2+w*Yq)u2Ve5v1i7w!&gZy`4L0r=&&e~#~-zlu7`kU>wdASJr zb#(B7_xAgOT464(Cjvr=h?(&>i%$2H+iW%Bs}aMf|JaH6gR^coX}+C>DDiY1zM9TuzpzeDexJf2;#ev5e}xaXb+T9Mw4C?3 zz7JNC(ztol;Yc_*ym{wlX3#^+%B)CU6%{4uuTY#U={W^GtU9qp|K!pAH$E`z5^www7ZDa*1&QJ22u5#mCt_F&#=`=5JSm$5< zYEKq%{3t7TSj5jHv7?=i)ylrkwFYu^MDb2xG{(6V2Y}?{jDH6ZmRXPlx)Bjf+i5T? zhp&D=lO`>YA@j3WT1d{d`nosB#4Yh26W*`yqNX)iign3@)wq0Je)RRwl=&>#r*@^; zIp#qP9X`XyAYbX7;^(mSZ8S4-2#lidx{sz0uU`B9y9^gz2v<_Aws_NIi;oXBovCf+ zym+pW$@g3%56ryCzDeR@e+~{Y(xoOG9E<5#nVXu+9FZdI%#fJ0IUg;}Lh^Yf#-*hhFsnw;ZZg!xxHPzxpgO-04ulzCVG_x}ahhbGmxyW&*=cd! zQ39efz#BvEi&`*{^Z=IEU1!HqmSo$_TZhGT^;Mrz#q@-cD_suew^Na#sBT*X^=;Hk zhgbqE*!S_VX8yJ?I3IJeqOR*!gI=(rj!yUdfVv&TAZ^tq=+`36QA)c$=ebp_ewcNi zxA;RA>&QX*7kxG7pkrX zB+edLVwB`a5ZModKuanBzUI_z*ueZsuk<-ML3;g>m%jWK$YZxc-kXw-*jpgWMZx;7 zLFzm<&XiN6HDfI)q`lH5ynRzI{}14`OU&+aaoO5@$nI@H(GO_?p6&O~ zBK!yk3Q&`LT{R_lHY}R3FSaQj#;dQW>9)bljJO~Rfa;YZd(w3{^?&14tBZ-JF625p zwhjnl_$A~Y_tkaItnC8B-`wbtgn9{x$4vqv z!s}j7q06IKA6Oj0$Gcs@4Qf%gVp7PXWUss6I`?#nCp3gWTUqzR4!X{-OgXZw}E`Bm%w=F3k8-(=D<$XL>xgt{U=#sFOBKiX6d+ve9>b7IYhFc3)jR*Df z360+Oy|<)hT8dA6LdcnHF%~9~yU)Cw&9q5Xi~Lbv64sPdoUAbkg_<<5-B_#ecFDO}lNS80> zZN6g!v{kG7t<;)UH4Tw}f89}QG39qFgz|}5t9pX7G2U#9xOI++Mi^w=V*hTf&D%<^p!BGOKu<6jiIX90WF?;RwbYAnc(glwpUHm zkVSY^PM-cb!zeJHS!Ue6aGKMy?|!`jN;xd5fO&hH-ovR&$WHMa3CQwq`mqP~BG!O6 zzib)Xc(CwxwZA$WX}0mLQriK0n`l9On%P<&pWHc5KT)`(Z3)L62~9WFws)oz+#C>p zDh$j+pK|VO4(*nj%CWhpI;$RQKv9ee;7>Zru96m&qF111uv3OnKbm9CQ(Bp2Jbu(J zn%Czqz^C~&vh~OZ@7Ky%(AW_YKqjB6^5%x6sY4n%gn0Y+^%D#APn5$x7pJ@Hp}%>S zeCB=ncZHsfPwLJTRW|`)<0EMoVJ8T%?Fv8cO@J|tL}qYEqzoL_8!7p8?a^)~>2q>K zRwY+5XtSPg&nhh&K|fWclZ-xiuiD?;zoNSwP!B&j_qT4_Y~$h*lwyX|JB1#Gwrkb6 zzI1aBI&3nGQ?x1vN~YMV%xWOu4IC@sIM{A!p+{RAtnH`q!eUBq`nw+A>$>LVIol}w zLxI(L>I1@?`l?@2&VH&$JGNB|Fd`TG52X&Y$*EqSb`vIg)Fw;}LPj9OxxeE08Lrdw!GDsA51$EB%ZKOnkl=*GdEpbr<>>AQ=7xb5ET;20!A` zj|d4Naku$#qz#UlYD*G}9S=|D;g8ru$>qY*K?LQZ^lPkEJCCIkxg96v3J%NhRLU!L zr8wYGAj$`9JptcFqv<_4`4-7=mQH-*hRA~|wvNijRLvj6CZwN%3;&tpHT{t;r&jho z7`&$5hxB2o`uVH%?T>e%{cI&HqCdMUg}55;ktTBOOCa)g3O!HFGqnuhL;l6# znM20ep@qJ2^59Sxh_KKOGJ@$QZuiQy=!Qs?CF56p3ET5e_^6(QX%2oNY=+b0e z+`xFvHsQ#eYW_6}#lmwPteS#J)xU2W~n|C`*e z#-5;A^FDKj!Rlv8rBlL@8%MQ?*&L||0b{{S#B6s9Z%3b_K@;8K!=AkGPLX|r(F@I| zi_Q4shqqUY$92{Wvx>wGWyp54)70loyXzw0xsa-n8T2B&leJ`)53Ri2W#f0C*OBk> zB*RJjgfRvrJymsyqAUDTb{dDQN*ITinCr#XJ0#Ks3pYcr-G+)@ei6g5?>F#zV=k;F zvMFnV)*!Pc6mC)ohs3-A_S*~WIWI>ngMU#~g)*#T0J3{%QRN*}eMsBOl@JEOw1pn+ z5k8jW{kW0-iw5dR7$<+G9m0xh@IsbxS(6Xzzi=_%2E}CP9slbv?n&q8pz0)&b`&b~9T@rh+u(YI23ozhKlCm|4t! z3M?-Q#enA<;rlaS2M%EY)seNmnGs$$n8YRPi0SB42j3Cy^%P{{iC_l8ZSo&LzC(I0 zv~N({sqyw#1BJgn;m?7;G=^(ZSQ*ZxBBQfZ?Cj#yUV}5*ZcR!Wt`FM|XKG5F+&bdW zd0YcIuB5cFctA(CvAU*Ym4mW}X705BVEXyn)r|sjsDa1*(VYU@)bSBq0F95i;bI#M zhe>=)i-kazP5n09O*cw2D5E3D2$GP_&4QnKdk@`V#JppK%N<+cqwH-iZ!$*pBQgoEt7yZnR z6OIOYT^UfRA|_A9J@(E^1%FQvDjDvaJX-MrXJ=nKBfWvHDgybBpYI%aAg|5a8>R(BH$@<4I*t0hgk;rS&#U;m)#_CimUk^cjn&Zw<$bzK@o z+WAj(dWi13TB5g6fwlj3+ayfl)D2t>v z4XDPzxnkijB|-gNiQKg@auj#PY;oen{LwaMY4*Xf?bxjT;Dzox@2*l>i_fF!D*x~V z3!z}Rc(9w73pDgZi_J$Ru+05%pUo~_@OqDryN|kF?S71=KX-{KBq9M57X5-ev8}Dj zQ^{Z0#`*%JA@W?5soTpEIU2aXPo2Gt>np#=hy=ew2i5giY|ED4vGcmzLa5gHHg!7x z@oEUf&uuRK(6c^BuZT(kt734_aw(q^c zBeYd6TXN*a`g6Ew6K+-qLg;T+UY!%F@0Oj)E3|qshl1B{e}{aDZ&BcNe^$7AV~i|c z*_L*_<5HsWB(@TB*<%0?>VXU?)xCPBX9b;NYMd$Wm368NHWSsvS(-CYPslBwSu@WQ z2eRrDbz&xYXF87V-F4DFj0c@YF2 zb4=P0Whdi3uUojbD?QdIE2@#~RH9cz8yt5}I+h5Lh^~*H0&~2vw0n{1e&9Q#gyVx^r*wHw7z@uhlS|AOk&~qE(ZAB{snL9 zcmglu-Y@nS4to=ftDkNy%&y%Y1!Qir_`_P^eC*ep#qMhvmL|>=_&v5bt*~SBu7Oq8 zyu{@`o5{`%qC-!%RH2$w}5( zBeEz`9`u>R9FBm~>q9eiljrnNVdzl_@-iwacKY{8L zT5i}|KEJuUFOtSE$$NjrKH5Th;MWj+-3(lg`Yf!a)e^Fta(hi1aVSqhlJ~_y5DDaN z1S!D3_F`ikNF9Lu8iJDMt#=gwS!W@S6FwQ>q6ZDQ#~Yh)_R2JTe*8FD0~{e<*R;k8 zNhs_r)>UWjISrZIFlLI$dPrV;b~VS-h3f(T9f`hk5x}r3NhYY@oGk(wSnhxRc8uF~ zmW>SU)Z=%^*FzZPW7Vm#EBS35yNk*=!0_K@OqfGl`xpzULjZ%Q$oT=dk64~8WUbGIh0C2RWPC;XkXqSS=c3Fk5?bxW*x&l< zP8v(3e6obkgv)I0x}_>DeS1y2`ri=uMTAf~Y0t)LdNhvW>$=RT^4n{=Q5QZbL*_qx z`9Fc$`u{5Z{2!=7|M`OdKOp`u^3nfhjsLqLyz$%U=k=)0^xJ;}+5f=jmC;bE@kfE7 zuK(!!SwRVj{4Xs2Pc!585sf-Z0R4xqm9+O!;(sbw{cp6a|4$6DY8@hmbe_L8ZdW>D z{c|%XKJNC;1AV}QcahfnU(=`mu_=9I2=sP_j;FnY*E|Qr752~w-$yOi zEn{WQ5fDgoFiN4OU|PS1WuA_oE%Nc5k2@cM?OpEHZY@pDKVg49l%V{~o&QJBZF%g> z_<8g^`sRyuHXj%!}9*3G_-G(r+Yf_69}&>#?JSE5MjGfYnK zPO<4(2St<)OZEUPIO5-P0iKfY75H`IOU1c0{Jwtb)Hv8+BNiC(!mwS(RJ?T!XJ-3ARcZPA+L@p%+yfY;CyAEG!IQFI z6r2bBi3_;Di>~Sx?N|yU#HGddA?$TC!&E@`kzBi9c6CzvvrYP)lpqor&(i4U`DZuL z<7#~JPc&R7I?kugHP%Xe$HP!CQI5ias`TM6p|CX3s6->dXT>KPfWgj0*Qg_S7D~5g zu@%j~Ip3gg{cI!Rz9Uqq3YR4?2Ooq)qv;>~F)d7-x$3@Gu{1YbN0BeCypun%eo|{z z`oX}B;P*A1Yevu~43RSyxft@uL!4VwJ0@g2YQj#{>5v{BOBqKYym-aW4oT zXo|iV2q+$6E?K+>L0u-IY)X7;@r+k)nuK_GX^M^$OKoZl5cvhe1ha`-2nVG+_jEbJ zLYm|DErK4!DD+~+)Vf8zhkzs@W`3c~cT0awEpU`)gY4Hq-3A&VCA%4pBjB)!UqFaU zr`Va`{0;1!A6G3mSN`*i7cA-6n$QmwsS`%)$%Ta{)#STFMIS_#)GKoEP)yR|)}DJ{ zO5}-uN?h7{Fss%awO5V9H{Vp7PU%d1s7wghT0=)=|I+n2z%co!>hcXf0h0!T<;&1! zIuChNwH^L&{wBLX4~@NX*{e_>-9eK)7zh>_$m@Rzk;` zUEqwx?v;od*+!SfOr&`)3Q}v@u_2z0VMAa&sfuZej7@@vCdDw)(A+N|K(a6F8?nYtp%o6xEBK)2 z^atR3m!@*RzwV47Ps8$wpY7HghrAtVd>XDYhwjx3J|Uh<&J6pGv%nmcox zPKJt&VBvQikukJFt>duYh}(YC%YHbeTPD}Bif@feffd>*zdxbr&s2S0$v{U(#~Cl_ zsX&%xN4J>FMxj}-BECYh9Mv^6QOjHMNVm0aB2CGG6GW-GN+W8ktz8}e&S&z%9CwY8 zHe5HHAj(@avC6A0O3~l~6BisX$=EHJUsCc?4zi7D%?Z+NaJ6fcQUV{r2hNaIOCMQ% z{{fI|`sJ^&&SunaeJ!v4aih%%0zu=CRQfXETQ5rAaB+)7_V1Mxl<)5K$pw)z%dd$w+wu)I z!gsZBLH!2CHy09Ow;XYVpuVqVO&L02QiODxO5)Z|&uu>*uBSBU)7|Vbd!|#*=-czR zoZ-z(FBAcbgQY6$mIp%65+9p(^XosGc16B;T?rhV1^=f~T3YRu(-5vs6wd$VL zUDQF`_3%q-xSO#o;AO2rd-ya49d1m>sZ9Zxg>xAI7y+<~xLc%6ll(s3gFE>KB>f~# zPfeF@@n%ZVs@;r{@VUPk=U~!HtGCg}YV6jZdcMW*lwhdpPoj5;@^0eQ9OAr=1-k1g zLn582F4M?&6q&ump`4#)OP=MEpRovpl`TJ!!3ABYXY}>YN+qP}nwr$(Co!p%Jopb9}tv@fSy4Ot4O!xEjbaSX?vqg2suWWe!r81R*Zu5mykiZ}-2tLK1!~-7lvgTW-s2wbZ~Uf82ydFV~&vmY)HU zbHKQL7~@Kc(Qi6>L#g3oPn5}4g!w5W0=;XfF_xsh{CjKHR4FMrAr1<3I64xGJXORA zRyE}RE#HhVMJB{-xjMtkYG(r;5&@}zL8vn%XKo-}9Wd^jJc&;)DYlYFA42D3P9=1c+^__B zD!}^F**vbL6rhN-uBL;+%X}s#-4y#L*HyKyG(Nu7wiwz{oFhDCX~Ht`FMuM(^IzGx zP|WN_8rMAeo{iyf0-p6$y5UD=1OhSDc!O5w`VbKlmfg*ZzfFdPrg!U_m1MRDi>G4u z6ss*Ob>5vp2?D$@&<2j~#2e{3rswej=!Ry~1}zE5ZzCfF0sgj~^MWC<*tZI;Q({fi zld(`hB;Z6*ad!jMpNh+~NQ$hf_Ej1TXXM4r!%6#kZq^1dD2mI(f(}|8yFo46WB1fi ztWhMwP!Po0u<5dpjKxFp_u9Z5Ul1BBY_(4@c>I4HgwcQ^p)2nILS_7AZ67;?EmVt@n0({ycuE1>+p{*iyxg zVr2|(32=B-x~j2OBqC?|m_F_PLF1zNKZ`Q4uB9_j*SO_>avzxc*+r1k)cdk;MPktVD{+ z*Cl+9#SzdgNjQd z8qp7JDG}XO>Z~N-B$SZ~2-6E*&10`1!(H8)QkLVo;w2SJ1!bY*TZ)6J*Mz67s&>6B zH8mFOlC0Mz$pxgU2x&VzDBZ3X)G3gC)&I47IE>J7F~DVGkA)6FQ(fjiVU(8d1;tR3 zpU$Gksdlc7l*+jqicQ4w=>=Xl?(yckD3k3?S($ynU}{L`CJg}Zr53)c-D%<9+(6~# z>m5FFYi4XQnfD@D5Gh;d3i{1f0@1FtQ%ev-!{=GaP%HJM)Z#A65qYkxciE47DRH#IVpXSgrM*y%~yL3cYVh=^gx;800)qAXXxLKazl0qR?{ zgHl__OiSdb4&JsphEo;i6G@-XM?gUxs9F}sfIQhnh_=q4F7(uJ|3R?5v6k55;4)}; zV>CxJ>NuaMA~xlAL|%DVr1r$b1?5~@Cw-hZQ4p5Y8;?E~YRmEPQYTvO`tD&#uOU^a z!QoZf>#l{`R~>L=^wN6CI(U`gRck23P;PV>cy6-h((zhbd#3$HJ~MEoLOMGG5WhSc zh{eeBbGhz;Bpfp>(QlX-m%%vOJu)0WRozT(glUn+tioTi=5rkGA;GHoA8$9Xi(EUo z%GudGQ=Eu2UA;t86oryyXRZx-?s=<_73dy?WlYSf4`k_TH|6Py!UaGn?->9mMhpe< zOs{GSD7=MPc4@s=d35JI*V+_mPF_JM8;7#4HqSw*qMooNxxWhohC;~gDG@5BAO$3{ zs}c&jp{}*g>^&4J_g%GPEGSe5tbb0btfiqgm)N#KR{cn1Y?&!alF^h75LBg_xmg4A z1TOBWaKu6#2)7%7<6;9E+u?9yZ6Er?kkD6B-5+qOS=gVCg|g+9)hQAX9s27-9c)d% zgq}T8Z*B^a)00N|^0r`J(fiq)numCv)cAgV&^jJTk3bEUI4dN^QH_UbPF;ZQ=}{GuR#S;VL+WXp)=-%-cvLMR>SrimfI|+^;2vxs*w_a3?P3c-RW=FQr zPG27t!S^3anUKAuWJEQVb53G3b(F(551O|?P!8BFP} z9{#dt)!?wt_?%UH$5z3AzR83^F*Mw8&W|=yx#%&BS`{d5N*TFy0L{%FVF+VCnC}=q zz84EsbSxyez2jw*;9@J@ckgu12yt@!G#pSy61&^C{BM1j=}4Dd<6*D#L+?9M&U%_O zZJ%TTp>c82>c}zURx{fl(IKLsJCbmbkGadoQ%9m9OgZL+0Pi3_xb=05JpX^|BAPLN zt^cqucv)Qisbfvf+ZWqfhWI$ zijJ05ABA^dzSpeMMvWdmA*H3?a+aV9)lM>brGrwrHlhk}YX2DAOVfZKp0x)X3h<(| z@fy!`NE%S68?hypb+3q)@;h;)y;-3{zP#E|!f{Y!g^;AZm^-$2 zK~P8)kP{^&$3AySi3y~d{kR$JG=`LgrbvM$M5G52Jboqlslxg`6U=~KOOg+DL%6=Vw$&YqbNIgn1CZHJL(aiJK7$VMr zfQ#7}?gxq{BP-R3Y-;zz&n}F>_~T(c84|=3z8>JlqitD-2U%%gw}IY+#9NnLk~LR&DLv^?(37_@{{~S*;f@Zn1CiGXycPjm+lp0V3!nH}Cb5T@6c!BD_mi zK`*U|%3UPFg*A5T4K^nmGNgG4gjsHZ zC+05;x#wfybGsbA`-}vdE9%jpl$ff@^GKb%^Kn_mf(ZGy zH$FQ`Gi*=B4KcBCPr*bSh&Ho*B72f7CO%)VE#C zkebFix;W(IdOO0t_@N z>k5*O45%a{V`GV+*AnL2Xq$|Ztg*qvP~!MZ*rJBcQ2vmL5^!>%5+-;?zE#*_W{(=~B_? zSre069c!nD`~9O2pf5QrEz=D3N&y@7+|!lsWXsmg3v#_cweM;Ttq2cF0(JlLHz2-U zya^xMSQK*O>4CGv&rv4kbwT}o2v^gZeekWCg69>A`D+?q(B{}UUhW=t*e#ctjPJr$ zRalpst*Jsr8Uhd>O|P&3zO|n#Imf8WOLnK_9E;R^ysWU!6Kn`Qx(Bc6Qa0GB3EGiG z0TSVtNCe5IW~`54{`&F{_37hma_e^R*gB*m0%o~xNc(KKI6Y&f4?=JF=`lD}RQYHHV_Oag8?nrCZBn?} zea3+BHiN{);ljGAc2Ken-%DsFhKnRV5#hHu4DgJD1oIyZ2lW3ioWdmp+?6G(%K6%k zWLRUBy1UrOZqx0Gl`)kaC3r7ysxK-8`_MEy#Hq-O&!J~4i<}4>V`T&^reCiImY8DK!a}^&$n4d;VonH}t8l)izWq<;KL16~e*xiVZ ztZ(kh$Q)nTElOK3$tR$r=($!ejVlx7)Y;Nw%4Or!M_;Fk)syu4mNdUveCr%spePke zu=%Fx_u!!pBUMa}1&&Kmj2bXi$HD z6V_M-&}Qq=%sQ_A9Q|t2;HOa>2wwo~keOs=a^3ZM?iZPSQC>jIt~!#fYsU5PB4{fo zt}rW!YHa)pAiD(cCZsLDuz|AuIRzu|QOr@kGPbg#gy_NtA-#1ztCmh`LBi%ca z-sbVz7NJs#Ll(6*nu|pk&@L$%dsT5xe!d4ya!tJ_iwFqC$2wf*i=lYy8o-L>O+le$ zxovG=lxM@^Pz@VhQW>1G?L=>{N<{jLvS8#5R4UoAfYfq$Ueegr*Y)-lJ3EwgB{g-v zS4Zp#5VEz&fSJXq^E>W3ftFTV8VdN;RK;Oi8ZNUKjUpDHC0pWc&JN{kgvTuLAk~|g z5d8;)V(H@zl;ghxEvvFNd`MscJ0@xghgg93$0vi2N;q z0WZ+W_Y-Z1!~)ZIc`vJQYG~@^)9&-*8d5sHa6M2+I{SU0>_SpO`O*r_PWb2rfmF|{8`EEUy9|~xLep^bm zGLroPrc*`W5=!5x<2>DzgicS;B2c&?)15g4>`H^gbE9vTAv*GCu{2=6y6X3q7KJ}X zPo7^EzT06W@q~_n=}f7OyAB^^rM7i6Ey2LR-2pIgzkbzg6_L_aU!e3}DG9_MK2|KE zeQD{FJa8!oW2=h@H{Iw4Czx`)Pi31;F5bkQesGz2annEN+I06s!E{D~3b*`9om4XpVY@+i zVEy>UqvFSV3B=1b4)U5OBiAWlF)(_Mw_x)b8fD=HenK3AxBPH_`QU!76)q5lsf_;9 z$lbLgX;A6BMe%;ZuRC1%_t#Uvu-H^tlHow-Hl@))J9ZD3uIp5sPg zLHhlZG}V7Reg9c$-47gVFa4P~>EK_r!SPjBdMk4&!f__6&wtc2yD@LpV{#TssXehuixTI6^?JE~#s#~jvT6qW?t>?gjMLUEL zR`=sy$on@}8O|3TH|`uxZvQy_p%eiLCx(kOwNHSpfNkf+lNr|w82s=Gi^yBN5 zwI+NXQE2aw9{j4(s7$lr^c21QYIUwJXvV*6O6&CgjGy#LXmn`L+hO5<@31R?u+UPD zoFzx9^w`iX$^RWXEKV zl@f&OGK1$4i#PWKpq6d^U;MrG=<&4JN(t7Dr}}6rNJ;U{sqpymAX&ma!CIDFqc$?c zr+Lru@9ouh+(mctY~kZk9Hs{%=@luLuY5~LOAd`8Us%p*Cf0RNJt}zmaZj81>*r9_ zB;_MQ{B{Or4aR7#E%=b~pu&u`o=5>`OG`S(^^U)#=>D;+MJD*CgT818VH*U?!zzc;p{4_b&*-dQ2ipz{$DJs<{=1>W$&;7p3R$J+ z2?zHraolOG!V!cn4qYq~%on<;+4z8##PaQCr98zEoiHqO0o=Ngwaa7x>vRuY^^*-D zNy(hYn05FiMZgQ{seISrS8X~Aii*NX0(h9z;r)dO9eMhfW(r{QwAPRhs!GF1UT#dN z@jdXs+k!45L+(Gt+qn*lx9(9HS7VTXP2g2h$)j#Lb+E*Tcft$RgJ*eMp4gS2bRkIx zhOLTZyC(udg@R1W)q`B&oIz-oW7~M8KmLhSS`!UBS9$U<29tD*8O=fWFCUC1BY+wDE&tCAY(ZunyXvahr7} zzsYsg9tK(^B6)@t5fRs%5f_DAoFA?@j1LNJ^c`lqvbHMJeHx^9JybzPxKz7CHUw@* zsvsur=rL$S$IT&Tkd7znx>mBgIya)3bJ=|Yw*UwUbi zk+#oB8(_NT7o(t?YPYPGn{x+kzn0wLSgN9#SrID zQxa;m=%8wI7HW?j{V}aV8(nwYS`DpkUcC!IK?SGjjDmRqCzF5V?H8;SSn|okwSF4< zOXf(Ka&6MGd#4PbKnXY!zT)J8gh;f&tA=npN@gu*fDW z)AK@+M%?k?0P`VjN9g;1dw!UtBt9E_ne;JjC5Z(;dzgn7AVUDD(E_dDA11+(AYHI^ zwT7XQ*}E<=Mo~0<1vXL<{efY2e=^G*)i66%l7oEaQDI7x=!k*ly3G0P>d{pzcf(fP(_|3W~&R_(K55lEGxm~RCGpe^nvE^VX6?qpl6^6e3wo8u9Xvh6CRJ;pC3PhfK~B>Dv;)(nmIZ^6vRv0ni_ktb)C?A9A483c%C(MGYddCNikjXKm+ zaVCOJNDwL#=zhys8#gB~YhY|p*Otk)7W#(srA0#9yixI9hs#eIfZ8jUPD?N4(FZyVzq(3h*|&9YnojYUu;F^D3H6+Lq30U>7=n-8=gN1qWp16JXJ!-&6u=%d+JUEfbgKOKY-gqajo?Y~eB|&Q zF2^?M7HePDf$QT^Z>Qy;aiOibmY3VG5%luhHI2BDkTRzM^6Y|_Z7c+$Qn$FVxHQe| zbk6A09H#&w(W_AYh;K+6MdVo-1_{ZOw!nw{xpep!8nMK4csI1pZtjIg?rrHu^!(zF zz(yYrr2!rkjq#6Nvej8p!KSK&iaZ%gP0tGUo_9VY6#Pv8giO)8B`)<(#jZf0cD zTPJ}u#`slJM%vRdmbT?=g3~yhH4jf*@*1MCgT%LJ>J6PE{<*U0MLw{_!pd?xEOW$lcdm4$VTeSv+CWCB!&c==z-Pt zJXj3@-|^3*&HCaa#voz+JBnS$SNcG7jg`RJAaw96+cc*fPypA9x8o|OOAO}p5aHBy zA#LR3pBD`r9c*490ZA%8VD(~+1nGZXICH4p>V0WL92{&1&CFZO;-S$ff$-cZhP=~bt4Ggbb5Dnw{O;+4J1uVBNW;9 zKj-{;kg*#vQeI{9WrL8_#B!Azl)^C=+{D!fyDb8O?9RWYJrLJkDHtl0H$d{amzDG4 zUQN9q*VXc~u`vGj`;MqZQ!75YRyORO0km5nE<4%E1@&P7hE}{b?kGay?j>U9#y`Z{ z27s6tAW+f4 z8kwebP_tA3MApzFzZma)RRUKdE#M2_+d;sQ{e>ZP-Lm}mOAV*fg+ZV~g=4}uFb5GZ zr5j;x*HmlEo2?SV@T0>7JU=-pb3TQUk#IYfQyMtH?D-iE1|;4*t(l+rWCOUxTas$? zj+UDFI2=&f(dfyON@3(6s0BobW$SbiB`7}0N?om-sCHySB$7hUab@PK<(1czWV;Tl ztMVOsdL}r*+EqXM7`m5W53e8e>45!T|3HYt>Vx#HQ+RJ(_agsQTh5Imj%076Zk?ZU zDtrIq+JsLuavmpFwxc@v>*xS7%SE1}?yd-Vl!BMDIwRG!UbcYH5#@sr#mXxV!ghR- zd4u*)Rpo-}G5>E1%=^z4h!oUc6r>1)-k(|vv?eX^Q$}jHCt~5Yn=R$)h!2&<8qNc2 ziNT;ZhTfl5WZ`-dX5+?|OK2qPbInOvzBN>YZ=$br{9A(B!Y7HY@cBT8#RP#A+tNM# zB^@W~`Q+{M%!wBNEN#>I>3apbHX5xrC}YL`ra(wA@KkIv6t7Jr4lzv|9o|*N0zI=F zKgss64WnM+5a*b0CJ+Xz9~$WRZoXs)sudr4OnJ;?r+QD!18&Sz@3t^cQX(DzIaYLn zsrI!kThHJI)79;!EYi?cOhn zsdUN)A029RPqN1vEqlhk?Z8HwGd_E@k?7mj3<4nA>TR+F_2p^fW0EQ$#9n3qWZU}< zRNId1bf6!N$r>yGP>LU=C95GAH78?&sv*1eRJL;K?{9rD zf>FyX>jHzpH^Q~=X?5!#4H|egbSUwZGGN{!^D}##*Szf9ornpA>8+O=L4&KIof{0^ zaqjr?u$zIZg)7dFdCTslAVzCJD*C2tjU*^r+YG|G)HeD&9Sx@ zNHpBOL7=c11=L(4iN!0W-dXHHKazEy+yZ5aEId8zF~k8R4?YJ|`mZRy=laJBJ+&8; z4sR2=0x5*wQx>leFDTznE!|pFjg(ll?}HLtv^_xv>N&39W%f(}umFFU)x0k{Y|ct1X#ux=(V5@=yo)G+=cVWUnOH3qJ`Md+w z+w~J9$LGh(XwQu{C$`rOpQc@W+8OEX&C^stg6a*diD^F0&9%OFRn-0@(;Led$WGV4 zEPpHLz^7;u;REBNaSHx=hET*l$p0F%)iu1o}RZrkbp7u|CrDu_k{>4Vk(0vmNAzb>X-C^=C` z>Mve#7)DMc5}3+=zw!Ic2q^uZUnu2Q&plHlu=-OiOc}2|azB}r_q8kETSM#wlfZ{rYU6s?-Koi?i%ia^@PIVRuf$bFC_N1M z2Ix#52_jgjImaH5`10EeOsCB!W5PBixHPlFb|2yUT_h`w0LIgkBc4PDk?u5FR6$0r z`&|3uQ2T4k!>1R`N%c!TfjIw>(!3i{M3(QV@tlyBi5y{6#`=o4^$jynbuQTN%-#VY zcZPZeqwO7uG;OTu=ox;oOZ|jkCFsrf$cQA3&&0)YxO{wz)Ub=2diw=3sSVTa+#H*1 ztK9}AZDpHV1;Y>rZOOfk2qTyuv<1APoSDNAT1YZgt;uXIYk!JSuj#{|dz$>1>W7yv z#jjUJ9j-4*w>D;0AP|BN6TA5-g|zRIMQIy9l{-tV0hgFbgSY;z#ecr!%t3xB*?o~6 z!EtEw4M^oqLsaiGRNmjlphZXAhofi=(`W;YpfU!w=iMEWfq7B{$6wp$M zhRd@Raa24zz&QD$71YFz!)`2*w;@sNnfg86S z_UM!8rtj*A0B1MszZPycb4#{M=pQ}{VR)a?^$5{-$=7z~B5o=VFtEr$Z?H|6gGkj7eKRv>pY-1=y07?BeR-EqvgK7!`t*^$=!W}U+J9f4cP_#!n zq_?-V&rTtOy*$76Sm@06N3GaL9QFb=C*{T)oZ(y<@ovjCrY;tqdavT1 z{z8D%r)^YXYVz+lZHe1JZcfdPjiG}L&;f}!Yxl*c{l@@#Z}rSEgHLe}=#En9>x~7c zrvpy2?gSY#kCMeQ{lz-9<+>XvEayC^!h_kHz0YCTLXWYA*GA~SpJ`8TuR`A_iSJ$> zlN{-D?{)WbD@aGU&c^Ga&d8}7uc2nQpij3xsYscd>+zS`v+ESs3u@4?l&l%0 zwKva~Q%>y;QIX4YbVCe)rZ{L=uQ78I8ydIwL<4SDKnSHApNW+njL|eZiULsexwYro z^CsX<2Y0|`w-?*J(JvI%T}s0%85)KgjKHRf3k|#2k5?6{=BIc6o)c*M+-6Se0_9krtNisu>idScv0Ax>jRN8 zBxj5e5y_bA3-O0qHkJrHi#)Kq0L1nnk}2K^u5xvp2WM+^TDK$XBL3}TfjWynDgWl! z{zQhac-x6&<@vgO(K;vlfxzPJMnJ->)fK}9CLS;-D(9nfr0@{Z)Y>P>#8jhn{qROV!K|qG2Z|JES{i+=*+u{3vg% zA+*svLT(=!;XmyPQ35D?r=xI`Det+PRa8HJDJ#QoM-!r!96-_(rutoCTt?Ktt%M2@ ziaVoUKh6i3*nJDA*BsO$v|)`B`m1&!(XGx_5tP3H`SYu~_FGMc4-}(Ise}PYdMf?X z?(|AeUL3AD)Fyk;$JK#};N3xFbdDCI)WqSOljm(y%7;VbDZr!g_6#H81l+3ZOzc{Z z34j2J`@ZWmW`?-2G$Ew1=QO*>io)sQJ+h~(%rB21jWv#}qd8t$t8c9ROya=ezWOv7 zGTFV$M}txBrwi<0lQZ<}jx2^c(%NFZzaK_{dE=4P!d*68cdNneYC-n0gV7KJ4+sd6 z{TZ9{&;2*;tjqd?vE_>z`2-dBZgYo4cOzjUaBzQSZB4+F%0x}k)T zUY{%*_x{y(%6-|2EoU;1VOz)KVGq!M#Az8YI+Zin5jlJ&Cu97wKc&2u|3P0thxN5K-*xl2SF~ zL7_sw_Xi&gcvz|!qU)Le>9JlmLVahA@V-s1)b4W$%^`{sv1(%+hxUv8QI9YkKV&>r z!wT56fcqs{wU6PSlR(h2)y}YypALT+`RV<4?hxY_KdqooLy6;HEQ1-!`hs)zU+3Yp zw8*1GjNaau2VKk`9}${}^Q4Fjj3&h&;;&2Vt7%s_#A!&#y$|Cf(Zp>@2fv$_F&E_* zghY>H-NU(UeFwH(RsCrXjB*EHRrH2-^l|duR8g7IM6MkQ$Q5Z9P7TCp>J$KiaYNu= zS568Fh=}a+lLK}xSZ^fp90S)w7uWFUTj?CLedx?gg1S#) zrR5nrh2@?8H8Id+VK#Y*PVM|wg-Bj*eJ>O2wH7Vmf4(k274118f?tz5V-3t&65uM* zM&n{~rlE)aJ&y)`Pj0WCMpPfIp^(AG1Xfx@^UU0eydLvJG@VpIqUgh44u2lHU*kP{ zQmk;R@;-|jL@#M>ynv~`3gdGj;*9`KIAaC$1OKw*46LsFyZ7q$e;7HctiTu>Y^_#D z1N_9{{in+$j)zVc2w)D7BLb`gzVqY6jod|IzoXR!W2155La29*+_6$(FAw51Pt=^e zVOOEMY7!u+w{jV^2#X;hZSJD8h?utKR+=1Wq(~yR&b&H~UHVJygbDxd%8K9W-kRq| zmpKUFS9+bi@rH&`k!d@~r;zmW?nN3M@k~}gKCq2rw9_B=5 zS(Me%XKS>~ynFSU+pl$r1Sx`&JKUR(Bi~SszWS8=WhO1P1#>hX= z&`3N~Z>RrokH6@<4BLM!aOLplw_l`w-KlqPANE$Y#5$bQS+jAqlXsP;bmA&M4DXwt zdotkHg=ui-cxH}ddZKzKB-t&9*ngGEI$k~KHXz0n z5*Ew+bJ5-jaa^0&cR6|B>xS*%=xrzU-o;cSaNab<;h@ZSn?b0j!nbfDf*IGf)P%>J z=p^%E{|2b;pW=L$MrK>d?8jwrWJ0k%d4p}P@2f7DSrv4gu!8DvAy~-Y&>}0(`E6T4 z7mYsRixa6TxV7VyD_>{M?BmsyC_mIcwjgZxK)yF6gMhT$$&)d||H0T=8Czt8v$>9R z?Ws!^a7Entw5P0`+-jRg>LmM*MSDI(Qei=9Sm=xNZ&}7Sz0@0aj zH+!E-yNjmCOfY=DH${e~@HDdF^<(y+po|c#A8;PC^;{l1r~7!Mqasemrzw^T3&raq zPZ7`%xkM9+ArxJnB_zLHuPGubu{X2gRWaF9$tv~ z-AtL@WfjgnCQ-gSdaAP%>&w)v%hz8FfV4Qmr_&Snx3>x5=3>*=TT&jtsNe(<)4Q4$ zhZ9i1cTL%8{u`xRGsF4d^tQWeuxpH(H6KFG zU6bWafUg;rg$_`^7+;kkL|HqPkGF3l%m!kvpUy$sNT<|*#L6uxUSJ~XFra;P-0Q$c z2|W4f0)kT6j_SV|^Oy$LG~+62YFpOA3;G$9RYb?XOFY zrLJEJ#x`I_iL@niH5p7;w2SqBoRR#V76ZRxYN0Rnwl3Aj;A0YRQME1c^&O!aSl zt8v01MmXSmS^3x=?$yl2PU<3oy#D6zS5cZ6`H2so>5cY&FVD8vROOPWDgA)h|8V_@w z*p(w&7BwxN0TLmQX7yttY81z2E}21$^+lj@rMC#PeDye3(75uV;&P8Ix2 zgYecR-A*oOgrRK*tk_dPPkMSFS9nAnp7D^vDQC?n(AF3$pA*r9rj+V5gvnf%alQ%u z8>^4m0+x4aDOldL$cC%I?QuL(>S{^aA=7PHffsWTUl%2M0{Y)mb8-4iV52%-SwX7aX)KBdTz39uIgndfm zoA;ND#%4WC{^t1YWaC>=30wC9g9S3;K-D${P=Tf6)I$p?rlxwoTc+ad2V9gL+Q2$$ zKW6}_)6*|&$_~YNN3RzOPSFfXG&Lr~snj2k+k1AHKP&8{hPfHqDaFXXIGEnK)9=z1 z{RW3Nr)#a(E5(ic8_!Qgdh2CBt?yIV_-3B|%Fzn;{05-rJ1?<^%H|!qNly6Mn>N@7 z%b|||7g~w>LiUs{q{&ICP?nJd9n4>S!B+s#CkasqIF>G`1=EillRiXDwkH2Qi)mG{ z-Gje)k=?eDNs)i5%EIFJunRGZ1tG^&p`)#0gWV!Z)KVj{W%3L03DW!K` zfy%Ji=5O-Tgt)b6(e`>-9O50mA|hKLP{OtBo$&>>Tz6^Hu$q4{fy`oZ-I7pdIb)!u zM>Q}L#gmH{sQznBH#!k6qivZE$}UB5ww#E7k%)2UhTr|>^(0VMUgAK!xrwMZ-^nT& zKW8swhQHKNL4R;e_d#b2fEY>s4jvAcUVa;nA1|^E*CX|f7y!cYZ|Q@p`oE3kF;5xh zVPiOgnyJb7;1_BgLsM>bSIdc~G+bK{u^stH536CBN$ZP%I1KnnqbK8Q=#oSyErX!# z69Ktd%o?6hTs!VU_O!eQZ(zG+jsba^b z_NA?9yctUnE*uEN{vRX9IY@#bHpcFYyz0;Vd85#WE0dy%|1T%ks+s^zv(X^gGqlxkMrF2hx; z!_SOCjk#PtX~QU;-`2FN^skCaY$65kK$AW_swRVMRMYZZUEkZ;vtNHH932AV+_aDE z@cn1Ko{8cUlNnb&NDH>&+Cuqz+UTybba;g7lj-xV+?=LVoyraSf8D$Q} zSBe=*JC@X9h|43WVLSUd8lEEGb}^(UHgy8D^Y%ZU5}z<8pT1!6JohM$KO}aH_kJ2& zw)f0T2u6}8K>|1InPG(0lio1N@|w_c`1TZD2?H3d&aN&kG*3H`>#}9Y(&(<2O8^yfIFU(&asJmpz1K5TZXoys56~N0D z3U*ufxI<^zeuvcfb7PopZ~58Lww|EaXXd)oE{YIJdPw20Xt5`+Db(m^Lt4FtThd%b zE4S9(^*7Vg{L1x-qQ@PQ9MBZl=rD~jmCK2IXSJsxiSiX#V-}z%Tg#QqgC&AnYk2Yx zkk$L}-E1n|pUk(br8kE!fv&cBosf=>JawGfsK_t3K;{swjE2!0EWesR&H47>QPr*+ zAO8A|10C;A)KVsQAW40Q0c3yzg zl(8uCCPDrwpdTm8spj(c-ah22JwYQAcD29Jn@os7w7)m#d7y)@WRE<=i4vt?H6sdf zz8RyVqu7Ss>F;s+1OxM($6LPdC=L1*wQU|2nCwUrPW^E_z2w0J25t`5ft?c8j(b(G zlLIf8I8;*n`F3k;@#(OFD%PU%iG}*R-%u{O>`wr{-!nj0*}uyG=Cb zCcv*;sO@z1!7YcbuujAMOK4ZnwtQXT0e&+-;E;}d)U`wan@&Yr$a_I00I33| zn#TN_4RP{1RB)xoY}Xamp&(wXGk~C?M0V%=Bsoo8x;Sr$eQGYqOXT^#afKsvbC~^WB_HqZD6y3d19|B3Ef#q z7X$}h+7)KhIY3{Jkd~`eyAqzQOjIF9vnGCPiTX6Om^jq?HUUE#0(HLI*1_4l6RcQ= zR8bOmavoUW2=CCoJ6Jpxumrandc1vD zMYJTj$68TmOwchLU~D(HgBDVnhKqEjTJ5zl$4byKmyX4;U#>LXuP*OUM!G9|rvA<% zG<})?|3{K?>!L??u%X$Hd`*Nf#%91}d>q?VEyQa>7;sgVvL_JvNRJYy38p4?blHL? zc50YgB>}!M8SBwIDVD)Otyo)}x@JK;e>FdymJqr%AT3ABmIK>rkP z3L4!_L#+7`0s@_*ptDu<#AR11GbE`?kwFnKJ5%^eVY~s5tXVQ#SWS7ZqZwc6gmZKn zbNEX((aQ3#mt!fSAlCE~U2#1|{Cb`!ByZbF=q7 z?zeVRM1Yaksdt$%ziAPc_XE(jJ6FQ84cBylO9=atP7@->TK!Z8O^paU%e89qFm6ld zh{^>JT9+*XVaGUrcJUTUAN?(l~L#_-#(kmW32-SW+Khul6x)d^%*vJP%^kwnsJaAHI{Mq0@VtLj_7=_ z9`Y+-ON@Wb5{KhjqjK#wPd{)Ovw$&cJPiI0mg$)b&o26WPDQzk>Q)e4>9Sr+bIcdu$hI61qLpq?|i zafn$ZiFiW<8K;tYBznzW|zjB*)jJd23as2!Vhv3jI4pj zY)ghHN0YVYn9NSr|3le3hDo+;ZM$V7tIM`+blF{Ymu=g&tE;+fb=kIU+qTV9YrT8z zz0do7=g0Y#S7u%jIcG-1j1kYc#~1{M!Y~%vTI2Gt*-bMKiPnK9Ks0BbThP|G>0RZ# z^i1T#)*M3AFB>?KGQj1o>=8Pv-NSV_2%c5RPGZ7o+#&a5ghR_6Hv4_Ao42RDJ`mFQ zbTDqE4=#cc%55P_WvW&?uPuRP1Jayg8}FfJ^o8HB4Siv6ZFkbNa|< z837Yp(l#R!#5El0Z2d|{Ht%fnj4#4EiV_<%Lhd%(%;ss zzjciFuc#xQ6%NObAYYl_WiNB3E(O-Q@YYtRKOXex^xr4bo)~Iz zBJ{J}4x^>ccIAh+=aKlTa7T?R_bWP4G>HvTn5tP>CkC9bf_`bAW41Xl%eJLTiMui& zjiV~`r`TGaLMz-zd%m53@HXJ*4VL%1ama-1i&OcSpyz$KKwF%@-kh$7U>bm)qE$HZ zMs|GntKrme+Y2KaK>-zz-(GWdZ~&rl!yHS=>Z|jl4o@S`fOOI`+#iC}Vh+|`k8JGF z?6C@u{`C>o#@MC@y`qh~+f>HW+{eJxbg=WZPqpe2 zidwg|yrhn2L@MU?KAopLVY9|8ggMxu{@Tqt4%8ojAiyc*qgR+5Wax+}I+vDrBDkoR z@#OK4#oaUxuag(MB&Xx}ER)%^Bk@?_=gIUviP{>$_J)+7C|0xLNZs{jh!uQ|X)}CZ zj*z$oW%saH{#T*iH2?H5hF4OEmkK=(V%x>2KeoMElF7kn82NL}Oh@Ydy}>~FeIYwb z>p+Z4aFWBKK5R(m1c7}=c*mG%tQwBZ9&86(WjU0olN4D&r`%8u1%09{OXv|;05x$) z)75gLk(3V|zT|i0OPd+nFa~?8LCHZ<&Icj1#WwZu`d0QvVf7~``5>k87YvLU*_g)M z>fLom>s9lu7lDepyMP_!{kJ=1B_jR+RC=;Jqji+iM}i*LJ~kwFPky+28EYeFUlp3q zm-y|7U#>Np2IQ}#(0isZ7vmh~C(kCwb;qsfs}JrrP`M$a4;nl`PVHQ^Oz$r>n%s|H zX_nO{rZJh_JVpC?9g(!2I*Zp&lKl#)8i>F0%hnOQt~v6t!+o1cq-$V?wo0_uU#05E z&?kB5Gk1>neT=%UYbH76Fin5iG?DT!rf=8~`Vq<7|Il10L$B=Fd+aD;Dk3mPm4;U1 zHLbT6qAeojby$H~z2E)#WU0-F_x?XJNiIQjFbP}&{F}_1{TYKaZpVq{xu)A$-(^W0- zcM77l!OS8IVkd^!tE4%Lf<0SbAcYKH=W1YyshF6~78)yX?m|!2_Q>S2<1GEZkMI0{#avBQ+@b>XXC9SF(Z#n#-5N&Cu*Ix z*DD07nU3}o(K}UUF^Oi4;d|s{u!=B=c@P<|7iWlB#K;dy<I*w`IoMk{MfY-1gTBG@yP0*Z}9lSGJBmKMdg9}jYW}n zET^C_o6Z`=#uDepE!Kuno#JWA#sOsHXWGa+@rgV`8F})m0TZ89<*~J**+UodSn~A3 zanX%k%l8aT#hK(-kO3p#TKcYrF(tG!c7`Gwg2s){UT|yW_pz+>rJ@yLvvkjELm&Gz z@aYjTVykiY%vFq`_`#KL#={2p;oLot^;^{;^yeS7whK|Z)CTK^qbbPALmqi=7|h!t z;YM+zaltScaRY)hM1=VP5R#m=)ocJtwz`K^y6q(Es zA$T*4+gt69Hnze~&4l2Qqo9*cu($eaNFQ7FqlGcy&F7+TM5c3yE3#2y_nS zbup}I%k-ZkXL(FzT7UKY_Ybhp8Ggkjh*C>zk1rx1zpC0qI(TotubYg(mWX|YU7X4+ z*3xipeZ!uFROG64m{9o8Fd!aTz8z%a)v=4q3)(`)8)#bfur(T5#;s%u*8u9Ra4Bs5 z-M;4R2#LH&Yy1_e_`?yn?i-r)X9B!drSVOdq(vg^X}8tdV|B{wX4(4+>m2XD?)2-$ zo-wvU^0x@F)jQ!sWB9foKRY*>_8?FiL?X+Ek2NGOa?%22o)1GlzBuXpGecC%w8w1iCEu45QbBM z0D@ef=XSVEe|9AcyR#WWr)O(QmJ6za`4!1WI2axV7D2=O$WpZ!+YUZO50czD{Tem1;bd|53#evDRbcbOQu zPEPctzq!r~bo}n3(p)W7sEXNS-J{OB`#N~%TsTSpJv4iQ_LL(1k`u%t-w~=Om{av= zGoUN0YFwrvylKLA_KOXkZm!viNw2 zt(uo{Xzs|^)H!Zg%LGO?^tm=!BW=jY0ZzK;un5b&%rsO;Ve4+EQH-8^f9S)WTT`w* zDvGLeni!8N^gLfIO}OSrrV|crsaP_HWp&2Wgp|?fc}1PuN%2`|ntr>^67YJNz}4bM z2xzs(+B_S_hcSfOZl8*8F#Mz_8ULpEGYK{&$2R9lq28BWDBMzV34aKZF@Pu=tyIW_tBY#lYQ0FSgheHp5#?$Y^{BBbG$L-^&yD7bNlf|ROlZ6 z?^TJ8NvX>sQb(jxHj+E;Yub~347}hO_mF%v(}^ly0aGCm8yWg@se>7kn(g6otcx~> z^&P~q$ht#woj$oO!|cA$KVFSOAZEJU_!&gWA6b27R#xN?TjHz27-r#^sV^OgzeUR{ z@>WT9%PUh=DSqJ$4C8l)j~D)LyKB=qQ#2!ppKJOxI9B!fOt;0)Yd24x)^0oOA4zAb z*?_4WR3Uxtt0`#gI}59AS9iCBo_up%lDt+oeIO+ldcpR1t{5{Ow{&GQfyj2UNP>2M z4OPhsYYpL<%x{*yxxVF1$?;=MQYC%|R&UUCmo*hehk*s;IXW!k@Gy9><(M->S+pLK z*mAzg|6Xh26MRfT`Ox~jabq=aP#32=>XLgxPEsiGSXWLQyA-Y-m=wHbJ;71AM6lZ3 zsL&8}+SVA7(kKh;rk4l)NX(>0Sgs3e-&|bUc~XS?`@w10Jj{RSq1_%{==bM*8?n@7 zPSCT)3<5uqb((74I)UPzE-q4$?3W_{Ukb9!YwnIg$g};2UV}+;HAsOzYz}Qn%Y8`} z((LylP+Vwi?vSodI}@m@d-U~pyNQE9rf^ylh>3M}iWtvQa=w0)m?aSArDv9{?g=qnQavF#2{Fx6gyCY-JJ~8fB!hx z7IV%Pb=o=~TtTX!64qW0DJ)-2exLqkjOr(=iow2#q$TU2dBjzQ>@)fC8?v!^+k)jA z_DKZYrgtLw!_7{a;Y_*l&1e~pw-KYxNgL+7u1;`PIeG=G?p!iKfzLg5j9ZJ|owcY^ ze5QZxnpVHJ7lxM$h>=6X%@DFkJSBvGZcp>|!2yu!4O22RUzpjm3JSX{7vf3JkS(F^ zT*sKqu)MaJK^P?Hv|B zv3wqSw!f{~=YDIE-v;RyGG>nsy6G1a5$j;XZv3LUEQFRp09Niy0X-OE@;BS+G~(ty zRgTkvukZgoGBbg(Afm{E@GvG)zn(O>^8URU2@^HP|8jc%=NkY1oW>d>UUNUUv zm*yewbK`xJ#A}FHkM{wbZl6mfxBV7UF@<9*TFLYQiJCL=v3*@Uo?E1?-$B{%GGlb% zyJlYObO}AXMSV9N-!2`FNU8tKYHV?Pg|K!z1X4?w=ud5qAO(jhGJ@S&OYF_dFX1-JbxPnNZu!W(H5z=Ikw_;q-^-<)I>% zG&}cEMw(T4hT|stj}~rEDbH&RW_T{rt3z=H2dObXn|Ts#{K3pMo6PP-DdLyo|s;n@LfGKpSagUm~iJ zy><5j@iE@JxG$1#&^OO%%jHqHElTb{qjn{I4hP)(L|D1QS0N#{-FR0C|7DdnpM4Gd zKW3o$I4W>d4#w28O$=veygnbj;2&E%fhrv7gT*$eiZGX5|9b*SOt-IxzxyYEH-#zr zRUPeWe(?LUnR6~r38Y_;ndQiASL)~{BthTpnnuZsyZ&;TL^x`hTCpYFH9Rm588@L#}e@(7o(g4TvRH_5Z#0qM1 zJ5LO41oEEL@w1=o@-uwlJ@8_j$u@#!vq6m)p?!rkAvzuFW0S2gl&r4bd_+JH;ot$Q z=0<0#Eh(}pMsa2f$e8$}pu6fw=OuRb`&n%_9(W=_Xi|eo_K%Y=EeGex+&QS-5VT43dTQQ&MCQjD?q-~rBNeHpc4BB=n1(juHdZf0NQn^& z+R2^R!-wpaVCL&**Kb3+i}Z~QK03UdWT>47lu-y^kdPA!fieK;VDNerMIOm@=lU` zOmwU*DIorFZoQ<-m6}Gzm`xPB3?o!GG3Y&neI7xPQPty3=|_vi<+?d?LIOMPa;FNC z?c5j*j@J)o1S}WRA`kRWt!UwhQI8rtuUWm-v4(i2`BfpDyWK@6vi$5$OdD|7ywF|F z(I30$xWiu0@Njp{sa%sAA3I2(Y`Q-dgA`NsH70zXEca|0w^$2SPCb_)2F|L&$^HdjY5UJ!q$W`i#Ny{Jl%PuZ0u) z*;5e@trPGfrfL_cv?PPOwOs6`$zBi1quJ%G&mJ?uWH(8zb)@=p5sU%7#`y!SWBHeK z^nvJVpDP|7uF4N3`Ke+UI(I}a_|V*Y{1DE>@@ewA8=12FGPTKgr_8lST^wj_nEv5c zx69IY%gIIL-x$H(UU<-xaE69j&XtIgShZv}gvE8~Yrmq$+{?Z|yDZQKCbsvwxX-r? z$zoZC#hA zOI&f#jX;ND zwK?(q)N$>4PyEFLt>)-<^N{2CrMrAI{b z_Lsm_p04{chfBkOG91{@!(59uKEP!L__Q$Covc)0a>(Sv-@uCwv0;&wjxKQA&01?F zjC>>$+4WM-pSF!MADuN23cahUvYA%bem`Kq#j_BSE6?kuD%W_i-BHCuTcgHtvj7g6 z3cM;jXiRh!j3(KqB zAGryd%s7Ln%v}3C$oE`P1wYxr{#4NcCqk6S0%2t0gvHBRili?KF$h*{+ zJ0zfquAoPtalwdo{%G`c&&yGvdRhg8k=a3; z(F?C5v6_(djmd(v)Y1e7gLOHZ$*9;Z-|cyNrtl;#bp;d#I75h|gC-$LO)YSse(*gR zz)L2F>$N5RV@atwnvA97Zt}^nZs!P5VALER z`^^g$@#9iIEY0%U)x0+iXyxLp^W8rzz?RSZI%k6+{A2<(iPCrXapy|VBsnrEJiouT zM;-42{c@5BVr|fr>uAL0(}ml$B#%%p#%R?+X{FuUA9(-U$?tiXkmokikh&$!8H=<}fPi}6=MR{Z}t_~mnHU{@_X6oHY~Z#~L%qD9`c95$9oSEWj(9uIngv*C65247?eN1 ztOEW?!53NFoUbve`jHjXR@VZi;Y}x2?p+5xmtNyn@ZzvPCHLm!I}ud{)N2OW{?;c@ z;O!V{Y=Hdyvo!n?72LAFKi@D>PXV6AW>?3oPo1#L0nADZ7~STj4|BQw7KMx-{aZKd z`a86(vfR2C=F)tOqFGQfu+(wcQpw>+Y`NKaj_*Xmf|gL&oZtPPoys3@#)s6en$0lQ zdbG_gR!BcQB&blA>SEg-7>+a4e;@5WP4p~uDl(Ee8>;35D<6uk`HH_i=G#q`*qQ5a z71QQn;uVV>p7bie3l$w`FPaC;K2S^SmS!=9;jTv`D8G%SuIx6g>5(KOUOm&%yVpBF z5jiz})ls5wtwZc3H^c614V*cz<5F2{*VS9BuoU#D%MB>>=Ou{K(~3O&0BSInPKzT;U#Wni0v~DU$Sw=#dvYOCl;poc#+D73q` zpj5NUPQG!@oe}ddb9S$dh?pUj;DC6TW;AB2gRa8lpsdsy>_y3?^zTzOPsVD_*11vk zQ$92{TX;B)D|l^O#p^-Msa8Tir+L6q)AC0}211Bb)u;l!J zF}Y26b&{CF|s>4z}XT;kC($mW1Xr&1{-pIyyu51!xZ5Mx9haEQy8JrkO z=k!rkjQ@1epn{T2F~mzQ&B5e)f4C57{BoBuRqq-T3~V+%CGnhzd-THJ@Dvq{Nn$~*Yrx1>SaRPGvtNRY8+`?|~` z_moHLw(_5}d23Lh5r>q=W3=dpqjAagwNkDR*7`xe6M;!>0ZXpsbPo0`LjRaXYKaHTq-;Ia(IHwIlgq`?rHi9S z71-b_1_{|%b(?u>tdF5Uzlp;dcWrMBr>ipHC5r#QF!Az zS@<;k<;kP6mNTCuN;@?#!fkPdt4A^=%}m#|VbS$7SpOix?fzS@4BhTSD4)zN^78l=lV#Yy?fIrr*Q;eW z0Z{}a5%pEE9tpJddTmRAH@ziDmW_QEI^=i7WA0>;_8sOQ`P9U*JIqxz4E&x9+Wy4n z=V$}-J@ojzTZXMKinUr7w6oYw%Db3TzW5-`#Z|*0O6*LpJRK)U94315hnpPzdbMg2}v-V?fI&U!ok{ zUDOMa2$JYkoyoebeGt-YQCr_1B?^1YI4MKKAU<`vfm^T=)&$Q@|m zF5IE09=`~pEeeK|)Y$S!ewu=^m?bUz%MD(uSMQUPLKFX!4@pFz+FZFXb-sD$aDTiC zTBwP0XY7_9QcmmY!M?Y#;Iz1j`6`%qZNDYW$EPjG$m)fWTUFrRu|Kcwu8yE6Azo3A zw58a)H48qqIsJ_(@J64yFuRZ6_P(cdK1+5%^T4Y)WK96nwX%}^B0R_`>!T<4q_9M; z_q}jylha?NGhNrf9@+;zn5iR5ahTzg!%EPo%g|tte|_8IFc4fE$a$e!hQJm?Ud9Ce z3cd=D0~%!|2@xa{a)s^c35x;xDdyeg=N1M)b5XQQr)#%Mr3=3a+cma?J{=z@28a(h z4|}PimJrevcS+agCuSAGk@BSTCTJs22UJ?iLd^zYHnrT@o;NOySo$Y0L0RxVn=V(? zwNzC}; zbm!_pnV&(^7pRj^OfXr(6KxfPZ!qjyNDR`GQ!`gfy#ZaB+eIu{N9Hx(}!Ld_6q1pDy(7b zsD5sRkW3Ew86dOM#r#_qV+FYni+QI?DXj-EmFwxqtQc-UW7%VUnqb|m+x zT$YF5w6#p>OCKlmYq}FY=KyEnoMvEQrQ=T_dH0JULcz+>de4BL)v@8Sf618^`j&{U z3fn8J2J#UU&kXn!U-w9B1mdiLC$)O>>Q^weu1hn1yN0stOz|)Z3|EG~M(KmpS-byY zCy)4=kQEdn?4QzA9U3hi@j>qk937YVc9m;?1ev9E<6g@KeJ(Ey)Qkv)&(Uhmh|R^l zDUW1Cx6_!aapFJ|q0`nXGzlqp!5(hgpTfYa^RKj~)Aw1tzB{-wpGO&QPg;bD6Iy0t z`}B1ecId6pQE5@DAJe^*tkg4~6bY@TmVuzkDN0)wx|BWD){DMgm7u&q5YoRh{A`7# zpdjziw^###u2lc9wfoyTin8f$9tv{xAlUKy1QILZ7XqR!2;_SEeil{}_F*6vIlLUD zszTiX37V@}gY$|lU7ByLsxMGORDjF?az!|cH%Ul+r_lU02Hl3bNwxkMMH6DPs}F&^h|~xEqFss-&q!2@~TE2O&TBxYCvBx?xfNS-+BF*75qBu{aY-J zaS>{m{lAK(*C%`bA7bfoDE?BkQSGArq7F<&Y_(L%QmXF0<*LD^g(DDMXQl32nLT%| z#_bkv4#w&7K%)laz{SQGb0uE)WG}y}Bp*?_f{c=S-CdsNZ`cfCC*hrdm$c}Hab^zqiQ?kJ&amq++c=>Nja zJOofcv}`7eU#wY4dFYXYr+T5qP57Sl92 zO$;WvnI|W-Tw8R%XL(fxBEni>w6!14(MM1C($&EuMvLnow02exnG$ex!EUOzEswB; zwr}*sjR)nce;#y1J)k;jYd&6$P{D6KcF=MNT~A} zJK#`<;-I2-?o7l=TU=Xs1bB?*ZsJLCM zuMNOkGScxzVVu!I<|80-LL*A&I{SPOSbBvKc0LCVbiKx4=@~%aeP_jQ}SE zrOwKTPiV}8u;yobki`!r&V%%Ly~{7w$J(j+^iA(4tRR6U#l#vUF%nxjHw`m_-Y911 zQE~)5x#Y(Wl=6Wl@8Lgv-Hzn+dS+CY(i=iY`GjkZc)cBysRIj{k}!->CzG*4t_Gop ze7E0<5^i3_M%7l$80a7Q5Wy+v8y_?$;_-IxO=4y(By=ilJKxT%d7Gks=umUN>1)FG zOVHym5{A!CUb5wsM0OR$L;(D@En$90iAQlt!4HIE9Bak^=o-3?hpIHYDpy_{eAAF* zmgV}Os+h}N;Tf@fc!k&O`-}i>Ulav zIGUaQxR(ip3i$xr5P~JADu~wrV$CXv&fHCSUdzYGbb+eiO?UfV#E^;siX6;Ad%S)1 zGI=GxAGwLX86!?%A;mJ_5mMck)@@vdLd8rXElyHSY-4c*5C@T<#HQ*7Fo*jDG?BLu zo|*FJW7JjoWQB@j&k%!UwkZ6-6V7L&4E6Smcz-4LbvfJg32qu-wIe5jIq}#M)kU-A z6RdN^o)*&<2{i#dH5F^u)NRe8MF7qtg_k5WJM!A<3Kqv7ZoKS0&ays!&_)}AiX;mx z2jm71GE+$DeF@ui&JM|ZoYnI6hYI@JW!1_bpR!9f+haKx>P|ZgnWCcX{-^UxD-N91 zwhQovQOt*!$(JR2E22Gv@FX<%ZjWOe=eH8hL(Cg+qQJTvqJ z%cuY+2xY2crsi}FQuHkhCCEXhUt2g(45;V&r4ypA@_SF%+j>V{KX~rNuJzF6Qr}c*Qdq=B2=QI8tLi7AJ2CtGAOT&W> zpJhbhx7*`x=Wum?M>fG&horo0n?w5Tg%d5uaTJ)wyqRS1nYbumFec=yt(zc0JmZwX0wnqtQOl0XpHqbTRN(VBqOa3|2cI>L0F!0w(6`_K3m5mN(>GI%*me(r= zVwoTm1}tFlUVBSjnB+G$k-KPh<0722_dscFJ0eRT^FVAOv6;I#un-aOl-sO}>pCeG zHaZp0C63lUxG)i?4@KbPX>Z8;iO!ch=5JW&6w4q%91AgI`|gY@1IY>AeD|x88CN7m z&?o)WaF~H-7==0qkUZb6r7Ku$ZZ*EVXALgV{hpIBQU_t^P&7Nzgb6_prdw!4)?f$v zbi*Y;gwrAqYi$G(k4pO zA)KEQPgv0{)yFf9!nyjoh1be?-A<>BX%R3AeY`8+i%4`+01~Q z=w|1;u#C4?vfpqhdT%SzG1zJm1yKp1U<2a!YI>h+cGR3F+2vIpR7S3Ml%DRih-9}d zyTIQrjCLrxIKJX;!?iwAp$?N`OZb7z>b?LtoKwzRu<#-uw%~q#Fq5BmRb)g+4P%0H z!q*}k1Cs=z4Y*E{ngDs?>d+|<#4WPEGwg~`cjTy`oUTp)kuR(uMXG4O_`6CUly|Mf zCaRpW=TPluDM5JkLU6cvN>7K^{%O)rvn;3cUI7xK43f2tOdn!%$F-l7zXIKbt8ks(O5wv5$8#>c9m0NuB{n z=ftjraD2d@#N8!8EK6@O7yLyt6F}Z#8z|TGP$1CYGP)@dfe1;2Tb4k$q)y`e+yQUZ zp<>Rkb7XdzOBmLM%3NcQD7@Ui3C-i&ry5f;M!ML}^DAE+-?v_LWR1CR6D5F^dQkSFfe1Wz z>c0>?*xtp^DmQS(xKp)WE-?u=-RQ z%vVfAQM>F^eT~Ax*Qx-b9@{|BcM_rmXko&InDbXxNIUr2Vv30sxY)#fnpUJ(E*IjH zDAghiR%=VIPyMN>S6wzieorvFsQvFYvwuZoqD9r+hb(PU1w(?MT%+Z^+*BTh*cuc? zt?hY9y_*u>s>AIk4#7SpHvtXS;VqBWWknqMT*_&i=M+*9N5GSxZeGj?cULN-B)JuX ze0hh=YLWqpapq8ZI~VE;X)#Zfkc4t;+E#8jzl6`}y&;5Q1dS|1N9TsCi^P4QG_P)FK;D8J?TbsR#sb0vbwZk1c~I9qu<{=H zH`w#1p}eS3;t|gf@*%p6CNjt#jGWPc@XT^OH8|ynGG1SCY4wm$rI(tS8e=HJoQ_|& zc%dz1vq(K+`=_V=09KF;%T`pvh9}@krIkTeD7{_EKCgN>LK3!up`>8@i7ejvb^xQ8HQN{lB@foLml4!)<(>txo>>`+w zi6CRz-lIJS-(5Af(7D(~4|L`OT%%7)4!Wy}aYg zc9_~Aw7SP)y_LPQt@;a}^bWKW$&+@G*2AG2T}Zmccy~zSBvFlKA0pNR2cqoVcsCOj z7^U~3LZ^=;fd}VecXPsrc;TL)kjk$Jh~RgT14C_dst5wJ?j$xjaSX)3M)+bC%Lx^f zf{7Hqr*B&c!$b#sF7sJKnM|W^w>1;t+)D*2a$~v1GG|!x3C9n~dtgI=WD&vivZ39D zvQ3DDS|39}HiI+35Naz$Q`tc#668`I5cHAY3v}L?R2AUvM6gmV^6`XIdlJ&Krs2Gj>^8LJwS5jFMH)a}iLfKyu#;c! zpnI4;YaW*5p_||!v(&~CB9bY*EGwX4L)=W~BXe`IC)@#VxPmm?DfC=o^abRwJ-ppP z&K|zrc7F!#%&sARK8GZ?_e3Gt3Dm(%eaFui3Wh+Kx>dvzTS8t()f;1qU@v zA9FOCQ4|WD-@l!0wRp000GhnB&2xQq-cT#tjV2eH*{uB~l2vw)q4Vx)6YtaizrD2K zlKhYxp5^byC~<1a3gRcCi#4D&ooJ((_})e;@T28owbe3MeV;2!Pq(EBW9f&JA&nu6 zYHDAIG>Z&E{yfWIZ9XMKczD%w%hSS#9R&S^R6-Fns_N+;Zz*yBMr?Vsf3o(?M(x_= zvhLOyEUEX!o_pg8pHpl|GRWMrm*D*L!O9e2IJWmuU(4evUlbkMwzN%U z(*39W>w7+t@h0agrYp|d=tprh_Ep8ZL-W zv~U|?0@`+wJCTcM6z9M?V^0^GH6`3`=@=xBd`) zlaNALVpmQJ`HhhaLRTjZ)ooL(3%m~V$d`-ive09@DOp`afKXmS>wOej0)nFW^UV>z>UmIt*^#XT{6+98632ej>p4 z>p&i@LBTR;PW@tMWeVT6T9}auAD>v94<4Uz&hQFMsRW5Mup7Sk1S+QA zG#DfP4`VfNutz7m@)Q12@3os9fHllK#fbR+s4Ux6_g8*{%)jy*fc`7L0boYl@0Txt z;BKQEgn~-H)%gq@wf*NAxO{b9F23_M)sg@|@V>-l`y)RHG&JD;DLrc9grV9`bSazGk%uRiv}QpjBwAVWxC-4nnFR29=GB1{X{h zpJSr7r(k$Z?X+RMzp{P?zhB{H`nYx0(%@R8`0=8(PcVHVLl(hMWn-Ygm3&d|MX4&* zp>pE|Fg74I#0PO8;f_EFRefxc(w3mnOb>LcL-~~r0OlN%ce~(lB%LI_v>m_7MnSt+ z_;E~3b2jYJC`{v8B#+o21+BcIp=cddk-MUhEc62f>YxOLdTKJ8)J&mA$oWNNpP!(w zsaLh}az)b|wIY8RnEw-b0E=hVWomh(vOq7>-}=+%n*}U}qLOEC8e`Kr8`;HJ_eOtO z%B*wT7l8Wv^<}qwN$ulV^C14xCSRnIB=bBWFpnf;vw&{@6m`1IErtFASlhMHYV`F{ zGz;TUMO`e#?p`NcMO8Etp#w(FFsEx3IqQTD9)e!|K8)1v0RiFgXe&>5iUp^olh4Zf<$jSfAs49;!M8MI}CUkap&iWESlWKKqKQtKOF6&{$yCO7-#<(u)CiB2lS(sC_L@sAqQ!S z2&JE+*}3uskGwkVeB&a!KAPfJ3YeH*48GZD^tleKL^u8<>l?tL zj&oQJSG`~5;^j5&u1F5On2HW@e}y_#m4h9KuD*G$jA%NArEV!qL9_bS)abxtgoa!C zXwIF=E}-><*ywHC&rX*qb{W}+J=MlTu~e6mZk&W|e7hapIJV+-#zDy?I3&yyFB^b;IXn|{a3!DVcfj-g*3iWU zrK{24+wRQ5?Q>dfvOfE_^$yzIU{PKSRR)sD>7 z!HP-%BSR*1WqqORi(tpvA3bW?Kfm_Z8rA!mi<$A)Fo1n?M4<3|K6|YcX`kvsP0qBC zlGo$^6MrI(g%w_rrPt{+%xR(%oF=WBI|$m-4CdrYd+qRbf({W5+a;a7jOM5 zMqju$huApyhTQph@>e|M3BCpnNu96{;c_TjJSZ0N&9S4OllH?yL-_fU*@?E64^Q)y z(?k|m>*F;Qw(Y`Lwtd?(g5aO9AaN4%C>C87qPZz!O>8P}og)d$kMQu6r z6On~5HAS0Wco_d-a_ysI2}#g_XTa6IKw3I(L#Q9S0>Qu1_42XbzfyR2KMO3p9uv-Q zM1Yw674`I=b~9Ulx3dS6{kvU0r0A}IyKcJP9>v{%+6|u5!x&O@{x{wm2NA=f``;ZA znO%v42Iu?bR$sSrzIg}`Mq@Rgm8(yTXW`^FRVZ@6JRg>JHhHZ{S$n(loSvEdn41;U zJT!2)r5bmzzux7j3W6lFH0T7y62w(XIGmfVdAzx6QZC~-^pZ9>l=ZneI$NW1I$H4h zHz%w~@Fi3ei_%LN&CEtT@to2O1{@pFJn54CURW&0%`|hvfqY;3juGge|ocOEJUPe#Kg4n>+&p9W;Y?c!2VbMxTPCO zN`xC?K`gonm*W26p(-s^9 z5iEY6!Q}iIVSlNs_5o*`{ zOYU%(b5+F2-ONoCxalN@ZNJ1o%KITuQ%?KPynjOR>*Ys=9Sz%c3?0vp~oPju?aQbH zrl;2&CBFsqoX()&mVKNceuQ?$L%+9EQ--RbNoNd>O!T@{q~#@Y*=BApS!cSD$7B-2 zm8m&K8uW9Gi~U8^@+wPE$!v7@RYp(SN$FUJG7A>hZn&Vx7hssBPNmvCl1=qwS09uv zdsyR@qQR+nNV(_d*k@Jss^`iQoFWaLKk=EU4- zIYOwzjFhsJXy?+8RPLYX5sx|BSflI1$acy9qBR@k(fX=aMpI;M(3`8&=Ke@Ly{B$M z?$%Gnn~^lotshj7L~^xNZe?~zeR4HbbKk~C9wjxOrJXTm`ZTY)s(eZiX(1MpU~|ev zl9)J(;J~0$C}bq`)5-13*StXEyJ};3yky?Y66Q)|U)PaTqKoYaW$yU8kY9Hz}XPT zP!?rQWXJ3vEo?2Z8{}>$m#~T*rgs3u?e_hIpS11*`R8}9p@gr=J>QcVaz{ii#J_ayi%@Q zv8rZFN&kAnq(jX3PK#5nv}Emf&?c*Th5n@0n>UU!!Eg6x<9wa2{9dog}4o zb5a1=ex~$faAVyR*6LmoMhtJT++N>@xNtWodG~@%xn2IYk%8a0R~it8GnXU_nOMEm z>t=bv{DrtKSW*({6N?ah!rSmiGt^=)D_jE&h#<@y4F^Cu$lNmT+P7W zKKj-FAL`z^E0U+n8bum+cXxNEac$gbpn<~O-KB7A8h2~lrEz!H#@*fBZ~bPTXXc&v z&iw#4{>oY_GAdVQM&yaT_t|HG>vB-wQF1HiPfk;Dg|Xr|sZ@xT`p@Ky-psFoh+WKJ zT2WZ`oBh_#OwnEzy!M=POK+#D)SuYHFip}sNu6OR=Gb$uwdJ@(`n_wVQQ8$*7TqPK z$n-{vuSZ2zR^wQo&$)Qf%NGNJiR6$~S2|#R zbSRZ%~ayt+6*UoQr|tnb!EjBHN;Y@{VJB z=4w~u%CX;@eZgt?`+-#DKaK1;-dAi*Rt5#_qT$5`CX-{*IL|o)Xf6LOL5g14H zYpzSJpS638VG9%y(*^jgzQ(hqFM3GbYE>tX(XDzvLzq+u8Q4%r4g;x)k1_`(N>*d%ZC>Soe&LoGmDy#F!e(l zPHg2UNHG)PDYeHzKr8LENuU~oNxuNFNsvtMlH!5*SncGy&H1iqr|!w>qg}c2?Pp+k z=ex%kTRP_Eb0?hRzAJ2ugFve*a!V1!9)Y;Jsl0>^f#8N_Y{WP=qbtO%n~!bv#VPCZ z;F}i){?Vo`!h#8|l%LuIM8By$^(Kg9%~$n1S1zQd0>ZFRA?zv|5P7z|MGMs8PgkMfuA~zh)vNihl=ke}nG2Er3hN)b*sok*@;ts4Uf9Gn~1t zI;MrWe zGS%_fpHcx z=njLT*11>MnX#sDlvGNcsCrRh&4^iwVoW?SWE?eGs9t?G_lGmZw^(4eajabeH! zx#Cj+jb?I7rbCOna5g5%V?OksG>*;wEP{h2>zVm=#*43eU#n_emPPt2+%zlu9?fth zx*pF^diEe6p0w_P9ykQQ`}Vqu!Zl~w)pgm4Z1C4GB2NI&tgxQHfQwCq{zwx((iP&Z zBXeD?2b8rjpj!AKYw#z>7p~HyVI*zLL}k-g)w##K0D_4c*Gs zv=7+Tl(Z|!e6LWPI~}<^1dNQVu7(ML!ge@7t-(oF**TZq_lbbdJ>}BoT#GNpZV*F& z;?K_{|BpTK;;x!{0|0@<=6<`>@#_(4?hbEVFpUsnX&0*+Yh`a^y|)Ior0weLp#%RX z;V@0}GnEI!#XNXfkZJ*OF*;Wb!xR$T{;n*+vyC{$$GPfkjNe^nD@{lB0^Qg2ac>eE zfZLG6V1ER~?d=cKlRX@5)~D1fO+uS@UnKuhS$Pk-bY+S?#vi@nt67Df-e|eW4vf+; z&KiO0{wxsh#x1V{iY_HHsJ|0B0Kx*>=>>*{#dsAkQfk^lV36#A*CEgeWx&+R(Fl- z=s9GuQ22vr`#ZY3B^DVGH37NzsoSPNF(Xtbj3)T82-!3y?iWFn2De+mk#6hm&wv70 zt#w|I8b(-I?javu6G90h1JyI|0$l(13Ctnpmg5%A7Cz5DKhAG35=eh=Z!n5!EDvN{ z)xHnsz?8r&5sWS7!_I83GhGY>w8bu*@Cv}I%T}^ZEEoS+jC6b21|&B4X@JcZ)7B;z zp*hsXmrkj>1l%pMEfr?HrnAa!hHh+9j2bX95uPnL!vKOqT8E1^Xc_S}VLuUpEyY7s zt@opFeqTr#$u$lZa2}1-L+UMiLyGA&q?Sn-sBVhzRvFhSYp68@L7DYkV3H@=)0}7a zO6)SMAVP)6-%C=7&x((BC$LM%&#+ZR~e*QAdcFcdxllCxYoK&BTl~5^Op4u*F zZDDiebSW~D2}$Q67An*~)_x}>;sU{w7S4NVSDSP8m+^JJ6W^woqEBP5U|IdiHiG zs%udf*A_eYOJL@6bDyM~7GnTsucjDsw=NAqT~3Ha2lLMv$7=HOj7P=* z^T~vft|8R6eU@&tF@K)*4QCec*-2{oOa_7jR)MT|W_AffeOEFacECWCT6YbCO4XF}5t&HN-dg zXozg5sy5|iq&H|nut+e1-Y0H?W<)@Ac^t%6SGSwQ*Oe@g&LP_2ett@9O9*&<0%9B8 zVZ=P$**578>pAsyp+w;FH#ZS|BAc@hxxb&py|Tu@;TUu1bGWN>jb zsmM`ziNC8BTQoqxwIVQHY4!<(n#91z?Cp=3P*csUewxH`Oh1$nM}PQ1g3`^i*b7i( zA={h{1h(0?SJ@&QEl;1{Ccewp5=7W-COh_}tDopW^CPzdp*9(JFOuN1*=#+|^E`SJ z)sluh7qH1Z-riA~6#i_@k!RPsOBz-krgm3FL~qmvn(Kd+`56~6+)SFkR+m}A8HdnY zHyMn~25kf@@;)YVYB4{-?|{r^hV1%7JF#8fFY`}!(+v@=ey0oW--!4L z%zpE5F`IT8IpOp^X;0|%$FuQ-^^iyL6u|lS_X+qxy9e@Vn<51X(oi3Bvd9QKo;$L~ z#fkR&UT%1oLqFs=aWi(~oaxD1cCO;FA{wU}{+W8cIKSmOD{lrZPvGB=HWnthm} z;E$RRmZG>PdI3Vfo7LpN?p~yw3reh7eyN3SUDcoS2o-Mvpo~q=Dc&cEDc_ zgil~>Uf*#LN|Xt!#Ax9qVI{qIu25=FntvznrjRGbuYwl6uW0(|(}LxN^G&5aP+0>2MW6Ufct}{XmZgf>yj?=YUPv?KX-HZ(JL@ou z+faF4*6Nj3ws8J8Y)6#EL(UG8>+z?GSl63dz=hpLqFBA+&Lm5dT@8~#r}YBrlw zV6N4vpG0*23GBYN&|gnsMR8gKeldXm-I4uQElv+NaCh z1)IhOj9bJUP5r@R9VBhf^#ijL@xTxax2SeU%|@su?@fTt4r1KT9P;YI+g90uuP%#v zM0KqxNcKI46}RRn6H4KfcsC&x>=HzE^goc1_yCVU#6%*{g@ zT9Q86XRG*@3Avv7&QkeCPi8!uzjgHUF#p5M-vh5G`MjkgEX^8U#G8xL^ThZ;TC3(h zK+K0hxcytbcHM+xh6*TGVdPJG%g&$-ddy)F(-d}n@djAHz5}~|afs9W`i9<*V=ui` zD)f=G;?`>jpl*AV_6fH>7@~NzSuuG#wVf2MRI)(R5E*9c%26mT+&cl9)D4lC%5lUM zFK(FfTTY2|Y^VgWm}5sYyw+0(tbNo82VjW&hWaem?|}5AZeMm-H4>HrZ#*I!@4`_0 zF7Tvap8D{`w%B1ZG!&Uo0+$tR9Co*N#EB3s*td{2qMX64EG!{YkYbD$cvn*MYt`$-667q@MmSjHAJU0 z-jSNguQHRhNRSk=`D;yT92cNB_|2rbJZH-6wTLYlhnc@6H`~X9u1RXZSQIOo=o39D!%U=Z7Gh-3l%SP3E zK4l;)u2uMJ1zf&?7ubBk1SHzMC)uO!NGTZzHiir6$?5DXk1OOfQTK{&DH??d{~frC zH<_grw>5doH1vHyBu=3Ep!XhRC&7%2OpaL$89p=468K<8=uQ}4;>;k%b|p<4Ixy)P zRU*8$?YQOEUt&SpTM{2M3=%cR=Ux&49rt;SiW1Gyw&{^9Q^6zy8fEq6Zl}8*+S~Cqy;A0et7~DeX(Nx#2-%=<~{w59u zB9f-WBn%|i)X7dS&?09Mbpvt&Z5xdP?U_=@A=@31oH8GA2AYKYA|iD7KHSeByg9T9 z)prl;q*LpVqUw(p(JO6ue^UYKv8oJdKYa7<^ho$2r;U)>P_h(vZ@<1cr$d}@}N+c8s{Y38Y zpSUDjQvD^ZG*}UsEE0&}rMw8J?+>yPISe9qrtUO?emFCsRN<(!N7@}r|5X9BT6sEF#!-@h!48Y1eyK>>_1{Ze{E!Z!-KF)A%_5{&88D6kW z=3as*M*-ApPT`6`)oq(RREe8)`VLufx1O ze4-LnwaU!nISsK+EF54>*5Sh-G8N*1z16iAiC4g0h3ZY~#qZH`&7z8RiJ z(iBR<2{H)c^Y@SbR=YhsZ8L?*0h$90K)|9W2Gb?~KP-DDz)x(vRXG$l&mSSrq%Dzx zguYh>9t}E{9a!A&1Pt0wpYIK1<#&;w^{&r4#iGA4Y7S;_m+lIYN#Mp(p^5Y|3G4i!LZ z9wc+Plg`XZ98Y*B))#0|9t$fjPuZ)x&qN>X%v7T6@gap9#|b=)u-2Iz34aB!?g-V8 zt}L4V<)COcTQh|rx7j0>=tL91Di}oibJ;e{>j>19#>G>B6*sYc6PKJMbie*hPIf3J zp*?4wWP%%B@`(oT{g1lRNgOC; zcVkEGTbGDytk(f3xDq{fc6U= zcZeY&!+55KN-{TVCWqL!yqNUYKeWZ(U0R4oQZTFX+IL%T^qTBe z;kOG(`NFi|;qTXEVxo+Wc1mDXf^caY;(OlO;mWEalvQuNEfdH-dx^(o>52}qX;H8^ zmQfC`pMPe#IeL@yMQJlxD600&B!1Y7<3e0)^)I8-?<)EQoScDillFeMvhLCdkH2OF zIyGT!{{e_Jq>T}5y8>tOp~%&Dyn(+yV6bdm$nq$p-irU$tw*O`GB`vIg7w4&ylS|y0rH9<3?pFgQTkzw}x4PH=dBrw^& zkNvWS9bwRNQ}vJ5vL~3@F}?w1X>6Mj$p~@pd}$Jf1ErQ`HS%I#E)1N=^C(go0#l@^ z=6=f6rAA4Sc7WvEDAAR7?B=3tEzI^dCOeps`K-mB0N z495x4({o3xj5eaFm1e5DaQhUOmWY|6YNI{=E~g>5vwFMmgYAjoPfBU7;T5aljWQTi z!AQW2>5JRm)wy*!Upj8YyCHVzvRgjO`G|k$m+j->t=k9!Z8f8P5485TUb1LVLU z{)OC$C)0^3MznoJPDbeI%Mr^)MRGryphTqJ7}Y?9GSegQnt-SvF%7lT9)su{b$hjWJV{( zXa$ut97f)aOX12FO{Bdr^cXQRktgh5^kP9X8Y+H{^b4BX4a6TB62Y`Lu%u_=>mENf zqSyA|t8~X}gTtK=3u&!3C^AH~uuOKuFG4WQ!R$pLp)@&056{}96+S@RT6%Q^&gr;HHCg&uOs*BX_BWvMF-=eLevbz9rnpps=~ z2fY&UstvBfW4^kqY*o-hTt6sy_+pr#!0#-nGryjD%pDGjz6nf54_%AP``I(iWuWZ# za6=PHKi=M}CY@$?ruPK?OmWL3Eap=m6X=)DA?g?O0yA*GC-d*~(tq=!ah!79`b90; zaJM#8-9@>(%#+DIG47GF3UR_b$56_kmcYsF_XsnWfxI^{_C8AD=9>K7Aa3!S3^T&v zI*kB`%?d8w*qmtH=r}qhn(SbSF_dQ_qjb&pU^}`1ATr7yB;jyam0TLRnNVH50PVhz ztd9Uu7CCtQSQlF`=0G1gd?@d@){G#P<2 z&1bAc5Xc!G!I)AmY2L<%Vf?ozA5n4dk8kU-VVuep)T-cXL~`P&beO2?sX2ePM30q zun46N+3tQGoQEu99{)8kJIB#-PrJ|ai2uunX#geIn=##6kQ!Z|g{RIl+hTx_uK+K^ zc8zG8JvI2F(9V23`9Ij+*(*2*r_!&rWfD$g9GKg(Xr7%=@p^YMDA7{k=Z5SEHwDdI z3FaC&EL`Eb`h=q~X#A3Cmh!JQNNVKFrata0AfG{2+Xe7Ola>DVr2#kcbOfwbP)UWQ zQ`_;>w&+*kdbBnEKo~oFxqOtp!z6%kd)T4D#wDZNkd9eyoFoipJ9&PKsXS-X5pvz* zh1t!a^%L_8Jh6psZgVXAX+B6uCc(D#omjruP~DZ#eDzmuI_#b6Xdy1#l?EMsBYEcO zze7Th+yer{T0c!!Rv2VPx>tWtE^zy&u{oL}KQM2MXEr8)%mq@{7D?;} zCU2$=*^7PrDVV&du5GF*390zrxLxTCs>2T^#(b_(u6o;SbvL?rS}#1521I1alM%z0 z`+gxZ==gkJH(dx^HO+>H517QeADOP$!{VDNSsiAXy|N`!L;o+z0$tV=qzs}EACujV z`zjiJv}@4Upupc+RKQ1wX>M9$#1W`?*#SBno9ch{o}F6~Ay_pmgU2B`^7!H$n}QU%!Xw!Ke(VFJnM8;)-^!iCvo$D(8$~j4?8UDtOG_n zaYxeTH;vU-(*?zK)1cVCi*Bn$aH5R)zzIk616UFap=YSy$$uMEGN-JZnca{kveX#3 zxtRrq(J~ZePryG?&_z<@+V>~u{!OXLP$vBk2(PVZS@4fwk=Ro?^@nB z0T_oljuc0XHcv+@c06Q)XH#V4_8XWv#1B1=Miwn@a7+?(ac7Uq5L+YcU)HT0V$@gv z?REQ$p0>3rXCE=-SN%jMB2PvQXUqtO8~XLIvYibzmI)}<fcFqX`h z2l@QdI-x0^I;2UIx(y|i(g%IaereW$#FN&+2`Gbg28^4v^%Q zte}ojV0=L|{{-#CvycVXAYt1is}ttS8^!9@8|mr$-A}7a$-r?8+W&q&pbV)Vim$By z$2GYHtvMrbm|0dJJ!Jjm(XnEH`5k~Uslx|FCP@D)k54g~Y`+88fp+Cgu5|gA> ze>~5JRb8S^4nw><5aL!wxKqQn->NS7t1d0cnLcS2%wZ|@`N7eyRVXXDQdPN6wfSTS zV^w^NaX;ym{b=o-^+Sa&)kxLSahWaqZRT6&YTgq+!l(0>O#*n?>U~_MjzstDF{Az( zPBCNTJZ^ze0T}D0+TW?C`PLSz!!G(OGpx>#<4{##>0tUI99!QEosnMcU_b@}U`nKz zM+k3QQhX@j--x2nv<-%?`LD2kZZWngAnl)Y$B3{x3?rrC^GkLMbc2zi&Il0&mIkLe+x}AisF?4`*N3{v$GUK-G>Se_(JftSK_#Z2O>_;@J$>X85q^-L+kA5TAU#E{ z#_evma!CE4Gi$2foA3*B^j3sNtm~Bir8GAOa@Xj{R1-A+of;XN51s=S>?rBZ~a#)Q%$bWwcHw^<5Zdo#dLjJ^8@- zck<1=4MQN2yxxq4`Ad4MV#)Nyf}uX)Z&g2jjY3N4cBAElpT9wQXsGjqmZus z;V=Hel8B1>xTxq|b3Vu8JwmTf@`mmM(P^{us3^RPG7|9@DJh42q^uU^o`gC2S(W~> zO`hxZQDc)OK?`)W-k;X3j(t=`a{`ykVjxjs*zM9^b4n$5E_K~cnoqg*XxTsbsQWfkUkv|Tt+OcZhAc-#IE#4}5!rYMB=}wG z&@wb$-A`!_Ha+&k{+=8@sQT2QlOlVW6%q1Xjw5q~H(hpXte~f8`u_C>REF{X$Cswn zvMQk`aqcFidVm(@N-XPK;{uCxOrd{re9WlrZjk4l(@~mEZ+=|GTj%iP?lm!O3zgub z7u|xsXgkNsZZB77#<={dm6S$LCsoSt7A^u-#LBm)3xO{BQ@hU;9tGyFqXfdqHJ6iM z%%wv?fK}DroaJmm_J)TSb~hBWSMF_1-=lg&KRvZ39?3bk4Lx^_zN$|?Sc(AXI~bua zE8s(cNg_6dzG{JOsDn`!TWW@|%Fs68PV2Onbp5pcrpWw@%YluPh1_O*roOXua%5Nb zhpu-HqYuAt@rfP9vk?Nd4Ovh%E!T;<9kz@mvR?i=BNJTFGw-%TaCv597i&JSjnoS)| zu$h4Tfy|yTw_MIG|2Q-!O;%#c_&(Y6ACgYK;^qyjPz#nSi-LUGpPbVP;g3v&E+US# z95y|6`(sn1!}B6YkJ|~K2!^R$ybG9Szc;z;+8wZx4u}NHV-a5pxZ>8E8emr^Ut&{%Ueg%QoH_xO|r>S-j5$6l9k@TmneRztC>=qvm2v zFSq9=-Zge2+H0n;(vVwM2jTcKv-`EMD1UKiqr_c<(lVRSJm;1Upp4gPg|D4r1N; zYu>#SeN}?z_sg^#wohtQmYAl6_a{hO8y1vLUjmJi-Y+>TWXKX$&lx_me7~sEsh2(w zFNUP13@a|>y4{FurY^!V0l2tBdTT5QXCIK611?0j@dRQ+i!>#)8)4*3%IzA~ip|NP zdt5CvHr!UyYG_~~LbL4fhobQv(jE`+S3XwlT|8?VjoysJ#ulW!vm&UqH^1Zsu3;9} z{O>~1m|&P&%k;k?iV88ftmy01u@>gvbsqGyvl53&WY>=`z*pjlqBE@aH?;U?sI75! zHz!H!g1>p`;7O*F^x2&c4j)KiN^=`@)`j*t_Gq(5($Z>JxO%!1pPk2*IuY5h{QkQq zH`J5m`BaDcmf4t-uQAqQ?u+UkW_JDBNDgnKkLc~d3W;2`m(+DjOW$DpRWQ!mPmNW= zpce?Eqgku72>hRNPJkyYTtMvp75GM`L-<4sbh^8e(HhbWkf$3|)a@TgiIN&r$zypK z<+sRT%(`7+yzz?h~Xl@473%}hYw&e9Ogj!lAkQbVT$=tIDZHn5^t%|p-Fn@Amk zXs#~b{++be9s=c)z&J_3Hk*?{e!8MtsLO*<)W!JrE(h0^kL1I%8M}XgE-!QFcZ?LZJ&VF(FPfyNpo*@V8(H)5L6b!u>5jKsdR7MgUT`hlGVF zqtWjVA;pdE1Q?&)HzLt@GFsovS0$KMaAAS5Go&-f4JlwVBCjkTGbbl7O#Tb`qO|Y0 zs7GUii?M+K2qS@i3mlHS5uAO^XPZ^d*7)TdQx%_)IhY&-_QI(q+EnlibQ)W#YCyQp zH9VEd&S*@-u6`)$!gE@*H<$85wC`9>r=1_&hLrT++k_ri<+)zbLnt7|pCp*z~9sx&q4-AI9t6VUz!PiNC<9rHl*zcupDOHnaZ!Fj@>)<1Sr0+ zDG}odCvu1S_<8!%8Q8#Xr(ICBb8vQGG{`*R(eJ||M^4Q9Bf(yg>7 z({!yX>^PrCz)XMRs~BYW1c8t(Bl14hkheO>dnc?hKb#k?oMq+ovl2x-{NPFC^(S~# zv{<=ocev{=l}yd!{My|MScnTlOjfYS(;xTe0;^De0p`VIPLk(QQ-%dFR>KK#Y4qX3 z9(0>8M#^#RM|a8}wQi43Q1y>?*K^m!{;7SjgG>*pk7!%s$|$RO?e0lHpb&#U|}|0d_&w2FgOCli~Fk#A1V%i z;|TI+Y|0f6d2_R++us;2-2&bm~cBD>cYzD#SLP&p0;t_eD}l~z+IwZls0J@{aMpKWzu&x#BC{D1wMG3bY?Gc?N{{u3n&%W>}!u)fslP zyk{-(GlJ~p;Q``xPlm=w9A$c(v<;nq=%NmRw_TTF9>xuUT-9dmCmhxtm#6RkDRlya z84S8PdG>HD_WDnhsWf&sfPN8ssdfBel&&xb^OBhA4LTEl$h6tKo5f5B!5EpnCjp~| z^;ld__d@H^HTO{R84ozyF2|*@+-fh=k!G7WJwFWVsV^hT``#u^{gc!e-@uy?k_Q=B$(*aG;&;JHK!N~VJWlPTZ-S3xOU z&o}+Rtnv49k0q|I#3~grTI>l86Nu`rl?aJ5lk@cfU4v>fyM7U7D9qs0+;3d8xaw$X zWye@?hDsLRh6)4iKTpg ze3+G?87MJ8?bEHsJb9&DhW}@3CK3ZwAvMGp5<2{cA9dthrG>h7>^vz+dS?AL0+heM z+Oxf|fl`Ai0~Nmq50DJ=KR$EpEAiynUiH!P0v?o4Y~E(9ePU$iQ@eLvZQ&iaPAzQR z!xtzMPhaq1HMesiF_l;b*DhphXucSn4uvm9rlo@~{LpM%p(PP1DRw#V|K4vWkc;1Z zK}?drPJE*ZYiF0Q<$Rr!tug+@Bc}q*1(<~m*&H%s^NUqHWFzxQwg8nCM)1604gv0y zAwHJh_Tw-LsZhU2L~I7LaLuhG4<0q$rnwrc*;QmqbcdK7#zAT3he9W~V0SGfk=ong z8*OD6NPJqrw#WvR;sUrJP)Lg=31d_DjS0vd&9TV?O;~#!wr-MP-Iys*)x2~9D@7Q1 z#&Y76D?~k%Bo=G!U5zpk!jFYNAzh#@L_H9Eg0B{E;RPeF$d^SWW8)B#lDcUPS+Dpm zVt#%GrrvOmOt6!eloSKPJFmI(?ToDiWSmsUK`L1+$pM~ryx>(k+elmEW?AoOZhCKwp@Y#H;5@@Y+g-<@Lg+_50=mWg5n2Z_!( z@GAY*J=c)pbIAy4XYc<#=Z4TiMQx-vS7V`h1Fr|8Gt4y0_KK^*wtZ>4?-4Ht@--A= zFe6b*3Twy@FC3(Yae0?tiExF7uh{QGh+-@;oBN)jBJ~fMd5A0>8S_4wVj;uAAucx1 z*Rib3(J>)Oi6ge)h2VW=*2={bj|oOl2i_k5wqrhEUl3G$+Eip*8}V4#Bi^HZ?psla z#bH_niF74%wIAP8d{k3zJ)V;|W>2Nx{v63t8_TY*dnUq@=4sN-vIy;wz*ip*qm^81 z*fx2kAF~BjRN`WB83;(uO0-cN4?2>NV*yNZL-yrV3pk#nb#ITWmva9+u@90dX&HL% zD)**WN8)1T`&1I!>&#tw814EI{|&#lPfVItbRLTgDRt-VwC8vNmmQ8b8dh2*uq*4( z2RvMw_DUGMJkVOHAoF%YM*>#{#SnT+Q9U(u*q<#^Z3-|0H@8Y5$ z?aWI%Ichj?!7e5?UZN?0jY5(yrciRUXD0{n^$V%XPRSe`bV1<$A<9*T%erN$3Wmb( z8b@k84l_Lagp+qE_UDyoriQW z`<9x31|+L%qmR~bKDvm?k?>&LWN`@qvwC88goLocpEflNqu*PT3)Z;v2c(`qxHu&4 zv+$e+SBMGk8Ka(2-^H$|4^dh>$A{KvtD(J=n~<|6RM>mJJpxk!C}o(R_0OYV%<}dm zBXKzE7pT14k0ZS7@ayR_HvD<=ToTdkzz7+enfpIVlzlor5lqwI)m0R{_#|5vAQTJSr z=UIRW zN5?k-j$_+d(mWvMFVt@kU+98@$my|b7`1;&qPn_ksMnCT(lT0WVUFpbYSog%!d3*4 z=95D}z)>}zipvB}&&uSay|$-<$;y+$jt<|xwvVs1JdS4}I8R+>-wFp(8q6dBt`Byp ziU>@}*%uNn4So!lhhXP>QQeB5*vsQSc?m2vUrC#tGZc^SiJmsoUJzg_l)yQl?5>nU zdOTE8{SJM>ATXtB*HkyZL8dC>O=8=HFKr0rFp=;+{3$D7_>gB@-zT5Nns?Qo#JS&^R8)BX(=@%G|0TKo5wbul?aF2@o8~gI@_R^s zPpoGY9{=Uj0`bVM*;g59-46{LX3*-5G z3ZG_ZFU1UUWU=WbLFIAP?PX|&wk z`-p-SSk8ABFi}37YH8R+mDANmGSj4=8i#{lNggOhLx`}^OTzBE(#yFq!>Sa>!mN{1G7(o*kAFFZdS9@0D;r7{k&stYo`lGV89N63O3cOhI zMkzh?ErZ*~Iv4&DE?~^e8HweP(9t{P;+V8#kHHfDp?ACTtiU^I&1)TU2dx7k9RS7K zSMvINtJD>*X3jo&mg>fbF#DJlWsn!lb;)dKmjN#Lwfiy}39IgMb?_-A*5Oud{a91@ zrjf*CuxkN;=gLP>@FCBmN`7OGiDPGV^SOD=G>+R={hp~dV?j zG6W9UM9TB)^@aTboMEx?>qna=ySebhC4B(|#-Wncz-U`+7-kE}{+yp4A600?!((W| zi_%m=74`JbyW`iR2VhLz<)6K*vDj)mK%zRE?<^o&S9>Je2_ydS`Q}JXG}_7^zUyv+ z-GB92P>qmVzlAyF)$irL%fR_32?9@;Qz6XRYhHMSebV)Nk(CoN9&h_Zzst=I3q_@% zOAJiR{4+N)$#&}n)R)eg^hajv-glYrbpDp^0WC=CQ1`8Zi5(9+QET9>L`15(F7v#JW1Zl1iX>Q$-jLs&-3+^l!4m_)0IRq)RM@qf&tN8kcb5POGH{qMZlfT4WbeW$ANaikI235NF zNgje@x~R#Wu(|#eFp~TGi7s*#Y)$FStL%LVatOsG?@E#~%!Hhrpra%wKWtRP3ncTm z!w+-}&Dy14{lMge*gfNg0rk*0dC11#q}Gu5&!(3Rfr$2>&CxSmjQn4XS&4%6Up@Nw z>AF$>)g`4EO#FX45&r)#opp^_-p-dBghB3+|JiOn*K~IUxL?wx48#A`#?%7H{(T#! zOmIUT8wvjX+ld@M@ZZPGO5maYI-^+-3in@U?A&1fUjvy(7Z_6HC=!np{>X>DzwPf^ z{pR7L1pR(4E41!_`nqhlg=dIab+AsS#9^LsK7Qf8sjGLeKaq4voO^w;VmeMj3^c#Q z8F9#*>B~ud2UFU(#v7S3QE{qMhyvBkde3<}O@+E^-sV8JPaPU~^dBcmRj%RN#QA~KCs{I+Ud;@D(L&UKfbov53P<}ceU#pozajO zNO3TI-O9IiyFQ|Hw~ch#>@>{Czt;QGe!cHCbCX7?>ZJO@y)a_G8`u#tQY*Z82esoKt#s-PGVT+g~V&!1iXtguNuuc80?Wu8+{d5yt zTYwSvhC0ruPZKz#QKk3!&P$Gqpj>B6@F-j#;#x!stv?%UP40VDMGLs+5%Am}>8R+c z7p_LR8$yD$BNBoAem3eXA}7~TfWPNcpQhy0f%|45z~B7oceowxkmx*oAh*a&2IP5> z%&~;_R^#~IJ|^n3itWN6+&invaNVO|9q^SVZpxo|kcU4JficM^{X|i0FT$Rz+S`xyWbRcz3+!Gap<5`zhe;pE|k)8@J1{;lS{ynA&~z zS&>(;xomA*a5k@=vF2#6O1ecV;7S40fpLuQPwg*uZc-taH%$|<=N5ChNV_8OEtKE~ zvHY93f48kS{PMm-fl`C;{cdnUSzV*^RM*_nMjes8V0u3ksP@wkBuk|69oKh80rUW< zlC_RtHZ|^giaLtR*h`tFfZf-Yd;_@^!OrMX61$!9+gH|M_+(AZ{0VM$=h51nL#<+@ z!T63h^GUz)tf}1#lgGinoXs?lOra)~;H&UZ>O0=U@IK-z1-@%^#DbPyH;xwA1B55k%xHjUgWa{HqyOm~lxy~%B9O40)pzVO^&ypO(z9fs%nDjTaU!59T(gw;+h zXa!P~P?M36*t_F(yIsr*^1NPM}Y?Pc$|SW0xmhsTi&DYp^1s?+BD+l9PfH z7~k=9`ZtNNf~#zO*gF_p|3mL{5Prk|$*WZwdixwpWDm;y)>3Mn>`Ymjm+!!lC5ee#Pv5p_<6D ze5I$T95|5AP&ZP&b&-a8LfekUMJIjQFeyp9Pv4QlK=8O?b%{Is=#r2(#3EG_b@ysq z&2Q_pI?k;7(E2Ll_iR=V|91Emoim z7HAIaNJZIP8t0D#nf&C6XI(*nxig5vgl>ONpK7w4wB#=e05gI_s(VQMn-RKacp5ap zNRMo?XHa0#tYlmBo-jbU(GXdE;(t*VEa*RF^U{$h4w!H?O2oOI9};GJyLhHV$x?_D zNM`$p3da1~8cV-WQ8YAd@8N5U%_8{Dg@clzuqf^RYnPR`fh%hyA;saE$yo;fh0pgw zyLVWNBTnJDRJ%T%SUmaqVnauuL951YhX113AN;FbszQ@W)br3d;ltl_X=B2Tfs(u& z4zp{&gRV~s@yk@Xl)Rid|6Z@owZ*$<2`NuBftx(ZhNNya1@CBfHxmsbDTP<^?FERYI?Wc{<*8j?&p(z z@!j5e(fF2*fB(JkrxX)+@e8V#{)3X{lfhV*kaqv4 zP-eF$pFO+Jw6TwW#e+Chh5_+-2!&A5&JCT zf@#jz9264Y`1XxmPy20hvp1$7rs~+OqC*~I$Tfk-yfAz4(}lA=k0j*a{6Zzx4`+L+ z4&LkweTRnZP^vAdgUlMCz^or>RJb3SDhwrw?D?hUO|4b;YF)*(-2d5oR zKc`DD+nc}#E0wSWQVYN!Yw>pp)C)US$|oLR*H&wGZ8{qA%wdC!)%?*Z@(BbSsmUoS zJv4FZ%O5h>mTvFO%!uIkV>5KoEFcOfa}GPwuzj~z^T^nKsNh)+)kl{oyj;tLD8 z7UO#^4E~?$uJfA>=2)<)fR0PCH9KFSL{`Lw`Pr2tk#OXX+&#A z?M)Dy5TiyzJo-D&i{D@Hob%jQ_uTvPe$V%O#`kDIgMt~Q05>|ZV`5`91r06s*i>?aGDWg)mdaqlkh|%pUvn% z8F8MBHWOl34(P=FXrv0qZ<#)CI^U{U28dnFgjOtXLz|Nt<->Y8*K%vcdfyypD~vcY zF6Wbhky4Xv%g4L2jDif`6(^y1qARrvJzorbXSxv>k$ zp6SMDvIub|En>=9kTc{&*=2}lf#V$kz%;Z!M7t*6oQ591gWc3rak)P|Z7ntL33P;W zCCFY!6w3DZRH@&(TN9ote1x(i-O$4Hye!DR6a#ex#k7;jep@(|fpZvXt*=iYOf^~$ z{r~KO59b9`0z2c0^R!y{g60&>?NNk2SEJS6beVuaw14)(K7Cn&#m@Pw0{IjbKMcpw zrnxyX%afj2^(p9@RVnOm$Vtg*|4of%o*ys{$4v(ffo^z!o>WeWTu58EqrTXHV`!8k zz5;2ULAp_)4(G zDUok!BTqWQeX}Y}0%LDSrw0l^-E$wlTjYRWKIUf<<*isF_rCqJ*;}5wqu&x2wPv_t zhVb^j|H0>p&C!SR(#Yb&)^J5oqs1f4TDsfRHKL}EpiYvGid>+fU&>uZ>Z&~fp0+tf z!??N-R+X@927A~BtJZGrNNS*NSlNIArRFsc8~1wNJ5|*vEB}xg^i66PR}HTF@?O+9Yx*p$EL4!Wu5le4 z_6NUBYd_!=t7H3FAdR)Z&cHaMsBBuLI9%tBr=avHsxiX?Ln{K}BK^j`^rLHUsH|Y`LoZ(@vC)nu^Hz_f7n>>Elp%zp}vPEhduj)UStViNgEE^ z2L;IDU51@0qYyLd0<5Z%$>Ku`!tNstWC+hw5p;odnIHmOOmu| z^CvWt+@g>Pa8Y?l0k$sMaNZP^P!kS`{^OO@w621tr@sklpXxN{4kc7jA*m31{g%G~ z3|%HUU7lujPKg@3iVeph`IMAw!EG6iE$rlf?0(~=xDzx^|2AWLh##N}zZVGuZjZKv z56pzEXPv_ECC@`Of^m0h+GXM}A99%4*L9&LLY@91db)4k;T)WOtwn1S%zeavV<)5D zAQxWJ2!i&sUcD_M(rISb&xuTlA;tA3Qdou9pub32;B>fR1!J8@ip7iMFD$&5b+ z6HH=6L&>7$SDPOFYeu8Du7KwmF79o@Cn=FL{Y1}$96^tE=f{|M7gP0|Uz#Vv@O~K1 z6=ixEQ|M4q{YG|G<~+BoK^nrK)Bt>z)8g?~JRLYy17NqmG|(wdZXW-F!$>VhBEJ^x z{%(&QLo46fkq$nTv3Itzn2h^+)IxyHBm_ovLyz)}N}soCN}hY4>S$1HDu%KKBbU&u z(-xbGlQY!c!DgEcgeuM~l#tMxn|cnT1VV@4s*V7>yBw%?1_0eQ89XZ8{iR{kFbV$@ z6{nz3(%c8Es?)23*8$Wekd_}33dY8wMQOlV5wgbNDlIKiV}tG)59#z%4d|RZL?sK6 zmYiHnoa@ZhR`IRNoU*Y;!3A!!TBVvE?El!aym*HK!&0vq@1Ba)$CoEn1`2lGid|2s z@1A8HdK4^TAn!0{e z`3?D|(TWq|NaIk`&I|Lpu$C5?Q39Hh!VyupNHmX^ldF=<>pe+gr#m z5o&WQ9iX<1e1X0t7V_p@*D;EB*__mcYzIa-JNuI9Wc2yM&NDqUU+p%ABn$QyMEMK+ z-2Y)!T?aV?I9qey-1G;9UZf=PMc-7ePIQy!9oJ&RPo4KbHBoA@smDOiN^bbWbbjFi zi>57wT}S67729W1RMVeqQRRj5=>F1gc&~2t!+$9I=|2G=88gVHcxcTbF|nSccY_VW zH6D*hXrn;A@amK2M|c$Y={f(n`a?Nj>Y{R~jx%>H{|4o?tP2AvY1h<(g*${*d}*;={DfH~;Ink>Nx=Iy@amsJUMRhQ6u+>@vc z3=4EK(yqS10SS~%DVRYC?)df2LwRlI6y!MA&$hqD^8ysOWRdOZ*#S4uknnM8QnpP0 zvkoCMh**|qa3))b_q#7}T|Dsq6jXTQlS zH|PqV#4K;T-G2OYq))B3Fw3O6|Do$FGDs|ABgom$SIi0qt`T+x?!Lo4;+-`{6Mxqq zxVs4MnRt1;q6-U)e1!08SkBXWFbofA;jU>AcN{RC)&B7qmH2g-Ivb!B^thu?JRP(A zMMOI9dS0Q(pSE$IZo{8l;I*uizwX-TBWieKD9UH3kT`b*`Q;sDLcIwI9b*B0rLiT*6t{TEv~x( z^66-8YUPa>g2yrUyrEKsJmZ$KG{=EN32i++pg%;9ixu}lYO2AN8&*#mc(y8{bm;s@A4?JuI3n0ni%Ul@E69`_g@+7 z(%LQ9SNj4L9!Q?)Fh?7A*Y}@!(d|M1y5Y)&shEby50M!o7SJqiShP)Qf0n#r+;j7n?)gYM~sJ3Q$njuY@t7 zcjP9|*Tn{n-)WzC`;1;)MSB(pkrXBIG%HH^9HK4}=Ud7fOKHfFNzTRLP5r6)<&CTr zlbS-N_I9T!v7lZ)OxFl{3;bGxY39bsavEgW=Op!w;huPiw6N;Eskehm*|;)DRWd?! zw5g$#weiFppK5k~f{kp#={L5d3pZifP}-G(YY0@1+&rzVgOyr|`RHFE34@3lY;Us6 z5`ly)iy`?5;d;@4;A#ZGcxi2h-L8RraF1o+)8?#gAeK*~eaxT%?hHYlf&*aBb|gpI z+Y*(S@FIOv?JczDra^X(F=MljA3n-n5uqx-;jvVqBjB@Hz8W{f(Emj-C=~5=yv}Zo z-jem#V?jjCtG(t?bY#i2lW*|qvN{QA%aZ)tAStn8Xzl-G$547dA z#Uw((Um4j}8Fr=vlAaZsY1|!-AsHPupf8WE6sO)GG^8J5`WOu-B%?N71Fq&$p}X0) zDVL>03UXKwlda;*Q?vzXxXEUHdN3YA6Bnu|c%9@u?Pn!ffj zp-)+45*^;mvUjOE{;5OB|EXD7X8xXKOXTha5mGu8Ucb^fm_TE2Ol9$CgK^ne=iaXwL88H^794Fj&mYMxb2)<}`VnN*Fh8Uyo>= zNO-IqOOp}W6nJnb*o0N(U^}HKR3f)X+cP&X;ruIe#&B3h=d*PYeLK$}YKciLwj|-G z-Gf}bYw~<7tIY6XSuj`54IoV1wkED~C@JLKmpQHce0DOmw=q+wkA+k0w5UwK*Vxdx zv|9RU;(h{u2@A~2OzRC}zU*jB z57Yh9oZ%=*v!h%MTbtf#uFRBaTpLF6L|)5%F-JTl$?urzyD2aVbAmk>-{p8p^#^X$ zEx~I-uh{}O3sb%W=QCF5YJF-=M5Okb=vbWk4D<5FEn$5RCKo0m>}@mVY+0AWVDrH9 zzaGnjG{s(27SV{2iBHIxa}uR^TlEXKduu~BxdEic7e0KP?WsSJcA#szoLsYF*c5@# zY{%+!#It^|slw}de&z_W%d`+5ViI~*esA&hw-9ec>TcUd*kyzb?VNo_!^9DFjXa8D z&uyN2NIZXvkK;4?r10TMI>3o1^fhW#(pyWbNeaXvqpNceAu~0@yga z!%{j{mKR5loy-Qpo@ZEns`>l@U z|NbN`df!BS>^aBYN{M+rXmNH`K7ns7zx%3|htg(iG^?!D>6x4CYZ zf?6Up?ltz(1YGl-oUvP*axiW9QJXvIWUF~;j5mmZcl!@x*PH`n3K^J;lm@)4Nqv5D{vPpE*Pzc3!;fQqKb5Z6NF9Tx zkHBAaz~8oV0X^yHjHD0Ttk=3pZ-%&ou5_VVK4{FJo>VvYR{7$}TX4=cwgg#Ln^LH4 z=kf6u%MHW(1bx2$u0BUxbico_nGZ?ndFpXZd1UAbaYR3N9f=59dH~9oGWD59Zf+)8 z#~vQ zu@7$(b)(%JuaCIbJzxIobTVJVA_KY()X=m~XX zk#Y59C+j1hAs`!XPrs;Blpq)7(tIV{#+u$ukUS6I`8e)Qcmmb?uH3xubL4EJ=!!Jt z9rm}%H2+M+)7AIR3V%mp+DyEww2tfoMS=vESiMLF>tUvI_4Ly!+RfD``J}Z_E9?xP zyQ?ZpthVMY9!50t`Fj4ykDI$u4e{zsp-S6czCB+%a_ZS2{?JV4xaU2*EF$PiXOFF09@aRpxmLK}bS5Y6`;DKfua~^CKhV15 zwSiZCQmAQCf5_&vo|u?5dpNzg#1mTyI@U$kF!dK1a;Nnl`-^=VpCXrgO5g0hvdi*t zrykm8NmNkCIo#+G$WR z<0(E03hj;v4KOCDb{f@2p)|j*%02973lQV8U%>VUJ=vmOHwO}4-k(1GP6wT%BEl8#CR(&x4X?RLkgFo0je)p_PsS zF*R1Z-3P-}KwiR>0ZaHszX)#zX^Eu$rX}B+=$aw)Ss%S?x00CmB_joy3l_K|Wjv#X z(&X4GLI%%ir5YXUUyF9nz;SOB{WXv;sfLK4?kv_@;?>$|(*H{R+ zkUhnTIgQxzyy5yxKubWTvQ7T^<QF%b<@@hOHf#^&B26s%6XhuAbskKKZJ7rO&1Y zQO5#dvlSeCpSECc7(_Z?w&rg^+5(XWH=j7`#sO#QiD$LHTF&XkKvpkjz3imrz7RQC zy)vnWO+wF=MR@$N7blp~YRm5JYhI;XK5q@U;z4Pwc{ewT;+6g`*|RArCRW$Ac))N$ zLZ{<%UWCsV(#EPhi9b5%{xt0?j{}glR+KLW?vzA+Cq@O+VYAzGzGkS=_Yd9Cdg{&@X9x6#L1<0EDCKcZpi;78i?Kfs`!qbInCou$_)+Ge3}|dQ!!%D6*UtYD3*4+q zkdTfMU$O7Un~@Yc$SdsSq&jW2MOAI9p=;^-xb!+FgpHL6SQqFA3$?z@SGyiK&(S9- zB&B!M(C01vE>q-Sj?Ct)h}yLrV4cTx`pePSn-MJn#P!c1_h0ZY3#gnBvrR^%K!9YHU?=MZ{0X4d54c<2;9z;yBIb z_uIGXT-TmXq%Y2Wh%_?RNM1E>Eu6irR$Gam5mzQYFe>PIOwKyA963@W=63e1w-SS0 zMfO_ zkB{wcBufLaC4?)wx~oXvC0;CZ>VofIVNKB*_U3cM+Gp!h@@~s%7cgqPIzDBcoZDXs zP_bRh@~-!-i)yKuDH*kf)hP-c$xlv4KHeT-KC3NE>Yrwg36Sh>hfkrDFuxS3d;Fa} zb)&bdV;!nsdKn1YG93=FS4*xh@bz}}O$ymb6*tvfzAqGr;*<;KbCEB~txew0NQ=_6 zp9)__HiBu;iiZfnW{71A^;M1MwFjV(X#(xshr?*jivT<2ACt$@!0E(VemC?u?JILN z|K=6VMlh9A)Mk2N5je;#uLhP&ZfO|zieD76Ab>{9Yw9tK|M1{rHc%?{@F->eP}!!Z zTWyP{bya7;>H!brR!3QEsnwzfcnm%Z&P;$^d(3A9KXf5qswvho!Kx$>Xg3Fw<_>u> z&J5#}LkY!%5#RHv>ef;zW9>vP5(iL92r9aZ_=WdS%28Wq3LS0c*TQ%F!M7WSL7ZN9 zcd%REJlJw)2G1%53@kAF)A5JFlLg)b@1#h4Yb%i8D`lnK!w{t<@^Vd1`cyezsl?tu z)Mn;FbGbx)kLFnbMe)6HU?0|E2%~Ax0cS*Ef4KVVN$k z3zO)?lVIVfdL;%g@$$qLxRbxuWbQDY5v-u4t4n21)cT1gBNbwrLf(Z|`H?~c3V;7-5$a->o@CZOTJHvVjLeoJIF){3Tl z`GZXJ6-DeS@!(Gt4-TOTc?C}u=C`C(5My%48OzFWXb>ugtN9M1A&2;2?4cqWVF^G+ z!|6G{o6X+S7__C7B~k2Y?Y+%PPBdHDIb9OkL#f%HaB71{n}$UBgpRh{CKGGYpLRUx zP7d{cp@pKX?-oW0bwlZ$%(|jw8Nus{oknHM*R2=tCtDxG`pr>a?;IJCl3SDo1SRg| zg4xkn8Gd?gkO?8LG)WMrI|KI>(E+R~R|1CuwC^XDa{J62ZWr3x-oCH& z;BJy^D4=dOGI_KOHCtlEOe2w9L3{>euUC(9`62kO$b~)}4ygLPTN<<_ry`YY^+{4? zPL3|-deJyoT(H%*q6qp$z~dEYAT?PHB%&g{+ngyU$9+a}m0el)v}29n?e-LFMSWs8 z2Hv5~^pdZQtqk9Dl(Jt&=ZNQ`OA&|@)T5p^$11O3%y zypG)g^?I#>?~(>nqv4Qh+<(@`OV^R^sE)t+tI=6lLSZIbvkPx+i=BbOWrI{=v7Zqy z4-5z+fnjPZ4yFqixLwg)$|u>X7YZ}cs`>>q+T&OSVfZ*yPrB=N!)j#%jq^(Cb^Ou{ zl64Q#J{Tm3)vt_5w4qJbw2Lw_ZKZwwDjc+CBUlW;!w= zECEh6iW=qZaXv3f$?IZVcKGljWeVV^bZc*Bmu<4-@09Z~>ekVlI?=tZKnLd`KT6PR zfPF5jN2cNG`)r)<(|n=3Ov)Pq{)+H3_hUh)ms+!aP}zO@A!rc_yg{kR(k|CzPGbZl z65nqONwYipMJJg76jB8>elb7!qi^$#!eSh^5>S+>1i);t~O{#+Ln|lCOE+hf_9zlLKRZH5}oWg#^QAE z#_cQ{Cc*GNwO7YQrdC>EjGt2%_TwU(F0-}mmoGpv1isfs9z(P--6`q1B_7!$EQNQ# zY4T^gsm;*r*|v=PvbO~-^YQ!cO`qcv+%*X1qx0FFrlJ?dn}myWAKi&n*X1<1olnQ7 zH6_O+?UK%eSs#@}-yFIP^WaQ-c2RjO)l+RdYm8QVG^ZOD>^_Oqs()R$02w~?(G3?T zuiSx!wnT2aVsZ(w9M!D0*5WCJqL~IXD(~XSm9z9o3Jg~b3ZjJk_yyczwa@B(=DAwc zA4I@qDS1uK=|Fj935LHDj&Z{4{9hTG|d5cY;VxwNR3d?L1!bVLO;eXjr;6GfK& z=G~z-Njq3NH|!LJ`S{kGx#4%Fp}i8>VrJhloB(x0yMfFN#MYS&jd2sbH#w2?a> z_qC9sgHw}_8vFH!vT`C0K{j|ymK2mDf_aLe^}~2W_ufdEBlD-RMmL)q4|{AI&2bL zI$EsU;81QxSCk~9T0NO)ae$mni~mj9;5R>U?vJb*htb>$Hse=5HmZm2zY|u&}B84IW9N@)q}xEI1IhjN+{Bba{@Hi*fiE(AMtEB zy(iM%?A`T!^JbqsouHws({C^}V?v$Ma@|`N-0UPo`|y-k3$2K-i{dJ36H!3Ug_wIP z73=0u3)3ZVB{g}C2Z|n{Ou2r}=r!Jj&@V**E+dyuf1fr_%Hary;^CM>#*^GCkIk$> z6_5H3Cy?tL%li|lw+)>>p|9PpR%b*x57|6d2BpG19WO^||9V;VkpGmm)aryo9@r*T z>#HNFiVcp=JXLb@Hif=M>}-asMnXD}9UyXpW1*ZJH){u)9xZPRUku+qmnOlte`LGeVM7q21-%SyP}$Pku_1j?95=|)oGZ2~D0W98k752#jI+%k4oJNncn&Tu|* zIFBpfCqpPoF9NJwWkdNRnh@w2Mjh;-$^vw7$<>dkzfoRU)Dz;3*_jXCrN_>DL=1SF z4VKz?MQDCNYLj~au5KYlRxCY5%WhtWuYkg=#f+3bmv+*=)W@Zk7*5{sx|+Ir5I^no z^h@%+^ocOTwWKbf!@(IMS`IzuF~9G3e8ZNZTwj>*T&7$a?!lUWnrDtvQ|f?pyChI7gzy#I_rB0 zFVy+oT$8o!2y{farVExdBfXWZyS{|jJn70*BhAbmb_^qY@In@Zb@>|IPU*l9e2}j68oy28|JbA%^9$r~1L*9vfU4w~7 zX%Ln9B<11wkrP$1?zP)&YXyWRc0=f6hCjoIEBm#JU)y*ZH04GUqqqXZ^>{b&32c?M zeNszIykq3UZZSVEw^W@1+BGK*tlu74ArOBRw(%Qeuj>TdB)ZZSMnbl+T9Bz0C4Hx1 z;XE(bq?lB5G!KSyK9}}XC{!eQ_+c}<2l~JY+!Xp;98mwkW~@$Pm}Hr}psOcu4=$fB zw&Yuz8WY z9UeL_{hdBUGp8hK5@M^6tByN|$J}OKjyl^%M!z@l!cwZD@RlVQRcAisL>K4#nj$-1rc3;s7qp^mpQZjwhr&vlpy zJ**mNQWQ~KT;!VFNW(Q}%B)+D-I87&%;@uPbiF2#Zd^d+OA|0eo)PUjW_-`P%`3K` zEhN?JUPy($x zm4?|!Wh4@#bQhD1$Js;D7?dFuxau*_tl`XP^ikyOnt2`v)2tAs^SLUgQ2(jm0#)CnX9JjRw^%l@RC&~d9j(8jBGs)lE(EE;9jEACxI1R3RKRa+`t@rSi~I|F{C|pJ z`Cs_Zr4<4nG9~fm$a6^>K?Cb((qiDcl(|~agkkSeAWUs3wl-|he!Az>c z2hnXbuqHto#&!Q*b+SD`1>u>WI~`W?6cPIxwXIxjAv(lQEyH>J&EEtBD3bN@vk?T` zr5NI^3_R~09ahgR?|EvAHP?mB`f$`*Zhgz-c^q_fk?H7h%FZFFe50KL)%fgz$UhP2 zC&qy3LiTke0rN`wC2>ar@U^ac)fPyn0GJyY zmSPUzq*vWayky201h5gBed@*)h*zKaY=nxrE)dg&j`m!KIw7l`@Eu0V<WQVKV7)EmL*m!f5Lf(M;tjCJ_x1bl9=n}Ywd1VBuO@H~7B>H6*Sf+|$ zcHER93?p1^PgY*U z@rs^S?qT1&WpcRPlBR0)gODLo=rhSA zJICCdR9xPgt|Sn2tLm8Kck*)kvhj#^-RBMStGbB2@9!E?3x?elHs-5kpIo?WBeNVY z6BYj!NN+}eIZ^*JIbO%R^0acA1&5BG|eqL7?(Q+f$DSo;qu?=qfkCdO|si#t@Z&y1BX2<4vVyYvIPS5W_}#AD~Sv zG+@c74XO#*`0j!3i;${;bV%??-^mFa-X7*F{wy7D`2B6P=X6`*!81>1Tq-p>isU6W zdQU#{J zq1UaS%}r=YwKIlPGon_!K0!~M`%BO3{FQ2*uIw5Qrng=kR5o2y`Kh0Z6f7kvR2^v7iuZ| z2empHfRI6>`wTb2bE#d1rNPw~91{+6WIK@#esn+AW`ZHTt39c}-2+l>&o^r7|KS2S z_Uelr`x=18BKD$ic`hdVM&+ymlrYh_Mxw+jF189hN4}z>ybtORswyl~ucjNE(U$2fGNqJ>nR<)od~s6p$(I) zMl|2fM{@yB2*~OVBv6g#liw+FCiPyGdkj+%I%2Fx`W5Yg=uU4;C(~ENTFY-h=1oCE z!O^b6ycusxxb^bVKIq!IaPlQ779cz{>Gmpeib)fq^i5iJEt59Qc(Gl=UnWE| zko2@|QFXFq$$Kf7S=jzwWy6E~RJkfLs@U6rH3&UcQLCqBQ`6*zBkZ)cx6;O`I!iqOL&ZLv7l(6o1P_1hQtT$*n-M^GbKnEN^FOO*k!}W%D{am@S(k zg2##IYk)0&{DSVP9MQF@KG2E$y>?fRD?b;9H5s+@k<|IZ@!T0yPPisv->-?_D?vpCNij48qXW{5bItB|N4w0#69;Z zKJsV#`@e3RE$*NA|6BeSPn`B~4?*YntQ#4|(Q>2OQCv@1)J;nM=JEwE4=pJNTQ{k=&C$Bod z(ZSEA^SmrrzpTkG5|h_plPyFIRR9N+Ver~b7iCAv6nHcU8RU4X>=^_#lrk!AO2CSm zr3p+Ym&=N-cFwMN^A{eh3pV2|&jRDX#^l~*DNq4tbBBBiQ^S#AAOFN4SP=6vvv`@6 zdi$k4bM|08u+fAc2u=2}&*0K>Ef#8LTeMk$UDXS+p%1Db$kb{(@%j?l4(wjl4{R6c z@XF>TdlW%RF?m`Wr|z2uyei3WKQ3!ECSRY_Q)+(m73_f-*}&#xn=fXE)C_s^;p*MI zoCP6XBRZiar9Xu7#acP@&+OOSQrGNPwHMtkLn|H;O?H-UD>KCltrQT4Lbs@)c^F^% zz_EO`9giKjFh>UC9~XFU-S4jVchCr!K6?$BIA}ZPTiZ!!)eVYh8ocwPEBSmG_g?Cj zxUjms-0C8C9?LJ45W#9`i+Fv`$MQ*ORc)!rm1B5KcJ7NV!l#!`jC3llFhP=|8XKbh z!aM}a!^!%-(wNa15u^CEVxAgwH~8GiVNb_WkQ7Ay-7Tq5sYv)sfg;4!%f5{1YPS6O z^{1)B$l~O&#-aSTl6`(4AwLGQv~5ahz^m;YdCj-u9|Qa))$r9zU(wZ7Z`P;paOYVY zKWNFs=O~|JW?MtnS~;FdWR|~b>fi5!tIi5x79D^d5zB#a1Vo zmq*U$i#u@da_w%-BI1;4`iWWx6`oNx5&m^2m~KM_cvx@c(1DycE z)2rb~qdXw)C#Wno}CN|35`_XtD5g-Am13U+SO<DQfM-#jFU_Y^e8b zL4$IK_AKeKx~fWQfeyXZtb^2temLw$Pmh}~Kd^uTepCXTJy##9& z-B!o_d6&|$f1!%aD}wP$8ILFK*s0kf?0gL2Tp}{{B1okAweg|^Z_z>aQUt1Hm3Ki~ zh@>3PhBEL(Jo|(m7-8bj?`nid2{LztUr);o!u}v zTklnyw^Wv1I>97VEUMZ4aG&OTHd3UmHQ6vQyPS`STIqIOnj4t%t%%LfNmDZ2PtmX9 zQ>9R{;W_8KQjF*lP1EN4@`hYPQUa2_To##Z=*^VQ`{9K`mD!b&H1G3Q)ih#?@##h> z1K$x6&AexP)7i=>+Jlohe-xjcywVvKzR(Uz_cwj0<5sTstYa5nm7Us3BTQ_t(J7IA z$~-GdNov*ftkL5Y8z>fTEjUuNla2r3^@oX5Iei|~P`D#uGVu9S>)Cs=!d>Ih0^8Pf zHCiUq2k*o(|D12Ttadt92wGU*LT(E=zuqNg5d^f%I>4QgY3H>}4Lj;a)B4J*(mZ35 zE@M6knW7}X#$r$}Fl^Cw7UTPH8DW!S2W$lUczWODf4LpjZgiS05T+o{UIEu@9SNxG zweyxzUH6J>`Yl~hd%;8-vIb&ocCSa3wFV&~Wg$kZ>ea=&WgM2pM zLPNNwYRh9m@-;APfQj49yv(;Kwnb!U+&SMnMWZ`3F`xhVsK8+QRKqH~7Q>D#v$SEC zmUlDSLi^M^2k>J+{VqXCM|E}HP@1o>q>06PVoMY9!_I5^$ZqS~yq&q5v@D~#{UcE! zCBl3^S4_xY7&x6!I1|97v5dd0_rfTq7*z?(E52NE=Jp8iA=kjqYL_sI(Bc{y!Qxv(ie zE>Q_p$7AL8zf_pgX@>lD&3`LsBVU8rIrpmZq_DhyqB*rjIpIbY9Ie0O=Z!fk+Bu!y z(sxj(PC%9CaTbd9NjFn|YV=z<^X!EMetdgxgSV1DP|g3>oUU!z|KVV|_A}9l@!=ZE zvl;HHSR5?ja;PGEb zL)0(#AC76A7I6yaRwwaInci^nrQvt+-(CHae^`+`EGy5Rhw|lmG>%*}Jn|hkmC!3U zRfmH&!bg)oCwkH8roh=|65YC#RgkJ#?xSPOEqB{HArCPqA^VQTzLgf~7nx z6uPIN5*eb?WJARMSjkeF{zY&eki9IhbwQ(H$hfJS*oX!N2~$-dB|whn?lk4PIJVh z&6KhB&6TCf?*0_71H%xFte~2~bINb3JMy(*BWF*O+xieYIo(>B$!quu45k`#Owx&& z(y`@_ld>Q-M379y+uYzW)026ao|I4>w0a)xQbiMviRPUmxxY7?2sv2psZN06cv>3v zuvWm!SK!jv{EcBj{Wue>yy&DzbW{hbmcR!q71O2eVnI)Fze$zP;*H9)V`YeJr-v}0 zKwL^~GJ&f670t&tiLMw(SgPsjG*vLw?1|W)NtZ&bIHm7559yB|&E;(USs!_YwO^e5 z_W1PfI-TunE6DWe0shiYFg4SxYj{u9JX+4F2!Jz+#?uK$2A44r%u?cwzn`4fC~Jam zolSZOit1i$PlO}^;pXmX!?v%mvUemha-WU2H2XkTj*P79Kb7?cD9#Jz{ZZGc7v4kR zSTAV9VUBEQlyL`RcT4>=-d~2`0MHAERWh^%A;pTnKUV&61sgc=oyGM#HEn(5{KL9l zn7@5G64UY-B5RDOy%taqpKPjorO$a2HCz;}){c5scsAdoMVvv4}5^Uo17woQcRc;Qg zuMP4Fj;wv6#Wo}}O}$AjQRrmOV9aK>do6VjJUkQ@4Lv1(!BFyo?kQyeD^Ngz?^N;Y zpX{H)o&Up#cv99zu!y^b7%3Ts@_9~+;k%U(p{ZY_m(VSPTDBIdN4fNooJraSRc=M> z6Z=~U9ZR^G&Ou`R;)c=` zh{CftoH@B)Ij<8$161$bck-NR&a?6kHq_=Aq1NU6&RBToeCLMi!o^s&gD(!5)Yp@k z%fz3wOSd)Dj`=*bKNy_)CqU?-O#I+&M~YpT;)ec)LT0)8Csq3Q&aCJ@i*x%osoN5l zY#Kpu`4+JY0UYp%yD#?kFN0r-cJgl)0hK>68xm{=x9_&^(!H;>Kh-Yu$qj$@vm;FL zBs%H78+UhY73gQ2!|M$yJ2o?Q-M5}e{dnevA?V2yNp0uN>jMkHX|?kD@OHy#!6m(m(ns5Ok@rRULI=agb8&3ha` zatw}%tYcxasNdZyHSDfWmea4zv!%3~r?=s&C5F?vwvX5Z!$zrc;9m1e;NwIJ)3VAmKwdw=k`qnECCdFCiehh8NM+>fz`t zc8_m^*iN`7G98Ha{0__fqqQ~I49I1w?t_>1Xme_ahd)$4Q_~BdIrCfTejH&L9Nu-s zt}#_`x`W@a))7!3ZB?)V@Z^aYm1_c}l?Fz-qC(1a#q+9fzOy=tZC(?ybLXyL8EqZ| z)-b9u__(@U=y@-eo z+WM9!n@D$cGLks9bUU=RY$I0vsIJT&$%B=M-u4MKbl7!WNbK!>-T5g6=xQQfiFiJ4 zC((K8PmsZePHQhS(PsY+a1IvN&I#~AF>&mH4x`Rpa~FiOKkRNHt2M1rAXAyr?Mwi9 zOOg)fFV4rts?Gw2cF#o;}d#As$OVrcT1o+1cr&}6$$8(EB%S2w|{K+ z2Cy4WMxrqfH>Dnk8*NEnweFxl*K6Ka+y4?EWsP*GnrCu zaSvfx@{L1=TV43NAg4Evr}y+oHm!0;jFXNmD|8o=nc#G~w5g?JDn^}eUs|p<0SGZO z5pDB1%-rPkUC{mD8EfDV{rR(x&zDzMLWkcDoNNOT#kypZAy>>^LM(UvkxBsv_A#{dWfI ztdZZ^65OLVl2-M6qoNKFbk1cnGg~o>nlJtx>GASVN7t2SF|TOU^sbSCC|_O5{Wx5ke{m(!gS^g9|bLcp}MjhHvhO_phJ}UZa8z@ z+E!uI;K94V#5617se`i0jwpL0ZD;chnoRB2`?)%bS5Z%W>@W7~UbJ+_$dH$-wH*(^ zeVF~o?J+duyxyKvf1Bur3(25eXV*Gm{IqkhHLm#6s0k4^4#LNRM z^mfYMM9Dh>J=jx;;<~(kxYK#e7>%}rH1FtKfg(7i&eWH&YZ98r~(1&kKZgt^c|M+6drJv&>yS)Iw!N27g0 z1?`yIKb^eqGfLD+1HYYKd*)PQ!?p`dFm1x~=5-V`3=2Q;1hCm7b*~pE$60ftK?AHb z7VLC(=m8zaZIfD|GbYX672|47LO|8Ul2avB@SrZlD^~4S=-nZ zXqYMC-WM`1|0Q1#ej|AOTGoN~xALV89LTFW(-^+E1g67xrQv?+!tb%}a%nqO(S)}& z&1EQ8lb*yo(zDaFbO|F~WK3_C_P{x~%PDI4(%MC3AZhtKi#Hj^zJ%oAna|N=!!*k$ zn=TaRTEM}AFY0`}c5k^x`KU9UzNRv$Si9cZ{j$HL)*`psDbT|heJV}Gea|~&I6Of9 zp>tIOtz?U)my4*9h9+z=lD1gYR3;VKOHtHLUsH||&;j!&Lc%XUnA#NqHzW+x(%v+h zwo6{Zv&{sP82TT6=G_sxk)bHV{QFwQUJkLP^W!{z|Ay*V;E>RtoQPr*@~%TPMU&|J z*#(st@VPVLf_jux4gLbLiA1)M$)nLNt^bG}>DytjcUgCl$ohU%vjwR$Z9sd~A+?2# zgps=aYi9)HtnF+4p)QF;^(tMxYwtvrmO%iMxw$!vnQiid0%xYJXVp|?D?^7l8Pw>bgIzN`StJ4%l2_iL3EEo5j;6)%2m)=XyG+G&=o_L z;7iP2Tf4}i?(SjpVlwlC@44Q00IJIAeoG^9l08ZZwP_VFB~&?ia2K33?nH(2+wRs_ z>-<{AULI3ZbNAH46B(#@RzZ4ivq9Y5meDRkI)=YmIlJmZ(se-M-_}VB@MfhBX|72S zQ5TNInPdiDJF1Tavy2AU;XI*}(1oL`dZDC6lDhg0k{8ce$eKY;?inzJ2k9P$CP|Mz zVSbuo#xr1zgY3VXvq~dcfO>y>}Fdr_$hVB7#y(qnu3IISd?|hdgau8lB;?R zEGw#a{va_!&epYaq&RC&^%h|5_c7uN6Ak0=S7gk`cFcWBg~UpnixVA>eSn9(F?O-* z;{M&)GZm&t)LNrqXy~7U3ZlvENsPtk-D|wtf(!~$ybyCsajQnI(IB z0X2`5il4?bT@NdQyhc?(3%B^`EMh7S4OnFj5=-u~z%9jQpPmCz;bJYx9-^gY?P~^>GBE_? zVr|Un$7aJZAI}^x6d`O5Wap|Y=ed7AWvjD26pKnCIaw(_UfRRXkTY&buoqXAd7c6gX!1ZeRY~jZ zc~4%CSWV5=n=cns`puSYHWF}PuV`6pwV&6)jm5Ns9pSy6H-XgWLt^6J62QLjS-g!t z2<_yo$&tpANHY(v?$fF(=-^$C19l2X(l6SSXS~Ys{1S5*l!9=bc(|y8y_f;BErx9f zoYGz|b0p6%s{S;z$mQ_E8C!<~35`mxw{p@2 zv__MvwS{b|PVTQ^T5VIjm#$Y|w0PGj@Rd??HLJH}RNwl^OR@(0fQdqsBRI*2(L(4C z$3bLyD(hz+TP9Od-|(M?3*O__rsujNB*u#XPN&)3Bx2`wKC zW@L8(oGI`nZfS1y?dm-`i}<)OwZ;R&I#LUafPab;uekdG_^~=w@%^E)=bv^8pqCI# z;Q|CHg7zAzmkjlO=<9Q02Mc`4wOP%{I@?wH;{2IvF5GQAS1Srnk2vu&fEokzY;&$; zWQURet4N#K@^A>1a0c!cxpW<>0QQN~M)uOLrZ|FNTMHovJ#rr!A}8yfQ=j30a(Na}V#W_EGLDc3foq`~@>L5bTxf4B z80e~PD4C%%75zF_-w+V-jgXvbGA$=P21ZD+y++y#2Qkj%s2`IzRKhWxH6O#YIrV2~ z_$-|*!Y>bT!*w~lM`I%d5NL*B=N!N9Pc)Lcc3IZzyL#(3r_hZ@&!8TPF$tnc$3S{6 zPVOi_KC~7(_BhrbtK3#@cWJvmkTs(NWkPXEzmP^v{>nuIshCY3biwm_=O=vs5}8Y# zE4?1tsLkbjWR7oc0kPKzA&%#-Q12s3HC-9b4qsTKyhbHyn4W&9NJ(k@8t=(%d@qb= zw4+2PG~M#m1`ES2k)v`<#cbuX6~#tx!hg5`_zP`gQK2ZL3FqX7l}*!COQT~aSItSl zB}@SaQiKRMd7~rVB$w*v-bBMdUtA5V^kfi`fPg#9SCK^C0Kpf^g2X8H-# zE; zRc_`knJX6O43Urr+=$o<3oBr-?R`HiYz?x4bL`G!GBE+voghdKB z?AzeYixYg!L>gbzKBCLP$t8SavXHX^H&oTj&7MhDnD=7n#Ia@YsQbd3QRQCli_X)e zIMiR?ne)HT`T6|yIJ{*vc2^$i1s_Tk_SzXr<=(ybS#bi5-Az_Y&>o;Nrgu{wZ^bUp z=Md=kkM?a`!@W4RBaf8sH>mDnmGF~>a#Eu=k7}c#*}wMOHFQ|mn|*$f>my?`5u58^ zrz9M0tRon=`oCm!j&|~uD(Jg5UBLXs9z~;AtxbL4*JK_(AN>!k%2L!)!&X+NnixaS;(%b*G5lHtC@ z;|rNo`x{RwS?i!_FXWyruXiW?@Ir%L&NGpdB|YXbl=W_-WPW_AUPL|kOIqOQUaDDw zJ^eGc!l3FCe@<-q;A@0T(_7(g>(&31A}eU%N=W)(<~e`w0$faE#(!d#wrZUJ8TRuc z6jiO2-WlmrJ3ges(ZQ{Mco-5J+uVf?r8$nPvu$_Z=4k3UevW+rzB`&Xa2o1iV%=j( zu@s@C?TBxy4$@HI`t)gg@#^Ep4gve(YT}*zu$LFng5b2_Wqg&Vw~hBecaEbAVu9mK zcxLCD?)4m~WQnbB_*~7!KV{T`W;wg@_Lg`D#2D@e-&A%5HgejWYE6!JIpKA;z)2K@ zM$(HjkY+t(?T~Q(SU_Mi*EBizh=w)W^T+K`yX@&&8kUl+ho3jg8NR-$WVY9f=c(ge zg~$cVO(W|=Ws~V3Y7fCqn1Q>y&qd2gzvqpkz5#jOj{QyD3jG6zvoi0_a)`$M^j}88 zcr!NSs!&f!3~Rl%6qzz(L4j45xRR7ff;TsY!paMOBA;X9JP&h0&!mW*00r)>EO{d* zJahlHbdprr{`&X~fg6`lv3#2(OEz2h$ac>X8_x->IB6z>ow|z%>L5$rXvu8~;fIAbK>Oj&l!4ds0%q7d{SVnPoP~wc4tP_obX8)b#?!n@ z+Gw`$O3d#I<8euO3PwX{RxRED_RJmqjNuz@K#;n52d6SPTD!Nq(*Rj=r#Un=16Yx? zsQkus?SooL%GPCv0i@^$k9+6%A8k4<=x<4-WC;sK5Ew3RU|Gcy)}fleBS#yl)ftWR zKBt3T8fu6l)zW8VPUo^y?KKD6^KdisR51GkQ?XLA()9FxWWF%5!^d8M#U? z)iF77{2*$MNio~0pWp<8Q~$yK1oj#ry%Af7UpKPq1nd98IRJ?p?TI}@eNBS?XYo-> z)n2W2bIgjFdP6*4F@L3)gS2%$XtUuEBSO~en#oN%&c)q6Qaf~Axw`HB zj%{Gq3@Nif>w=*Y(k3_&R*{OM^&#!EFiau#J%RN7W|7E(ZEvC{?-%=)nk)mq9tmc! zZ}7z(^}~7AA&d+{MM${cF>dUCOXmOq2$C=_ZSrR74~Q5X-!bkw zw)j4pVZLWHRN-OqM;aQ*3zmkzX*Gh8)J9CELUQTdw{cy>dn&2}AiAig2 z!K=%XF9A|x7H61m@Rrk9&h4*S2y;6PEH((;i$@YBxRF2dEZagR<*?Cr90+WO8yZ^1 zTg&d7@cfVb$IHh-MO8)0#2HAMkBARBwENz8KHFs&!JyRs9f_TiAwyuw#F?myU!CT& z{09)s8OJg|@@@%x)9o_U=37e+rXs&{7m{M6SHktPswtXZrGMcGirc3KnD7HHLjAC#)NBdyC+asT(zQmg#YpY;U#^n9$}XhhlSSIm8T0>EFlt0#SzEnj9JG@W(Om z)LH3{;lG;3EL?P7shqHq30(uGj;3xh&DluFcMJU!7^jz$7F>|f*`W|pmpk9SoDWnu zkJEa40%YqMiP>HvOO9o@FqV^N@d@1NfyPP*w^uSHAPp{2keM7O$ZHMxrJj&uFdiK{ z(|>;1e_I`rmER4&3ZEkH1n>NQ*04%K2_YE?7wE5;_g-we24udDa#K!{uo<`=s8Vof z%l?XXHQ{*8&=2B4HB2{;eM)e`z!xaJPW(EJk0~<0*Mvj8T~s)H4;YgkA;fJI6H8Bs z=f;2HP$pc08Ow-5YLL1fSV8nZ^wJT`2arXnm14ULU>JsCg|ahTQgZhrITP*n}ewC|Lu8 z!=3d;ON_0iL7HIcdhqpUrfty&5*uG`Z!W>gWe2ad-V1l}n!ig-GL*r~meM^|Pq_Ry zv_?KHxrGi6pcL|RlfJ4f670sy=S|5!O#m&T+~9pDaj;z!;b!W5#v4$RdG#31P9KO^ zPH#2RAXYLQ(qr>_Ow{7D6w1;M7R2EAT9?cqlO*g=@Vx7_xCGXaTB2O<({4blY*t-9 z`Ps{I9=vcVS?A-2V#UfefmU0y(Qv&1`tfS(zkP8S0{26YZ}fyWnl45it(NcQSct=) zJAu(&Vouhax3t-D&Qo3kRGCK~7*7dA2pUQC&cB-ZG9A?T*3mt$6z0I!VE;ydp1^l9 zVdY*2(aYG%zuG}I8BUgabs3jDc5TitQu4e#q<(fXTcQCnTn!aydx{EiD4(tb*!SQ~ z^wf2-P)Y}T5aOl`dmZuBG0*go1fL#`x0$~;IFG|1F|=jZ5l50tv_~;Zdsb_u#|S$V zDX90(qa%ymId%zH^XrZ<6^};o9&=79io3!LTQ^?ct z2-WDUAMx2o*$QJSoa^p<9Yi2O?|oy=Le%`(h*6k#Sp7#=~MxH*m-?M}BvaT7o(dn=qDl_HziQEydE56{ZKL7s8@8i3u zF}<#EJP=4x>j61WUX;^9fv?Ht44M4Z!0nEu8)JISDWT!C9aRctTR)O(a(he3hF717 z%t>T^e?T8e^h(dK&ofZ=SfwC8F=;ZVzJdETTPGT?A%6kAa@RM20dT)5dx~)$k_n&< zJS$G0wK#PuyQ((=jvu_d%Esw4l}OfRepsszw?}kOy0Kc_OKTzMi$AWaK6*HzGuv{k z9@20vlvgn$B?YElB#rmh+F)XQ;a8C58yuYkJ6hjTTrdrxx;x@CZ$0VrGLa_N-#bFh z#2j7c1CwkejoxMS7zlZjo)t7IQvw+-ELo1A|LOuMm=AFD-T20xjdu=rum1jOFO{UQ z+a8nJ35+>Ylkza`zlK2L%y%3VEcV#H89F{h={zQl5+DSI*dHW9*h9r!NF2|HUeY>h z{K+{?*9R`Ve(ga-Qz7+oN6g7|d)OVAIyoO`eslTw-5fA56UM`@Hj(Crr(NxhoefT1 z)rz@U^nE_GIFa(lUp~m-W%R;NU}66`8cysY5X>;eW|ib^&LA!KGg38+6i^EW z*pqX%tMx>}!K->osJYeTf!g~_FA^m}yet)JUWBbsan;^>QgGw1I8P9TYe(qm6&NCUQ~~Phsx$%}sv00!3^A zM{JYngrh%EJJV|^w&8+m84s?bD|r%&ESasp{&;)+epvmy=6ZWN7t2p%Ze&@af}wS$ z_b22CrpsZ{9aI8OYumbPH#*#n`@|VWfkLti9dSy_^`2+B-0C+>MhMD_4Dc+y3x9 z0o~u^AVJK7K0IhNAUJELTr#e4k}F0AGCrXz+`-*vZogQSp95l$UV1Vc;aF+T!e2iU9JB)RkDm z9~6{9V19ykbaH`0wH)O&l%8OI;NWuwA>k3mWzpopU0PmTU^MbRN&V; zS@FX-Sjf7xPu~RPc*e+eijvm4zI3ngbq4Z?rwqJ1Fyz$fR7yf~S34%F6QoULQzS-a@i&(N z=*Y>;n+Fv)qNLqXi~PSHYHclPwpGoWlSM^^DVA=iI-m3b&VNVHxbPtfbKE2_a=|cS+cnqLLmDpIDhd--o*8QVVo47fD`~e z=XcOv_t8l?dMA8oUd=jbLFo11dnhC8K(jW&WRkuY!`K_OJDt(T;NTNM{4a@Fw3~7@5t?-=I}e7PeVLzXMm~><#TW#8Y*VufvC;_>deSXQL(zy z`)iu^MH_Bk)l!A_g0_!2kqHh>@8=FA<&I@7>-LFV7_$ydV81fBVIhyqoYXW;U$(rl z_I1{LHi_FlCRka^q#1$^GTT$PCn>N42R$}gX%Pu-j4HMlzT_(`Zr)+gb$?o%Z|4$O zdG~UdtMHkspnuB182##IekC`70nhcBgQs+ANz!e~SJ*FOrQ>h^b@R0TxOje2q_wCm zF#XoWMy8GIv780e!m;3fmsld+`z@Tp?qW3C5i?YieI@47Qv*LlahvB&~(AO7x zA;4KIqZVcZG+!$3%=E8MdKH?TGgnde3Olo$CryC*>x(znjih{yNCB9Q4z%UB;mNZh z<=^-vJc^$4fx9({^;6pA$ymjlQzgJ=+;9h1yO!3s@%ZCIo|ow2TqdMSQmQpsRy@vL zus=m}bX8qN>d9*1LX`UL5uQ{CvLfenixY-;PVHuJl$Cx6XN4__2Jz-dr;bVFlG?QT zx8#$T{n=>Z?RUg5`v7iJ$`%uz9GBSN*yTmL@B;q0upWc9VY+@R-jRUm)j-6 zu2$|`gl^_wFDO(q;Bg(McgF1+CSbw^5SSIikJZA!GeQb&@74NDx!6AxXWw#r8ee~@ zfN3#H6(elR=O8^vt_vpf!A+F!nGhNdf7eByB=zYts~2}t%-MQ(w{}rYLjkUhe7NVU zjv_}_!DfZmR3-6jpuOXOfOz~Bn1~Run7Z66Zd+gSa5XRcp|!NfJa2zxo3fvkvT~L%z`$@VSAT;7~E5r;!hu!fQZ?YNi<^o$$GNd*3?e$cj z!!sQtrp{&RW_~(GL-mYYnp-F8bG}62oG15TQIRyxoz&OAZVN_3v&oH7XZovxb9YH)gH1#kAV1X62>(hou0&_*@^~&5$Ty}3-YT8lxw}bUx7-u3x(~W^8 z3hCYD6F;bbdYnDAjYRE*{(Q}(&1`6>cd`ukhpixwx9-14vjt!(Ne#FG6nFX~oRpvL9qmCOQ|0C@NG*wR)8Q|WMJ}x(8Q|^Kc+2Zm$kuKQ?Wtu0u>tx2SH-BYCXpaE+5p6s$>4ozn)= zK8OuW!<53B2{#F|4o{z6x%mkgX2U;57mNz+EAduI?;WkW=#0=pe1qkHM%dO7`^!)p zA$FuZhM*f}xdP=6NwP$k*nY=Gz7rWdll;+K&J-P$N~TeJ8Eo$7**RJO&o^A!e)1*V zqltTBi2P38@7mXoJomud*Yf&9b3;hBxH*?O7?P7jwRL3MCuZTAJ5rDckrAVDQthxR zU>ca#=o`nN4yJ3Xv=|Pk@MCd}Os=*37R+L!BW%y)mz;| zlkyr!GMH7fcIN$)N0m)<{V&bQarTt*R2S!QZ!)w!9F?;}av5%u)$U7E+EDPY3E6Nc zz}11MsqduKczrxOfa(E~Lwz5SY!a%WTCHL7@c|{*-clWl-ER@q_Or{$1g_M`=Cht? zD|fT%)D?gmMvUWkC*h`H0^y3myyzRe@^rm2WiIyGsbQ}+w^_%(rHaU%a(gwTmaHfXRl5)#4)cf^4Kt6W(b56cVGKzS zGCicZrXDJLdC*KOnX?zg@~M~Iio0R$fK8|2mFn+J8g^XgNj)M-_;RO_>;I_{fPC@o zZUk~7XphlsPkn3_K28Y4fGTo78U%e+iYwOWKnUi==!}hev13`2S)-c+=&sO)mlwLS z8?tFpw;Za(wsLidca8JmKbQ}|eus9x_Bgmp$=o{OPTs$vpHVH#Bhy9$U3t>Up?AY0 z7lW2$V_t(?vEb`91@D{vCCqf4_a%kO5h;egI+HaT9FHYKL?VSnW7Yn|o{ptbYS$Ki zQNGMg+S7G^lo{2RIWc_ys9M0jx06R3##zm3Po5MYuUp_evf7@(n-XiTaPOf=vh$x& z#Ut(vgphvBP0B&YOw*wNo7_~FBQNi0rNr_Vvr~C)=hj7=%Y@dunTb{+TOROfVcHyT zdTP&r17v(#qZ#KR?%}!9&PDS06?Nla#<{IU^)NwH$*hy=E!~wwDd@R4^%YM6hNe}m zJN44W*)tMm3xD>p^QBPdBOOVtNt+pALC5PHcb2AenI+Uy=$lPv9yi%4-Gx}M>DO)C zKrj-$RUO2i77fbGn9z`I2;_5n@a(G{YY8f_ z8-TTERNs4p7O}<-HZ=qAwgIBhAN+L_iU(&A=`gs-rbrUL1gtCTU=H(QM79Gce3y+zo@>d8%#&=Hh zp>~ZHs_2c>#st%jIv@IXcNDO_w$OW{PnmABay_r{r9-^ zXRu^uNtq_>Ii8cNztAlO+hXS9VH4e;khJB-tHsF0N7EGnE){C31;ya0!o!DuBdX}o z-tup|y?X?_(9EPP-S#yka#;rV#Bs`gNLUue*E*=k)t`oamN5|y}#&p0Gt=8IbwxIjE$LDoM)#KfZ94%PYq2T7< zbXNbNIxEPAOK-9i{vzfSFYMH#urh6yAfjf=X25v<2YOqw0k_UxM>__ z=@GZ*!4=uh`VhJg+LpY}1o;(Mm`dw~+`sZW4RpN;{F5h%UfWSEBIZ2JRU+Qc?F^f* zg!vcAw)l-oTc?-mWe!!DMva)bps8x%$5>C|N>_ocAZq}OtoiYxA(8}%qVelm%Ch=`kg=V(L$)aUSeE^T_?;J8OiIhn7} zv^3j5ciPMkvm_9HcW+lx5D?65D^5|gKSibXr$)=~Dz<+*ZAt4P9mQlLLU z$0+)B8VV1i+(Z9)Z^WcC$lIQ&f#Trk8NiNed{(k#2=t5&fXAXN+t;eL2eehEzby%41zOrPmshXr)U2fQ6&Q5w2ztN1bwnH^ zu1~UOkjaCvp3K_hAgb=9&Fxr*+&Be@E9fEHzU<0G$ML<&Ua_Ny7?>Ib6CQf~?4N-m z1(dB@HCTg0r8DtA&Ep3y9rErK)%L#^uRUNBDB(T4rjMOG%B499ZLgx0(`DNLYgpiD zZt==h{XMUGm~?pO#beWg!cPB4uF;N$s)xpp9V27rq#WL3O=KB%*hJ+$gt}@kNkw}C{x-~A&s|MV3KqbsXVvWMGe*|W5a^pn z$5yI)p#-~F`MrtqpAZVPv6|RmwDZ`k`4JELubz&0UG{-Nt*RUWQ#jae}~^J*u~<3HG;!#XxTgdwBIbeTn?vTTK_dPblfdshhcmTn_O zDSu0A-3)6SSxH^)yynvlY5n9p$L{+l z%d0bjOyKYHrjtLuX>sqR7(&#%Kr#;(f4&Fl^vTtU4M}TN!g2~q zZ1|8=+`|1WwEu%`Cnd$#v>g!=>QijPtlgB#C{lk`xuEMOPP)R6LXImXn_duim6^>7 zM-$ml>O7Z*=OO*41T%rmm^Y9DGbzK)zxQA01cH$vdB7x4Phyy2Cea7Cf{ao9YP_UU z6Amx0>TW2Fu=x6IM~#`7q$&=jDGs1Z3|t~JOf-QI7Og==LA`ZYSzkc~sH5H2?`syz zg$Mbdo8dxGU#V`%IT+5KLfPcI=Y3iuIi0!-p*SGN8!X49vCaH2N)dK(rX29onI~P1 zH9-AENlvRu=J6JhhjOuSl;AATNQvoPjYU#HoI3zREwr$NXlLeLvO(EoKtuZ zukTznu;>GzaHz$JPfQV!%5nXBau>$=9q=znl~yoGxcXv}Z&_&3pqLsvEW`dq6MVWS z=F+zWSE)i-wu_f4YbST8zi+H+>MOKR0;=E+G`g;(pZYw711SP##uaZo%qcQ&yot{4 zoMzKhAcUH!_$Gh7SHMad=O@0 zaVD<872nAl8IUvtx|o`@;I7X;_?+B7d0V|LBiis~y+q{u!tW<>Juhda`x!Ln0)R?C@s)GXz!mm9WfrEH_O+Def`}wdavwt@~5H;u#@A7 zpmX^o?-bUtYXkb&(fv7NH#a`h{n}YO5){=lTcVbb3DIl!{W1)_8c7MuqRZ`aQ~q{b z$^MdEfe_AMNI-cv)9r~=R`c`FzVv}Zcdv4q4F)9rNlyT~2yifh|=c=k_Efn#FLyjc_xNPiJkaFy>&f$4X*^IR>3 zb!reMQHYZslotTaq(D|p_?KCO2QO7i?YX+2myZN#l)f_^MFfDTXBJ*dXj~Akd8r)~ z!e(Iw&Sxr)!APG#X7m-uA`@~sCJK&kX1&EB=Rl$O&a)~sA$cRe394TpN(+&& z*OYm+V1{q$KMN5jK^d(23yPJcY0n*q2RTO#SjIs~{=7OKS8_CIRzhBH$| ztd85&hd&24*VivB_cY#GeUvjq0@*X4#(P(dH{m@xT1s;jv#o6b4h-Dgq~?ybG<7kf zHl*54NXhgZMhV#`jP1P}JF^Q5 z(~J{;YsY?ni*_Lt6bEZRF8yI*7d_z0IdYXiV}z4TJLq!SV?V~d z8igon{7C7D+%kj4JLCN^Vot#t3^lu**IGJeRNxc$%elX++vyF*n_CM>2)BLB~jUoqE&Rlv4}_;-dJ9<*tTcTx(LV z3IW5J#~6Hr?oP2gN-|>wz8c9YjJl;ukeunG?|MGgleK)oeC{Y|8icGe8^CWu!FZ(c z7c0lizTfgMw&_Mv>bUtUBPU^hAwPJXbxL#U#_YRa-u>wi$_xwNjjHNbxK>Mzno}J? z?gNS5-Sw2gvtHNXN?{U;E{7E>b_JojQ><$KFM265Ly<6>M zAAJK>KCc^i+a(V*;1aBB!c%JOq>LW8MnB z!N;E6Sh1o_E^l?^HpOdLvz&!mXQuk0vXa0QKDs{CB?6uJx1P1WBA;)~T*s>-=MXiy ztG`(jDZC%ph~ipiC0lXYxk6tBhtZRb$<7wJ1vYd7Fi{q-n{2Da669>MTI2K<+*!Yb>nl|&%Q zC^Yc@&bT}@IcAjklY5B5wz;%f_0!2pMizniGgC~fCsElycQ+lrMWE*Xp;Rs)fQK(Y zew!mOQ$FwHK-cpSE4!`j0zxpS3D;a@`^%-a(7ZD^cq@k%6E$5?r#U%QW$3KfbfAz> z-fT3HjcL*3HZ@wK_mGV@IeJ`PYOl&voo=EpYnWPrk@{`>s42rEAQuZHumCGi)C$DJ zXoYzHig2w2pYhQ2u)+NSvZYLw$wxwhy$Hmq{wT|HgT4cI$Cp1wSAToDNPPo9r9<)j zi(%)Arf+x>6&kc;lh5cX*~IY|Q6w4(&;AK1Nrf02*q9n?yEq7adM$=ZJqNmCx}y~; zf9|a^=q~|@8EoCpIMsouh`Mxey1qgsasl5O{GGHf7t`(F{-Ycb853)h_do_6Er_|w zv`nD&3Koh?ac0VuHkjSEJQo~^sktM=)A>U}wbSptIlZ+?WO4FcHSkw;ePW@5kqAro zM(aJ2W#Co6IWok)EtA2?J^Up-_Y$Kv4FePeJ5wtweP_^sV8rQJtoNH36Ykg6#=Gi) zbbkG_fzAsZ@#W+Y8Gd`yKBmCxM#LO>c2OAsSK|jx%;_K=>TxX;9M{(prw!BF^Q7d` zi{r7t-o(J&pr_>;DH?(q!w7;=%Xi;{h`xbsz2sOyy-V8*Wu1?E5}y>=&0*`*2Ote- z3~ea57|!FxU_8jla#R2Oy7i<-bZWxcWXTI~EMlhD_sTmecm4yC7GxrCqca&ucWhST zbAL|=W2HgN%xKUtRK)C0-fXfz=Vq{|$Vk8a5zwuvMiY0^x*}+7KECQpZu%9w>7qvH z+uEx6Bu6Du&TuFz40@v0(?67Iuj3qByCc$~&&G($QZ10*<&NdN$B}2bKaDR><-~|b zPylroZynchrXt{LhWNR|6R>v)CNB0B6y8gn6@)PV5S3`cxFz`h5_WxsvlUjBm3qmk z$@T2$z9|Uh^7+bSiHKg?NQTk{4e(1quJV%|G-|;m{V5SwZhmApVcK&#p1^&>YO^v} z-Iml}hD!+RGl{Kl4$pn2iJ@UK)HjNwJ?}q6(%}*-+Wbj@RfSn~D$yAis|b&`?rIg{ zHE6hToP8=^ZpT!`Qd2;4?#NnW)HgnCTHOH#1d?Z-X~y1FfPoe2DQD#J$C}?ewI_Xo z&T;GSl`sD?nI@G;N(hB9drPI2+RD4TwyU0)>L=UadlUKBmu!^fUy2)iUGzu(Or9~K z(HgBl&%T{Kos(=Y(Vmv9IMX|c)LMGH5xU}viT`i|kWhyCEVvQzcIS>t3t}o-^W4fS znrkCPuIofcl>wg|rFSF*G8wwKQbGepJOR|?gBrQn;UmAvpH-5ai~hn?EU9tm=gBJS zWS&rXu<$u>*;dm2JlG7=%X(q}$WWB@3Wx90d`y?GX{tDg^oRycq+y$s_6Mn^p$>() zIH?7%MgZmU{D6&~#qdVt9lYrt9xx$Zf+JOH3m)4BB;@u2x^ems9J{}XXS}!lQl9H; ziBOq8P5h8&O5aOkb$$@~ zYZy+LDi5GTP<0;AYmL|A&?K0OP8)30d!2b4`O4S;Wk^3?FXpv?(&nBw9~M1|-n-JI zxLD*=CIoz0Yd^QS5%<_<5Mw4}i`yJv`Q>dWf2xY+j7JzebN$AX(0ZLQ`|ZgStjwH{ z{Y@Us%u`>#-Q9%pu$Ji?5R#-L{4d{dy_4Fed$6tfqGe*oiLu|aTh4$ue|PVauV@5J zFSzXIcH~Zcl;86#*V;BGc&ozn#~|lUzgXcbX15nW&OkMpy&n0RXvE)rWX}1Nx{_3J zW$)hu8v>+P0{4JBje@;6jgF{{(+|*$OKM51^pxvD98st5L4{uf@(}Az@t1TiLjIlmpe>$?Z7c<~n{Wc*J-?l|g^L?^X-HN-SzwEptr19C4qWM|gu#dhNVL&(aldQ|J zT+?OWJy`Ad7f@#ZH9b&kOfnyAN#Q~b-a4QPJ3#qMAheAh6((1(+|x<I{frn z*5e*=(WR6z3+@f?MfNUzzR}XBJsJG{`6nl_%I8=Q3&opi=fc_~O?;6FIH;6q@L#XC zmOh{=$g>~bHxOazol9+`52Cp(kJgX-x*MVHwHB z;u(N_22=Yd?f9?lk0P99Q#CTJ(mmx>2l5#ieXl8e`!y&fP={n{U7ew+LCDiVxenN| zL&wr26%Gqkj+RRCsKT&5`3VEOjc!g&iBa(H=#r@rT^lRK`SAf0{lQR32?nwU8=ex8 z&eKLu9NEIf9dpVK$a{fy=Bv-wYaHK1*e<$%)Et2iDw+O|W&*tz(6vufi_@5MgfPy7|796b#K4)cF3K1t3 z8jLf}c(v@ExG1@rY9vN7A82%+yR1R+(fzdCC}Smkmtk@!9MzumxVjrhfcM9aHmC5- z$D0<4&sVCl`gMFoIAb4pkr4-V;J4d1=j!u#=)l8?G%%z&B;d_;7t9iMu^d%fXw$~Nlvjj7syW-#g0868sR#e6 zO!{sul?d0y+0w9>in*0&TN#I5fs4F>1l!CvbRRU&yq?SOvXW>D!ZUXzvE>)PcO9I0 z8QH4Ze?S5AY`WI&x>?Hjk&2Z&k-nT4f9u_S*VL03PAz`x@>!=r42bZ~`Mkr38vBD) ztOUKVer0DC!Z(#+-6fuTdbO3hn=}GL8uJuI_dJzzhVcmcejzXhvCzca$kkqilUN!5K=ot(B;a?za`E78+8_VZ?sIacTN4B6 zihaEFPK>Ve;YbCtI)c!fB52g>DY60ETOpSmv#x{!ui7P5Y#h1YI*Z!m~I8E&^0 zQ{D`XA*`F_oS(TDC?!FB&K#jZ_$zATp)#m!b`t^AA@{^%bG4ktX9qSe0regwvi6mHFhu7m{SGxNJ0*MxgajLIO z-;OU{Cw@;K!pt$-GM7R9aY8gXX`CGH-un;z7xw0SvIhf=QysrMdzln*_+OxAa^BmO z-x%c9O-U}L=C=er&v2sAvf|t72yKtN=2n-p21gn|A|qIX0Pmq`Z%Q4Jt93Qy_8q?F zOn6Z;AG3S&Rf7)R)46eR1PE4+N5<`Cb)z2a^IMe{8NLIosQ8MX(GHcpuu-rE2ljp*-A~(4(qboKR695WVD3Y&W4F3=buI&dqqQ zG_yOZ2-aEGI>B=ZKJQ8**knj6d@Zim<6AF!2djXTnnl)C;VKo3cuEQp#_%IhT|EkVvRvS=?L+JgR7`Akch}%EBke}9oo-9c8@tiF-d(b zs$73kTR1Ll4L?S-dMv%Zf!o!*86ck5EI%1r7C*m^wGuMA)^fqpxzH)#bv*8tMtIsF z+UY&?c`jwJkO8lm*sOKqvCZ60j?(-U^5FW}Lss-`hfk@zHk--fh^`+A z<`Q3#UpLT#;E^72ck(ie&*vNKc?|`4a@fJFa?|>L_=j!nMCzA?>P|nAbpZUdc&S=k zhL!1ymd`C#DYNRnvCZ5Me}m11DlPCn=x{Oz<)~WZ=2)z^1_lH~7xteLY+jlwr z(s)t_!(Os`#95EK$*%~G2MMw!%*!MYW zTVCm++E+4~&Uro@R_S`y*9oEq1=eIU*YBB-zJX9T1)Snfq!fNFI<`3Y%|QC;pwIjc zlE&D?8|xLna&j-O?}-rMW&YtmC)FcpG1ThFHN#IRCi9Mw=+6_opym(-S28U~tRyB} zxNOlmLtbbASzH%+#jfv@D@D&<5Ovtz?OEM1ljkXoKU^XN|(X4HUlC{q98pT54jN zl+jI4aQi~atPmNLa+I`A{n%DKp$Z;YS>Uk2@^Dcq95Y7u6ASNNZIMr}fCB#+48F~)TUg5@Tq`WMlkh|0EzKt|vz+)y&JssE zTlTjp5mM+k6Bg4U@!;ufPMMW=56PsaKxA%zV>`E`2P>@;ss35rhv2oKCPT*y%Cq?i z$!XZV`C_sQGcHuh^Ep+U^JCrmw3xemH>MqkHIFmV*1&)ZZmK@G-v?iZ%fiE7vb&Sb zRM{;F1Z(v9l#vwIfK%N4oPDk3qz+{^hpzomDQv~3OD7WJoEzCZ14!v|`_ z?4Ec#mGw-1#)TxW6WY&7r*T6EGk{wSbQ7JJsuL>SeCvKE-n?bC8Xy1I$pD%T6Llz(l z_AXRo4t3LzZ|D2RQ5_S*R>1o*4Yz%^!P0*>WNyi#_$Q{ zD?yN*b&Vae+JVAYYal%^ns-Z`FI`BtDUJgc>)4$4f<)Bg_W$c~dNO z8Q_rePcVdn{INysb3uz@s@AH!NGAx z1~boe@g~5EExov*8H;XG{MJzLIGo=P>`jhA(~8p+Npugnm;*p^6IsSL_K!{{OxGA;c^74_h;75Bna;q{{ApoMF6hBw)$!^JNT1 z^GlO2Z2v?H%vp~1^b-lTeXK35J$s4$nRfcjj=`Yndz1CiZV!qVaU)c%$Sud9R`nrg ziuwqj=$Ptzvym>Mmm0 z=qqo_*W9kbd93WbZNKryAPF`d;uu*nbK<8dr)fyRnXY*62493Kv8rU})2?K-v!n|V zB7g`!9mMgAbyF+d94p)07^5a>FZ`QPa* zkT3f@`Bj1ZLiD?6x0rtj+Yn5^n1rki@Mce-CiD?Dp(O)AszJik9&#ymVRseY-LF9f z_P$p;Z*FNOn&S_4*0vsr&?F06XL*B2#1ykslrFs(Mx7Ro)h{tY1-y9vFBhQRT@U^g zwI2zKK}9$rj_r)U3F2RK%qH_Wek~+G2u(5ZtA>y*W^c_T$oTF$SJul{v)0 z7cb)f;Df!(lOeY?Sl_9N1Gb&h8vCGErZEW5-(aH`Ir-yiTvj_Lu5+NpuH}m>|KAvk zl39rCd}86S=%&L@pYC@OYvf0RsauVoK7k2ca@IJX{u`?oV1s7VTzwSG{K5KuVNJU#=&-+;RC+G;R5Ua zOlY(Rb_Qhi6|1hgdE))$Bm7u*+!z%EG_5|vrf_DD)_H^;G5z@YcK=fTJU{HtzCMsW zyL&^JQ^V0^$6Pk}mlFvNw~2Tzw$(c`BTNv{Sf0sxFxx32m&w}uDeUilr?u5-u#o8g zfbQ60T8`L9rk4zzyp5ERt-t{eOp1p-vaO8f2IG~LSN;g5W_|1?Yqdh{QmH55SgVpVRPnI5JUs87e%zJ%yo;jX)J8$wO zmhv*IF{+L?Zzk2%c6Z!tJ$+;C1dN;{t?K%sUo7&^XZS1MiwKqH2FLAokm$%GB7gBo zd>e7wTZL(-&*Y{M{0?|^bu>^z6Q?@>&45kqwjYrXUPtx_42J6V#~)&temFCg5l{n` zSrCu))}5L9hM)I=4hBVa(-b6?NgMoG0+sU6)th>&CtUly=Wc3qhoyu7*f`J}gBcw3Kl>u75`S#*``ty~1H7neW(@<=nusHT!t%X4p^_Qi~L} zaKW+VT|QZl##<;2L+onra{rdq+qfQvshi2ZaVu0vxbZlma^8@e%+Q7itl_!+T#%Dw z>q}1VPx+nwdcK0tV%~Q90;$+4#WyI?bXe)u-$QefNLl*z?m?f?p2w_ql7PFA!>ng3 zbvob7C&(XLLmO&>*+z4}3KNf1YP#X2<1MA!F`V*F<8s9MzOdBA&K$cX=4QoNH#4oi zVsK|H^TIPTq}R!v-@P5C)-xu3^ya}wRn@Ea(dnd-$B*CsQtN7SFJv*p6l0$}+-CpW za328wjmM7TV)?(wd&{s$mS$ZPm%(9hAKcxY8DN0M2X`77+}(%4b#V8A!QI{6T^o1T z#t+|K>)U(neeONy$NhQhdAjqds;tbasO-pyc;C*DIy)zpC$niMeL}fsx{kMIc{t{) zeI+=liv=INEl+jX#MUsSTdY_@#1;xZzz(zHh@MbG%FO z^hC1j9f_^O>Zi?@j>!Iz0V(f!#2Xuo%0Lzykx-d0^jfPug$dKmYR*ienT%hThB|gO$hPNS z^LSYT4=r_W_*Oi^O_@MF(?*?klXVKjn8+9Tr+e+eNgNbw;pU47k;t7LmC2`;u2<8| z-_%|T(JHcVJ&Y5Bd7`8B^}fuLqfvwBQ;e-vCR$M*7Jon$VPJew^ufS4=VMII=$Uqg zZGDoFYKDb2WfN(8;cy*e=mbJFE>(FT<+;LO=srJHB*Yy7v9X!-hw3`q$lsOUY0iNt zK~`H+@Qa8LSz12JQ$mUUvUK(F#dPfFhf>|@K#-4|;ceUg)wd)vSnUdJ}{_k9PMbPJ)XF5v39+)r&Qcp6kud zI2=AN>H7U>G~;_F_uvwIuLVX2Ip~hcRLXw-K?McVwQgdo$fo!OZ?PC(s2bKlY5gGPW4~$4m^M z9l0^`C5gIZ!u)Tj7dhwmZX44M$Dg96gh_|{osY$T_tPO&RZ9alxD1rAAJqpMvY0w` zK(8wP-0iPxQP}A2u=3`D%D@y~VCHRweG~sa^)S@ z8GZu>8g+`SuVKIpOozN+9ed=<&``ed?yn{j;VeOp^dJ}bi~*Yhw;2uoCrG@XI{XPn zGrgR;RwOGAv!9Gi5glnNwgv+906kFa8f%j znEmlg5k=(m#zvi3z!DC(zyQswjvPjh4i+Bns(^+NchWMm^(l9af^ecYH%Sq$5Li-F z!=qDY=}P=wXY&CtPf*QOoZ+aaEh`c=8t^Jm35>rXoIFayAj1kdadz6u2YSD;JS_K} z--e~>f-zMYM8>4LwHL-u8WMWy=$}bi{jjr8_e(}B(GC0#hfKz+i3EA^o;M^)z4L`P z;rzsEWS?qY(_}T?Yy|k-rrpiDnPYVgz=0e`?P82?SK3WdtFF5jhanb&jC@)2 z-#SuR*PSj3Z}4Yi%8se+=Bb#{BE-b2ZF2P@qT3S3r430+MpUrfxVsVg)3nN0Y1zG} zv{<`jDyu9vvd57@vc(0V<2fVKX!_|$bC9SiUjefyiBGww$cHc}} z!4d}0^Uve~#fu`o27>4)H}H~1u$Jp^Y6d1rtBAEXbu76Sj#2T-)PtbJBwdcenw(x3 z33X@uH(>x{Hz{8qO%3t&BO%7YiXO6kp90(3 zN8FVeM0?cc&|7Mz;$i;D&R>-F2`$C4*Sn73%oe)N4 z$X~kSjE1!9k`NuMm(sR#2TiudnXB4a0cb7vxEp=Z0msvehmfq_S1YiSxKVrM$#8Y1 z;wyYKho&8tJ~oz255z^w@y8N4s_YvO!M$f?l6^Kyq4Wey*Mwc#Z5@<(s?&$Fm!WyQ zB}%WZGexjMcaPij&6T-a_7bpUjzT|IkH{ub_9;mGrP+4AqsErwkEzQ2VEr@U?wz^` zwnwB||D0cdV~|RH-LC(&9dXerf6Oah7Dr=(a|TV5qApWt^vN9QjD#tqf;c)uP_TvC z@mON%#wPB|jA_~7I~kY9DUz0O-_D7or}>%YG8HbUr(zjaDqVo*>Wt++fYPc`LYJ()e=Po)zPlso?;qZ8yJ0(C-@nX;t;D2!v&N2JyMhIcC- zwG@`Vim5M?AZ8Vr-4k%-BR2bihYZxKeL}f{2!5C;QLwgPT$c8jf-HE`0<`=PDs_RZ zM~AyBl8CVdEwy{6^}&`tooXC@q}m~BTf`9$e|(i{=M#DWc>6F%SI}N1H1hW+%9J|j z2Vco}=~KYf8KEYHR0qPV%#hOJ!tfmmtNqdkAXNQk88l>hn!YDF?~C6aW1wDvVMT~Q z&9!RA@5$1dLd}K&&}h0B&P!qZwH1}0%$Do7ShWs_Y+Rt!lSIR}27jHf(*}NCC#q+D z4K3?f36hpqF4Zv zXZ&w?>2a6skdR!JV1xRJ)joMN-dypJJJm1J2UC&zJ>1ua>20O5O#P>%fEkxd7@Nh> zZcZ$1QC6;Kz5;jCR7k747h%kjo7pO3@ci2k>|VS`E@^iY=IAO7$oMx1_z@wQ)9w#8 zwZ#UWkfMbSZ$3yGumH&Fs$sVW=s17#PMFe@U;Fe^Qi|w1wxjZZF+3})9w5y0+nRB~ zTgyBmb7GLr3yL=(G}3HI{p`lcsOFfG<(>^hM6~8;zxV31>7%)$YjI!#Q3w# z!qApyTX_LCiOh@rW`Qa3$p#hL(VKGC?cPsVyDJTCYAV!GmI?#gdP}=`AnxZVnMgZZ zP#0Lg4C1TZbz-Zdtt0%HA%cuouv6!x!)L%tS;FZS_NWx@G9qu~31+oM>ge>ab{Zwg3 z4ZO9Vg;^HL5A_NSg>yv!z>}*XT7hoIceOcvBw|9ybAXUwlankS0f0_RM^t zy0nZ3$Pmp~3-=5~I53@`8j3wm7ybq#lecU8+St4+_>r~RY2T8d- zj$em1Ko$h2mwrz6!ypo`R9y&-)lFN}@^Nu!J#j0;-4qjpft7H$EL3gW1t|rr6PITD zX{L7{Z`W7eh$8k$^qnl#N2BeVY;}`W=?X>?&$ri)>I@_agwfG68g${Nd0iXgeW{Hs zv_6E7(ns#`2m-=~`K-QP_JuT zef8A=pIGtYzz^7PKFisU%aN(Ws-WFBs?hK#xXW}bpf^K&DQNgO+<|Y0(QqKw8K7fp z@=jCUI#ALVL;p+b{IVE{8$QzHNM_4h1?~xQ8^1z2QsF7xkj$jb83ceqv`H&g@#bALIjH}IsD5*;_4VWZ9P zbB1JR8yu~&r*Q!JRj|yI5St#}jS`_?nj@E%p%K?uZAEc=s{ZO?ikfFOTEdSUbj(h% zY3Gy`gWH4*97{DGgdHb?6a$BS$1c@oV{m%u)mdIxR-1MB(^R!q5UsrKXfq4O_LZFh z12-{kW;|HbRt9-U$ey(OcSYWf?8EprOso_4o(kDLY|B^~{%QRF{DJ-Jg!2~H3*UX&0_4S6#(2$wZ|7P8%3CF#(dRW|;=zJJq#$3F$1Kod zGwYVXR8e`x!-`O2qL6r6j8tdH){%J;fJo<-UBd*~_fcobUo0)@vPX=iXk^~*w3^GL z1iIOId)m=*L%o6y4P|X&Oy5i;xhk6Gd}$zVmm3%@zmdscfu(up4~&^DAz|uxjRdV0 zU|S=Hn7B<$_TV;ePPnVrZ$Ha1BqwYdALjGjq!WCNgkWiEqWb9GiL;j6l>jbx;f&fo z3DJFy0Xo>-DKiV;eYTRPW>C>lORibvKDi}u^sF#GOIG(QT(ztUhQ~PdbHX*iQxoqe zT^taJ^kwAH1^ETCoEkSUB+;?RnaMQG1?l7URM^VzAE{}m{Oza>CrgN2-%Msj>wFL2 z?#FL&Z@4eAS(9wD)ZZ&A@@{gqf%7a}2eh1%W~%|n`ZN!BKDx6Km${z^W3fu>gQ**Y zTnQWSd|;#oFwF&eyCR@g@fNY3II>UaB1|%DG8u)vZJ70m1szyvefyMO>!4Vnc;D*D zSJ&C&4exb(D=DSC8_40li$#8+^h3+T;& zKiY9xjJ&O-eMvWrZT1jiVbYH@ewvF>)e$^&Ag;)cm4@lz#nT4ho655p>$|&z=(Le zs56BA##8tL@d9RYv7r=K?XbjL4x z>_M{prTJZz^K)#^e&N|4SK zsCn!8Tp?^XI?En!KI?;o0M+dO?R12d-1GLTz45 z#OSAI3+|ljPT$K7h6x8v3IT&Wmn_Ssv+ng;Ydl#4X=?Zyp`X;X+55ZESA8c7co!{Q z1P^9xA+p7vgC7mQ!1GnEocxrOoUGSoAR+Q*Uf_N=gtWX2yqLz#NhEZVNng1MU&+Zi zZPt>H-#kg8(MmTF?px)i3h+WEh!o7St%xXA_DKBCD0@>q z@np=wRBErL5(IG?MFL5Z$c>G|gCh~mtdh5b*OylZYR!^)hqYi$^c{srbb;~JPY&tS z)aV)=h-fG(5P!?+z1VS5LjSUpkN<_Ue5|uxPmN|jE>rc#!bDcDq*D6aZ}J7yqR-pe zGi(30O))Tj`7$T;VE%2YzVCfZ@Ol(V=;7yn{{+1EpTigRw;S`XUh=h+ssDY~|0=)9 z4#WKW+V}F8g)~-P_`fR*iiGX8frZ8p9jsEZc93)V#Qy6>zwBgv`S(=y9}N^Ge*7OT zIsSNtl`+*(*n%aE*@Q)gP8;+0wZog@I-YEFR)5rWpy1J6^~ZY}vIdQ64E}7`uLJ=% zKo%d-bY|1zR%hwxR%@aa_D_IA{fsWAALBCiyKpc8d8UXuyt#b1JZOT|`k9}6GTQxJ z_w%c{f8!}$V3t9KS7O_&wb76EjkE&n9}Lf*Usu}hs`YzkjOJ#*?zo-I z7Hh}7LTfwBH0|CUj%~k8ak!b6+$U=z9?VDnzF#1(%w0=?9nES^F+b*buwEg*!*yfx z4-pp9xB$UCqw(x?MvKgxw{hwWtR-i(yQ1uu>0!6_F}R}^uhwIxuPit&eI{J|24#@f zhyC)fwRPdJ!p2uCl+w_#I=(6w%&TaOPC_W1L?XS)pUaKHAegP%>eBi!nqC{lGH+5t zQI?zz#Z%BBQiqv)INip^gDRgL^@iw5^LGf@Dwvvs@r=Fzo7Ak$*LHpN6{}&6@8zBW zw>)!{0c0}}86f%jY^OLX$K+V>I4j37SW5Gh9iiijaGDy0YJ>AmHL7o9U7zRbbQrmw z%B)6UAaDW3v&>ZRUV|`Jejs}j^dkwHu$~QQ!cXWz{OMGY&0QWL0wK>l+yj|#_UGMH z;oFOAak{8rjCcBNG^9e}Qv)s--HmWD1e@^yMiAnrr29SF#RSxdm-knwSCmy4>?r&K zhz95yNa#igH|P+$1yd?JR6C>#8SF<@8L^m-RP(LdM%wX_PgE@7@x+#z7pG6HT(5`) z0QZnHCDkm0fwZcaO9hdk4@qK!zss8TYhlCy>}s}qx8^BQsH6LPH8u}w^A++YE1&l- zzk2#2L)3&UZSOfuw0i0MzMhN!SnWQ?ovG*RH+Fx!89MHd=f~sBV(Z%;X{^w6+8idm zUYmrNrlRSQ%@fC5wu!{hfEP^{52Gmty4ahJ|>%Gru)Z1jE8slGYAB!y}mtN z@obpvhcS(69Tznoii8ErT`yeE*-DWlJ(m)xF^w9IJu;q=tR-ardP^@^gE<@cKp#&U znI4Wk>qgqxjJfjgp%Ix@WV8XU5k&*36?)(W`4U1MeCJB42=Pp+c(78AVh8OC$>lG_ zFqQSM7(C0~!e)op4Z!z@gUVv-0R#23E!@iW8d37oyR{Mq?5jO4^6iHsKJBfu>ZJ-e za+g-2+jlz z4tEO{v^V%emI*kxkok!z>IkZ%S@go5=1JeUULDu!yWg|`t^hoQ1=gl#F=xmhs+Rj3 z%)4LKwhpJs; zLwjvWiC5CqX_27kVR*Cq?T*M{+X1p-OV4#84DVjT5d@@?Rb328GHXvNB^tI=9LW#S z?HPb0wm4a2qh@Dg2Z{v@Qbpbwx9cX5#y5oeNw>#3;meg4`u%K+{gO}AEd>=jZDo2; z(8RpqYtLsU9@P&A0jDR7kQA(m0`DsZMcx{`?29Bc7yD@3e)KLu1$)Q=z`AgjoBI1j+x$j)VAMB~y z~=gxlW_bL49NEaK+57L>Xj4h~>O}-x2N+e~0KFsRJ z5sj-MU~Sa4eqRt{L%1?H6lsrL4_{KaY>WZfWo#kr9L*yQ$z1(sfvA zP+++G?J#8eS~ZFNlp)OH1J=hB(Hcj|%g%f*B6i5tQnyNc|1nbIK%~z6jhbID1aLu{ zQZ?}E8~s|DHKy!ny2}B3h`(SS;4w)+>3ZtILkrqSBe&xtQAsTr26%Xq=shCiCEW}h zAp#WwGyP6mk7sP0r5Inw_%B!8{tJmcE2))ZnxwHK#U!Vcp0z zb&5pFwOQHI0nL#TZVWB7clFF6=dqUUZ z36gAqv~IdfPp$omTp;;{b!^^eXb*tR?hprOg)!vt&Flv306OgLiD7hsIVUCc$&+R&G5r|CEpA| zE{wE&`W@XHf$YNo#rkKh1<|`lp|++tJ)k&)#qRPnnU0h6m2ZsYF*F*LBxPxfuQ84- z%S;jPTU=W3g5ciqjcGxRU|%l`5sIawm=HW3YU+KdoC={qvu2F}%TW74sM(4ZT-0;= zUQb8%QzNv=(pS}HmlF)+mR7#cD-tt*Ov$(`zDxq$usjkAo}L|TVE*!te~H8iW!}BO zu^NarNp;lxAw=LUWThYMWJP`!h&E9<^sO6VIe&!G7J`s(Z)W_MW@rF*-5W{)U5}dR z7Lj6q5!HY?m5MSv>&mkca5~-JZ#Xk>TPWxagx@0lD6O+CuVeRAXytgili&zdLEDw~jPHs}+8smw8SnP0+F?$#)wmq&_r!c8In!td^#YApGWWAa zYQ5)agkyN^S))(b6YXl`m}ja(SIFWgcpDc_9$*AqzQY^7Jujtixn6yTTVtP*k$dFF zd?$8b0%=|$PdLwKGD{{bMHl)Fe|{J28R*hfzu)gW)^f0^K``op4z*qWNjM&Ut2)cZ zmz=5KJe*a8=F~}VJ2!VvOA3>M+*ldZdIp&axmL-}0m1HnPQN(7Sn8l=04wka5n06! zu+m5&iIcy0o(AhwR*<5SP2LOQ#snq2OyM@>|7cGSVHcBU2)L*@-`_+6?RHBax(U&Z zrnVEPgKT)i8raQ-0f|ikp;6&f!nJ<2@z7S9H&iT)DPtAEiEPL9K?#e&(#vQK4rhJm zl~sei7f4jx+&{W&nHa%fM4VUN=>0wU{dO0z!e@);&p!HTgW4wrjZP7K+&{IrJL3i( zb!`~JyGSJCmVZNjAVfL-Y19+C;8bO!W-C1@l0bZ_MZ$H^}3x@+g$ zm()P7`&a(NkBf&F6{rzm&yjBeYBiW>RKKgRD%`{6WrT&}s33g=_UB^}`$ zla)Ez94N3z;7C{T4*tu5=n{bFn9onz_Tgc&3}tw|{Xf$a-4ov!(Tq&Y@iZKrR*_f3 zxTJz{HFhn{;8T-4^%y`3SQ?Nzu0On=hc}hA%7&S2)oescs@MgiutWX?B=A+kmLRJO z$9$-T{8YL3VW^LO$(eqMXc&g?RQ&r2`H(AyoAgp$FlHyh(cozoGZi0AQiS)=$#R_h z-u!(N>p0vx5l+NY%$&{t8*qv*bqUqK`bt6=4md$6--;VECtCH5fiBVCd;UteegZ4V z<$?JWB~*A{WWRSYwUcpj|HBZ;bfeOPlECkf@;as>a#Kn}@sO-m?0bm*l0=I4;KLKU zG(rCRdf`X^a$7LyF}?n5A-y^DJ?y{&E5`sN0K(O=f)-GyHq7kq=vig^`^9m1?){m zI^(Gbq4;qT+vbd&kKgQH<3Cgo$3csX=Z#%Vm^&Z3>O7taqbB=s3Ux5Nweb1JC09%R z<-6@5m`+Uy3OSKM!;|2{x|y!ux!$+a`6B}I{Jo{fWw=8811K5v%Qqf-O4f)b0E}0|~@G`!JNui8{T_c%{7VHzR z+w8SWpd;@^%;w7b;D_G!|DG+PMpy1u8oI0wK?;6cn_g%?fLY5? znN3|M#=V*Y4`|lgqa8L$Gzvag-LG|>Ewu%n${&2|!gs28`GxN(&e3oh=}vLvovPnLX=>;6;? z6n!b}x6PRPhGdC29ESxSzK=k~8WniG4)#RQ*t?yJg?S;EVa?*>7ZjM-N^<1SvgK zL1{BduKN<6_Mjk~kGP+{B-c&^9P)p)XomlU%69&wKga{AO{Cr`7!)YoB4I#R-v6_&dda>0LDj^w&EMF7SZyPp zGcO-r5zP%EIcn~_OcY&hsC;4L9@ssQLpErx-np!r=ItoE__b6Y*B9WhC)C;WS>H(R zwTcCQMjKEylb_q|lNrIuE(k$QMQ53ucJ;(vz>rp|1FApqfmu|r)?!dF{V)-!**zez zW`LGEFt>j(JbBQg%LVlZ!=Hud@KeKJuS^B&5Q|*`EJE%lsHlkc#2q&4RTjZ|GBg_Q zqs*Dm23uRv9-z~LUISkizydXS=Tvs{lqd0WQw{e)py6UUJqSR8Bh!_7`@H|YqWODx zlORGc`n)`hl78AB1x-(I2iKi0Qa4qCDn1ia+YLgAyAvV*DLdc66D|92$-2>XTe$q8 z93uMAc;*gD@U&Z@a^fIPzTrBb^7@jV!Fi%X=`*vnUMQ35E)m{3eHKgFnq()&8tW3D zBQ(fN9Izmn4x9j9Gt&ZCyxT)L1d^DB;Oa2D|7_YSR`|LKM=ka?ntN)tH{hv@vRXIy zV%1u3a45@J`FByqo7&^S`S{Sdt*JJ;SY(0%B=({8c%J5McQ2C`YQQnUy4OBH<+m?q z<_>$lkJ+Of9mzmMkwGZO|=#7o~Pb=CI{miuh^2@Fd$Dl|vCcR> z?QP+bl$)&V#(fwGUos zqcG{6wi;c5c%|7t5aYA(`Gb4JB2uwWD(00Y7!pP{BO>wWncp*1zK1J|8Y+jKL3Dzs1pgeAqc0`z2q{@jYwW-GsomE+Z&n&0&5zRw~T1Y;|7`N z*K6WDNwkb%MWMR!?afHn32=1P#D|Z*;gu2amZIS(kgSYY*t;(_2~6{w{PwM7=iW7la*jhth39W9MA)m0`;)HJ^y~k3lR&Kz{!(FuvcR z$->!c^gz@0nuWp_9$yfV1oqhgW+=UfWXc;YsVUAN?vHc?N@qT+3907qHzuB%#g2~bT8t_-DNw71SQe!As;Hhu zW!h}nNHX8<=XH-elAs0zSX<`fb>CP-LNE9}CzY+*{+e`~7m#k$z(`j@$JL}Z;bM%f zQFQrOr0e}oalW4g$Jev+UIzg+#q5A{5J{o2hhwm5V3YB?MIRMF>{9rMl3v zKOS-1l&1&Jh!tmH6@7deGCh~p`EZP645PK{;F zTBqbg;c**TNd3Y?&WzWMcq#DPGwYiwc0u3@kYkTiNoJ)O@u(q$tHUalj_Q88F|f`8 zb|j|i9?f_=5IA1T#qQhe%+&BtvhaqxwhM&J!1Q2@!wTiuLzLfIHg3uC>}TjFWsXt& z**!O17#JIiQ9t0l_0@V$SFLLvua-5+2OzBK!*D9g2;T&6Ohu9 z742L9ga2;PLuZMrGS;{B+b+>!iBo%LpX-G8$N@HqUGK$4qp*(dF<6K%v)kG;IT3r9 zkLgngT3~6$liPX5Z7CyU56N&PdELkv^QF~WWKJGW+zDHVa0iVDh#;6$wZ(-!sdV@E zDS7$=TaaYkkC4iQO3PDjVV&cam3|!YHm$i`2Bp8I@7F{td&>S5gBJLSdiT*Kwp4Bu z4)EE-J^0owFD=3Fi^JK5Bf^Uhj{7>am)AX$Q>a&vk~IbGYD-j>S^nhXyi%K)Qk2QQ^q!6F4Pl8m(LD%)?Ene^%MJs;?3|8gB;Xo%hD!qs? z;=j=ChLj;b>oxP)!klSXwx!0{PN<(xIeT@dLKPy3rl zGiBm{rg+XsuTu*unvbX8#~p#8I>N=57lg|SRChGhO_OsLS-0n!7h|_h9L$l6UvlQ( z9731`%5Ws@5F)prCJu(CK(IbgK!^ASBaPA{y(ww_pKA$px?>q9dj z_}dD2S3+U>Ys4i%gERBft=tOGYU-U02p7h0H7~F)>>-{hvAJy+Z{KDzI zQqK6!u`()GwY6Ky=84kz&Kn|dZ{PlWpmnqYaWq-z%K(L2k=tl2oacFO=Ejo&Bp&+T8-;>g+m`*y8xKFho~qh zvM^^TFLFtIMb~)Zpe^sK_!nyHcj=6}^7SzQLpA!TVtu69Rr%}0@uPL*SUTP04W#}=Z_MXmOMe{47$RPpSzJd2zh3T1uP$0+ z@+6kaH3lvLKskyU3|AB``FFXblSAi*mps}%b)mlg&fuN<3@jH=3*A4wL)3G z=k1Qkt(nNxO>8Vh|C1p8irbdIwV&9QUwZ^0iLP}uDSaQK;db#iP%Y#J(^s=$a1(%T zp?9hjdi(tQXo?_L2t0WCo;MZ64VmFPq#e$M{sy)Im!gja8N8YSW&MwrKnueCQ7q+JvQ_&Mj~A1Q1O7mZv_$%Ch#ql; zn(geafxWCe$5G4N1Pl}_^m&Bc8&P_+1F^7-dssTNdiz6lTs=u&T_vnELs_J@`vspX zDB}Vxtrma1QjF(B*(!FepQx?7Z|ghR;>l&VvB%Y{ zgpl5mgyRA>GLc%Q8%=3nQGLaY2&YVX*IIde*|viRvUBUVwngRb z3-e+0aE_@cK>f{zdWV?#K3fT7lTYPwh1LX>I9o-1^U#UnvyXgk`xnR!_^)~x82>vI z{eMBK|ABdjgnX^b|Nqw7|E074^XVb`+yow>j?Idr;D5vL@8uw!`@Mgn)U$R9+266l ze-+A1bO`_0{WKSAm|Ec8EI|H`gI7{2{{!&<@Z%p1zdtP5KX%{w0RR6z{S3SMkU}Jw zEZzR(bpPL&4xhzhL^9GqndcIx%R=}qcNLL8++5ovqag$k8%A?>Sk`Ku=dOfF; zC9-fc&&vNxq|es02o5r>lpX7F5ZaszUgv^q8GO!Ejt>gC#Bb&AmWpGufa52UyB9F+ zXYBzD0(5{=2KUX={hP)<|Juuc@;Wenbzr^Q3Qnl}f^8&8me4?cetB23V%Y0W<5$NA zyaF>S`@;-ZyD|6Be6KeO!uYd)41rx*gew{c7GFO~5$GOP)@QA&i{WVp4HE9C!;p?V zk^oygiQ{C0ZbH3IhLSL^*Y8VFP#W)`<>}Ix;qTgtt!GqbzR}+lpa$nPf*@VAh(M(YX#@2zk%7t5mmBhrp%pZ0JRxl6HTd0mED!gU2Jw;UJ@{Mq>`k6bt7QN-$3LPq4Za(#qw!Qf(ZvzS|N5c@<|8PFakj6ewAzuAHn>V% zXX{VuZ+{1n^{m@Q&&)9aQtJbe$&NcU_-|i=W}Zh;NAr{9M>s53Q=wYA-_pl#M02G#=~;8( zHhKG1LV_q(CzWc@L4?m29%jNCSW9yxu(RsKBX30{bS%kwLL) zCppMGKH2YCh!|T8B(57IuUtY{s%V&Fev6K8B09OB5=NzRn_aY=+Jk}Qwm}g_X8Z>| z`xkeE`Uo7w5)0harCN>qHeDlj34PuI*PD-=nZElR)Hhd@UV0+U@`9rrtmbL|^$O6% zqGq*^fg%DIF2u9+Aq!kN|0n_ySCi(_ zs*6yU>k6*J-YC~i*)yrm2Au@`f+CKU4Dcpoh%t*l##uiq=h5$>G-VB?B7f|;kqJM% z9#mr?Z%bseu$`!nAoAK6G$?kScmZ+el-3kh!LJE&m-c;CNhBWcZ9o20&wLov_F?jP z(vr-3jeWk?!kpEa8u*kHfKCwwivm2IfKOg4U@AZpiV=T)=c=X}i`OirJ-ElvSafDD z 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 z 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 W7-76~yOa=b9|;jz;YvY$|NjN#YNvJp literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_crash_AAA.png b/docs/images/hbfa_crash_AAA.png new file mode 100644 index 0000000000000000000000000000000000000000..e0edc17091fc0ea5451f1d24e775ff12a1773b7d GIT binary patch literal 8252 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 IJl-QC?S!QI{6-QC^Yz2$4_{zn08C8lZ% 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 literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_hangs.png b/docs/images/hbfa_hangs.png new file mode 100644 index 0000000000000000000000000000000000000000..b9984b28ffa4c5c1ae85d73b992d2a43328a1100 GIT binary patch literal 37147 zcmce-WpErzvn|?U$wEsOGcz;Gvc+UEGcz+YGqWvbW@cH;%*@Puwf8;Wx$yJFdoN;U zdTOStBC9%cb>^zop}(X>;J;vf0RRAAO!TK50Dx0|et(7r{rm*84a@mFz}SeY+5-SW z-#>4VL}~=>+x$eOJ1ufBt+zuY7rT%f+hhD6NiM>71(}0gVKi zZm_3IlNV-jVSsOIo7ZA`)1T7lvT_I}u~%o6DEzPSEo)zdnMukls#cRMFdUqJ?Ktsg zA8$l+YOH6>O7_>pS+-&?M>PJFef%?u*EfWmi0GGaxj=8Rh8p;?e*k(`^F|506PSkK@z}e*nbihzL1z$t}Nc6DEw6`C|YU33?q&~ zmqDWq_o>Nr62a{w)L6`WGm^V3f1e^utjCBEiv?GzQps8+i)wUfa`J^1H3on5RCf~7 z;!j69iAAsQ+S2|ru24hMDWhrO3}s2hv`!8t|G3ij6!e42pIh0&;;$*=jneI}K8 zznxHi(Fmu0Bhi{p3s_VuaIrcXPyas4y{1g`^oCEC51cfuUkBZ)v9Ns%hHrPnE_T=P z0Ksc})X4Yy_LEWQ=_Kr0Jx(?NO5Oa9x}48$D{qNG#~+HgD6%mN_BKe>NP1tg^KD+x z#BmlUa0`?V5)fFlVDls3Zaa$)f|s}(a8_5GsW|>;0?Zl&jwD?+*}l?9Z0V75-9fDn ze6mF6R`efuC$hSsUjIyjX0iin8)1*g@<(s2o&O0cdOg=QW~c%av)(sbB}LCsXaI?R zOp~L21J2wrj~~Nw?St?KHV0!Wi608|=L(5ViK%&xTXbOES|48OGt)tRs1UT6mtfO_ z0bOl=enMIIL~x!#44qF=81qM?c+DBKNk(s7!9BmFCB|gUu_CgvJbI7n(&`J3hw(`y zj8E1z)t0dALzJ2W}pk|d4)wf`Rv zVy?b3h1XgkBpZnZN42)}0mUS!QE)xyE3eSBaG%YM@uFjjiIHkDD$RI zfx6$dd8l4f|1uQJsd0{@yC0W`{XRK*Nr+LQJ)X&Gj;7qakj|(sFWXb5TH7?D6k46vognr_5I^nMAlt8nZqPfn5@P1Zs$} zt!Mrg6_*$$xrIZQ+)Ht~^c#~nh~KP8t8-dj#R`;Ov8BvF#8YH)hN*WAo;%ErR1nYk zA2St_PWem;x(d!n`;~luQhiZ>6!UM0MxHbX`=NKYa6X2GAM{+v}fyyV`!FU-m18!KDoFzM$ehOtD6$z6Nb z0X2TK@a+ccWZVs_C%i5-*A%r;k?zUA21%NP20c1Tl-)X!(b(NPQ*h4t)Y`XVS4Z7l zHO|XaH7W{evG}gd!?%J!FRYt~-H4Hbb`pg+i+RpztiFTYA?Q`*dWj4%nNrdFj@+@F zpv=LiQS>i%2OTT($`Ka0s42#6y)Amk;^%oIm1FO_NTfgIAdp$ESu3E?4&C1Slo^tG zo8Thc{!TY5hAEF)W#}cT2?TV^-7?Cw&WD41;4t4~PTtab)m1t5o+X|$`=eh(X+F0=;PAV+|O-(K5hEiMFW>SvDrUl}1;p|2eW5j_!uv$Z68>`-O znL}6ej^}vUuW;sARN={n(?jQ0xFnyW4&jZ{T7*rWNkR@IqQvhHzm^N7YyTFs#6ud9NQTW;3+*$Lg=a;a9WKD&wiC=73bG{(n^mdeCa^tE^ z>zdWWPj}T{@xtFxSJS&Sf2hh@PDF4}nA|awEVrKASV9Z;`&{zZQBAKXHKN87& z_7B|tg^g(Oz59E+jFNDD@Is(yYGu)J6;pP-Q)z;)kP+;cXcnayD)5HwstIdQMtr)i z!{D*6CBtV~lS;7#KTo@t32Rc09SyMamFpZ7C~Y>3BOJvq)EV~1dr`w*vA?P3O>+g$ z=7Sibf5YoIe$bM1jTtYf&DD^UkWIPnLdu-WqAEV1Zph17kzc%z@q|G^?;N9e`-!d? z{MaIV<_ik)gf?_fCv)dK_YK@yRZ_!7;3PsN-T;iHf>d2rVP4PCT$`Z&)^+a;1tc2V z992Q8BS&cu>K>51)@YqrDbzA+)T$4W)U3F6kb0xug)KHS*lmx&+D4o|CSSE`ly7Gn zeaBE*{Ap-;jEYh09QfOun^gp6cmllqr8iJP?#VGCEF{M^H4&E#>o#Xi#Dow1*~gINq1mp4@C6?G1DNx>`hq0K*;UscP8v+B9bt|+%g zl@p?Hf3vyr^AV3oR>-)@j2}HKnIk+9^^g^UtquOX{HT@E?*9NA!#}`A%($=@A1>sf zt8a7VRHP)$*Bg^lW=xegyT|Eay0u@j>{(xO5Qgd1oU)Bdn;N3n9`#D3C0C`W`0%{d zTe+ZAF8?^XjYQ&j3tK!rg5#JxTYQ%S*eUVnp-pRtL|B0HW$>@R#9qgi#Yg1i;`Zn5Sill z-W!bP+LxLt3k|grE{~G@{NjcTWSoP<#$Sfb%POK`U=|uREo~(QN_T?Qf&c;XOyUiw zVmu*-yfl9s^K`FOGQ{K4r&LvC|( zXEX`Q?~$}h6)}2Ec{-&f4Fx4Ogo-yQdf6i2)A4Je#X2d7l>;Dv&1!sy1G*x(@rZEc zVd&lhyepp8k2?h0Zu|P+bS%V9IZ5rkx+-z*@8puj2HSIi>v$uOKv~t$u@iTzlPo9$ zbW+j+TYX)InL;^n^qu~6N!DM-Bd69(T-3aLO!?E9&j34#1r={DYQ?(b`Qg|1#GwP) z-|}USx}-$T?I)lm>O5a0ZfQxAhvlpvuH3^XFI*6T+R=}5JYI1&`<1{{vGKsxUP4Of zY2NO*(gNZ~c7*agLQH35&cE2juuoA&5TInq+eTy)6-H$}HI6smTk1a=hKDhL#nn5% z&!pD6F9Dk^KX)##SSAm>=u;R^%$s1>FVGo2>k80wqiV3Sbt;OYd(APDE8A(OkK!LXvf?nb^vG8h_fzQffwA6cJ%Jzc%C%Xq2UF$Z!K&qNr*s7M!oH?~Z9VaBjHU%MjVX)mj_6V0mdNjxj#AxTw zr)F9;u9!M=%qLNXpxhQwHEUVMOqYN&l^LFuj#L;XSYJh6eYa866fRz}u(geE+{!8K z5^bmE809qkuBg0;5V!Ja(F(gO3Sc0WlJ&|y33SeTSH5Np}2bd+GRR*zv95P%Cd6GM@DU! zV@hvFl_gCSmkcns!{;RFkxEr7Po}l<`R&+HAuC+#I>p-r=TPQfOzQ%X#dWeOb9#`( z+g>n~O{)hs&H}bjAW{VT9Z+FGe?UTXeHLjHf3s8m=)vRa(3~YeNz0&mE&-jtt-3yF z;Z~{wSYle&_|g#NneN46j(Lvj^Uk*%=?NeD7>Y|oG;t6CpGxy92~73fnF8sXmx4MrcBNGk<)O7>ilKh)RgS3#`nA^i5n=0{w2QKdA{}?%q#C)d(6CgkuOH ze5gstFsUB(sOCsf-jbg%3bP@PD7#O)yws~w3Rm*CdCjV@CFR@O)nHpRw@l*HO5B9w zQ^Gc6Im)wz7DV7y3AoP|D83EfK67R*1jI|5rdNnAlJ2>6)0&ktbu)xWaV5&x-mFns zk;+*v0wbHp=X57NU8md{J(wnQr92-VMMSZq52c1EaxI2A!pMf~U`fV0G5HTpuG%-(glPE4^buO1r#5-Be^HZhn zv%;$V$_Hh`NP{=Xi+FgLn=?#4;z4(+r|+W+fCE5!IAceTjW5ZH@yQ^EN#1z9QQSzI zfmlV%nq>xf(~@R65<8tN6~4kg-H;+(>=%zj_HB*YG#;ra7>1jn0#}uBlYNMXUv}F*m=1eqAl`L=IsXQfDs(9C`v?cN3>+d9ZycoxF+Qc zI3_w&U`ROeV=g0}>lu0aG!B_l({2Y)G;Jm|KU#qfDHUd3qRj_wt{ce7=)^@HnesIv#d`zvU0P(G35rdZex zNuctjHRLP4;W=_?Lwia|-FhlW?+8&p$%HWcv?!lzRcmj=rl%+^V5f2!Ymo0Qm6drGQuH&Lf59b=XGT0mos;CJ04)hv~*1Ro5!J11p+YYuz-pJn}Y4b z?i|?49eGp;s}Q6P?)db}FQMeT8rAL1SDe#NRKs5)CR+ss4l$s{Y6UaLvDoB|Qz1Zg zKOw{Ep5Xa#q>|KYN}kRPK7#FP6>9a$D*Ry|Xvo{N4V0nWcCEwDWzl>6^~^*E^q_hC z1_L&i0uw7|mC7z%6fo1%TmSkJ^o2$h=xZE{8RIW)kin3HAR#go&BWQlkeWAsdv*|v zkT}5WWdJag@Xha&5abhhiZ9KH3A06%@R0%@I=3Ln1pbl&zK^m0++}c~J*lbHHSV2~ z#lP;RR-oq#i3EfAMBS~dOi5Kp`sIrke{5E%9=Wt=RO$hKaafAARuU%+0H8Zvk2hD3 zw+8D2gNAD5DyG=Yljkz?o4hiiJ3k`u%_2YV_xi&%zT|V*ynRt}l$Gxu+GFNwCQG_h zo(T~$bUXgCgSWMbM`f;rF+Z9Tr^?M@@yN-y6E!(zH#sJR#u)Df35lwmHT*ffO6uj>pekldWmgB1uH?*l3I+fv zl2pVf>`Y1bl4hn0({JC^x^mcKtiMuygYz9JY84%JJqpth=EQIYmoQLW=i1)p zsTAe=4j|z|9k*J8R`rvrOMqM8MuDjS7E08>z19zZa)u4Rn(M)$QU&<(L9DcumO98> z+eIT{=u1lu-3CdVUy?|u-{|kk`#LJ<#7nCjPPI0^{?Z44u3p#f&P##A``Cx$nyVgk zYSW=`+N9B5ofH6A5z73UP-it%BvviBMQp{CD=C_PODil-&&q(EJQWNQzyG&N9~T^8 zG+~hT3$Qd_Ry>$GV{kP*8}I>`;s=7r!>Cqxign{6;m0Z`$tiNmyP(^t!MRFctFJ~+ zkrWeJ3AMJ2`6%f(5LOpMp;n^fcB}Ls<87^Z4d-Q|NTaz1b{^ z=uRga$2pZSEx+etTS1s8anZ&;xwWVARtu_ayg#`l*dT9m^vR~ocw|H0YC(e3sTUGX z4Yg20T`gP$R`UWd3S1)5aSo^H)>OK~lA?ht+2Ly!|R|jbL%`!D9A*o%GS<|BT+96*r6sf1H1V^T^`R*h6Gf z=nxlHPpM<&C(O9}8B+-D-^~D1=kH#W1`eQDE~3%j20cgA%t8v2{Gyc4Mv}-EbPBdb z-Yl5nfYT|i^mN7md}t{*;6yLhS#!?7H8>8R9+#;!k^ zD~zIMGEJgxfDSuy7k({;gjr`Jhym^wEyd7i7eE9j=@avh1L=eHKM1VaN**7Xbl(X6 zWFb%aI@YeFvQ0)?W6xOeAw%aRFNoZskUF9f1|C*}RX=aR`cPkrSTd|E(KZelKTwdy zh1<-9Am4#$Q5}E~J`jUQQ8ec%CnD6?1uppK;+fr}!awXPqx9G2CkfIqTIx~-F^rB? zubgRBIKz4DaQ|z3FJ+V;i-k;8-tjSF-A%u!w7%NOy;={C^2794k(}3>T(r;+iTryz z$6T~7V6?377k%S#V_|+m0NY@Oa^^zpGYv z{yNm=y5Um#-JtG?v;>t|9Ta_9$|8Thlaj!8$E@cLrIv7%1X{*$E9-Uh-SE(@j`c#$ zQIhmaNaXsV4+ATVz@!<>xgvQEonx|Z(uxQBC|VrbvsmpC%c_R_K{5VS%knYQTWR6T zUQgUY8!>`*iJ51qo|oR-&NA4^>3j??R^*D!B0gy$F)f&7T|&|G)h9 z4#w;eW%OYglGi}p1(Rjq-FZ3~fV5v~w1JPbCW7U-TO%u{)}^5=>I$IHD4yoFx;Zd3W96y7~w;Heso7P-L1^tkdnUOD+*=HjNXUQY!^+a)6J@ERG3C$+#}_f~k2>Pb*SJ~>5va_%@$ zB2ALJk93g^KT}!+&G;?_2@3SVA_+?dxyX}+VB6wR`>)4&OD+x4j&`58p{-J1+SS+$ z(`zmi*xJ(Gp|pg0+*q0i!uK$xs1vY`3OdjYMstW`XjZNvKktAE0E;f&;fh)5xw#|i z3bjzcVg#g_j9pfWDw?{wXD@kznxIh%;N~F1<+<)z?e$m4|0Yg@0>?(J zT#*wvHVV?O9~+G);240-Kh>Oflt+kPZ)CV_7b_hz9wutpup)zM)!94NfCFrT)(jR; z8}Sy`Er}*Nb*IV2zghT*f}se~fk5{~N5>R^f^P?h-dG+VQ*N||VoZK5NLgq@m~?LI z^0PAn=QD@Gz5Q{S@-UC{)~#pQpn`l*0dc8!v- zNcr8{lMbJfxrip$8sK2B|m3tp-yk85*SeZERPFJp{b#i2HnUIK?OmNLgKkDvMprjuGD|Ymoj?WU;MS`9g z?N3|M(!aRyz{IJJ2|}9UMvO@Ujt*nP2IxRU5csddhHv+4DU-KtGBkVs)c(GYojkcL z`<+r_bkZ(D53;o-!PYnKcYY1bAg2!M@3LsevgfSYG4D5IT^Re7oLxD#Bt z)#dxxKB+)gFwyONLAID(>PU^-VH6I)*;uJYQ<_AV<*YBs=KwZuz6G}a4b70{0yJEG zDx8cFciwLUXYaa4v7ho3c_Rch6q9A;arE;;7#Ip0|6y~94%?u%rTw>Nv9FQH&ss-$ zy1IRzT=kva342V_jEa!DnCqqT zXER%{5SK#?0Fu#<1&CY)f^RpN2de%p-{>e-YH})Gb{POTd}>+bJyMAPo%!MolS4d6 zK<|+$;OYT`Ppf=7#+bI@yd2snv!5gt8LkBeAb|4}1|><+mJ;_I*MD>`t}c`{W7a%& zQ0+2;_}qrlwXQ=3*wW#Fs?)ILu?~Ijs*c?u$l+5Ov>$`i*eT@ojFPeqm6F3z75}n+ zllI?`f;@+37n%VeUb@tBaRDz{jGe70bx<~E_+Na2?$fib^*g)RgRnRorm2{loO*pg zpbpa4xsmimHbX>GMx*IY=Y6nJRcoX$D1TyFEx6!Yu|yREx9~ss6;G4qzrTGt>Vp?a znN1UqS3dt05IEGTv|e*tY|ZXhO5iOo^X~8md|=&SZ!FdElD7k@ON;*$FF*opGYkz~ z=>(qD7})60AyEg3&Ag=4wJzhO%lrCcTF!h8O%}@eJ=h(>YWE)B-{Q*~!~nrYccBVf z&Dc||QL|Gs-u1GZ(HIZIvuZV_hzP=-E(4~$&mymhxp{3E5!BXP_h&P|kEHHoH|7Zb9$_>{g_rT~>l?(3}hdJ+{V1Mw!1AeIWns77kli#%wks3G{Skmd? z%&+{yk{aJ|XFz~$QbX$*GNU&>((?~EvZW$CGeZ>t%AK6%d_CDiR3@!q$)z(V^;Si3 z*-PWz8s&hpfz0BW+>#0_w!X zXoNG*=UFE7g%v0+WwDrCLhVT&k-y6VRUxyBn7r;SHW&imeWil1@L_*JGT3f?^<0qN zXEcz!3R^Es`9m|jpY+8wBx#S@Lon}YL6_T8$f9LpJ{wV*3o#`F4ivY9Y>h9-QkdlB zD5<56RJ1ttJKN&+HS>EkLj#sz7hE0F+?R;iR=*vTExKLcrz?*Q3^tJ^SFNteA(P9&rpn!l8@em6^ccpCo_PSE;J* zKXOW+m`&P~0Ox?jAQMeSvrs68_cG6re^C4WXN?g=Bta~xW|7W8E|f(nvo zh|g)8S$%g?y!sOOGe92$!0v_68}bh{r)>uAoYI2P`bP3z8Se&oMtY zA;*uMTG!ZH%ofDkD;}Df%9e&{3iPxOFMXu#U%JD#^W_-vZ*JMIa{RW@5gLQr$h$s? zx%yVovrt+JFK)?9=IzX#^(qHK^XWl}G4{B(I`K1NH#wIH6fgjKz64Bj*kp%y;tPU(lwQvOg9gF45}H-nXF^#YG-Xhb&}ce}XZ6tcYlOOgI1m)Bm!U)8T1U6P z+vx_pH#9-}lw64${FkGG#o_F#W9MCbST+Qo^lKEljwt-!)(p`?I-W+s4^O?yz?4S6q(} z!R~6q`)m6+Z$+uIiU)t49zX#diIZF0y{}e_nINB=*CEMs=>Sm08o9qOny&My+i3;Q z{8xHwcU*4xV_tGe@@%c)F_x$7V*mCOgV&FPT+Ax;CMgFzL-`&0^j`+M-^ zAKef?3*7>Jyv5P)b15)Mx#h`gH`^GLxsVIU9OsK+)I{9g?#})_)JSr3*bej(s6(yM zgtu-0@S!|`yA{I#2enlfxMBHcvAj&+(lb49Y8L^Nko@7eu{qReDZ*Eh?Rj5A<+_Jm zHk>kZs~JGJzJTe=prXKc&EYZUFqZ9LnhbgKj$fcZCzy z&UpW^2D&eEK-=pvk6 zd_l0&yA_nUs#?oYoQMws)bS0avzjX%->iL&Z@{JA9#896JY@raiZh|xA5UWqe=snQ zp(k%GC9O3Y+fHo5ZU*EhWWFsziHA#zdZE5v6eDWnp5cpnISO8DY~&O0J2}2Lt6rC) zJXvdmZ%0Q&rE{b)K(O@bsZv^W*bUTtWcu1`QfXwJmxZmp;Awq&p|(%HW%G@}&B{8R$rg_H z?h!_8%00LP`eQY7?)OIA(HP-I5{%RgRH^uS?6>wEQ;2Y3_2*sgxEz$FM9*X+GUCR( z4KHsl{+LwCDF@-Qu1V%Cma8)%U8R<)@ZbE6f0Ta`mAr0H5iR)d3^&A~#A#>7@Vxsj z55M*}K1X*$#MKw#Y%+CfxCwqvQl?&JRPsAgh_%@43tmr|Uk_{GFwJZ0-$?WZfwsCT z8!2Cl@kZ%myEi5}=cUpC3U9PtnJ5&}!O*y!N82n!j#+a1s>@EpF)^v3_O%j_2>jPE$v3{@*(z{EiCsTU2s8oQ4?HiLzU%{9!B1MWWzLDq0_p?8Cjr z!{4IFm>2%OkKvj3;C>nS!~*^P)fSS%P`$XgYeP!c)KF(3kB8CQu#iWDe2Q!D z(iB172s0@x8OT9eW490j86BM1i)l9Ub9Z890wnn$+%v>Hb?iCy&hQL|ugSOy$!lQ& z5#;Hu(0?QEjYI7p+SnFuWO_HG(K~j0UeItV$G*jGL^lM#)bGajd%KbxE2CMCQHR}& zY><*g7B4_7HF9ImkZ|73aj80WW$=_2JZWvWtk3@dbWC$XCCE-NBRywwLmRneLeymz zbwx9d+V~*9S`f-_s^>9_uiAk0<@3CFNaMkF8Mf~ZgVpLhi7T@D|e06BjV z-+yh@AgcfxRM)}O_I>H;U)Lq4(HM4(m(4#HB?S#9gD)P$0XWTtX9bsm(K)mp)>(>XPq=P z5&tVNSxxIWALS=(FJbF(66CJT2Df8aKHp27L+b|6U|d{mybts@(32s951p`6i<9C2 z$_LpWSF=zkIf;mkmXaVoQ}6HmZAgzXei7^rM+F5s}Y2P|wAT)?s)z|sWjLM(i z(s=FAd`{$Ej9EXLO0da^A8u6((SejQYXINOzCHr^4DtC`~bxxPb}nD&mg=a zVY9M!|74@3M<)M*+f>b#xi3_~v2AyCJH`J{amVpk%#AgXxdqf`mg}P2{_J{We=Yh_K zKea=6jYs^b_T#T7_0ea!wrz@?iKXYxryC!px$7WelqcC*ZIm-|?SJGg56+6zwWz=` zj_5sWlz05e@PYBV!kFmb7cfR-#i;z9_Ts zXF=b`7O*=?@is^xY;MHA9=2rjqLfU%NE!Xgs1Isb>PY}pEq+SVo=op(Uy~i-2I_Zn^_|}q}vs-yyYXG zl@ex@=8ez&w68NNO%8#DZv0^mPU@hZ`@>0<{aUKWGiR)G?}=68FluYe=A!tf^<5Va zE0b0&rA6P|2@kQ$(QrjgDxKPDCR>R&9s$sCxpCMM6FJp$y|`}%7>saSo?_l3Y(Z^2 z9IIL6?Hkl~hP676ABj60@px|j)a;siCht!5r|a5yx9-L1J7Fb~0zNQ5+&8jiwC6m< zBF6XgLgkfsliJ15pa2kDyZ4~<=jUI&lZ=!S(8dR@O$_gKd_`y2(JaKrIWc>-`H*A(o-iZ`-#T-A0Vj=Cuk3>S!*y)@Qyn9t( z0iQ#QXXQxe?cv4h)%@i(Z%V84sa!iwSONuCPR8n5kgAjbf+aX^6i8g3?(~$&jMFvm zed^vjn67OSPRveqetvF78`3XBCNEI@-gj6b%rYO&N?1#2-cRwO56SDo?fMxdy#8z- zfgm4R-D%GhDc5xwd*zopdo@rMCL^p7ul~lAr`*%7V+>3nDj6gab?@w|PdUXb)%1U+ zVYCoCIvqXktSVtuLWNG``QP;`g+KO!=Oc);Vv;|TO^1#()thwOM02*;Y*yr)RXmzAJKI+Op+Gg z(rv|K=o6!yocA9SGp)T)Rc2&+eK7!nvP#?|d`Zy+lEFSfNgAjw*7vPg@Ae(hQAwjn z)$-#XA8uwFh4^+Z(-E+c4(x~qYv{k;TSv7zyf3}BI8N# zV+J;Fc_vapJmX%^WA-vxw~sUv_eRA>GtOnJr_HP2ouKgdRxA9!8D&WFVDORGd7h7j zcyoPw9pDhP&D|TbQ$)uxG??mpu6OXcbPnNud+TwUqFbg}Ez5MEg1*%d6 zT&YF(dkrX^*nqCdRG9}vQZ(MUtnAw{Qp=BqH@xazLzjcz`bq=`FBnr!du2nrN^Hp& z=g!VI9uTBO!e)MWW;jlM)%THaUts}`Pp8Nacg_2hYaL}DlyYUlh}G&+o#8Rz#!aG# z+O-s^WMRMpjJB?wqZF|)VQpg7B;oQB$=3%}g3h4?xf5=pj$R*}>J}|U4u)nOIvO`J zXVwqTEG)n!^Fc-01PCB1O{tao{_D$}*7(fbTI7O?J+g|vQt2~&+7CP#^_#AO<1Dgr z`zVk1f?$-+bL_=;eBMk#UNL`iWLJW8$i{XzLmF10Ffe;shRkP^m6d&o`=#QCjZ9&U zC9lI_M|5B?{$O&?5XM`%_4PI?qN_Z!idi>g8DYLJdHrbhc0W;z$aanx(^c%}1ys9C z$FcUDY?p5TCw@LJudgFAzW>mRsA$jI_0jq|_Yb<9f zP5clNV#mTH2ec3RY<+z~C_r~QK3071z3(Uc+EC#c=`*QtK(|!hy1H!pN2!@2jK&Ga zbn>guP^tR3lGvh-hh_e$ssF}#bu}XQYB_y6)WC;U(v!!ajk@`Qfo``_;#GUl{CA|v zijp-dNWf<`tWoU?Iis!gH%#czq3#VW8wWXqHRmXr}729vRzak@uro3G#OLM{}(0J@YawcD7(AsDK;PV6I@8EtV!wBqmf zjDMtkMWU>6;zM@p>=z=TQTOtYBJz1VycnOo`* z7bDlChVsFMvtjwLzOwmbrbmXW$#v((%=Af5H_OkU@mpd{A{?C%Uutvg2oMSx{cvfX zn3~u3HtL9WrBx!+%JkSfysI47u-O|@`OWTW0wvn4347R|#;gpt101D# zD;nlkcU?~)dfA4kIg}G}3%5LkPT6{$fw*enMBJNvani0ntgK7jPyW)&`ff7e^UNh6 zIgKz!9~KW1;Tf3tj5GmhwC+YBnWRz+qM>j5P~t^D66HG$v9a69pmWUJkjgB+Q_*%m z{ujgMI{TR)DoGcpSSP+H=iTG*)YF;SF01Q8fa&`P!U|#(6FTWnYcMAZaW#<|XFdWd zzJ3aW7$S^uylEwne-t@qR?N2$)w>IDbp&JzFge%Y7_;0nB6J$$(nLdShBeRHj)AAV z#%AE&fCxi21fL><1lA*XyavKDOfhrsK4JKbJWs;RL}uH(1<=Rxn9raW%)Fsg+h43y zGqR!qJnWWDr|fe0R%GA^*<+jjCxqkf=IRw~ zPGr>9QdOq3KZ$h7SS|!Q_~?|&7YTKJiz_cN+q-Mg^3>-p+{x(rucUfZ2&6Ae*Ss=4 zlIM_H+GsjL4m#NpfQnC;It0O(>c?2UP`l3lku)KRMdYX`$}F#< zf&>fDLH$i;xLOcsI`zGnA7IgX&^5@sy7nLbt z%q9Gp`!`i?5JoX>t#_ef=q^M4=k3(AcXRLe;AWF}1`U)Kx(D4Em?9`|GCm$}&u;{0 z2RSTC8f8Qo4iwk~J$)(^K%kX_R10FIX4!oP(L~buTPIM? zPD0pzx}DSx4$zwkT(Si!Y~6oz(vmVJLQF0+-aBW~v)?tUx{!8`Ut_`kAa3ENL+iTa z&kSs3eUX8Ozn0H-^?0YcVo8Ds{zM(0x(s*HEc>CE<(`ys>x%OqPyc^f}NaDqVJq~bj z0W?!!wx5r&KEURGhFS%?&>{&7{L&yG;Nh&r1OTh#ZiiWyojL|yRI0<@jNFAa)a)9_ zC6qNLy)}OTeV552ypiL>N~^S>KJ=BIl4D`rTm}lF$ws1j0N_r*{p|EW{tAv98lvf^ zy4csJfaAlU$oueq&;C5iyJ3KCl=v>kF{h7P)~84>zK~Mncnz^{%C#}gV3+J<**<&WJFil{8mE;Hn z5%t@v)b`kX2zRC#=-R`2fnf`V*u-k&CZ4qgR|y?KzX3jXL{sfS{x07bx8xFR*YTX$ z!QZLU00bS}+Pj|aTGB*-$}{b49#&mwVXQO-j&|meBM3F4HzOkOlhfI_R!8!)9_hHA zK7=~(yl6J7m=~7B@_k(YYQYUAKYQ<}_zSY?ljhupFYjhSs`QD5ZSSE<559Sw1C5yI zZKvPTy8_Tc>`-E>B0+(m2|}6BO~H(_%CA?CyWxy-)rSzE{r7Yz5O`?Z9{U3wQU+Sj`)4~G0X2>Wv|Oz0EvgjwI2yazG& zMP;`e3~~N_8oqs<8eKDB4FQOW5v?CN?c+f6F`s1w=^EPjy}0{$Yf{;M1Ll4J1qR>@ z)trLK6h629aL@GNt&~{3EkvDgi40;4%`1MZa6tfoEi7jcjZV3np!YRcCkY=5lo}Hh z6en~5>6o{0F5*CH!K&x6uL%~=Ll%=Tw7_8pAy}nlr$OT%8oay6YWjsbp1RXn-X$J! zbGVyjbT^9uRO#sh&^}^5EM86;ANkY`6P4aGFQk_@PlyKJsU#|A)PuXYzLd3Sq6aDSX#!SX7@)N zq^pfCxT+-D!|m`jgmN0f$W-FM=tD-k@_u;mXT&)(s7h#Q5}E9V8sFnWg*|v*{_FYC z6JDst=oS`~kFEXP{>i6h-JHuK(&=8+Ggn zs=NwgC?gOsBJF|F;h^mfKFD#+K~HTY9k8PiF)BkUVQY|I%d<9MNZx_ze`O17_D%LO zjxz^)=sW*PPxHlPqEhi#O_!kw(p5{dYkfh|1q~HwqKiF#V$ZEAOE9LcwVFLykt8lu z7nW{31PLF}ZgiOtU!P@RJjc1vVBuy9`gCwGU?D(6pv|G=Q=`A5TDrp}P-TXY1TCpc zpx-?Y>b8CDg`SS|Lq=nU!g?{)<_lQNK+f5UqeamTtX_oNZ>w%gv4{vp^ND1}!CT?( zZv}ftNhd*`IDp;`!|>K+#p4nHM1{(tyOg1Hr*ot^^e~sS=MVy2w$Gg#=3s!0CRF8$ z;*{NhT#)V0&1Kx`a_*AJ{ zt|QVIsUMc7T;P}0?OpF1@-xG0ot!m#EOI)yT`s>rPv9@(+l-GMh}b@*d&PcSAoL1_ zOIur+cjg@77d@w6zLobJ!sXD=Fn;Yit>$-43WRCxg#hf4IRSuYi}|D3EPk$JM&0eD zL%~^txz60Y=A8G^Cgo>p{9)7Dmek`(Itl>TGBVP<{Ao|i_3uhH#C0Jtl`d znNJ1}GP%&HFA855-38L1&HRrOzht>VEyw@ z?q4rg)Jt_ z&h8eBB&jd=t?Ya*+SB$B}R}!Tc zCZ%a0wVmep8d5AK3#O0-;8lStF}uwK7wI57D9+vpR1GTm;9=3%rE7b7r4#OU7-1!6 zgw)ZCNP`DD8r+kZrK@({XQaqieQvlkK$;}A8KV7LURNt7d6h%B{jDA6H8M!ML7+9w zgAYs&0+sIi)#IqMlSR=t0UZl-)=$9=#)jp*aI@ofo7h{Ik%_sbXJs$Lo4n(c?h!V} zZ9&7)ho4D@$sF;Ldr8eM4G_K~+=MTM!8duqpL5|bAXamLhCYH=j@}QdB245i3XViR z5dr2Sk*&q*;>BZkH!1{d8W>;sRyAZEmp-i|V)JBq*bWp(Azlm(0vcqn?Lxf5p8!`C z=hSv@-uv;oe97O*R-`;7y+!A49Bo`)ZV!g!M>&Usim{Gw*+5WsMC^*@+<%cwZIZe6s1Bxuke z3Bd^jch^Ah03k@@?(S|07Tn!}ySqzpYuw$fai^g#@Auuk_ZesGJI*=d{yG0@bl0je z*PKh{dY)%i70mSkz;Dj*9cLW~*o~A8OY>$5GRuO;2;K%lnbN@@2%EEs?Z05_q@ZDz z6aOMj2Fn0IOK9e&7c^#PbT5KO)8ONnR(m4UgQ%Q&Bcove@BRhoc?v}AS}upT-ADWg zkPfMRPm7IVFkY){e8H`dQ>ZQPS@qyCP2|w7n^iAbn^tkbMmFx(HFA7sI}0s|Ebnrr zb2IyZMk-RVxWpIKXX6w0mO-b~Z_9+gl;r4u=HcTIj?Hjxle9-lzySeeju%z<9+jV9 zjrB+0_#~c0F?BuUzkl{B>+T(ytcvkRWy4TJlT&9_)chx zC+t!Wv+QF10G&#_0I=)r+sBo>IW7bbf8hb!ru=nUoc5K!xj4@7!IDZ^-InI=8X69L zDWuYa8VOBXx1n>PaDB*%NG5|U-M9)GuO#F04S+L_u9&^wFV4ou^-TwUM+WQL& z0rsznq>I!%1p$HzXLm5V+S0QTBA}pRug-p&>CHP^@S(AL6WW))FsS;h{Vf-z+%l-&I=e#bhu880p-6KI&6?-S6K^f)O(DF9<`rOV z&wN;&@kyQVw(sR`EnBEOuej8nPqZ1q;zIq750(dFf@{uYWhB1wjqYyt^utur@XRfO zmWK;#;6ni$IF>h0{`tyF{xEh9!wGB>hIbq%9A>Nh8oZ7!hmAYm5@&wp6+UZF>U}D6 zPjb1kQJE3~!&)FG>_IzQ6{=OtESzj~Mo3?Uc0xPNSzCnJK_Li$L`JZmanGwLTc2wG z*T8w!5t)UP@UJQ!ROy~w(Y`Dzrm%`J!(>4=rxZ;yI+C$VwWv09P?cJC5CKW(Hu<1k zN!OM$?nxL2RdXsrAo3K?$}o$kN9Mr~5qZWF@uh-A1Hd*s zCMeN4$DysSkWN-vAZh|yH7d-MSRe(|KJ*c32ZX1#Wa+lH5x@kpNFktunn(%fC8 z+JzF4W{G>&Wft20_2A_4Xn}wSMhbS`d$a)10|pVc4nZE7$RuLyC%v z!Cz-`1d(&$9UHhm&9+etC+@`sD*vj6S^b1+R*2_lwRli64Hog3aAM9E@4@7CtI71l zxT4+*BS3j3AwHBJ4G(d#L0PhLyaw-k#_|hzCBM3yBMxQ z&qyBfu?Fysch`d8vB=x;JzMyk&wnj;%;65dwrwiO2^#RqE7uHr!G;Qsos9@NHQAYA zVO&ry4(2B5C-){+BDULl=eIJ&5h{`_KxgFuQ&$|g1Owe#Ycm`4jXS6*33b{ zWTrXAV!J;*9)xH8Ou^HiDf_lXvwFK@l<%yN*=jl4`ao#f_(RWKFJU6FtD(9$+3KYtPQWZqukQK-w`UfrT5Ku(s#af|6>cvTE}#wR#Kt zBgG-xZq=jDjeA`wdpZKAjD}97R$bC|P&GFYMcQJ+^XVEp!`vkqZI?5A4?Jx_jJQ6) z#rQP5m2H{O2FXMysPJ`EyV21ZLfO-h#HMTVfhjuF#HuF9%n8;n*A-m&BFzr^PC2Bc{i@bY@Q_Rp>{I!L=8wEV4Z&kp>Pg~@Sb6D7yE&vX{V z)L8N}vT~>qr@hK+doM8x4KIA%GCIEgND1hL*Sj0h4{@wS^uNS_CYEyZog9G!BkHv} zqUo2fpg(3dO+WhO5DlRH6S+&tn9tVwgxPofqf+sX+dFHF?gfd47s7(7C*0{D}b^eA%oe3%NFM?si=H0!y}8 zq#zj5t@{yfK!$;dCj7qM+tc0_!w;oVm(8W&7d|#~Lesp2VcF6c)G**Ad zPah2sEJ~npK04E{tEysto^5;mQ}|A=ts3Gcn~F^mhDMnlZi3C+ zxIcxVruWV+B3N1;BpM60?{W4L-!XQN!Xn#RB14-;Zu?;$c2C&Yn7LTj(SEZ09>TOl z{}h}{6Ij4JhkJ31C7)q1U7lCpFm3>T9*pBHM6tAA1Y;XiVH*N+eZRnH(6Q)Gn(cbLcdRp5=&N@LY@THr1pj^tj_Wu`V>4QI*+=_qeye6u9j4 zYWT7K1?iq;OArRV1a)w+84R|usX63qTy12>)P#@c3e-X%TwF&~9JK4Q8c}vFg*)9Y z4+bPY&O`fX^3V4P4XYlEvffrty+~v^)hVk(6(x=r1#5y7w}bvYsWu-ZeqLoz+Rf!f z*c_$Eyq!f|>2km`g*g~NIY^35yNfO}XI*4W#4DQoRwJPEvdK=vmOrX%+3{uq_%bQILO(AV?{K0ex6moORTs}tDjzM zBeOqPetj-q*39vPdDZUiMm2tii}_2o!w0H9$wTzUUFyg`IBrTrW&8-^Llw_XCFy|Z z=;x#M@u&8Mj1-ihF@8>@=RR-z&{@=gUj9VKXG(Z7y)1xQlPl^1;dQ$x2cv3cn1 zD04Mp#MhOFJRV|5FuqS&iIT>r|K@p^NkL)LeA@MozXnW4Y#3+xwY&SQ7|I4@4@%~V zRT+lpb$1p5819qd3L);&oFl5OEyTaacyfKXavC1g>uHQvE%M{=hh=rqnnLd9JEe$&u%UK$0?%JUhy@!%oU2Ch{I_eI@ zVzporYPk_QN@-n=vVBt)p%^q)?zcT9Q4sL~sY~H*)y>ahysPn}H9!`f)qJ*^8byae zNMmWsv#bTYn|z(p&g6|60&!;#5}kk!!sGTxfvlm%P6jqKANB-k%6>a*iua^_vva~G_dqAXm^xU5_tdU!i29avRSIb5ckdW z-uA7N52K48oz~-K2+pbD^V-%S=AVP@0L9~^evaR_cQ8+_dHO+j*V*N)b65oh@a;-Jcfms5pLdx736)yL$)7}@$r(m}LKSJ^2Qv6OUp|(fJ9^MVqGQCYVm%_q8 z3-Ct{e$o(Z(1p(tL*#Ubq@u*F?~ zU9^P{(|1XJ3k+q1?2Rl~pZPwS*8R?L-DU%H=}_wpse1i`zmgs1W?C=ktSmM3D_;Fh z`FpTpN#7vn;jH!Jq_5}o4*+^cfDAY`E&?($pZxHX?1lxhfFzIIZ&>hkxQQv_L_AFA z3r8&-H`?cVmi4b8m1Ig+tYloSo@Aj__v%nW@~0eK$h_@*_DRj#fft_o z`FAn%DbiU+S#j;=IFAcfGT8l@IEky0D}HGVem(H_-QQ3l%II=*CSS~nO3r9wk66NW z+9#SIN^|1I*R~6C%8mVeU;bG*?^&u2E;Ce9-sNEie+_wmsRAqSIrgc8&@BAfu)UL7 zYG;0Dss53K3Ok^eX|;B3{&6$4Y-A}4F9!*WrZ$x8cn04vl>6hvCf5kXUU#k`qheR9 z(5PLqdRLHTC1s~H>;Wk?Ezd!?&xL$fVO9K`eWyr0Ce$o~nVP)5P&zS?SRuf?a= z7}PW(`t_c6pK!MXjR4e<1FQW;65y=Y-=(ALLGx|*h*o-XrNbkSgIhA(?GajqVXlC3 zpLl+m&kqxZF}k~{z;CG{Fui*7=fgB6mmMMw3Pyvcr)IYge*~H6o}$S^X?LaoQ=1RSB$(mAb5fZ6M(e~a+RSdVz`q5-5rteHXMab>Z?5_Wo zu@PvM#peTh2?~P#*-(Y3c3XqkhadZ}pOu`+S&>t?Km3b5s^*RaHLR=oIGpG35V~R`7^8=EAT*+KZLGK0 zVde0)Bt1t_XGQom1t2{0XhGSD5aw%=t)n+JYuB51tK02G8f-GB&slG6JE%Nh#3zg?wr6JB2X+p#Im2pL(@qt zN9POSY*u$~F^t>^M$>{5{RFO8&lBldF(paHlu+Sj*IrAGYslc)zX#+%kAKqD*WB+l ztBAg@H9L2$Tk!Q2pZ?t0UZ6&whdWu`sWHYVp2rXcP$VFb$7tUMFy8i7A|U$xF% zP;bf=g8)4T8y~*Oa9yz^pQG7RZ9!8=3g=N1qUh_#H@TbF4IZxYM7*au-Id6`q}t&`9*Q}8^F}0r2@*2 z^%DK&sWPF2pCsKr$*FDbBBV z_FkmNoTmc|L}uR>I9FOB@qOe5&TeYu=tdgYdyvwJ#587`h@-M=F0!0b_FK6(yT3|% zW*$>-_Pq3mH7$lb+&U)y=JG2h!7ScJ6=h`B?g*chGu1ep9uIbZ&+)#sG_%ok+`%>Q zd6c$2t;mK$rQYp3c9{8#{329E`!nRpBGf@D9*IyNOgeGXFW<=Zhq&P2I%Xn)`oRdVBKhCfA8cmW&X%)OT`+Rk#Xv+1Z zw=^L{upH$tSjS_=$X2Bs3)b+syDJ7UvAeN&ou`2k&_x-&*(*BKEibINB9z~TI66ug7$WmbE=@{K}eS%9-7{PiE$ zivIQK13nv74sv5RvIkLbhtNY0GUBV4((q9Gz1!&(BW$?!6Z@NpGG})+fc%Sm0Y%Hf zjurJSyDL`t*h)eQhn29HYmah%v2sT-_a4b@R-+TR#UUshLLAv}z4I2<(Ekcpm!4~L zgjMLnxmv*7H+9yU4dFnKQ`0WQDj1DL;)3PK*uQ`I3n#McLng;D8Ea)s7#3WL#;xac zgq`pHFtniI`g}H`z-Mx$x0@%k6P>eebFo^hSiGxq=-_ke(E^!3emP1~j4b=KyL3)l z9rh;#;X_xaow`)EdY3a97YWssznfbjqs%glOGbWNa7H1UJZ<9${%3vWO2FEihurt7 z-1H?_Rp2Mg&Oc=T>~eY?7(M*>jM}+&u&k5kulXWePA!O{qx#^T! z=;A;N3&lYly*a0lj*hH#Y4dq5>*Frs(KQ`}Gxke7Grh6l!BrJQ#k{9{TZ=&T>7))p zj|T6a6<7O!G`N>HhMk_MW}WB|XU}N9K+6uNM6hdQM9L5+Sp7aI_(?RIVx~)kd(jFV z_0OxtR3ZqVG^xtCUUzc8GAQs?d!sgK4(2uXYaH$%ysj7~L=i5~K`vlcmnqP4BA-aV z&gAMkaU`USRyZ2zu8BjbBty~kvWaSH`=XLc4j_)dy@IY5Ncj}aqJ9+2@ND$S+Bvg> zL>D!A>@wNaj5_;UP`+@gkb`c{AImdFF17QT-x@^*0by{0z^Lr!wkzB((tViT4p{Qc3l-_Sx&!tGuF zGq&1HV>e^wQD|UPheg*C3B1;UDj+pqT5nfiPegRImcA#C1iZ7yg2Exo$KGF*r!_u@ zCl?N;Ub?&i{@BQ6xpyLrH2#X(d=oBUS>U`2)o++UaC>;TcKDg|U{Ba7Gqf6)OciwB zLL`pSX|V8fuJrF9JR1AuZsB>r#A4Qqh9~f&E?wvi;h&HT#9~fSyP}D|rn_NN&C^DO z^EXv(p>%_b{I$P`V+hK3w0UpS4{R?>k8NL)nFL1R5>ya;U4RKp_e`XCj0jsRtV)`w zqk;K3MGlYas))RxkxPjBI4=$kFH@(nmBn1Yq;+1_4k|Y1`)4iD7BQ| z7FYqG4=ajEy zAK#?57v`FI$x(h+Q{wJoa{6v$<6$W=f%@=-nADzt7oZ8}TlSg3q-KhM0OOb`Q<9V| zB_%t1NOQ%qQ}aiz30#v(L4amPT<5WnQ8mkA*dqrJCV_gz*`zM0{{d?z~&Pm^7Iq`J$Yg{^Nv=M}J!cBBfJ}*4oapnwtSF)4| z5tVXsdv@UC09(oZpaCi+8cfP2OrZMxyZu}yo|ReqIcewB#bPh@+|=RM zX;zwy%`((76b-#@pIJgS1)j~c%J2b?yYOuABi?0!V1tEqvwPp)%MOpt`8@m#?na4C zYx8Rntb5gF_*I$LFbfELr@Ho{{aM~>dXn0?hYtgh(@e)GfqNNY`_fHfM+4xDgZk$P zdQa`W1Tf2-pw7UYa(6JmqaXOAf92KY&!YfNK^={^lBbiTUDXUSjs_p+{*b*t*@7u2 z=*)#%o5Z66j|Z6%%2K3Z>DSWr?hx=yW~&~p_hZdH37e_2YU}s>G4=d6z6pvtunPe? zeVkC29tp;@%bV`!cNVCE9_ykW14O|#LgjDf%iY!l?0zvo!SX_&%NF$oXM9ZWBZJU9 zQJjrHV}{HW*lgZnWaOw&c|)1ne`o<{qN^gP5J{uTpYF@ZG*2|k)-iBzHrMd;@NJh; z7M#!a1e22FMv4D92_57G&kSTWcqKP%(5P4lDoy83u!wtIKNEGxF5aZMhY{`E?iq@m zf=iedquLuO#jN@DDvNv{kd2Bx^fh)ft5HUtHUi8QQX*(*N(Mc)3oHYNRP}Amw+ZwZ zSMA(Xf$xhKAck`F+^Y1?^wmI>8qe)8oZDFbNbB*hn1TexvVrmHhbIr2u!}I4VOB>9 zYL2dub6}!Vv@;VRB1JU!HC>;e`~3WtV>XRrjsR`uO-^!rf1V+1cV)8XeqrLJ;3Q3} zVlVeATcEu2X@ye7n#cZ%Np+ol>T``q+uLH?rTRRJZRU9V#1Bh9=dS~LPp#W^3~0xe z?hD8r9Cv3iB9GPWj0^;tHJ`_1R-NfA4j!wTnw#Oyrsf!2ciP7#%Ug;BKC`k=-3smI z(*cgR-);`=HQpT0OwS7J7V9lqW+v+JYI`4~4Wa_hkLMRM{T=nw>f&lA1kS`-8H_N6 zdBk_^GiELkUYZDQ8s^{nhna|kOkS!N8V;a&TRVvnbKF|O+ndvEga&wpev7gZ&cTjd zlRQ2Pu17tHG;l!DRd}ejPS$K-c3ZL&OU%M0&MnmX1pWXiReUw^VYTl)YCa2NYR=$r zrXb($0!;O)L`@S|%w%#k3UF_(Z7Es^KN~-Gx@~=)ijMgQJRFFO_uPqSrJkzo>WdND ziN8?U^GeEmER;hxnE3f)YF?J)B8-RxGL%sw;$=3d=DZr(GHXEqtjn%*6tFrh;n4Wi zhc2bv_NT>}_9>~T>QC%=N2O9B@|Rws{KfEbcpKZubK3iEDOmK=_4so7<%vWKREH`{ zJ=vvD*TNWHquFHd1VP;GVHdjDowiRmtpBkBK^~sJ6K#3zQP~ft@BH2~R{i74-t%Ir z_nm5L)}*fa7f<()5Jbm!0x^y36;d_Nwkzdy2S!(a`FjAJtYWzzY{ zbh^ad8Mc(GnPitCS?UYaL$VG&lPBnrRwW6m`R%{qQ^Qx5MqTwUScy;;*CJ`;^q59M z4W#Ls1~fkb4YFZf68KM?HO!dRAd=9$l;__F>~_A`)_Hn=c|Mxs}UF#G+O6q1fvAt@Lgw@nC8H zIQ;k6H{Ef!XS?hpIq#8G?}z#$tykEl{|8YF=jaHwi>p$c#L26f7RmD;4gy0QQ<->% zI+{F7Lm;h!Vw-st8P~d$Kx692(rtZ8^W*HRiu>NOBC<-5rfYuTUoWqaIf}!Kc`Jv2 zoYJcd9#_GN4@GK=99171kKI}b!Hs`fWoo>#2+q==`%AY+o}d&8A*#*ZcoZ6-Q4Vjm zO=kCTb!@uPuPl|im7xe~YnT^X^{F*~JV|iQ7SKiI3K)A_ky!)2bD2!atYudmAy7gjO~)M>3_)Kk%%FzjLRq!G(i; zK6F^UWXXdI1$%#2E;(W>w&3{5$F5uq5Zpm(DpF|am!*}AN@IDtr=RIg)^|cmBzg79 z?hgBlQkedIbyC^zyTc=|o%?9L;X0x9@wt_qdcL+7U6=rk&&UIE48DIK)K>mm!`#7@ zGp~S^7F=PR!*ugmK-QX%prO5Ow!UZ_g7=<;v`K(w!(%kjG zj_xb)bN@b#2Z!eF97dEDf!-C7)~;kSS&G2INRgYY-WSPbDyIAzv(A z_PRRQy;(|Sr?$=`miJlI^FdlkEY4SV%lzm%xY@CFH=JvB`QW(Ea1F!#__pP=LKg;o zvU13wSnw<5Y(7@Yk8hV2-u~`EO?ILw<3m3BAnpAgOP%>3;m)9k$Z``D54#U zA~q0gors~8?E}k~Zx*MQ)zoIH4t4VLP&65xEIIE*g8uOy4|8yqW{BhH-k#$&M3l{`TUBrnl7_cpl07+0R;=M%=K%viayS79|Lxh=&bbzypmRQkxVumK$5TV@p1O!{&>S zw=}B@@246@4aQfRPQmzmr{7I_g5$fbLl?B69r*_6c70xlVpIN;q!mTa7wvyXUtX^u zMJ|!H=2-x3sh{XH9igsxoo_wniVy-o5|G*-beFi0|ETD zmA+%#@QPGJo=ef`%8u*)d^*7;(fj3e;z!el(a*{1Kit8chz!-e4fJ8_92tdf2TJ&W zT~FK&O~|Xd?^K(eTV^$mhp<`oD-;Ce#m) z^Jjkz-(TkMXZuTIC9Xkg8hA>;4S4a_YjT?d8CyR>xK9`(d)c|YGML?d(o$$=X)~-@i+{nt@6#>QX!y$33PPKUf_9O z#pu#_h8HllJ~VCdI+;;zBl_t_reeZoqtwWO{ZcaqPKg}KGb&e8i zS!I9`WPos#z{0Z8h06AI=ub0OyE7anSV^c!GYd_`giym}5H*^aRwRX(EEt>ciD|cY zqF9zrB)zRE0q1Nz$6sAhWi z(Qm}-b()T^M! znw2BG^W2R|M4v;BHjk>w*RPNj6D2Bwce0i&%nu9wNR8EP9}u$J4U)fsQbAU3C43D0 z;^bNxA4-MzCmR#b8Ix-Ya0r;ltQKpF+EqYYUp0;VH@ot_*GwuU_itWF8EHCMs-iE$ zv`y;}kfO`gaFdJIJ9mmp9GVTY8%=wQk)n@tn*C(w=ADL)Ztehd0%Nm$e(`PVI*%1S zezQi$d+;ybTTSlSH@-L=T<%i>`YgIO&ijzGLbI11o;$it$sjJ#=TJk68a{4`=LaFj zoFWS>jxW0^i@q-3b-YeV_z=(kX<%~qQ~xmBgwiiGuD2Q}Ce3xfqCoG?Q%IOO+mGjQD(Q59r^o+t1ct7`#DOdH-mQrq9Zn zlPF=oex8&mG41kVKz))Di#HUQhyF04CS8eTDZu|}V>oT2YI_+gWsixHTKjQ`v1RcF zXx*rX<$PvEVd0XPQVGipd|tMynaSf(xkZ(H{1LpD!(vwH>v`pAO;mw7X?f#Bb(xOv zE5clu{)HNqOda`+pFVH2Cxthll19;o)pfwMx1{K}+|(@P_%X=HT*Mq`JFbJbx=F%z z;M$vGuPYL&t!?#Bf*05mgJqEA%PslYisCy;M(KW^HbN)nstfjz;)500o_D!TiPf)3 zPGjJn1%ADn>Sd^CpVFKgrS~y)7w5j)2-$vfDRWxS`9@0R$>K`nbs=MWekogIlLq|6_GVZLS zx$;^yC@+-_*{i&BBh+n@Z1^QRDS&DH9Z07281rQ&t2H?FknJDQeg#Lq;Ah7A3B$CZ zqod&O4)vpbb?+i_qYd45ZYl+PQqgPz4I zl0wga;`T zGQGLx@4zNMm11m)bB}SYAFaJbT^ji|LWCCQbiU$zSehqS-EwU zd;rZiJK_Sk^^tXoFwgv2tTg;PlJtV-D|(@rsMM;1O|^qw(FO>EkNdldQVNnrjIzpwkme z^QxLuuHf%mq|PlGzn^eED|{AABo^mztCvn=V@t2~JGBi23|_C#%+;LS=?c33kir}n zuxS2@_Gd}WZgq{L8w4`qqGnSdmx>8=$TxQ-O3d*feTE>uVInjLDS+eCcGG@(KON7J z85}B&u7|gp!+k%oLxy{3$E3!j16fl)(gd1m85>!WR%k#QyiELda(S-0BuSOn1ztI|o@a!%v!~sN_VdvbU(HxlNJY8c|E)>DP@5km zhB{bHbmsReuv+n(2pZqO3v=~UUA#gD*i~xNu0UJ-TGZhBy#8+rB2nCm-4#bRaSmK{ z-dD1Tgq`!U@>Gxa^)%AS+;&u_^K-3~;h1MLvyQcc`Byf72~VxB9)?GPrGA*aS|~~V z7(QBNb9^AgAK9@&B^lSuyliDV&FRdk!oH(&Rd%aPTz-G8NBW!ME!Jn;kL|-tZwle; zkVt&FS-C?Hf$+d#cUZ5LIgh%Kk*wv~?>Gy$=0U^5mj&WMNJ~cXozxToO(ca1vmFW* zqg-_KE{AeMD{OAIIa(vDuL%(oJMCQ;+`4u3wc|%qo26TpAyFXHtB(Y14&zueIyq_emJbdjyUQj#gG0t?o^sQ&aj6YzmvbKO0MezLrkMtSX{qye-W|YUcd&!A<)-? zc!!e3iUce!YI<=s<>~o9XCC%^uk%U#V~rt;Av@r&@G>~eEg;pR^skk$$XPT+X|E^E zs=2wZ-!gJ>BbzB$SmVE>{~@zXAGFd}mV1<(sEF6N`H=k##56sX%EY9~dH`CbF4#q|kTC3EdVfB)__{Q~nuJNwd& zSzr#&C5HHrtCeqlS|d^^Cuw}TOSF9D#jy=nMowY5Yk18u*5xAOBDzP})&n^qwjn47 z|FGc`GGx9TSILZK*Fg7X@VI!{%oO5R#|7_=S@aS)A6i`cp)vtKBh`5JRn!VA%edQ9{)=D&l)j)J@eU)}! zJEla@;UPZY$dU8I_8wbL(^FN`@^^EkwT>T#7SZE{MKMmnGA>0(3hfUWZv6mNmmpRA zzpe2;3TvOnRI!qY`+gS4=(sm+R?iVpYTK{H(WN3DEWVtF?)ixo{Z^)Rh2ETr;_?VZ zjt2;Tpa{pQ4QIwevT60uz4H;@v1;8{5JP%FRA9Ll9YfZc{?NOB&3mqSx<%X~GR*$Z zZ23;d76jv$(&SGIUeQG;j+_mxZ4GQReQRx5R%;sx<`|u^-!g^h>zw-saUx=Y&gfzh zyit%z&slEOg<*1C;i%O?AUo2D%F=3feM!<*UQP4;IHap2yUET)7VFB#+F{c;@Hd=e zjn2E&kW@I^7=sy522@yErUiff z>Gkl&4v4QHp{uKJg!3EVn15HK)iTAc2L{?tuqor~&}_j2{8kWKm+)K7<+IF|vIIsh ze^1-EERjDZ>v%%7dtQ~jFLND-_u89XDq(E*Vx#1F*1CUv-ay19r=hCZ$;OEeKnk!s z&w|x{&%$GNd7|9b^;>!Sauk9NY2M=kXGZ!fM2etMtWeyG76YaO*{8WwZnon`TO+JNpZ&e6#jVBMmjl-Blm_{&zZYP7Ms4qBs5$u zM&)#MhmCEg=Le98H-YKwQEGHa&RuN|4iG5?p57h-QGR7UWVRF0ziU>02|Ca|`@zF% zZOw@o)bqMiftohf2mroBAp!C)C7Eu|_-q*&OgFcpm8lTwBadPtYhd=q92NL&qnsOP z4+xWv4NUU4(YmidbbAZ!-<8-Bi=t>2!56vu?5a3;zIQs5fU|d*6w*FsC`Mr z3yx?~*#$Qbg4pHD!&C{Jm8HBh-I|VGCgBkrw?Z_U&)wk!76h@25tEGWl&v}B@5iORJQoI?RX+b^ z=X~R^h>^g<3uou=I-Y2}xbmDLJpC;>1<@DBso)27Q;JB0KiktyB{vrEJ4aNJ0ss=m z%=>fs@j+_2SmmLxNliVGbSD7{r$fJ zXO1efXrT;!Erjt6MVZjVc}V2f8*f5)&^6Z$uTNsdi8ZWmi8!Om%cw8~5jd%r^UBMa zA@O&&2h1 z_woZdt;I`yg_s_C-;agLWeRtK0#NUK+xqew;B`YIwP%fF6+$UXW=Aw#7yK}@)VqHc z9L<~UeJ%LF-f&zJB~V1DI(#)V!^dm#CX`I_$tFso17b|IS|~Q@vSw1^dL~ekAWyE0Hx=PaKqln!EpFWQrg}oZJ4Xp_!9n6 zNFW*a(oMYo*A*tkKuL#ZC*#1;VGJx$!EY^!vjqZ@%0Sql`Y6w!f2^@8L!mY2=0nt3q_ zZ@R4Nh|12pA>3dnMlerVsOBIB2_07 zn6Ygd`Rny+0!T+4I{%~>;xq2|Pg`B7lfUxd_3YJ^>=)PT80+s;EeyCG`t^~2fy%K`3ayl*;Rv%r;ctoGL+FnZw$wjKDEjbpd2<`N7zp2-}wpI{si z)E^ANdbud#W_IsL*oiFPF@nD4OI#SD{Nx_cQ2WtQBET=8jZJ~y9{@-E4`NM7FQ(&s z*HY#(o2tFKRL8FzZ5#T%Y_q9_KiuhtX(**)+v31;hC20{jRLVfs(v4qLEW~~^)*1A1Jxv?SD3~T696#NrM`YqI&-Rb&Y)p~lpGc%ed}|u zOIIsS(XMu3Y?Jwy3$~k9h!tZ+VahTJ*UHX~7e^51osu#$5;w{Dc^8AD9W5B-+Q%%1 zR%9KfTJnMhgibL~znt*qOP-%&3M}r4svDX0M%dAtz0$2Lcev^|t7pxrf&TVLS!iz- zZ@ln(Mn|rNRi>ugJ^APWIoYUl5nO)nsJ#)G_Iiu*d$t$c3e@Lt5UIsap(w;ddV{o2 zjr=|yd^Hn*|1Ct!WdPd-tC*5s5aY}hVx{#~mPjY9ZeQaGt6E;inD>3LH2U88JwKKw zBe?MvSbjO*oH&`}ewz?Oj?WTtNi3<#-wLhXHK6cm_ydBuIT(HW`b#pZnYk7Et0*R) zkks(o$IQsSz7-|!`$?|379=4h8zC>k^fs)CWMnj6Fc+nqNZ&|!Fu$YAiN~-i|GBGc z_kMFMNlim$yA?EiU^L+0B{wg4cubW@{KuhKo~6}!i*g6Jn5dTgbKuX68XwJ?ljw`k z*!tgW>C2raT6EMDf&GaA*6v>?O(A#z!87E4mYnjZe@JK*zepBS6#m7_-rX0=9JYExf+65wBDum$vMJP*>$X|o<4=c)DXkHpqiLIUfC##$C zAJs(INdE@}=YLC6|J(ZiiF*FOhwJ?x2=)J!rK?Oj54-M(KmSd@+t;|g@WO%gSh|5 zt~qhyAQnKq%5cvt;bGu8UR_X6$uKm9n{)wU2G!;?iP&8EP8`Mr68)~KUfzX^Eey@< zF<>V|GxjZ*FyDDX6?o(K^Y!*Q@&`Z}SD7A&=lrCC4iFiO=C$w3dJU@8*IJfD%%vg` zD3^+}{IR@f*)x0azPIm>KzP;-;P5ng0 z|Er>f;FmRo!2H2#**Bn`Rurexv`+mE^M_(9pw{A2Mm{bf<1@p|-22--Q&(LuE}k-m zBqg^&L3{DgI85wcyqa3Wnz3FCRg-^xIX;=lU$m799zwp#ENf|Ce`J>QDronSuW8umEpO{Wq&ck|7 zBqld;$;bnYR|DI;1pHM0N-U{>BSCauvn!L_EFM~L-|Hk(Z`!`IKp9$9P0z(EB4L8l zg<3uy-k%?0Mt}Z_6&q96HjmbM^CjUoPR#}z;e0iNx*U}4p=t<$0K;;4vPg_Pn%wT7 zUVi8b_eH==)rZ07Yyd9)d~_1D_fKih;aw@dv?XBqPbCVvknwQQ^JN@v-^Q5%r>8Lj z+S1Bz*mgBT7j)!+<>` zWV8ufE+6{FHRU=eT`&`@7BvWbH)o$%3=6VneVPbmZK+(@yZnEuJM(Y0(>;!V(^Ry! z&fJ!U6us?;8%0$ugJigBnW|b^YbYrVjT&xghJ=z(EIuZ z5tM@lWmIqC86%pP9TnQUM4w%8Jgyjy8NY#)Oiy;DMaDO<;bu8Eex8%~>Cq3msPAl1 zB8_*T;~{tY=Zh`(%jj~LQphW8M({cqXzr%a7UqBhLGjRZhO$*|ziZue5Dd5&Axuim30#me@IQa0C#tC% zJZsDM)47k>e;()r`G|Hmwj*(7>#G%kG4(4#=QXx^&8q6;DmHS|MeEokp=#UXKA4^x zIVK2z(SqXBgo{xgvtSD1`F0C0W_49s7&Oe-< z?AZo)O$4=S=G}!@vwwh^MePdogB0s!j!RW9$7pV53Y&y!=?qh)1hi9TH1mjAYbu{y zBn5c*9>!IVx_y>Ou>!_w>KCWsz_-dO6|?ez&YPd96?`B$jugF8D+B`Z%9M_P8c12I zL*JqGUjLB6WK0IZWx3N^0$8QgjFtfpow4#jeja-w*hU&qw#-lEc@m=3q>*a8wG(1U ziCzEdPPwelgrWQlVCjCb&a_0#-|bc~u+e$rzr@g7U4aNA%m z$ZoY_sDM+Un3<(|=U){o7}6z^e_vSpV-1K)nbiam`gZW{;sWPZ4d()^nm-Kb6OLEm zrHF*ih=g=6duSY~rRQQeoO`|&-wnB~Hz3oj2XFEHG3-OkO^`VA{P8<(HnZ@@fjIp0 zxTA8VdG=e~<0@29wQjyO{fbjw5eEka+SE^TuS(n{-q4yT@OeKvt zO=ekdT~zw=G5tV&HIt~f4|mWR$B-@mj883TH4#24gnqFu9@VWwj;tS z+ln`>Y?J%fee7#E-g#*q^Ln^!W#CmrZRE!w*4f3gtu9WAZl|$nL&wRLYA+T1n;aZi zn%uRiBz6@$>{9?xOf;4yL*=ay{9L1ejrDY;cui*UP-%`v!&^r0w_qJb1p~Nj3X(EV z9Kn01o0d8ZpyTb{9HKn>Nf|nFOJi?(<%~473S}5^h@z${r?1~qqo2J*x_LjQw@810hzs!W3O!4mV05#B_Gx2ze23&FQ7UZS2cmpHaYH@n>$-V(YS@YNGd$i zKJ<~b_r0MbIt2SAY|9xfyn&2=ypVcbF&?JybZHrGKqkR|fl~Al@gmJX!{)MmAnjth zQcR_&tH>=s&;OyOFsJdF!qdLa_s4-B%C0_>SP+DY3;d@?ctJy3D};-uv^4h0el=y! zw8cs_$>P4k`s~4JYzQzVi1U(emq@Yzl7LHc^PTda)nr-(=ruN5ys-MFzSXtGRd*|{ zlJ?k(DK9-ql)=#qIj0Bz2^K})QUu~MSR(A4pr@T+_VQ~(Qn;*0C3Xv^4#V*Vu;GC z?%v>y-N=yxc^T$6ud)R#OYU<^8DN*QX(D>(E3Aq;Ax>PYX^>OQYJPpn=wQAq+SSyB zl%@7k9}V7uG2!Lu(QR0(021F3)+YBQk>*Rm#UrtW9vRi5yc6=Ep=LxIYz9rCHxi>y zJ=NH6gFuHP{5q8GzBnhoyBUY#U*Ggl-b2!j8=M!ZA*NA`iIcV_73PYHX|t{wnN7zWs4QJ z(gzVl?}{n!J&)k1C9l^CEf>S=Wi7K?LFbmeF4c zr42;OhwVuxXrd#HljXrUb9Kr4lUT}nVwI+7F9_`ljcb1gS$U3eytDT_09i1 zu-0yFhtkhIb_JE6AV_Nwb=SZDvZT53sU=4ww6;Ov8C)6y#dYV@-K`hm$z zu14WO+BOQ{;QS|Yh;v>t?4@qec*vKi698(o{?H^@xU+Fd%gVj6bH!He_54>W-w?Fml^0Q}ep_M!yN+&%`v{tvhQZ?}KhLz=Eq UJOb=7U= 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�V> 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 R9XG&_#1mQ30%4uk{|9E#5X%4n literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_helloworld_debug_Acrash2.png b/docs/images/hbfa_helloworld_debug_Acrash2.png new file mode 100644 index 0000000000000000000000000000000000000000..59851c0c3392c6641bacba53719aa3dd0b7cf575 GIT binary patch literal 26502 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 literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_helloworld_debug_Acrash3.png b/docs/images/hbfa_helloworld_debug_Acrash3.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb6b39b55adb658a95c6e1a8acda4ae702dd0e0 GIT binary patch literal 101042 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 %2N=>xNw7zYB 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

^UCcrT#C#rKM8gt{% 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 literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_helloworld_list.png b/docs/images/hbfa_helloworld_list.png new file mode 100644 index 0000000000000000000000000000000000000000..ff891e648ef6b1a559172e0988da360787d19473 GIT binary patch literal 130848 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 Q3V3Negg+>`Zyxaf0Fjq;vj6}9 literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_shell_helloworld.png b/docs/images/hbfa_shell_helloworld.png new file mode 100644 index 0000000000000000000000000000000000000000..44574ec9d94ef2db6d097915c3d161175df50ec3 GIT binary patch literal 1510 zcmb`HdoAh9H5r=Z(aIH}TLnRutaMD@Clb%0VR0KC1;*!|TSLBcHx?kaC=j6A zSl5Um^NoltLl3sv)7xct8djdUDx^G8uV^$17tWl^sU@Vcp4igEM$~WI1&Dl9-P~~} zR5QJvUSn20fdY2|Urw=JtxY-_>Lku6$h6u`EZ~df6tb{7`Pj_NF%CP=cD*F)_Qcru zL=q7eA{#weZbQR6m-$_k9JMNGuKy>A^lT}WmV3qs22wCA2M^pd`u4hE!FK2%QkF?2 z?WBbxmY|VQ`9;0op_-N$OM=-Jrto6IfUIIliR*YUsPaeU(?lXAU4;`<+=xAIs^tmH zijcNGY+t{N-wZ-}C|tQrsJa(Tzo^v=s#)Qa!+)+Tv>o>8dYziP#mIPJ^>}l&4e#^= zwtDcug`Po+$oFXUHN+e@M^QZ1Vt~=YH6XB4=si+%)u#k_9M%_bF784e!XLB*E@h{Ks3V_?cU3;;=h2o49KP>luO}Mf- zoUXEwj$hwfqX!ObS9aOjEOlJ%Q(i0}YOFn?ToSDhAcjc!3*1@03CG$jye+DpHRg18 zX=TI~M;{C0d{!S>AAN+`B$q%ZCB8?e=~d@AoxYIqPtu-P-UPe-)U^KJ@jtNpyAjg7 z#JjO6Ffp)7C{GrbwsExg<{d<2E#~#lXdq1mA#(L_71=qdHA;Z>QdFgFAvr2Ok?=6J z0a!iYrjItfZ835K7!YI*+yN8t^vxbfyr09Y?`nL-#5Gs;uZ^tIRcUl-wACr;k+7XG zSvTatY6cfX)v!`XRFJh$g!r1qu28mwO)3RUNSVri?7QI?Hn!U9cmCOF2Ge81%4`-ef5rD|mR`;)6hoF9u8$dbH&3=}_EgAy zh2h&)DeDhksTC|-3^_G(UGTI~6d0gf?jzTIeJF|-kE@x;mQ94^cI;`13{KHT2sFvV zv-0Hd%1uB@I;h)+PLWfU3JqZQ9~Z_D^5wm12G?8aswjE#D#Gbns(zfqQ}rr?d(Q|w zugYRIE*>|9sHW`o%buptNsFZ5S+1L%^7WuSkh0v@FCD*_y{A%X_G3#C5w#sABRNw% zyB+1-(&?DJ8%c!yjPhJp&HGkMb)vMpjvKBXJJWA-`O%hLBYpt$3(Nkp6yYsh_d4l2 zOjuz`UQTWKBpMc+ymRp_!W)U+pZD6U0oU literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_shell_ls.png b/docs/images/hbfa_shell_ls.png new file mode 100644 index 0000000000000000000000000000000000000000..7b85c0078937d0d0913cc1e45082edf649cde15c GIT binary patch literal 10432 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 Ra0L;tJ>hV?-1_3R{{yUVwXpyI literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_shell_map.png b/docs/images/hbfa_shell_map.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1ce19bbed3697d2df5da7caed1b5a6597bb1ef GIT binary patch literal 4777 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 KP2(m1tp5Pt41K@= literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_source_UefiHostTestPkg.dsc.png b/docs/images/hbfa_source_UefiHostTestPkg.dsc.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5a454ce1889b17e6de33e6965aee048668f2bb GIT binary patch literal 423883 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ΝAX5GCbq4>YA)xC3OWzrVc#DK1gKglqv$Q@C=U_e@fv zE5W7l)Fo~3QIZMlGW7CiC>#3ukee^r>vjx(7;Lyu~ zI+y#?<^4L9UdKqg(u>pX7QgVBeA!NnXE|7v8MC4dBtm{EmgncnxZkIg&3%4E;fn-{ z7P>7y&-ZwRiC~cEvx+BuVMpB?A*BV4mKW&MD_N6ojiP~yDAHSwwkx12`3(jpT5S?d z_`;uE@YmMS*g404jeIY&+?Os=qJNRF8-P)qVz9X2f4q~wV_P2&^YPzdo#GbNPHGU* z!gu8Ci4Fhx@D3Kvinm=DfF=Y^ss6uL^1s);j{~#SC$>IF20|265kCmr_l|B!t!6mw zXlr(f+HXRL_Kmz+(LlAjpJ4u$2rme;rsgAu_a~@BZ`v#g4+Cs@GmfNyjV=G1*2Uf5ECi0` z&Vk|+S^?x9#CF3Ur7lj10jjP?k&U&w=GcHr%^(DoLpw6& zm}@+3h;Uq)!QzTn{L1a?i$&kMP&(xaLuIo8_A|0lI(f7mwl_305)Ve}@y*<>d}+9F z6NsO&qo-x~_RAxT(s8?1aop|QQGDNCQO7<@a)%w{MpK%;W)bo>7C|sU?w6uoA(vt@ z4J<>W_|xE0=67#z$KfEXy7WSO2<+eN*}q>JzqIVL_Q zpy2)-H+%74zip;V)P;#@Vfd2e`#Mf?UUGPAH03A5?(hR78uUzuPVY|Xv1mZ>-rR*6Eb?yy4oo78fdQxJn<#H`Qj@Bcv%p!O$H#+ z-4N>zmk@~l*vCzh5fTnW;iRI_59r7+`8_5bF15iUzOdrAo{NP!Xd<<{xz-&mKnBkY z#Za3}9m{h&-EqG3dt_T>?m|uyufYuiJTnt9cMWtKq8?yo(#;J4ji^@PqFH-HmunL{t0 zRq}v-a5&vMq_6m;Ty(Etq0yc-Ztz8`Z>hzn8y~;z6(3Ur3;pF#H6fO9OS+-J zLXDOz=cUr{aWc}LZw6w3`ih`Xkc#a3o<uTZuada2A-@|A`kKg)8w40M+R`(@pBn)k>@EJfb5)4`U#B=uw4-0j~PIEkA4 zl^iH!gC!2H9|tdMSfYeFT|aa(tVKZQ#N95-?v^f$D{})~m?XEhc4(Gd<@3n3jNk94 zzxP1j>12Pa$9LqzHP{$<%J1B{72WsJyVxQ>T`yZ{C9J@y$=+XVR~nP_{r$Jjq<~;g z9zW?<0RMi#4)K6)tKH{4n$)3EBr+XKgZ<^SCwdNVx%2XhhXul?J{56$ryD zZrR1q}vs6qP+YvRglwi}OPM58~~=f@?tk9d6)Iu~5h z9ZrDBxaP$HMWJfpbtreI7i8W`{oYL)Sc3NbjwEP=B|WwleqRfT$bG%H zq!-KH_X59+|3#{!bbBiiEmLhGxcB5uLacjzm+#v*dqk%^RzCa#x-TxNXcw7 zt+f{~iu-gg%0ao*T54KzguWS$Mx{Ageal6!!_5LXSAOP^EBtoHY`F=Gve#$qFB)Z$ zj{P+w0mdEI97<#{IC!oGV#_uAvBJ}zuJ+~}Sw15SMp{!Se^aPMWyQ8N+;cm-oV{mL zQi+c2o`#wLEOd4$*~_HjeWNq$-uM>kk2=CFmaT0BNf|@r-|I#?pMp4~TtiQPfV3U! zH<04)_>f1f@Lr8dRneJX((<$?zOS9R(`#L^1Oi#27v0iWdEY|J44_rQR~#u91R=SW zbHf)RmG(>D0LPfB4EtThinS91WhoO1z3xs(PiM4Gd3-)cs?+xZm$q3x(>$<-fO$`l ziayF3{Hmp%;tyx3QD!#JyP(?JTKKpOozDpjf1<}n0o^Ai`+SOUMEQO}9(1n#7z7;7 zp4@z`UC8gP6U%rMbPFQ4+v3;)mV~YZZDaJa%)b%RpazXcK)TY&PT05Nvex{juX=wz z7=V{N&*x7Hf|pZG*m_ls_Chj%r01Uz3f zSK7Th>h8NRj{0xRXTTJmd~k0h74xz)AUnKua6kq2_^H388Eww=l6LVdOO85jmaFSz zubY*e8Io_DgNt{z`EFkPf&@2Tt9fpB$~1r4qA3t5JC|RtGVV%{H_9{*$Jtcnoj2#) zRT(cWpcp1yE)+-kPEeLX^NC1@^jpcY$jU3VOuI3W7v+3hN%XrYPdH4hCs#2|d3#A( zhTev#)$_dd5%~1bIH>{NhVGTwCC1rz*1h=Kp!7^HHv(lCHivGQo9`2;gssdEkg??>l}0DNB+O#lo@LNP z>v@auTy@g=%>O~NygFijyj^L@%%f~CklnssMzd5YubJr+3fN;C#;1RM@}aZrit0>s zO7w?|%m<4_W#}dc8Tfjc!IIwuTa}aW)p<6I_gWRu(|n$At8FP3`O&1ZUVZ_YYpFS| z(adiill=0*vW+L8Qy!8K4$1mAMGjX$IoUiB+Ozl4^1jOaeR{qQ$uShh=>9jAXiA^_ zEUEpqm+O*Sz4nNi6oSP>IF>LLi_OZJv~PYg*_<7=4bjDv^XY9G0+EtKu*Ki=5odTi zVeSHYGGO)c{y=I-$FUrVOP6}NCGbx0mSmKs=u5$wMQ!tr2s^W0wDgHH+J?r5OVox-wW!X);>S_$gZDZM*6yZp|fvv58LuBX_`DzVISnkNjZ|{iOe`Xh4NNHE7&wrs1V3?EC za!=L7W7fhdhjX@m0xo}4b=Fm6o4hv2aVlmm)Ahq$fZL!5?+=0}yw=WRmYily#>CDY zmK09lQJK@5TW#TvQ)Dt({7y!@NE6z#Khllti|BR{QtI|CCr6yuEKXsK6_Y*=qwymn ziEg|1#nzX#OY3mLyD!vO##1DUi3*1cC7AqbY!Lv=ePmafMTTPhRkNo+boQl4amykoUoZor*_ zK=%^phTHjMfgz3=WiWH#uBRRvS9QF=-Nd*h9($#p-j!*Mo@o*edw(C9;%?pB_xwW= z(`umMFoJd156RJECTtLs!Hh3>G$7qC;dD0LN|~j`o_HexRVpf}*n37`|n9 z{fmI$I8){z=|EPAL9Wi|Z+pdajbEH^)BYyn(<;C0&yM=B?Rb@Cu*GqT`TGLNTC0rD zP{gojc1trLucWVWQL$kQfa$6)Nzb9NSrY$cyao~sWyRaB3;c*W-3AVKu zBM>H9MaXn4E9Dj-A-*`swWE#R6e6Ji6 zX4w_Fs!x(+ms(9>bR^}eY!<~@q=0r=#vMM%G^$r~^nd%u|Ni#Hl9C!Y+S@ySb=O2r zV|~mq+!h)7gB}8eM%;Et!FfVo=ejt{ot1@w^A0-UvfH5qJ1Jf{z58;TJ;D><_GNzZ z-DJ+P@8}6@^M-QJu$NDZFktE_bKRe-Z9=!>L{=SW6xY5>YjQKC%V-FT2-d73{w+_sjOTqi`>ITCR^AG^Ei(KW@+r7b!p|xcb;A)~U*C4hrnvVI_e`1exf`4P30g)@DEP0K>z_7Y$gel4e@UgQ+jQ}T z*E`w#=NU`2=qC;Ml0`YGeLwGwImDlK8#pBlI>XO8<+_%HSWOH!SFGrtn>~LHWEo$o zPpTr~zL)uaMZQB$Z6p-FdP&^EB&$0TYafU4bv39MjU#}&d_ISB_>{jVy4h@W+3F#h z=K-IJHP#o`TD@bAKjv2Dxht<`qb#aFQ74u@V9#3vS-9i#6WwkOL;S_B8>EW4wM8=h zr}1J-+=Bg!-`qzIxIzsR6jD1HbR=7)4aq8pH|sQaWJz2(&iH;9pro+(Yyo;h#REdj zPEqT~CRU>&eqcg7E$v?IQ-`v{kS-2_Ra;+1FX(3%klT|CTF_2SuKh=_iKq7lJJ&>p z0E7v?vH~;u|eFc;arLmx0`#wO(m~-upoE^lf{2Dqq#E(v; zS}>lA5!#XbViIaJIP68OEhy0QVq>j-+p$gj#`No3=ErAy*-SK?_8pt^yq({a0yW>| zsT4o_z~}KsZx*uqSvFVy1aGlWgswm+6qLn{mg{+V=lkGvq&t==L<9#`YbDUAI*>W} zM4hdREmtZTl2#6CaGKOacMBuEhkCJy--6}Wk@kbbI0{#U^EheSKpN;Zn`0;5hrJOf zBDZqR&*)|E0t@5MP)8T|U47D!m%U3wm$P*|OCEa#<33H;e>TI(Sh46s{z7r65j~Qt zV(d^=VW5p=!w@aPvRivcKv&}H=)Qy7{Y5D9`I$oRGTmW6H}b>7hXPBJ+p2EOCKn+` zzXT}vqEn+}{IOx|z*9*kiB#yN=1X&zm(=jg0=dE0ws96P$Betrn?a>r)ZT3HV>2V1 zYr05XqfXit=klSLULKw%k3*i66aKvrY(Q<~84-PuK6i9&#^Y3#itFPVjUCz?{S)#k zqCmnVhi~p{7i&u900im3>v$AgZs=)wtu7w>Id7Znz-Np;^vjFNDYP3ZzT^cI2iuz`o zy$22q%^x^5st>hy5YS7t*J=C&#xwhm^V<{1Ug*P^6kLU)O7~f~a2xSFvi$#7=|; zd0Ctje}|8p42wy~|2L9o1avI9>gI46_{=!*w$dlyx+gOtB9F(_M4X$zW+NvtccmI8 z_4vMn_v5q5w1#Y-5%m43;;j0Dl2|B|+44{D?J+uEYLMMBEq_r(DZESqFw_k)x15%m z?>-^Y;|Kl4UAIGd@a(NuiMR=}2Ew~ZnKZC)aKa_AK!#VpZyxG)-G;CRZJ2D0AS+%2 zxAhX7SKYws2!a)p@gw5LjA0Amg#ZKNxWi3HS3EyE5%Sr6H=(A8kV>(dC>K_q?Ch%wP@W3f2H z`3_%0G(zV3;$?3Jon+k-J&@i)T6io~W+Or8~ z=}!1eL7>`t+^Wo=fzSufCtzI&)Rh;lF^Byzu5qLKqeO*1+4Y9M`lDkHdOE65GV%O4 z!QHA)I2E7YfC~#dU%%F~>TUMJx%}5%(XU%3QkMN#F%NjbNsDrajgllkCz1D$a6uj1 z1>c2>iT1b7BP;!|Ln=6y1^z+sRT!Q@bpN{z1Qk`n2VNlT<`3?cM>&PJ+sIw0gnk}({v z$0q0Zc)*_iRom^^n4Pe<(Xn}1C#P7J!utt)fRfz1H7v_gCWFpt+xYtw3bunssZy5d z_H-Gox1hW?;*H{RmMhRfkl9s5zzfjBy!Op?pOn8AORRN6re&T@U@+IvAYquObuYai zAHl;#XwW#N$p@;$^m9*U+SiN8)~&;vJsMw3Rcd{H&xk|r7>``tSzXLu-g#bD6AsdD6{L0oT=jMyTQ4wI}%6oY92X*3C`O!&^GtK1(;1--AqwUj+!}C zukI4M@pNu~V(!F3mzjqYqqFvRRjeG(<=&Qx!Q0kRc*0O#U(3tGA z&&)+$DK$~5ho8LUCPxw+!gAZ3$YY5-b=tnMdmh@|99mATx=c;OejcYD(&^PAJGP0+ zX79(sg{0saKZ+>*F$1mXueZ-2Zb?@3_%z$ZHC#EDn$sV zEVR-13KU=xAH%-!dq5I=9_tC~)+R#go6DpmdtG1We%E|{VA zlBe66`m-C>YE?7Dmw<`yA`F^OoofEbkbM**Ef1zp9dYS|vA>4iDfd%h-!x?SFZXMC z>(NQX<+`J!yvFQK&}MWMoj-f?tcUh{!yk7W>3D_Kfl3Y!y}GV z9=dpPOT{&LF@2c8VI9g@?u3Y>K_xLGBX7^y+NZxK`KV~nGt2!k4oU-%DIP*9K7WHQ zV(uRq33m%yE?$7*im<9EAa*u@v3p9C;P`2KQvN`x!9f+BS{J=P0s|;I-2-*?EoRce ztGm)2d2l(lO|1^chAP48j;v$s{i8{;HHI7dmv1)VV<1lpSP zfgSuvq+G*57C8%<3g!w7R>B20el*)=cM67I$)bM$@+_XGTa&*KaG>O1>mVO1V5HGROLCrD%^J zLV#~#x3s`tvRF=Nnf5!>(G0u z%uDr?wLwVlVsHN@flN9ZdU3F$Z4C4G3CzAT8#KThKlUISr${L65rn9#_d?dk28G{Y zk?KO6Bmt8ZU2USuhf^IAYeG4uS3EliAnAVuEPvX!&-FH9{wZf*{Pdz)U^ZEo9B#}^ z+mp?=N|T|wATW>uw{e27XVbirc+DcnG-_bo4{^scg>M9Xgs~8)&72w)77^je!QT{3 zvl$b>XkddrQVb(R*q@qHzQ}TWSo^{ECyHYmC;oKF+izQONNa%8apRZsnsSRE~fxq#d=@~deSAk|FGnSBg1KPbK* z{+$i4`j0pzJ545mgsOF?_82AiUU`77K6KSvpK3~9vx{DixIm&Q|MbH%=9EpUzj)|N zFoU%Huof(V_V>XVBUSsSnH}aV@SAZ;`fmIH1UH3S394G&TFV;I!^~qRUoW!3nRlT>Crg5_lGd=c5hw-; z8aov1_Yq$&%C%l+;&!4LSV*X`S0!(|4SdCwTdf#*7+I6L-7wNvvO&mcE&EJ^t&Xm2 z1#i9>dcS=km|RkMu{K96Hc9c4;4>p?7eAWJf>Vv}PK@Dari*?EU2Ep&lLYXe55eY% zpLC2Pw|Jtfr@3I` z`4XSCA0d-z+E>x*M@$?rASXb-%~WmetWhTD3~iL4Zt=G zJ*rO4%n?^*4tdp<@u=d#)Ji_<*cZ66%I-v%Y#W z{3@G5V0Qq+$3kWUN%220pI$46@V{;R*mI-;YSEzU_Q63RAu$?OUs2+4FM6s;OY*~nn5RtTeH8(BDuAZqdXdAm{VA%ntH_5IDgY|V)f zB93>jOdku9*ID!@eI5TVnJET2yk#Oj#!sTG;-u94xP*lIBaVg?sV4J>jF%2j6*hz+ z9YRFnnqt^Ja-QxUO#^@I01~k}T4nnDupVm{Ml(~{OWudLTRR9`RN}LDj*6j^d~ab) zf=qx#EhQ!}J2&dhh<@U;HZm?gJhYo#Q`nT*gGk*wGr~v4vi`>P!tD}eu%R3@Mk-?0 zRs~TnjzpR!C+u$0#bE8!2TlAhStcOd2lHVWT^N|aT(CzNMnwb*nXg!QluY!wEiT~C zEK|;47p#Q=S0_KusoNWj8Dnb1>_KAirt>3QmR0b8#cUR;W1dU*E7BC zB`&htI70+$h3uDf5E^QImd1I}i6W=qM(jIejkjBh5!DUxP4k+r4uyd$q1s#{J}T z2T6-HiA#m_9iBJnmu%toEtH3_Ar4|>R0ANf55MCj+wwDf{Ap{_KN$vw zE2j(EhUMx2^P%*_&0V>iBG2cf`d~s;DjsiUzc?~Ow4-mZIRS#>vX*KsUDj~u zy1MB1GQkXR-D1I%bi{`b1G0lYe*ij1gvsb}k7vpCfwsr_a~_ip5hQQD=us11_ZP3L z!JpBx)ep%wm$P_=!`kqAt8SvR$57=RIwDukmyF;LOdBz{*4x-KR=kxM!e~wm$07%I z(kdqrB)N4jgIgV`sCM)6X^dJwi;zXfPv8I62+Dm}_)m@p>Vmt#HX8K*&J{cuL`00a zI<9V2g1-n$*;jeyT@H|DMkzqIQ|5###!=UaQP7+-T}xX>GBqiq#B0H~dhq>AWmp=# zXPIZ7J(4^!@ofb6#lsdag!WS+aZhPY2oHh|)sH;RH+OFT8o-&clx#wnp-3kA zHUY0+YS12*`IwWe|6CwtuZMKgFMS9vWu~0tc%eMi)Z(qzd9AMcg8To_y*$sM$ct00 z{gl3T{r3O6v!YSlMJK?C&^eP82~5P1XQjtoMrdxIKltZ){{gxGYzEb1ZGtvyu{Jw{ zK0d4}6I?m($J4PXT@Hhy)2H zl=G_1j^CY+=cEz;<(j;6s;KSF9^HXSZvNd92u^hmGR*#WWdFUDzc=6DSawY$ZGUS14j+g@yGJs;0cZPp9^s1=M4p@Pp@o4#rWn+)Mc!I9 zrg1`>pGg$$4EO7_xbNA;^k;It6FrCU9Z>;9-hofzGh6%7swo_2=4)KXMl7ju*&=lC z7b?C(5kh+HA6OJ`Du%m zk)btRCQIb4Lf`I4qNQnXJdQoK>>??c+eV?R5BE!X<>leHHKQnP6%wXBIJ0na;8$z* zj<5B`hCa__KbOyyGRb!*A=y3wdRz|FLH$E<3~GYMnt&>d16>Yg6N?|%U_wXAQRF4F zX3Sb4_kHY~Unz>9}_|?u{ zEFVBNb+udO?&{4GGWHBdi4uCf5ZNYw>)(xl!3QsrEVGP4;0|>&C^yhd+|RhPxLUep zp2C^Ma*M)sd2{)Tn*f>Q*iiYH7>I+w*C4s8_@(#&9{8JOd#vDBO8p({Ew6N2Am(F< z!a>+E0`G3*08x*0hjC9h#x9HByTD=2F!Xj_UytdLN4#;`3pWQmo!Afov}oBWXh2|jSUA7e*dLSW(T!td%0|$ z(83sgm{0|+3Asn(Z2XXnR(~zyxy4m4``ifKfcw9b>CYLr26i}A zMEVXMpBtIWb}bfE8`-(Ge>7X@aCiJoOiXO(pbkX95dGMqBnT$7ihcd+@14P@#|x(0 z!hIh}h?{&TQX-g4Hij~a@E2_KzyZM;)-){7f6Hac zI~O>v;uvM?Xg{AY{G_}4IIagT(mRNT^pg=~*Z4X?%;b5$0J_MXV}rP0yM9kD9JIqu z9Gc)u6?;v-TQZd}iIySimFm;vek09w@Y>Q(TLG*rZ{S9e$^;zBpRcF7%-C$|LL!^< zq0DuzoY=hq_MkZ#=aVMP=s)t3;~%w@iOoM_=NK4{Grclfh@%fMVaIrS2sqeXusWwS zLu}rr0u;X-h!7eOwY7O+AWd9+J%D{?wqC>bR;ebR;fCy1wB4DQW$wa`vg}WHHSsBcyKk_WuiPi;C{ib+Y$U-ZbW}3s>W z2J?NN_26EbT`5PfE+r0YTbrDoX(?lHqwzBl#bOZeviSrNISTZ8%8Vf6HpE|)dCCMB z6A2=W5N=3LhZUlZ+>l>Er(frzNP&mQYt2qr-Eo+0+`L43oKGejL&8H_wAS-{bPU^3)4Y%rg}{9Uenf1I$>lCqzt{+PddKypxI&jofcj`vzl|O0%Qn+*wDv}7 zY!glLrtluC=5d5w4PMYDy*@yy%hog3x^ZyRvh@33!3!ba0aOf_L^jRHeIwb4HhV61 zeY?se_pffMJdrD1;JMtQ2QQ;HmYUoM9kGda@7vA8t~-NBcFnr@%E|OGPov9Ceh(Db zp_t6)1F@$n1=?^YdK@rF|DC3~5vfOdR! z#ti)7QG)be_eP^&NF2-8crAUp3awUNg8!px2ut$Qa=RDTLZtx_*{!DNj$FOfd^|-; zY|~#pJP(nM>1Yzdcq*5lO*a+I^zedD3s|egn(9JsR0>uM6sZ;hJSiNcy0mLdVF3hu z1^ONsR<)R57i#MJb_IfXQl3fjc}Z|Y%2%)+X78GcYCUfyWaalt0oY6CI5AJF$v)dX z8q^;)xzKmP_YYGw1%%@z-hr-FG21;3XDLp}i1=A^r#(Rw1{AgOD59q&;VUAO^W zOS#Ee8lCc|qGyOeB$eS!E$LF*E>|6OB3wqsky4eWu<1w=hPbS+|4WBpjs5Pf4oto* zy2zihW#u*tWvwl;Hr4~+4gI4q&Vw1~r=5|5+<`b8^+zHjd+`Zx@i?j<5_>c%63t9K z(BFi5m##96FHUWjJVEn9o~V+c>{>Ua9?23Dr#NCO`H45AkLW*R?Ck^Xx=}ANJPsIe zQ{9%2Gfl=0X_q+9@LsN%zwpwU#2F7Iv7}m1aS(7MlrDT&*IvYQ%@3U5Aozko1E8m% z%lbBLKc-(z6i12|6V*ZeCM>--l7aCkj%Rv>PFe2c|6>53nxaCL_tD8zWa1;m-Y$|1 z=2rH7^3KmTY{@EjEKW60$4?zk#aHu(2K~oD{%G!V zlU>}^3VGC$=Qltyr49-DJ;s$I2I@sEZj4BC%yiCpGIcsrc|3XkFAAcFz44!NJa7Zi zbRuVFdQ-Vh-=<=><0;`H!hS64>UWLiV^WU4;dF#18$Jt^y2)Nd;0H&BSBDI=sTlK5 zKzOFE_iLiDea4^(A0rhGY>mO5l+BTIV7WIR1sEHjGO06XbQKz3j`(|vCstRw|KuNv zXJZ;k$YxFYngMUQokF@f^Y7MGE+7^=8`hirydUc!gkT*lx}HB<3IesA2CGc0#dFS#+Dz8lJvoD9D7bJ3ORG&BT<}`L_mrQ zfz(#+ld?c@$G!17=hZBQSB`UWximFc6=oW5BMKTmA9@=?Jo1o{lm$M;WOb17{j;|E z!O^h!P)ld+;{qMO%$?l1+uu>**I znh_Wp&WEM0QDgqNTk>K(hEZ^EMNh$6}j}BwTQhO^9Y6CD108&fZhh0rk9;rF9 z`D^oUC=ZlyN;<`F(TvzV2K8`fzi3%t9)(#gQ|j{|z47CezWI_8CEMOZ@~RCp5b2nt zgXo5i;vVVlR#}YLIWyscNi;CvPd7d(u$+5P#sR7_-H-A{V_`942Hjuy0Z^=CI+QT2 zln5fDNepPPqF10@C612QDb~c>-WYE8y+Qv8qTQ)@8+Td*=5F#0Xzhh0iOE7Lx9#L* z9b^lKUUQoc@jI1YdzxQHSkrF-)00U0`hsDZg=L?Qb}~Flb9D;UhphKE8h^|a4Xxx+ zIGWN1Aj#r6m~LX+0lu`??&Qx8{Knpi7RHs}>A-G9!zJw}PMlcB$Y4A+&Z~2-?1#@? z`(&Gwp^)=A+^_NYg$d3pX+R zQ{jV4-tJ$a%npk1j;ct8&8Kipa)4#PY@Oxo6j%V1ayyh7HF3ln9!hQ&KLrvL)=!-y zRD&+x9NryoK?Dm#fY0GUyd@W43B_C?+CYma2Ad(A>Q zQ&>yruHD~-ew0ae@Ix84I3PHr^KC*Q4qc?;p)6L4CPA3SabYhi5@7jRob@koMB1~G zAc@Md<9iE=ffkml+~4ew$K?_E9ENU(-82PDxMpZ>{y5lAsz9;1(TfEyE(4TI^Jas$ z1}te01e?>SY^e-}!h*lNp(e)=p&Xrc{h60_I9L7{kd+shD|;HB@f91FT z&`czx5Dap5Rm5EvUjSiEUTzHi_ni~Oa<35n95cD=OOCwY>@ix(3H+-os&5W{7YYyU zEyvCg*@_w;$fzm@%%N=H)ukdY7VUZ)6D>i?|1}fkRhDS>pbE#+lhV_{!KI)+G*k&G zd$MYB5{t=NaF9bE3>$2?Bl)$(N1}d3>mylIEB0(A8lyA$YzkhWwrxTm*)=oy&j>MQ zomh?KG#)4LNu(!bc0Tvf(^R&oNl=H|esv1ES|~U?XLL~dj;|hi{%4S&SJL6!O2~|S zS$X+c_$gENeF0}~LoR2Yqml<|z_IXSJSeXLn)okBkY~1$Jw(MU*=x$O^ES`c^gM&` z?U?gxFYmXw)hixG-8MMYG2DpaKz68O!*07&Wg#E(1{)oJkI@3dKT%hjRZn)GiXBXy zJ;mDF0{Ts`c3LzTgVI(41+d=UWtpWsrS(y7-*>1`sq6%tTMD^r94M0LwE%t@pL)9c z2U=Wd>)L)ybNVR%d84J@e1{LiTHHE?U~=P1&8eQ)@@GGq?K!Ha-~7%H}XGp&3 z%l*LJM5#MLPNGOYjP$(7h;>xn)116*ALX)HD}n@lVE9sNi3pylp$@x}MoUF3OBb1V zkl?TmLD1aY26Hh1WLxdt*ADMTRM_S1Ba6`_1EiTfe1ts)1#@0*Zi(HuW}#~LVN`1# zXB=fh#%uR$TJ%MjPP*qRwZ2!M3$38m)|Du)?~}GczH1-m=WK-Gd}gpM9X?aph0tMb zeD;KPcQ2^EUWtwjeSofcK0#3bcm0bJ_+LB<_bwEOT>2{iSVr@MGd#c&#=n6ZvhwkV;$HIQ zh;tir=l8dK^V@$d^fRU5%WY2OlTQOrgNTh71<7%(7K;(kP*uyby`{b7OUnK}5fIni ztu}P8{5v}dJ3lJPHX^l3_NSStyz*|S=7^+_)loioOp^Zd#3Y%i=I>(ZfK9`RG=pl3 zCsOa(tdDOm^+rsGM(|m@_!s;tLl;YV)J5$UJM$TDaQvFYa}uH$o}{h zK`8AQKHn(5)@B*r67b-8?LC&>`pH1!)u;0Bfcy=!`EUnc#%dqDBinXpx^*8EhJoNB8r>{GE122f!qY9-yzc7?VU_SJ6n0 zvvmZ-0GqH#0Gu)Lb!$J{?tA5^D7YYrg?N~MGJZ}Gw3sVWCe0SQ7xF}7T5OtfOs$hE zxK_|a#@GhbL_bG@%or)}j{U87T7&V=$+ZcS7rLT_Q62P@Y9>G_Ogj_Ua|9h`6t=n< zCX*S!rWP+w+)@{dwF+o(YWtVaiA|MVi>dhbN&pvoK{2iAPD()aeKO0EcZwg&KaySe z8^7SThlz}D0O_@pd08GaYmpvRaGyV4n@3_t;~CP2ul;cr7Zsj{oNGKUs6N3zh{#JU z$GG1D3VG|ET)r@VdI~>o#d@G`4N)#CFmcjT+l- zY^OnEyRmJvF-~mT$#?qpz4yDn=h@Hs>tLU?*P3gtF~=N3rjEx9ER8?bu87|BC$d%x z2u?@_oNgv42*d$~Z6s%F_dv0sMngi+Yc}{!`2FnPrn7VTodmkr^xwqVkgjf?MIz$r z__9}lRHvF4enVBrpF(~+gi7Ds6Hvq7GwKQ{;zbRjaLddKuOPu~F6Piyd#;6fw78jw zP1mG;2;dbs=7SN5;O}XoE<JOvo!)tD*sr z%N(h1JW*mg8@oYNl8Kl0A6aUUDmIO$a4d2`nC}moFCf7X@@DIohU{I{dLFWd#8P@x zw8uIpsSUYkB8gKuy|})Abi5F>Fp`LHgS1r`^+(HU0l~_ zjoS2nh1ZaU*kvj=(mQXX=n|(2+-j+Ko~ix4=uHiu#r`0u$q}`2=Wxc+LGNHLHEC113Nbh^0wux4aLAr2CJ+eA?OW#166Qcr zotTODCF&h^WIW|2U93F=|9}gbm@#W(g7kF3Tsn1ZKx0y2pD)Y6cpXv$;7a!kLW>#) z{(648mtPms7$g!9w*jsm(zlMFJ#_v+doF`KU-5)%vOF&$|Cod-fw(ocaqx+g)6~7~ zM`R3$$YLbgA6akVVWHC=K)SlByXAc;)#Ua-wOW%bwrR+1bR0|0I^sPI&CPJy4IDj+ z&zLy77>`B6jLAw)MxJAW)E!Ka_+~tkEY+TitRjC*1H$?pT!I5O=kCI&Ew9p||4tSu z#6Ki1BKyhcUG(>3GcXy4sZWUyK$~UMusXu!E@tj@l&`$*z=XODpka{*od}RaCG(cU<6($}-k{+T#j;)A`yKf@-gw2mc@a{7jtO3q z4Bu}@z`{i)xXLbn6bjAvK*or3-6(T^*3}K!bd5SHStth@)qUtN zXi!`4H(u0NC6F({w2MJ^uC7@7!K(f#Eq0j$Tbw*PeF*TvW>YfkzucfI20sjk#)c$U87~O!Flc`)?5avB;G-{;{1j~3 zHE5Exy?^W3r-2S3bsjt^VC$dU8Pjv~18SGgcAY=q5{;5rzaCheIjZSCkChYY$#w?? zH5duyfV?g9)$Y@nni14o#@0h8Ji1W>mcCf}2WA^hZ|{GPUDRRqn1u98`^ROOOfUwO zA!+n4udj1?O|cI}^lRp}l5&4VjM|%;$$f(`JOkx^vewOYhC#@U$%HOYA3xW;6aUF$ z+hBO8Q`2ht^)dYTkVpvhd;A>l58+YiN2vwOBiL$z2#*oI-+Pw$4EqH#2q0ys&UCl~ z%8>jGX1Ga>-nOWI@Ur5exDwVRejiCDm%->4AtA5U8BEV)-MDo(dZ^G03{dd@IE>3Z zTHn?6F^jk;A~&m}$?KC*NKE&xAS=9l^pM)CrR;MD3Ll>6jV11M@x4w;`{>t~hiKqVFPBK=Zbm-2O%prT1+-2jE_ncFNK-?@5bg zFtD2#2=u5M%Y>z^9)r2;0Xx(|GSK&8 zBa+A|X$SC@-ll|h)O(@e+Ytb6u|r>dj4^Y8_9rT{D^`NrIWp7rCn}NW0$@;tZGmE@ z-}BTdyx5&EexfI1@&sM(WgWb2JGrSIM3}dijxK;4unc-Gf8;ScEHPhpgxV|U`lx#) zWQzx!fdFFN`~-Doj;(WUa3+Ima{GK=lT^KkrO+Ef*S>N;`nZ8^e>9m8gOgHUWa2P3 zd;}7HS5Ox5>;7J_xN7sbBeqbpM60 z$p+S11!rfS?EC^Uo5QuDmWMvG-2L(|I8t z?3>57aLZ_RPdA5Gm%#|QI|`QZEm_F36rwMtbvHwBHhW{KM{}Ip*0aRbroeneV@6|6 zkOVO9xOl76Vf;yf7$rzh=^RDUlM-ZHEYU$1FOk7EYpCBC+LRw`%E0yDh%U z#jLU8NiSrxGZc5_V}1#d2+}qi*+Qb<=Qim1bbGY2Z4GTKDojFn%FF3;qVecd zu;hQ2#+qvNsTRR6CiZJ}iqTd(z2Cpw!+&;TaSA46jT%vY6tDMok1n$QKRS@4&&2kz zRJuQtfH7h#wNYmP-(RO<@8>zPsVvN+f&@HHl5bvw&F^yE85nPi3x zx)TkNeW#4Y8k2|@bH<-`4;?Bs#!`<7N#ymIsC>h?QIX0 zZ$-QGyoUWnxlzkcP-3Z~DQws+=Vjj_V_Y(}mT1SOuHx(1^7u_2e18`!kuDiU^(igi zj}w3n|0HlWP}$X(*#ra&hcVPj`s4Q#GYWVV%4hH#Wi(AW zw^ z6jc5h+9C+zB4jQed}>49Y7Wb37S{|1c%6S0pju zPFTV4Z#--y{>%KJ_#yP%lfhqxheU`NiIs!55^(D!d{wBZ%nuHQ7>N>y!(kPw@AD`I zbc_nbxxyQbBMrej?+$>va+cE}{#XeTs=l%}jNQnmKgR-$|50Rm9+=j%B)f(D z*##u{2M!+Asg`~3%XlDj1`xC5&{UgBTK(>mLhUNnt=pyP?d{#=s4eojON!&$W@D7L zm;|--^bQV62z2_qwye%4s;@LyZ|?1VQ~x>doXw()U;Z3=BsOD z5y#&C!zCJf7M7F@_4wrWZK|+R z8AhssuS~KWgr}jQ8EuIeA{8WqKOCn0J0bF%YMw7*pzfOY6kj#^Rk$_E6dk}Ri{SV^-QysSPh9SQ(72`En_{PQdXK8r?tf?VR-;Gftssp*Nco8ebU}&#;PCAh>02*}zG1AO2+-hD7&B-xOE)BEu#*MHVWv>X7l{5mM+seF!pR5lEzqd{D$gvSqh14uz6eN{T&b++w7D@yhdxl4CoD>s%q{;6+ydFj5C5f$ zZ_x8P$MO^tSg~;){@z!c zy+UcfvjcELMvqLsXWV{T`>xJ+CkYMj;fC9oCDt`QuA+yQ=3kTyo~aLrIF9Mre%l=T z8;SmTy{7mFTfKb_13T{vpC5JJXb5%_GSrxQxR?8(XN*PTUZ41!45e$ zIY{&uAK{1`3af{3BL*-@axC#fi7CSp@4PedJO95@Kz~Ml4=}V;D|k3_6!yLCLHdWX zLi|V1|LjiZDXx3N5(oIYn|nvFP?sT<nq#yz!z3dlz%QRM_S z=s|yvZ~wgRjcbB9bI7rn>&MXliLKWJ2_z(hC60I8pTgaaP~7jZ=}_F>4j@*&YkKCy zvbLTt|6$Gj-4w40$^Lia`FA|t36v#wJQ19}Q!fX8pMo})K1VRsSp3VD`#X(NI8C3N z#12SH)xLoJ{ifcR(TC13uQ~}m)eFZ@;;qCLF`RVYB0NI=_jcKd?I%4-@>J)(yEXZ5*N6V-yM6Nn6`v1!q|;JO zx7bzz4~P-?_r^eh{NuMVMWj!sE8ylc#gu;{An3Y2CkYZ2$Y^^hL`^K8v4%?0DblQM;uPI zq+>E3rw_Rif(~gbBqZmio>5;2qh-d9VAZq?}+`mz4wo1gaV*a zw^@n&zt89~`OgIXpSO&?M-|A-feYn{3zjJVmvZ>x`F{de%B;*+qAKGs50bC{od^K1 z|C3SV>lG@f2MXj`d?EjLV8(p^hh`{^52DW-566qW{cB#u}~KKc4TG$yz_m)3DpY%m%}O+@D9gj zy{!6nGFOHPijj1Llp%iLP$S+Nm3sVtXqTY;b?iL=L}WDt^*j${0RR-TDcO1^R^3MG zBe6d_cvVz1RYn9vgoS5GyMB+#@S`pS1k8~_-0l1ifs(@6@U(ybcvR2pJam6DYcydx zgV!~QvgS|bsUT}<0P0M_;&q{0t}_q#Q^e*SXC}6wisG**q;0NhMD&lwL48Gwy zL7)kUSrWTV$m=4D0VaiR4CJ51L~nXc2tG+%4i^9|!Fd0HFV>MJDesijxm9sZ`ycQ@ zTJC*^weK4fy@FUb4atL`qBpdggUU;sD>Br(fIpmTW_K=YpXRIof0r+a+^huR>;4bO z4aC{`A))7qf`U@4R)MoOkrA=k8!{@RG_4$`WwzGB4nj9W%zqaSgAobkeg$RUCX9lf zOHKB9d|@M*-~SFogZnoBqgiEZ7if>zZH5rgWF>mo(+qS=6dH$ZHegGg(}3k^CwSwO z-^dyieACg~EN9)kJoT)4*y)Apuj%bJ6ql~Fd7r=AX>EtAc#`eiPL8v4vJVoH6HuQ( znl|r>p-NuR6!5h-#}!9N4X%B|XlmjeRQf_+NVQXb2aW+>!k7iM_5^1H8QFVTM8VbC z+C`*4$3zMSeE7D7T1R*2XC(7%*jFmE)e=}dWY^V=FoBqhY!0`vl4CTL9r_WM;s%H?<>7gvC;DR(0c_A)R8@Fx8@of#!wKpD;z6{C&o4XVU3Lix5-pZc58m)1 zdZt7E>HB1a2ewyg_%{!-Xnq*~odY^6?TYjX%!-cV(D~bufXojsm(PJp5AOHam*sFe z_%a5wPf|m~z}6h2Z`<-_pXhifXJ5YI!Rn-a&${RHQ|V|}tj96at6$nKNMD2SRyc`+!U3XUcSi*l{TaH_nZI9_ge?_F$T zoZk@s=XbP8t0*BuIzb*UUUTXWs>=^(X}7%{Q)U`tD9{m1#J+12DJ;eOGur&<4n|1g zQBN@YSwB%ef2NQ5L7)lywW}|+I94jkIEos~_g8wzF0IREs+mhjZo#FP4JIDqW%nX* zy=SmL6dZ8hyLf9#T&}PvXT>;Tl#_@Jh{TC`+N~{J_%}uIWuGhk_$Srv4FM+=ry8V= z`lCMSrXYa&Fhn~!H}_e$)kSXp%@(AmH1J0p+MY?f!3vAViHgN|C>tn;byZB_H<|gm z2l~W{b-w$>XDY?6J@1MrcYRthRf==fWtAHH?SZ2&!S1e8&(eU<4gSaYJ#Vbm1JC_G z1s8h@e1N+`N27@JQc=6-RamD&0_aYV^#4?|ew+c@Y58wFsqmNDH2x#^)O1M@c5Nw9 zK<>I^wcIqgbS$9 zcCF%adqncrp*Z4TF&K%x=X@*BDHycJ#Hs1XBzZXYX-kwtvI?dysD`bWWl$6lrK|xK zbaIQX<1~{*!|w-`%7--81-z4ayI!ZeOK&C0se2juGCtBg*SzXKmdE+12m!72(iWPz zg>@?mqID_xcAehJ*A8;|hl4hQ!_Q0Ismhl$`cevDa?-i+nk@~dlqD_|mHF)wStIr@ z1p09lJ}Tl4mnB5>05qaOkDEcP6440T{4|9hPT%U^HJ&_x_Ky$KyZy@7Gg(s4nIlT4 zJ?NjQ$IaB$jxLS?4mfe&PQ~-l@pc%kv1U{)9@mr)3zVu^9i0N3e(kiMgw!aHSM%;} zXK#F^=F@UteA$VdE!7k=2MPfmfqt3*N#_>%c!JLS{Ryd80Xmx3I)F~JWw-~~l`Tzu z=1T}VYR*jnHH}V7n`i#)K|*B#8e^`pwhYFe88sW3#>DfBEq^|VHKcS5cp{6XyGG!t zK)ZwVkt%akVu`Bf;cN!&42V_^Gma=}F!Z+_vABk5~jb*qDZ z8G!k2Bu9LVj7P~zsii}Dv9@RalbnU*u>v4r`vh-As&wIAomvntA<9>~ritymF4PRg z1;k(Qg-5uKYr2cwJ~`pP<_AL3%h;FWB!Q5>Nnx;2@P6KKEnKx+%NudOD8e+;rx~ z_E?g?=$-uD{os*Zd9E-^##a|1_O~V=yJXg^&x3p%(^nclBI$>k?w674cTs`>c}7$t zMX1A={ma4ZUgb2fj+r6AiL zNkT`ly27#pwInQtQKFJ(NI7$eWEoUL5{^?Q`I>L`j{D|`ONm@_Wc=Co+YD<#Z^1!m z^2~BaMFCH{y3Az7=>5sh*;@B6=2tDW(xU%n-0R~Y!^TExVmTbC7DtKpON^;2sWq|3Lpa~MrV2VV4;YT+KEIipjJk9#Vx#U zt&YW`xp!$==#e>p;)D8#_AIv#@DOgHZ%V*=v!uCL3We)ppE=R;jlNWUh-z^7XEX9s zOnR6F#CNjtfwfTA#=T}R7JjjDccBd&T`In`|ckvrqYye9X{B=&(SJLwn(2q9!^ z0}hMLYFFDTASp2#CGna?WM2k^tFCL)%VUsTuFWrYaUwV?!X+t3sU0Mmp2I6 zF(?j6p!!Ygt}^rmqutY0ntf1ZJOFWhxvER!<7yC(aO=#3W_vuQ4Ep8-kTgLjy zA0D0-w;1=uK!=||0y~sj`DnQgdQ`#y>CIMiBc;mNv{33J`G$yC#D=R&E^4WHRBr?fGL5QIe=+ySe z)jZ|6^HDM#;H!7{)9`PK0EE|8srchH(oJp+nP2^BdqM^c4qNR%m{u{Jbc zT%KIAG#gugVNAOfM!KynW-XbJ7E|<7#smt(l@w87-5V^g4LI--AXKZ>zgxzvXvhOa zMN29E)nx_o;g!Z@BNz!_9faiAG!vy!H@1x_+;7Oz&1*}~R+0W$JNZO7-$OUd<~Gtx z2uT7{OmtP?##4613%AATak|bRN+V}n4^LN#r;|}KC9Xj3~iDib6z;PUjvM=kulN1U|nah3^^G zCAB>8=|nO?06#rmGlPvl0NNXyr0Djgk0$ab8{#qII?AvXGL}VPZBdzA4!t~3O+%D$ ze=-$Lv+V~DtrFQSD?Zl_O_xxi*NXTenBA$j# zu{Tl$Xjk#J_fW1&wumzkes_wRHHozgQ&0JB4Ma$BQs8%4apWqlRmMJ^DdYLjFlc~P z*-t_wmaO0{wUMXva~1RzC|n9~(VnlwrS>wpY{F>p)oj*I9uYa>R5+4hkL>`;O?7629M(lAFoma4uVf$D3$5>sNOS4xw8B>%+Y1YK7U&u$4MG0)YEw$arZ&)B z9$<7~gy(+o9fK)~*tOkf@%32HICPlf&O4h#fTs#f1d^f0QKgr{aVJugl2 zWROIW!sb@Nag)n6i@Z)#0K9uRsX9(_O4x>KjJ6i~#r)=yx3j-)rG)X2d%0E}bOcDV zeIkJp1*>4y10sWA_4PqslAgHr&tQ`ZDBr3Xix&{L8+^R2W6h`jpIERz3 zzneYroKd6IlJ*QrQ=y&`DJxu;$#xM*4eh#`tB5h+uvKj%0V@PIuJH}!?yW&^hac|P z#dfeaR^uZjhO5_fBVi3d&!4!r$Y9{6U!%w?nVfD@SJd9iPV?p0pZm$oJYo6dY6pUt4hLZ(e`p8xu=mBw#F)ccOH-rHzd?_#Ro4 zYAuzU%4D^#R>$zoSz%^0(}Ov1wg0N%I*#2J4t>HRFCamVvW4rRNss7qg~o_+T@$JPt+3_pOu@!jcS=GPQIp61h4w;3E}NHGbW zFzkQ^0^Z>7RJgkwPX_z?>Pm%LpC6&%4+UQE3SJcqPj{JieH@0bm?7^gBhX|ZjTR5Y zQg}_7)!wR+x}(kGD7Dr4c)E`^HqgVg->u@-10ZOVx5ff6ncihO1pbCjEMASj$g}<* z$Sz?f7L)LlTBOcqP3z4|MXSz?*mnkKdOngCb9b53{;N)Kzj74Rt5FS-kk`=#?J zerT@9tKw;P*ny<@uJT&PQXtB|-I(=FzajgjVkK}ycmWu=vtx@yZH{zlO;liY{67AC zHPP2-O7lDIu9F@ZytWKpUy@|1e3~}nEj+2!NI&;3w>;m%fDROUZnrF!pLh03xGQ># zT>s`Izn}tlxo*lMA9mFlb-C|dH|a`wHGR{>fHSH0sXKNaAvPEJvq><}N;vyn1*Kf5r**L*HB<6A@iZQ}g zf*rGKi=V1mtR%uz>qMd{qP}LwVjXC*B8(JG7|_SGRc+C2$wQX5bLaK8AbIey6O zX!^cZR+Kv#b8XK{ti-D{)OyX_AbS`9>K_ZgAlJIVjtSjbW3u=PmmjnL_$_8YBs1(= zQC+c0Ez89FHE+@@&qpQhqg+`Ed{EDh%G4oUC_G%;3J;%F8+%wA5{A(yz7Z$EK`TyX z*J&90UG^kJISNQ92`+AKa#XY7g#|jXF)VbjJTnaKlEC%O7&sIUFIA2#hi-Dfk*ecB zv~JPK5u7%<`686epn~{PI*+KRKv(@}EA!FwM~%AkBpi_IBho;zU9+ulZywR%?fDM> zzaH#BaIpT)mn1qRg-<8__iEe@JE1SB^x7OdlUe!#J}RI?Jdq~^YMoUPJDdGHh^CN| zEr+TAGN_txhGnZxLT9U90J%;-x?kbVf@S=6Zn0%#Q{r;JG6pH6B7kOUjFcsaSj&7k zy#Aw#wI65f zU+z4wcEUV3F-AK7I9R>STML`ySSGqCCzMtu0M?3350>&JsXd8`84@Xj9&YEB)32m| znF&uWuH0*_QBUo7D4U(8E%M%Uw6Vf0vHl2~$*xltK9PZGm4nshkbaDhQcSaO*X#7r zZO2Vctkd=%5t*E-owt^`En-pDODt+v^te10_FIm*k{ScDS=Gn!kAW)2KG7pqjPvW7 z4In${U*>max)K$yrzLs8&b|Y-tUN`>s+Bu8LSFHudGztuvclVh_$rSHmLfRR*2kjK zi~B2EYhhj<;7*K$8z;L&JB(`Z{SnE6VTR-v1|?phZf7P@H9u8GLNeo;cfwbs@AmygZ76jo>xj(k^a`e^91_y0=ymQ~JdPB+-6Qs_x%f(HCsU%WLFFZ@vAuR==cD$Eju%wB0mQ({N zc0%D6NFJ^n^rKbJU7Wmq_fW=JIdIM+0-VppPq{I?`{J@58#k@Es7Qb|3s7EFnDJfIz) zot@RB6ho-1n*`y?8P_3#N-7EGiITpy#)ILjcshJS(Eo^Rno>91lq!RtVT zIv>uE7b4xAu9&J5z5ud4W_X2O(bp+T5N9z}0i~u6z_i3VXA<($YwJspp*QLUiEseQ z=?{!UJm*jj9D~T{;3ZaimZCW1144vD{jCV%$LCF}CT#cX{&ESJVMEa-uSCQE&Wi5+ z#}6_)Jr7|kw5}WB_-Ur zXaHQ20j~-UVUxsv;JMr14v^kTk8JNKVVKtjZ^WExZzwin&E$^nU}N*)Xmm5b(FtsvCFqy;bdJm*ZgjrGxD{ zxr&;Us6(bf$1s#wRQ!T8;=sV%I8M5fCVOTP_Dn8vkJhK;;Z7&+aC8+Nf7{?3j*;6E<*;s=pJ7sR7Z zAn8_Gki^@!wehCglzb0lPk^;ho~ZDSij0%TrwWwQSm<)zXVD$F^SNSi59}}l`kpbl zOFPzF7Yl^U?q|GJgi*hB`?H{CUnSARBA+K;F8CzfbHHr~2XjP{jqVV>*a?N<)W`J$ zP&tK3W-Y-k1yXW*O%(R6*gJY=vDad!iQYDAzR`6&xgfr1?*1(tKDr8T0VAn|t~(Iu54|-FhvA+_|4eadSXiB)9qgQBHm)pGr<+z?QRg|6;S(=t#=??w`g-3dFgD zij`@LOrlDv&tZ0BT{eqI+y)H*xh>KUYMA!C6%l6B>YJLP%J z(UE+BZDDEQNYB3v;PfF>#O+itTmP*Jb;>)q3|h6uP{v4X3`*YmZEiUN8BDfDFH%y^ zUfTJQARSeq$|CQ%q1KS3+}Yl*OkIL9#U+ltb?cc4MVPDjc*qPw9TN68g;aqO&BTsc zOZ9SL>C$#iPKn2K0$X;6F&WUqsyOVhCAgj3JfSX3L>(fTKyLVNwJ6=hYQLAYbSQau zKT=XoC-Jx+3TSg-nN_xHAQgcjbc%i+g`v~+M5H+OFLSmJ)yKx#-1r*kD;VqX<}tJ@ znH^c}&Rc@XmOIz>L*M*o?}Xvvf_L?q&UY^Y5mo5Sro%XZI>xQA4%Kb057w{yh3l7eY_xo9iEfwnOrfs5u};8f#4TOq*B#^QD5t;xv#f{H z{R67Z>4b`6Og*#_ZOR$@@bgt_B2UF9@p_3#VXT|pkVRe(0fr!M4VZp~s$zZH$Q6e# z{0p%cL?l?6(mOxyts`Pcqdw*WIcf^UldV@g4%NK(Xt0(mQ5qOhzgwyu*J3cJ5j1kx zq7_t;Ji#)gyM>XMz|!pJz9!y(F&}(!?(BXr*B80$Mn8{zAt*Ty52cM!s$7f`YjaR? zyHp<4@svLfWHSSnQIl}e_fF8}?U6VJ?&Jg?S`y&!DT+azz8@JAq zHc+>O!R$NJ$9%uJGByWBeDIsO^S)l1Je`=Bh;DOlO>MLlACLwKsve1v7ozW4Pxe9p zU0n??4nEucuzsyR5O^To8eFBy93T>E15n*2E8bL8kfNaCAXcO#q!2;-gRX~rgOh&s z><{jj-Xb&kQaf3|Nm2N4Y`0sQ&G$I{2@v#5o)?O>C6?Ie2mA{!2o{#Ln?%X2h2^~up@(m`t@_u4ZB#FBS)zrB@(W= zP!7XOz%l7GkSo{Zh>z6a<0n#>Nr#(qPy4bf&5}XMHf>JfW8yQVgvDsUP^+X2JYK}d z?LOpSHs-I4@RFqBk&40z5;~MK7-S}GEV84t@EnkpYq*>?lAVQ2Zje9YSI!G2p<^WC z3aL6{DFeEHqYG!kLpCL1;i6r!?{IJjcB^3di@uW2=|kw}$${7xL_ajKFwiXFh<)?K zqvG$x0J5@>{pg`R&?aVO`O9jFUlN6e{JVdzqC*;`Qi(`6dEWoJq0PkAk2qavEP8U3 zN>tG?8d+pO-prL3TMOsGaDL?{8X<~2^54ni&J_^F7F}odLXX4J7n$!2_VPhc?jI_O zLHw~-g`q8I_Nhl0Y-4*HoUjuKI%0k}VB7W`Re;KEtJm$N~WJuRn=%f=Gy4?d}{5*t$HEetVH+iw0D!c z=SDyHV~72Ub=%EVz*8-s5!;2wrJ(eFNiC*M)>`simU|!eVG0A-L<~XK+93Yq`5IeG zrPuiakdTNQ-Ch+#jp_XYN82aOKkE6{i2a0q|48%o#?O+^kZdE25{aRHgO0mC3_v>{ z4~1plO%r46r%z)K05QU;$b=KbGaO)o|iKP*L^uup&d)l`(Y8J57< zrpKRn?Q#DR=)+_q7fckB+%!75=DYVvVIQ-}{uq&xr}#Jk1sH< zRmT;@$JXwAlh)16vAN|DC#OZ>nD=Su1D|UX?f&tl_Cs@f+!=i|VM|*wskzAI*0e~I zyGQrsnKhrs7O}hLZZ%<8%hJU5$RQ_FBU3RltA>TJox!*U-KrC6qiBn|tVu>3isgrh2M9 zwjQ_*ha@WXr7)oL87>o(!IGfE?R5v+zo%#O`s5?NBPp%vlp?d`fk>M1$qK%0 zoiDD^v8jKuU9?IqrVb*_K@+|^CqTU$DQc>Fa#%@v@G^>*PjB=&Cd0cKQ8D*r+>AtE z!(AAEXCs`8kcS_PU*G83AG;~zQ9`5B+ut=O7y@(d!s{rM3GU6#s|`+qp+j7-3ZTcc z+Ks^Qe3qH%hOQms)#?q-m<|xkQ;i>)!BDD<`MO*l#O0wD?f5(-6scX)4Sea5igyZ%v#fm~t?0cREtcKa^M9DpHT;$FmwI6_al|K9)F5hQB&}`Dm z4)P`?o0ppg5y;k zr{HF5)&q2ec*m(+=OP|?f-S0_MTxV zVzW64&NC_dt%g(2temm$0>$wX(PfBE1Nx2L)8)Fvd`q>u;kEl4)+sD9?mRE#MYYdN zEN_d5*sBvmgU|9?yPgK&25$E+Jbb^C#jtBRUsj2^Jcg)u%U8f1eKP`l#$_Z2WpM*R z%)4B>UY02U7kv?0D?U^i5XaiG;3SAtK*^4;RYIDQ$QBpE26{>SIFc?6A6Rgs|-ViCx`CcY3Mi?Pb>`l^@2++k9OM|h={XcU&A%LHRFi|oEsET zoddz$el-pjTB|6sWJcs7GBhek-g^Xl6(@GT01Du8$j3lq}y>=*7C&fl}j1pf{cSfku^(i}0FKPB5d!UgZup@4l=oB;QGA zCP`cq4%7U7Xk2~Di?W50rwiNErgNXCn26w9&1uSyH#9*DVHKZYQ%Y8h?XjDXw~?UV z5#TPZ!tiLvWse*}5SU}oyyfP0NVDptV}G~7f!Fr(ft=<`Pg$+FbF(+$Y%@-_lGqYB zr%I02!|CMdL$j_F7r~EhtIm_CZ$_Bg`)UPZ^$s_7?T#2W*x@-A6s{*6`2|);y>PiA zmBEsxGwg}~rdkq?H&h!3ROfKpz{Tn-0ihH@_^JY9re99xZ=H}5@UTCHy=1A(mTC%a z(om0ZDxkLANtvI&*E9aL;VgC;TwEt9QxUAmx4goOtffb6 zn2K@QZcuwSx_`{<5A4S;PZlUVx(Urzq_nV-2QS(B<-kLNYfB@)YR(!c{|P>FkFwUP zvSWFVFwkO|$jozDLCsiS*yW}B-?5x{=$)P(8eI@~t?B6VI@tDQ;N%OBJE-Gk81X3lV{3k4(i1Q8?`jy3 z_#uh=V?IVtRh5ox=LpJi6gh{Yc`+xmoPh(l)qr^+S;t2aY&3ario&EcfNzKK81gZs zH!MgZBMH(>ZnxJCaG8b!{ww$fm9{nq5iNnS*PYporqKHtJzjdnPG0sSb>Yo34%xhm z|73G#N|K!0_pokbX7YSyeG!7b?^jLs+lEka{asELcdX!sPh9p$D&FH&HW?aOBVX&# zRCL36*va#Hh(LTX@r0|Z_M230$302$k;DN`BEAmM4!L??i}=J<3i1H3-p9oG%LR)B zh3@P$xgWz*YFXDWGV+bs_m%mDZtOQP`CDYcmyUy~o`rXyL{vRdJ9f7ATIC^;C56W} zJpUK-P(D$?A-1GcO9}O{zKVc~v_{H_1F2-PKzq$#ugG?#Ya)$!$2m6370Q1`8MzOD zwb^fa(TAevWjMlEO|jlc@;TD0OubUx#T$cJY+>QT?Fm&phJZc_-20H|i!gk^;V{Ag zHsr7}3)d4jc$|M9qzb}e7~kG-f&`2lc5X#~b~P5C{9m4CD^mT4z$~9 z^WPNYY`givtA(>e$%~JHUKJe7M3EgNnK`nBOtWPre7MU;jsj%NLx#%UtH=^=kzvmC zXogH$MRfvb@vDxM&DUXZtB!|`CbQ`JdGJ!YMqH-Son#?QtBAN9vdao|YqN>BmGoKE z#0BCVs+tKge;4~duUlnR)@e1pC@MtWGT{0&#E_W%9}JbX4FigODgPKq_^5b3wKUr9 znvlT%-u9jh^#d>u-BW8TgTJiP1~YtiEZ1w&+G55m48{uIj6h2YS*sX)jM5Ka|F!vUp_uQMr{0ZkfyyihJJ0r zW^e)nk>1!?z(g)ks{U(UUWZ}MPeEi^{tSkRxI3D1btclss<5*W{%7<2Ug5SFYAhJ| zou)xGf*2aSrmuK#P2t8iyHWyHm61hBM(%$R4LvkngN67VzZ0x z9a?A=Qk&p}zh2(Jiw@ujH&a?g9af9n#NN^O7q;F>jTDB9icJZd3M*05;`a9tH+-@p zntdI@Sdr4`cOVfQ429Cdc?n(?7gInwJj1jGqadZVgy=b1Lq=$z^-`K+4 zqLYwCvH^Oy5gWtgv%c5MH)8H8PfvzXp$%#4Q#w!b|6QJMcRN(NIvfO@V7+6*^eJ7w zpFYQrk{mv7&3CUI2<0ow%i>*Gr|Y+}yN=-B22e}`=C9NcPrJkY-SnSW+!{%Z#l9-m zc}sRCaYF`XrTkE^GT`B0fGefv#4NmIa+CIk&c%ZZ5!kg1o|)1E6&C}j&r7{D4Ro^pu#Dln@4Q{4pTaHcHHM*gRDUeP^sczO8fH76^fiff(kucpEcj`g>!m~& zH~?FdzLVY=y=OAm$X@r1KStOwibv7Ki=(5X8($iBhLrolJWJ91xf0@fT{iy=@55X~k^2%MXpSIs|zB2^R!6b~UU z>NXsC6iNU_qcz z;tumb!lMKZtT|Vtmx{J*R=G3QPycG^|4RVFI%r!018_@Kdx*IUGLwNfo%di|*Lw)r&x`=_@0{3h&R~UWwD%;)6W4qQ&`0f*n z;S@~KDMSkQK7sOw75x3}{{}I{{>P!4{n{K^xvtK3q)nV{d84Z!#5r~Ei~0>etet_MiK^X;{dyP-4<-^&gCHZHC_xOOZX^XLfe;B8+~|R2CBh0ia^OL*K9+{z zTbIcYeXVj?yUymts(o8+`qgV&HKx#gPOVKg>py(p@YKcc*DrIXFbeTe1JAN{ILNs3 zco(@&x=5QSw2@_w!t?j;9am2jiz-;$PBEkSc2xHygNlqYnl7OPJ+XLG#GwQ#MPmVd z!*lNuu3tbX+&^Gi#APP=L`j3ayrP}J!be`3eoW01C`WryGC8VgX!Nde9~It|&hxp$fVvamS1?Ck3Up#OvGmK40|zNE`%&#XlSNG&2JslwI-E~c z>dj^Zpq^dw8@a=rcnj#jKtaX2vg*Kddl0E$opa%X<7MxT^I>rePQ>MPwg-rAD5HqL z`*aPw05}L^4Hlo&YN?uVAcTuh6~HFHQwwhTiravJt4l!#W{Q=L4_Z3|D!wScJLqvD zj*){WB`ClFw?)SfU#$Yf$j6UaK{-6azFPHW@n3&23p@nn0D=l4BF4-6KqPv>Wy$Vs}fX zqk~xgF&48Dd2uR*L69SjJH%g@fgnu-+)ws9>=kBJFzIMIih7&~X?x+GDz0tWh+G8-#rjzf{L@_1$fUU$fjzHN{QMcYCplF3Te6>+6qZMoAP1 zRNs1YJKX@!76fiw(rlD5<=AaVO`oQIl@uvp6rF!PY<4?`V??12&joV?is!w$nj=t5 zj;dyk#OGr{e3l%#CGmm!lacs~W`&@)!Pz>cx`d(Y>~bufwpb-qh{z05df;1q=c2?&}j=vDs)3XEL4C19UICJ>L{Cvo8XM<-r2L zhXh$cBDuVPgk+R(`1fTPbXqY*hzMOI(n)N@M;6%G$nPzQwSPnqwi?TRp7QeY{MSf_ zNYBU~DM5GPXJK_V>y>YCA`!Ll81!ENZ=j$M7Q5|Z(9Pld@izPMGfvBcsLOy~2iE5o z)-)^cW|=Bob91v;U>-a?yxZpoPe5Rx;i}VOrS>dGg$mU=9YyT;-bETB!&*!&+F|mB1gSPUefqF{|Y0N8mtxBqweYHNy5xqLV@u8`*#Jb z5U2hIUS8gseb#&u@Lb_eAzXmm9RmQ5l@y+sg*+oZ$lIm*rK}RjWK|}=#h8Tx{D%1gYL=deFo<3JrXx3giOEA?qfttwC%%!`DNDwWQDols~iW!)kz1FlGv zS14A&iu8d7_k0)jkLi^%4F4WdEQ>-xgpaOE%qY{2GEHZ@ZI9baJ!a z<~n;%CX*g_L%OGWM6qp5d2vtStyQ%s`Hc9C#wo>}5S2xk6_{fMtazTf_S`QfAp$yh zPVrKBRgK&#SfL{Mh;mL5Wxs<-eWHX>5_CbXkRSF#0Ec2E@5nWmC+IBP^OuFIJze}y zfY^>$Fa&m_&|C|ArZRUuScdrypD;8RPv{frUFt3?E-p@1g6$8R{V~-a79KAD@a1&V zNAbb!X^M}^laX>z{y{N_e0+#LOsStaqw;a8S5O%kt_;mjq)c%VMu|QU>v1wu&?!g5 zOpb`k$pbto6|)_WM@a7hm^_1tSeDEg&RgI*EEECr`A@_B3&-O7U16AS>TFDVp3GC2$IYP_WXrknK*@&Zk6JWuF4Y+BRsg)jx1Sq;a$*5D zSveg@;UrAn5Bh`D8yiGx%EBY5$u#Pg*I&K##g?Tp!tW90b5U~=rRThdAHCR;iJGvZ zv|7z_P%P3GBZ3ky3KDY?@bX=~mcnuA@e3IGIEe1Z)^y;tildLyrm*)^3r7;;nxYu| zL7~%!9tDMkYoug>S$`Wxrbq9SfrJV231py+4DD2I1)$*m^T@+u=Y>|gwI550wehi%jkoK$b|U+NjE;m!tP}&wc;O5CthAV4u^+-elv)hSzqVb_>zIK zhpPMGJF4*`Gt%%!-#ahIed0n9Ony z({fJBl|q9tdoqWCfdTDk33r5-H=C{jsuiHa{#1ba{~2mfkd7BT{LL>fUoxXT;y*cG zZtyClZTY8$C`QouU-|RHriE`l-YIzFtk@Cz^@C$=@Q`7^)HKdl&Ym$%m%Vxws>A`I z@ia02rD`8}R;z_)b}J39uW(*}X2Wm0NQzO=AX#dj@vvU~UD39tdmw>2wlQz}rFlw) zc3ND%UyD9CLl-v~hO@Y+?vg3-0{{DWVV~b(Vru_RbpGO{r-rJNf2qa(Ao#HM5+ueC zWjLys%W?b7S#2wa&tf?*d~bmoHz)-XJ&Ja0ZGHgrKcPdm)*u*=MCy3$k5NJVm8oZi zstL-JPmnIizUnNBe+#4AUd4K5j|yjbq}H?ii3Vt=362iN(&6nCOKAGSc)ON=;PKa2 z{RPF|KHZ?j6#(kt3$ZT16xui+sGUub6O3mi6M8nbpR7zwsC>+U!NFkE{r0`W z53u&`I822DZKknTr0mF)A1T;TYft~^ZNK-7Tgc40O4kk_ZTtR2N>>h>bWcn=Ke;g6wCT4H5YPDW^{N*r` zd+X#S*zPsx3w!Dx`|`mMR>Ha2?oKTId%4rwlO&Pg12ZT%n8K64_3k){2M-Uc^lT(Q zB3>4ED`aT$vcNkjl|yM-uxd`w)Fc`(uAR_VMe|C~hZgH{v(rD#7e&uHn0om(4{(!m zHT|5pNOu*`|8tmJCJ$D6lQ`~O{6O8ml{Y?h2#E3jdeQ6XXA==#fBG}^6kqP!A~(2& zrzc^vxuyn@;+R`%|(@-~rK z0X@2_tj3{pmAG=*eh&P9|3XOO-_`i*tglLM15_}iWd zszbY*JKg4oaX2Ioyi072m-fo4K0lj`=@Lb?LCc+P!L(IR;OG!QJCyM4zn=EF1< zO-eObl9Ge;MwzU{C0;lEm^qZ#>Vha-6uZw;8RECCjnJww(W5JQ0}QDdyc3*Cyz=Fs z1|LFyj2l~TA@kw8RpI#WG>GAO_4M2T8ggzPc$oD3Y6buPB47Mp8y!gEejKN3P=kJPrcd;AX;_l!sqHddl;=v_QrqcFfdx!8+{io@4yM?r$ZMi znuylIte7!+1DCSU5o=xe#>oO4NUWDZ3vyOIp2Y8ur~h$jXY?V4Gs*o$)U;l{_jCJ* zXv^)GUIljz3;|uAa3TcjJS|sl-je%@BBDj|g*X9)0sJHL60y>-xw8>_p)fUMwN6vg z^kbbqsQr;&?pxonu(f^pG-Y~*oGQn^HhGONg7FBA7R7WEZq7O2l<~LSe((Q^hE{k6 zkP&*`q?RaMx!c2hU`FK1|DGLA=Y?Z5q6)*hx9A&x1ntsM6Og zXM{E#`_gu&F5hUOtOnMyeconQ+!@c6HM$0UT)Qve4-6K^Ro2r@R?Yva8?y}RT9unc&aW*5H zsFWYJ*L~t~uue*;+s6;0{$1d~CY$I5 zFUy%4zQ*-i#mRor`S5~h4q%AUWf}-CLlg z_bpt5+_$U4`mE_p-P_elrZB|c*)iR}wrOVa-5s4Scwk}$_AGmP?M?bn>TPCVCtBeK zbY-x*U%#?i-}Vh}vSn-Uv+o|p{(dnu`?MJzb<`WhR-FHyOOLzp+S#3{+?Ds)t)k%G z`o;(ngSRaKYKXB$Yu!hOyCQZCj*uF0-u7Uyy+`7fK;V)1$YX`G0&?!wE`#f7cs{wS z#_K>W(;2Z@IsQrdfw72Ip)q2;Z202AZ6Dj^RuBbGd&p|YSS5>OdsKZ4fV}8vAGKd; zbxa}@3Eopqm{z{IM{UM(}ri?w;WYv=#T_(43fQRQP zOm4bkXk+8g*7Vb0>&=>c$q>Hr%F^dt86TnuVL(=MqgT(Nc3cIA_`s$o0G@AWC%8M z6HeJG(EjWRXdECZTVdp>)?epL;n9g@L05y1IyG|ibW_`$+c%Ci9z}e@$Szv20@VLkZwT4Q|*1NrFAD8JHw>?$qTo934pFn@r-Vy3`RTc;)e{!M?;sGWUfak$%cd86Pb-V+17bg{^iN ze1dKEO=5#WJD4Ik@l%hA6}u~hzW8e3Kf#nBj7s$j8=E^H@#mENnVNgnKOt?3NcjK> zCDRjJmWGMR@u-)_?y->AN>Z7B1J-YHi?0& zD&~yCfk4qiQ|%k$I=LYydxl$RjN)RR;H|>&WEI6qCEdpwBP1{2GItXEWloYpq=`5Z zE{FFxa35Mzq{J=+lL?&g0I=FTjYW=>nVeD-S-JLer}VW3G;K@e_}MYtRu;7T;t{8PCm`L5)MpfCgkvU)2`z~(FCbR&L}`0BuBK63$j&|}vcC75G)?@$A73WYNU zS>n@%#vTM&mCo5AeJj;Mz@L+FPI~S2o;g94G9!LFa%RgB0=BEtyGtA(^P^9$*o;Il z82Jvx1KgKM=zTs~tW67OISP1YFqr&Wjxh(qr$#mN&zT~CoGVw$IkOv#iih+5CmwjQ zmb9v+q_%L>Z)Z09-omTJj~44NvW*+ic!l=`6>akAX$Tf76BAL2a4-fO@|B#yfSCEi z3(mAjz4_{$NjUMJO2jw29RzIK3ff?kU=7uZiCR5ZKxE3EN2y4s~f z@1CWzB85~!PD*G_eXbXchdia7zNCFK7N-J-JM%rtc-dv9L0DE77rD?-iXleWgX+fd zWTD-o>zi3#Sp0Q}^-%cUt)9SVRv@Ov^yKzq-cFhFgrD%{)@O-^b7}|Hp${ZkhWnqH z;^&3--ce(`J!bm49IVn*FxW@G2NlhHI9BNC&U84iJ3?GVbxWuP=`H$k(w*!?uq*@Z z4I)3qaK4+g4 zGv)~K4o%LsZut=w!{AKJw3II$3MljvTCZrC@fe^uG~@P(!XHOi$T|F54o`wGOMZCeG@8mY*Bck_E~R4kcOH%drpX0q$nl* zPD9OzJS_M53tQ}$VrpuAb8{%ru0YRX+z8ZB@ZYY?#zhSU9Ml!jXzsiDH8laLC0Iqn6zXigiqrsZ{+PZzj# zJeEgY1s65+)!OeVdtsT>q3`6~oSqPzFdnhF`F_zUEzOPV+ZZ!v6#{90%WQecE%a7Z z8mmf7Dcbk>#Io72_XAw>=ztL_48Hpq&r|cBY|CvcXI+di--srbMoatd80piSFRhAb zlP)SmOh5^X=}0+OxUwhEv=D9odW6+}&6bIV0{Pe)k<}JE0EWN;WPRj0jz5F#dGS2N zlv^t3m0h#zoVg&h{I7=%d$PQSqU*fb2Xy599S=J}QFqB-DSB5|HJ5jb$Mw+mBOM_o z2`ELO5~&lRI05YvF+H#z?cUEAm=Y|49bZ#(W=;x9IPMub-P|UC&O*J0%}N3`xqS0S zG;vTPKE5z{?`&9RMFNQX$#jkaT@cyEhrTV-27A|Q0+N0|Ji5xWUR-oITH9X`k6+(s zs$9~4Y7Zy$EnPKY>13q$!~)wJPEoXn&t8qqv$wmW5sk%)R+TP4b6BEO%tAVk8V!}5 zidNfS6LC{&AULzw>Kkjrv_zN+87&cObpgSu)q_gIs7W3}uy6LHmeE~ZO!`oFCc`U| zvW2z>Wa3IJ)`|Y^RnI4W*oH5BV}|N1(8%@4JewYL+a9o14SMC+&G)30dNxD>XD$hb zUD&p3w*!h@)3S3ocX|40+c!om8=lKJ6??#gO%ysXf_tA$p$QJi2@F#(C+Vo+va^z&t@L3&M%?$6ZB<* z!pH267ZzqK^(a<3eRYOi`Uf#w5AN%mz|NUrm`zNt2?H5pej;?$d5i18 z^62oIl`;-Vxk9kBe-x>ogmqcI&E=07uNE`#7^Nd*Al{5azqdP#{g4O);=z%r>PuQ= z__3IlDg)QRI%z6pY!i$h@%#IuiShFcMEYhk{uGhXCO6e7b31Kr(i1DWaudrhrO{xr zLzk@xMbHSgqY%>PUi;^6adz-B{R9&HmBtf4t<>F{`|W*H9PZsO4Z)~ZG?=-$%n}*- zf(0hla!o<>1fxfRIQCap%5I@2`ub@|4I20SV3uT7yiQ<9m=f8tuOh=%$PsNrvAfB2 zeC1Z5Gw9t zxsqie!)TVr5xofsLv|y_8A{-eRGMnnmbnId&bPIw#i0-9Q~}g)ppD z47|cx6^nonyR!!3YE-gg+yss7%EPQC`pc3}hAhqTR&IGk$7i(yli$rOK@=QpbkJt!inn?;Xma!I*tRFCHy9VCpa|)bIJFt zRBAXn{OIQB>eQly5$bacUKYh6&+dwrk~aS7iv(Vj;H!5Mk5R6}1IJ;lXuLf5iQ)0& z*&bv|-nYEJZdduFk)EOU|7eHrZkMRk7>5I{dtuz#WdG1K;y)CKbt%>CFq|~tn6VVo z9*98zc!9 z_IITge{tn@djrq0==dtoFNo_$7Mt14q*ej?2NwHuZ?sl)VLx910)r<1n~ewko=;k0 zx~Ev8XJP~I*k_WgHcM%KB89Zrn{E}giLbHt?#Ny0k_vGNNpi&Z9fg(}JEZhol|U^I z6zLOF%ND0Eqzfl0Z>s+in3K&SSQwo<$?ubZL7u(c5yqx1lnUrmr#JJQzb|Cne#<=W z>&>Ph@)P{3>sfD_pKsT!6HgtYa$0Q9yX&3b69#z2qItdL5_nnVE2Tc*b^Cp>L_c(B zxSwI8F!Rp-0h947`4LId#wPIELWp?lZ9xe|GCTdLbIp&lV4NoKOuGeF01Db*KI~}= zW~lAZ{$LPhg#BqsF!rcg4-`C^} zg?ApAYKT>EHzd0H-e>dx|ATso>r96mM0K-&osUzhvMD=GE(mnwRexs0%_?=7z;S_E z%+fFil)M@vU7H73`W##Tt??B=P8UB$U@(EYA0QL}3b{>$#nJD(-uK(I{W`!i%5n3m_yVQt}uK z!aOD{>1gqJvzfL;MEiCq31}#Ka+K#LPB`5_V>OTGu@q4w@#25t8?wz??dufhI&;Iw z1tks8iL}#U%jE;T@rX!X8#I1~*{LO4StS6`jqD~Sj}0B#*-=*YoLcw}beu&KBzyV3bcd`K59&168`6?7^q43CGc_z_D$n ziD6AYQzAD3_jM@>i6qi|fQ%Q|;R3UmPkYV_+}SFluqrHV ziZLR?XOJ`t)%C#?aqouY4S@+w}&QJxLM2NKanOOuO#eWX(JGo9dwM7F~L~dnZOx9R<2KFn(o)Xp!!RKvi($bc>S<$8;~W3oC226g_*@;^37- znzxos%<3}VwE4UT=+d50N6u}vvk^$MwpxHaj7#^mG6pn!N~B?(CxJHbt4wK6Iz!$v zdwxbUnj+SrJn-)B$D&nzssm!n4VoVZo!?<(XxNAjba34YKk`L%9P{rQ^GnV|@hYvj zlm4xT=(^jvi5As(KDGz!2HlyLAIm~?tN?^7MMlviRGBf z{kSqtS*k7eil<1yV_?8aQP=1p+E|2xWr*L_GL7m+TL2e5aQYDI{J<45xSiH${^1Md z@-Zt1?e1v~1DI_dJy(@0S1J*&mKvr|CSQ7OHjcB3rEcuGwHe9@sp)$j9T@A5@9}_0 zt%`{Ge*cJY2E*l4+fz2BpUv%}q0j4&QLvKOh5av_PMqNss*O1d zMMvQ05K@;~5Jzs1w;oA5Kn%@Ih7<=?8!=qGXymH2_EX>UDuHZMSwz}7H^Uh;fP=ageh{1_Mykh2V^9y9tdb1Ht20YPM1&Lh!W?3A z1vPFRACw7g-&2YySgluu9l>l9t!pwad`rZz#F)pWa_JsboZi6j5Q~bTLe}K)-J);H z)0zZ);-TjUOxNzveBDqu^v;Xy(0!IM@H=39;_nYN?ra(xG@M`-W1SXQ=_P~xv%5l_%s8JB z%CQ!(jDLMbDU!+Vzdpt{+JU@1@MTuvp3YQzumJewZ}3*) zD}Z82U3E|clpy+eMI5alX?{aPh;Z&)&9A}nUT77xT8ep$wqBZQmvf=S;zdYJc>IBO z`Fj!&*~MordyieC#PV72)dk;7f7z}5y>KfyPJO#`gW(j0y!Ha=+jxIjf*Z5iwRB+V zA$^Ng@M1oMN=a;q=0_r|SAa?ayq?V>rP=K5VwJ@fvYMKDZ^$Xy z$E~=Vj#>arj`K`M1^pFNxm?4el2zJoWH2iDfu5xY-r%`1(%s(|HENz?vVd*Yk8fZn zt=M_yw1>1VOYGl+E3$v%p9SajA6*M*as>v->K+Gn`H@*G?E`%S8%%FOv^embX82rb zY^K9aGbLvN`*uz~I8PfPW0>qM43ZU)htJ@6`M0Vt?ZHh^EqyI^oPW8WB! z67aRn6_Nc>4e#gkuh86u_3CXF1^=hQ{#5F9O&_aMCAzTFFkP(hJ>`^T*2ypGIHz{h z@2-(jNLUmIoQ@N(a_%_avNQ8?qe-x0MxZJZh)$oHHv_J`|OVk`uF2`{eII%y)o1Op^(>LP!JdBzGllz|GX+g>?{6 zqdT-did?lM%gY)r>fix?`~-7druRC=)7or7jCRvP>Jp!0eY($2_$rAQ!qgQl$W*fC zEa!a&9`vg|Xn;VZEKnvdhHXO6sXkA<%ChdrPEc8q9^_uj(bcP$f-E#Ia}{q-Oj2aZJRw^?MlkKlv# z$V1`2efbiYXc>fx*`xS)2JYB)Uc<5!!kc@bs8f0ThtZBUDfQr2Tj0c7`y<0%d)rel zSQR7d;ptShCNGLY84a*1435dRH0+r=X+xg`9_H^ zWTwyHN17{WrVpFS0-)5LmD8R5cP}jRbuxnW$4?OH2C}90ri&s@Hp|JIbquYs>QJIt zTq&!~tS2m3VIZ;6Rmk@rA1ZJ6l;|F=71p!#n0=>m=n3^&p|4uK81f5)(eg$5megHm z1?k}khLmbc^Z@B!&@-;4xbs}2IYjy9BjR9gmHQ{oZK$1lxhgi#(1oa-6gjQ6WNQl3n-i<;*EDiUF( z8jlaX#uc}$dIt>tyjCfTyc$n2Qt5oL|G_!gwoJAI1ChN=pU`}jI^6HH$NqRzQWOxF zet(wLxV!gr)-q(H8p{kxF}iHPuX-Rt|b3!khoJRU4RM(4ct zAhmoxw(}0bc582Uo;0E?7nC9v%MLNhSDP^v!QTUlu1%!od+%rQkCt13Z1FclXjb(5 zFFm(0vmtGOnK{9wXCuDqJi6v}nc2RI6fc+J$8fXUbwAN3VUAbK+jUd}DQaAK-MqTm zti!z0wp?prA`!n7z%vYH_@81oB#&jP;PTN{+MBwB)UQxI`Of_7Bex|0XBW7M|`XLFZ-gN#h zyR}RA#KG~k(Ae0BYHH%tA&dTDBs-QxcRek#b1)-~K`%z@I(N`lbAP8TLF9*rRrPNGo;D@|6vx%_8xTXZ&ap^jx%}_ui9hM)D2^-j8B2}j-ND`K-4Ne|-cU3_=o{v>l% zYl=u!Piy(0+$K)*(&V9IO-`2T)Xs>sMHI%LUYuiO7FmFJg&9`T%m1rO@ z-8VU8h~9p57@0|{WL6Q?DIW!u+yhM!DhYE3=J%i*GQ`F8@`wzV;EFg4=R0g{H2FLsvEN@+9uD3;OSqd5-g`$`&$=%>M5y9HJs#X1ZOfHLbk4eoeJOOD_z6~< zvbm_#ayi;C%RCy!trvw%bUScYeSR#uezVQ1ezcl;i!ZlMkRRs|3peTSy=Yi|bMzUF zH^1YA`{|sSyh+7cZE4(iw&J-j@IIT2@nC z)z3dAf$1We^q{s$ix&T8-q_MWXI`wFm)8@e_;`v>$Q{^V4G}jR^XyDB1RKu5Q^|V-~ zscZtDDM%MPbp(~1UC;wei*y@iuIE!RmC^?xmkcWUl8(*i>H$HE>K_lgDUllCgPzkJ zn{9RA(IM3di|_ev`j^_vC-&Ovu@_woA7as=w0At%tCc{j7b#mpz)o1t>R)emm@PL- zFuC3b)zEg;ewP7Ltu``X)9b@~lH6co4dU7A_MRvocdKZz{y-`UESK4z8JFis4A)=v zTr^f}9C?=`;!HVz&SS&ou*PO;k9 zorO-FHBfLVcmi3?f6aJ_K`_a&BR3|-$OipqHS0sdasniWw0oqmuPpCz*ydz;;A(7Jo0X7|v|30m zEUG|>>;UWXK}ch!p*I}0+nXHOHJuFbFht*Kih+e_ybzvN{e?Wcy8~|Jt^r=wDD{2d zhl>Jl9coF`W)oe&%e4%S2hL$|AtSotkCA=)rnpDAH05@R-%3!U@7IaBj3(8MaDxr! zbqv$f8(!Fq#xUvB)QDV)MGG*RCN?6CKwWu`zqM+P(Mp$~x}2v1cpM*hJHDd6=n0v^ ziH845iknl3`B@;vLcLy(kf4F4NEGf;b8y(t9CuJ%|MgYGc>9^9eh%UHi-A-Tcs28k z-SMq*?@~*i9621H+^fOu51!!}M+Otvl8`7&VU5P(RZk)`xQWmKYy?8~#;Fq|>+@)> zhOulrw3f*V$GvXZTQ-CB{EOk-=C1IUMzrS|`onu%)vQ?)>!h%;Y6*Gra0pGp!K{YY zmaivn`U6ijB^1p5W{11%*Y%JgvR0KrUU-xY(i!sV$Z3@^*R6NW7~vmv3%TwYzzT0x z&Kmmn3nOwF8R2u25s?w2u*nOoVre45ey*zeIv(_e(wKf{sn&A!&qi-EMe#VXiq*$z zXUoly6_kl_vyxdwq-bzfA=nTyJxhEd7YOG1KM!zqI^AGi87!yUoZXl5>jWRORI*+7 z%N5$|gHQF1qRW?jUJS}X8VRnBmAR!=zh+>g?(HiA8_sO6 zdS>;z33g$!L*lMHbSK@>)KrTKlb{WeB7{t?_@O4e=9)EHDY%z5VMn{D6WL#6Mt&9V zM$Eh6KR6MVBXUKf$aFrCI%2$bwfeN?hAv1lJl@>wD=$Epas2%`-9}PnJ2NzEBG{y> zVqoXaHooQ(d-ygdpQyX=Nk%(0hsAr`g8Yr?~!i06oIwsD1fca zWIHpfr)vz@q|{XHTCq#5gV9XRmzvuPAIZGj@Kt7S6=tb=5nE@^fkC83|%2)zbPy=ad5^Y}tVK9@AEl1yn0INlc8TO`2%FSQkf4_1=}AA4wmiEh&GU8tV#c& zdto?%fw;>Q%jt{_uOKkPu8%}4{M$6~=qPqe3q0j7;XB)$KnDX90O%%j5kwPy7U9V1 zO|QsF>2w6qSeT?8kW8!iB0{?!rLpj{dN02Y=NcJlP8Iv4pL5&8OGM}?gy2BXTq=tL zna@GkGJ%$6^Z_rnAwgp2=2N9-fIgVB%F=m>Me34oy0`;EZ+BvGdbMAA=*-y>;emHF zB+KVG5V)~+qp4vm>Z5On=yBJO-Jb1&qe>r7Op}650)3Qb%p~N_j9HKJpH;!apQ}?K}F0|;yq-nyNXzZ6{NB|HG+1`d#g;HcE4B-JO^HTiLm0c^=otol8ke z6U04=;%dT;D|C`pqPYQ4`c#3z7cHyd&s2zJaO;PRLR?+yQKK)yzH>#_+pr0Bn=5B< zhFsIq-TpoH6Cg8WN#_&lk+O!@&5);#Ji~Z76}gMz4auQ7)3>#aCF~2`$xom;nWq7= zBw0z*L`Tvp0WNRXy{;GXxOq5H{&sUvGdQuksAo|)@kAd40l0*oD86LqYv7@3S{b>< z!$p|X^#Pkwj?ZeNT-#b-+oQOwt0{C~JUfNXMoZ99=|0kKa`xHr&7Ck?K!-)?Adqg^{wL{`lRYh3b2bkkE_KEuUXI zPtNP$O6^?u>uICsJQi<4>}Jq;F2P#5*7S<#Tj8PG+vIVZBJrYq56~+D1=*cmC~TXU zD}87cJ{r-w5v}?nnjEq3FONORF!*vE<}4`~yRt}VDri^U_85U_BjzisuHC(Y-&2~b zkWLO+Q|gSzX~wS(c1)zyUBFPeq5`}Lx%Q)?=6=6lQS0C(eU-va>FVU6TrFVul{=pz zhofGLdQbtLBY)Aq$iW<}gB$V)l+}4aI(HmjHAdh>QK*)KLVd&hJq_!i`DW3OL`Wo0 zp3rq924khss@xx6SyJSPks+1YJ}jb41s8!40-zYuDCP{(9de`ECdbs%Me)7 zg#x2D%s5g-4kxy|w0Obm+p4}9&R2EVta@a^YietaCl9WH(S1vRke^@UX($b05f+tm zVrW+7xTZ!_QQXJF=`w)t!xevDW0g2GmppKTyF2oXLvDIawFJBGAgCNwqR0Bvrd_-T z0_xYWo)@HqP9CX{rA@SgH+Y`Ov$d09EsdEkZ*?LFjZ)kw%cb@-#~ zedmRH$KD%eH>$SwFd>r$!F{j{rEMZv^HdEj^wFg(^NzBCysr)mzElR55_KrxZp2ph z<_ST)AwF<^_w>B=NrZ@bjU^<>>JkbCBcQ*VI}DmHoC?u+f63MJAmPt3%8MB;+@A6w z^X2e6*4Mu!=7eRbZ&(7)_L;$HKLeNou8mGxlvmQqw&=Bf2omL~S8+n@cGc-49O1C4 zD==$Raacm2ro{bRizCEa>kbNZlT|SA_3w#I2;afgWfZ}lv(cI$4y%eee%$Bd_sBoe za`+YpFgwSDN2VLsF`xH6?|;hjos=aed&qcR@%S4%H~U3muZAG=)IT5&R+@oEeTh9X zFd5(EP?RZEgoMq@qD8cawwmH;>`r|xug6vKiebIHQ58v}2aDC`7(6$)$I~7mlFQdX zR6ik?)cTu#EEQ7yA5&);6i2vq>i~g)U;%sIyeuI{exx7WM(Ue5~R`n>T{wU8z3a^+~dr(Q#+wlGT4gV8L|IGB9<%^W{G&Vw8jV-R? zUS&TbCnsj}5o6pW&{7*UQxfC%`gRqJg=zUx91sXnU&Pf@o>LbUDl}`9E7hvBJz+IL zci8o@>1OlqinGO4Rch^xO8EvygK7JczD(=-_)edJ<>rCQs)$h)yfRO%gJcjyI7gtx z*P<4%&SKw6y?dtWZ@9xxKjCm-c`N6ur%yWGZyld+E?h3mSnPHD$Y^iKjgOB`5~b|2 z*Fdt|4t|@Xugv}{r)j>~gemly3t_6Tc6flItD-xEp1isy zs%m1Gl`Gfv!9~aAnfG8xzFvqc0js!Wklxn1_)6`wr3_=d z`Wpi>-#l5v2QHWX^N-E7$FFWLPgy|)!DPPV!9F%J_yzjf4DxD3VYnx zTXo|)zW2SC=Ql>L;j?<&e%o?*asPhI`}M=#G?wUTxDC$zUvqGHmCA3TyWnEw!7##R z@Dp-vN>xZiNS##GjHFWAr4vP)sW&UG5M+x%9ch6}o>FO8pZFZND>^;0nrr2ipCoy> z(t!TT8|+@xgq?yKmBJ^|`0z`5DLdv5BTS}Gi@$%j4Zy8xmu;+rLmYUPxKwt@J5Hc|UYbKJVr zJ{l&LH#j!U;jVYMTkJYGv_n^YDtOzgoqjZ-Jj{3a(Y}bLds990<%Jurj`q^Eqx$c? zkVIWhpaVz0HQWA(v~suxn3v#AX$>7YWae`fU9*RDU6VnCR;?NEuD||GeJ)HbR*bY? zumzp6!#C$>);y2r14rQgaxJk|hFgBR@t-da_k_y%hqEXK@|*g9N<~N-(EUqt&ERp_ zCeSzAGYur?zA=+*D%aug7R-_(ofAlj>?t(CA%O&UdN8H%HxuH4%)CW;Rh(9W2Hz>G zv7cBqx14%&s8V*amRJka0V<}VRLjhvV-kjn9k`2h_LTn)tA&5+2C|L1Hn z;8=(`XSyGb#Q{4qxfk+M6BQ)6B88MF+Bu(yIzP<2mi)tz%nzbS|5Tr)U40(Myoh0g zgh!1R$sjK!ik8k*qC>;&YuJ7pNHRb$)@wRfo_g~jNtQTNi>KenCKndbmm72Ctngiu zZe%i7hVvEV8Ylu%~$X{(t&A-^mWjW<&a3Jhx;TnC!Wyt8>+$d1`d0%FW8~? zH4>{rE1U)G^v}yzYJyf0gKtkF8P!-fRBtxN+9XoMJmM2eQ};b6l9t%M;eTNK9n_^t znR5Z{x8dF}(MMv|rhxjF8aA3fHKvsqGVnW{$Ye#<2<-vfNmuc}o)|G~u47|qRYbMB z)-mFEVie6}N9#wTexE=E<|XR>*Z$r<18+nB>`x+XGsNuWaL8B>#|Mg^z{W4G`HsU# z_BLC{((_HSmTylN_i17cLW$mj_tklv#AtiN=kIG|OFf|zA~3&0;R`vzQp)`gII4nl zuOlnr)9ZWc3qMsUqkKRELl3WN{C^H#k4|u^d>@h2ve9}ng#UcbI@p%hwOh&pMNv_) zS0;p-OD;@D7#F*#x;k-GS1(l&$#YU{jYaI6WNKGDj~OeCB57~7$a}EI-Ny{-!#FX0 z63RtvC$q^s!3A1AMd@c}cvvvw6P`#(~^p^t9}riLx#)zt$|Z`E>OE z(M)>%QkMOio_`Cw1qBmFhuBKD*L>@DeyrURp-$qE)NA8u?_`bZ7szMQpVvtvpHWWl z4^8=p>sfS2k!%w`(vRKd$p*C<_@+R~{`C~ye$f?6mgJk{vl1hbAb(G*j)exMYj<|o zalhYo6=wfFUW$4y7^$Es3AqHEZmdS@N;DJP-#g5VFo;ba~{?ub0BFQShF$-u3%3l>UHHgKU z_lE(;bjhBxs&Z6Pvi?<7;8IujV&B>0oNl5aMst1Gy2D^M7V7oRdnePOo2q|yt&WIG z%WBUuY%)4Es-Mr_KO6IBv(E>|Hqk#+&u_fvM1(K<2Y0|8ROD=+JQEe;O8`&m$Rma6 znxS$1(Gmf1g1T@IWO$O!ANWp?(*{XRmsW2VaiS_n)DzSj(e<7{pD-Tmb^9&joqf1t z#U|<9N8`W5Q_3A+bIrgxDmrB`o1@#h z$N^PQYY0~XCu9nOncA_dvdq(SPib)H#<*&J7__5_pO39AKwvf^BMc*{4XVIT5oKP| zsX7euxX)GUue-en2Z^vx<`nN%@5H0)x!WVkYHqHxuW;Dk8Kd&dN-k0g1fWV+=7}>P za9IkT)08bDup9Nw#M3<@Wn>!!)1QdD^q%g{vhC?%O28j~=)XO(zjK=iUcMIRhSMZ_sjQJLWQR5;XN1HTX^ zB-r^a*C9)!`swt|s9bEq9wmFbzbmqT=$#S1`-WKRN+;d<79*tFjh#97he?*)M8J$oWik0FH)&DGX0eJm(XYqvpO9t@$s=-3*2$Tc+_%QpB zB?%7awYzw}=*n2KN91`;Ntc27(j>99i&F-_R0|bCv6IRB=;E;$epbgBbqOxI3Q5LUTdSD zXqhAW;K+^Uaghp>R-*iKxPG~ab`7D+)o0}-V#B-M;L>7Qi2d$v6Az_k9!o$DLh5+` z`)`CK-awAjMt%6TPYg6nb+aOp5Q|J0@*9Yft5eP$h{7KWl-oxjtuaxvcq_2hn+xHm z9F9~!ZmM~XVD@%D4y5P>Xa1%Xiro(iGOen1oAb9{^?0-Gb0c$KJQl~MNL(GIetO}B z8ELR`c9F=(ajnhaY~$iK{PiVRaY~Pg>gv)vhz2Wz1D#4=vLIQPJO`w9*WTh|4LF2X3}(cS~i50cv)GxD6bE0}I%? z6IBk%UQY~eq|?^oadS-~Z;u`>aj~*HV>vo0u6Gb;*U+KkY)A1~{3U7Iv3p{zz;m78 z_4`=|ofc0TBlF*ZIC%YL=0CsOo?d>Obux+-4Qn?MwqgJeE{a7N3VkN5iq6T=OaDK@>VY_!EAEKND z&RXg)zgm(>b(1tu9wHzxiOYyy$?!eY+_pHew)if-$yj=(CllLq@fdIoPCkj8wcyJA z1U1^zp>0ZxQF_Zpt`iC|U<(*bBW~0q^)JN|J26ymcBF`+P?L|q-@bY$N-_s&JT`Y{ zh{r#f>4{6mIcCFRSOD|Lxib-u?Unl9pkC0ANSQ1~4C-@W_OMXDf4)YJt00zBCJOFp z|8$aV*jqVLR%4k>_$&4>SR|Qgi)r>Pa49A1?35#N(_+KRfX|MGi8Ubf&Y=#8N|mG4 zkg$2jF%m@+o-c@|EXNB; z(lcZWEr-5;gj1|_!h}I^2b007e2zvpbaO?#(6;s}W3TNfyEd$zCTBnQ(kx>IDGMzk zL%DAf2=Lg7%?gxXM01xIY&Y{Jpz_E`NT$;3NSkm(`VFBYfh|-Ht^;6(<_E6)$WXy}L95%zQQS-ko;=RQ zUUEecj(XAmQ0uEwc}1V==RyPAI{ZGV zEDzEd5C9f@74IHGhHuy=qqIz#Lzos3HzZHasEGEsY^h1k{Y%lW`uC-U&z8B#!kV6b zw6lig+a5R1AR8MkV|qld)mW);%iN3ib+Z;ziCIk`w|6JMiqGP0iNv_9&*C`?e~uYa z=-v!q9rpF(+r>59eEQ(!gH15IZE_7ErwSay>HTH0==Ai5VjtDBD-u$c47z_Y%0G(Y zBw8(G9@-t>oLrUFd4_x6rX0k&K<{%MV4IV|A!8j+I(55DliNdpBo1r07WBLKAxwU9 zd467A2gYa5JjI{I$Qq8K;;+i6bzt2M1|)Cqx`Ox&?S?ZL@3qO4@PZ7xV*V_o=&FT^ zK&gJ4yjrv~ZKa+X}@4+-w$FabTS+{>XEX&+EZmL{AH$y4fSpS{M54ttz=?R{p_IkC>0q`~MKizg*$b;Q6F8e>9`6XG9nE%ZJ zrX7`2_7`h#nx3AXNxMgpzk+dWF!}y648rs*1_Ker3tqyA?xw*$uy^FQ!QDejVT0EB zW4m503Ytz4??R%wvakpKrSF~%@*=it#WflDO*3cW$5v)TNu5|D<{W~~TaMlXZ?V|@ zq`X86`e1F?8~9{HQ~yFE8f73jk@qSDlVHM4=5c|R6oV0fppc%Z2AC&g4B~n`+GUNgoM#GWoY?+{O@$zP--2&Bj zA2)j+p{#~*&F`=VTQ=DBj0Qu)*{I(%9UBBcv=L=3)DLRbQXgmy5;_5;Oc?}UzW@7O z$m>KSnm4ULnx>oU-Z9(WX#q0%ej#np@$}`~R|9Q~OA-G+N#pbriFYPzg>1FyVX(7( zbTEEtNQe=V=JUaxS_NfLrqkx5pHo%=@$^KRdKbuVi;F8+q%D9%H3KnsPM^{zH^TZ$ zU8<`b-S7izMvsG$S1tj9ul21hz)`P-cLs8JTWmtU|gGLmII1U7IK6`jS|!Rti7y zUpkE^rP$y$LglhY=;|Wb!6!CQyQ=w!KJpbDKXTXQ?=)5OxBZXHG)HQcj?9m#BZ&7L z{00Iy?Hvrg`m;-blFi*`R3L?ih+?E0Ga-A4oolG`e+KTIHWWOEm4dAW9=iEXhTqsoIFn zMFt`i5>3N-DdkDFz)5Z&F)GrDBp|6$N0JvumL#|4vqmd5iI^qV2Mu zMQ8>NlC=9Ces{l%q`BPo6LH0(OXV3f%)=$o zNQh2B^Ez_I!m3)k*o_vPG-nRgyJFq|NN0KZ2pR|m?{=CUHSv6>d&k*6M#NE9FS$xl zmalRrVnSkUAn1&+I*Fu=Ov*-apZclyQ^X8bA)HU<&R5I1-It{5QS(2B*rEAO=!hHt zI!Q&C;kA^tUKgE{HlvMo&x*_4JZtcRo@AMNuJdbiA%h)gv^I|&_U(}v4bz@0NtWgz zp@v-TSM^Qv=v8)Xwl(yULA#i3Xe*ZeU)I<$wTL34IVv~?uDU9f&oAFfMmte&q&wfc zP#0wac7qF$w+2gEjb6>f_NliRc$xF<850B|P2HP#XfQuE6o~h-3{m7mnqaKUzT4=E zifm2lC@tHktxP(d4{EYtlvZJbKO?&a@~*(R3TxVVZDy=pKzqgNTk3B!MJ0wG z@#^EL3;-=u+Rq}+eqd~;M|0pM&77pB(mrKnKJX;7+imy#vzTc#hL>WVQOB2>P&U6U zz;dfQfg@GklYQ=2`SW{q6<3z>$y{)V9)mFta~>qqsA~jibBUO-7p)6U&k9HVqpMCf!Gx6U9I{vg$iKm+&k)$`=v;wKWR@)ZpgL?Qcc}Fp(6EjJ_9>r;$v?$Mqjij&=)ie9t+cOrQRD8S4ms1Tz|AQzN27b1Wk!)Yng1$ zxZk?Xeg~t-Qd416#j^FX7rX0pn31>^ea;b2BUvKE>UkJK=csWpqK&(q!#xgJBN&z0 zQ294r=)3u~4);F=!ZQl!i1PI&x|UXEr!R4dvGFSXfB&?bk+-3*Q4FtET0e^B)%gf3 zoAg|dyI^w3w`cg{cbm6S`}5>82yH11;pr+VpQucA_=_l{^eX$N>CWby{|lx={jpFN zDCoB3XS)1q_5R=X-j`QnE#s>lmhu_NTH3{WLEzC#wtNnGkF_GM%+hI?XchrkY1myc zRe~Y}>7oq;2i92IelRdJrjqVdu;#Ky*l}mdm!baeWyYMYGV5@RMye`JF&4r9m%c}> zNlBB9_=-Q=?0O@u0Y;^s8PapJO#YO@DC%|Uhue+?4SLT=&|M~r z+Y(3mf6Jz4#(ndVRlZ(-x+VYL^Z0+K{NLL^rA~Uk>SM+#RzsIB3c|Ne?3~cAfr+3do^Rg$Gb{lgFOT;RAwyi`z^BHc4~P zT)UAgAtIjuI4^ocK`TI)`v@AT&%<59^9dnCHOeF{?mahUC6lqG1_+OExU`|jY4_nshr@wNRRQc{KK`h%cE@gt38-z2O_LhZUC`5 zdC^~li6eo)9`*=&muZ0FxR+Tg$~AF}jVi1h!?s+3>&-6V@8!?yfl18TFvk6y09rHI zA1MZahApANH23kFzIYn7m1gFn-&2-3HbUY-k`$ZY|BAMm?YPj>M*a73caoQyZGBBk zlYXtad~?hk`1_UKWwQ#e`RW!wui+IW+PGGFd&DyVe!3-4ITxTlZb@%C6O+Moy9lWK zYWnFrVMa#A?M}}>T<8nq45a`AhS0X}0d5qCJ1p1n>VT-@kZW3DFXcV)9-8(yc5oLq zF39`LWYO98^ei+i9qRAMUCmBLovRYjxXjx>BMWFw zh6WoO8!=4=bcUjSIGF{Mzi2=)h_{?h1Rr@C!UT_Hcl)o@%l;89``p+Vk%bX{gHF>_ zy<%|8dY(28HnG^T`AfTQk!61bKsI*S&X4Fq+Pv>1pIShIznl$Lg^()__<}n+L=W}( zq{D1THx7Y?G8`s9SX$8YtR1I}f%0#`&=DxoG27_ryTqz!jMMLRWx`eZ{LLLNLy+I` z$Ej0p?^N38SE0P|lBX`;G~HwImPI?(hn9?AyADGB6u4(e9o+fO)}x3lVz9(d)p$3P^imwdo-@gHFz%PFf_#rV%_Fxppp# zw6E`+Yc1Zye$s=aFPY0ttm*tHT- z4S6?F23;R{NNSoB4wm_`JV2iS=VY%OFn9|3d6@s%^d}?XJHk=SbasDP&}oMsE=aB% zl7cJ6zyW;hP~OjpU79B1mIYWS%o3VcPdc;NI{z83RmGmb+J>7KeSp$kO zoOn@nj=qvQf?p>dz-POca}Y_`-Fuk#a40AkH}Oj<`KY#**-1@tI~$9PM1s&By!~eY z@tMbXSXCM17QHhTCU#ji;Gwo+e9D5K;nvlNg?myc1;F1F`s6+Ai`M>l@@nHsjfbC( z=@~wg#+6_xn^1+JS?Hee#p?sbE&{V+(Zap=4#0?;Q28cdu029dwJO}lg zQC+QS)e$?%JWln?v*z)mNlsr}ZeIkW+dTSG@pol8|L<}d{vyCcC-(F4ZF>jo#qMMK z>8pZj2H#QHM`}w&Z+hi?0jzIB^-s-1)Vkzs3TnpBzNz95d&GmmcTDZ&uKAWpxP!J8 zK{s&y=94`6LOqW-`uvv58B1I0^ORRyd=-q92rrzwZO&}q2rwS9c#dl+5m<{HPc=*& z!**9~z3aY(55p>rGAiz#34zv}N^_Ixuc8^>S3#$czK#c6TZ)`lge%Tr=lFkyird;Q z&vTHj46ugDZeyi3nG<_!{jJP+XglprsLX%A>_Wcd$(S3AgBTEol-hK_VX(4tHn>1x z!K^Ly{Dqgpbkh2RN}0_4hg9<1N>vWqLw9$5f5Z{=!gg#2@-d6j>FjyY>ULaem|Flg zooZ_2S0hVnjY5<|pV)yvTF7TzXisNz`Mb@>8157zhIB(jtU5J$I!;`&h# zS+FYzD*^3Kk)-&B=8TJuNWp=;oEdQ_eHZ~~Gy>SX`&%kxk(R0##Cp3br!Kdz!vl$P!`sDR@s67%WJ3xVB^ntDyLDUd8@VtE zImppaA+67BM_6GhNMV1FxfEjcjJ63W+uj9TKt zW=$r3j|jlcezaaiK(!)Dy^IQThz+Rr*S12umzaE&>>wv$% z`tQYflb&aW?g9n+tnv4hh1k892ccnWU8NT42Gel?3YiqgVvhYut!bs=x5aP#>gkI- z?W5|SR81|5dklKbPOV?`SoAuGcUSdtjUW`JG*61T@+N8wLwuyM+42GOLg6=nSRVrb zPz;rjT^F!W$R1kjQMdUT5I5mGFgGFDlauG=_vWhAu!rIse_rGMT;zwI_s8CN=yX`n z$qWBIz94u`hyx}4-<+GD9^)38C_KO#y-7)9SZS7-OlG!zusSn!brd{DN`a%hOb!?< z8h`;ikz{IL7y8r=Ncx+E;y_<1KlhGKsPO+Qz6=Dc&Doe$`}mR?FupENxF?dYB_z*baN_} zAKzk&ZnZdveklxVaUe*n(#76~8m$+q3b5Qp77q<0;)t{?eB~>$u&}jaW9YLLBYG#9r@Y8RJ?(>0kfodtHqdDk@s30Czh%Z1yL;7> zKi7Rm%1$h*b&BXcwo&St`cYI`U}0&BaMl$?hQM)<$CSCZ)S3kDWz@3h00}aVE#rJJGOkV}^ zpP%*PG(_&mOh(~`7Kuev%ip!IKkV_O!GV=N*RSulo&|^PKEghDC2Dk#w1RiP#pDyS zF2;=p7A!a8>)E|>EBkM?M%c<OddbJM2GNpH` zQyI6bx2|Y@y8C|JO^9HRJI^@`2o|u~G&i%M!-y4Dxx{k5v%{&}PtVgwhqUzL;A-p1?S6>n?cXZ-E76DUY~H!hq)WPwG-0SR5=hqBy~Q+=wl#jWfr{<}$5`^flm0 zrRPrySPx~>JuY_}ucgVtyPlX2%|nsDr`H2M-n58K{b5Az3A?UsPNt5WTbcCsHMTkl zfb_ZV=jfR+`g8kF&&1}?QyEk5<}BSP=Eb7D358inrX+kO4`Rp&xA(??Eu)^ z*4JP1F6i6OLoO_5?(fC5Hfh7CI&Moo0(mU##UFJVBg!F&Nnb^d|8eV|GPvRK*bIA& zSI1)d7ESR;31+(=<7OyRD>E+VKoUXFWTMYmszg~zdMF7B7qE|B1{UIs2@2d;f-$9F zCb-fbCy3(Oxr2K=2jY3e<*<(TKeW`>sD!~k^q=;9;tC+4s)_F71r6|tVx|}4pZ{#W z=0aLsfYW|OHb~iDlDGb4x<7r|y{#&M^g@k)*rC1{B(xR>23!4%U?2VQ$`D(%o2b+W zY&G&e#!COMBVUScqj`)ze~x>LVe0)gKDtEV)F6BLW44n{L11RXJCbO*`(g!OKg&Dm z&pb{V!2OZ>^^_ms3AtmVvvT*FC)vTXFrMe-itbe1I`y_xq7U(ZGpexeqf@_=EKChx zYRCgNdPqLiz`7$u=Lz^tD)e*Cj^^MfmL3 zFzOn!^gF?H&q##Xjx{- z%CUQcPc&1H+$a{6KB@)}ps=HFkXc!Lwen;1MHtTESeo$-gb!LUhy_zqsvF!Rvi2gUf&FbIsH)8DP5hj><->Oz z?Bd4XbN4iGg?GEd^t`u9P$6S%Kl#p$(4oKJ+M)V#SeQ1HKz^rT|;qT#9vAa4=iGx01YvT z_=1SyBWak%F&~OBWmE3Y{RX0q!;xX~X2XY19M*x_@>ZvvlQ@d1hP{D>;>6oEocF4$ z7-Mf+DHHy)JA^F`YZnUIT19nNFpnk0#s0W#30}2O$hRFq+2i$Pb`mA_yA(dm6ek=Z z;orWo@Ap_FSq|`hj}(z2SrH0z8If5*CnwiKBZT+w%~EFL;!^NdNqcA{00IAF;AgPQ zzh}_yLb?|4H3&mA9am2aTmKs`&Y?0bxVHG3ZWanv#j*Lgm0LAtV&BwXV%Wlj^5RL} z9e6x1WF;cRV;gmxU$k!eJ(tD1{bpUrdZJwbIQ@Aq$L`EMZvAW(&3dtfZ7AvR`;!X7 zsjn*zw~wbB3?-TaJ_bRJntiQr0E!yeVyP{dbN=PXf`JtVWUxr_T}-(o+&;C!i?_>{ zx8Qet1XqZ5$=TBRxp?Xto^z43K{rklvC(!DLIJe(mC5+*CqxyB`DoA;co>JzBWnH0 za$L#)IqPdaMnek1nfv!wOj2x}VsXwlV2d#}kOwnzXZX+QM&yP~IXcgCbF)9kuNf!G zzB;EBu`XWLb2~K9pwm1H1q_F z*C3ptiwZW4a2~v3iaS4zV}>#GRPlPMgW0c(ZF4&IqQ`F=o+3zKDH?6bpp~bMrj#IlENyf{5A@WPt zr48zp8dl|9&ctQ(*wUn{R;06b;WkSr)J&$Z)8{>3*jr0%;&(o!ESMbj^BRvro*(5@ z*Fxr#gsyPF-g{Q{uqXAs@BJf7d25%L;A6*oMUh;HS;Dj=h7oo%7Oux2yw&&VdLBkp zkP#U>E?JG*J(V9|Vo%dDy2O9{{YnbJ=<=~S%KGlX$6Y3ajN@7EJ$`-&9i752DK3Il zCnt)fP*a-io34K4d$Z?IX)s~J>B?8^IXj&%2kyneUPb&k61g?${Nw=9-htTjS}D>z=Bt!{z?tXi>-V_5 zOl$!7YcmUx}3_^B5mC=J4g1ll;${Nz%S8WL;hW`ITe1t1ED{ zUYx=E=lwPnJV&TT$eOG%(>ZENG9w(dp&W9U*No*&9l{wc9Fy%VU#y}WFDAsK1>mfN zustTH+Ln( z5x5eO8-Zop<1ro-9j1IhnNrqvrpPRqB?*YOoh5%T9#VIwBG+MaSIahT!4it*bcl9W zn{u4@esH7nv@kGU9^hH+r>;0?7mriXxlU@zoOW%SWk?7z_=FUs@uo7>x06FWyo zBmDWWZzuC*55)`pGfVT(rjvPLs32q3Hv^IEZ^O`SoTWN{R$-4_O!4a9_Ky9aoLS0YvQXPcQSV3~bX|$Tn0bVB_(_yK=hVMInPHs4V2&qa0eU+&zE<>pa z#RSxTR8!>&aN0}9{!$|lGq?t#cUfeYPxa8tVcZw$0VJvrevNi zAl7fZ5Q+S-fPralMHpkMNup#zC`z*xjyBI#!vudS&UgJlaf3IdQ`lXnTOx<11`aSq zC|fydniq=2Y9F)YEgM1^5g7JO@_slyMiJQLup6NYy@Cb%Z@jD5o} z$Cs<%vIWtYEiW9#bj)X5xEgb;yW2CtSDwD@fHbsYRmaRkA5<)xM3eZo+S@y#Jt#!e z4R5%HEWRVzX%{e&Hr}B{syQC)I>+#`Cj>?>!WaQWs9gi0vxk4Kh5mAxyqhZ{oganQ z4%hB+@HI#S8=oCh-S=S5KO9!U3CIeyxfY{7MYVLi!nJ<8En9aKgWuneVk?da(?Ej5t*`Mz`47qH!i;87?99#-t zsKr-ZeN=Ds>X2 zLoLGeL(|MlU~Vs(l>zUNW*>6ESif?ZH*Q?e7|} z6(s({-01eV*NFBY=8YD0N#0(6ngNw-ugKZ=hNcYbT%nU!koOJol0*AdNQP#QI)=@_ zFW`C~7I?#X5H3yV%F>v}_+iqp*_Zy$}^qdR%c1t8?J`lk8SF-pnXi9hci(%SV9mH*@ z*EcX<*{UP!*IxNesN!=}$wCxs2dpC4ImoD5yeQUE@y6H^!PbRBRJh57gL&YpKtHa= zHQYR`7}LCvbi^Dhv>p18YWWc)zl^uh`{-O9;Lle+oFTIwE+Ef# zYRNackFnCtMf?hBUNO6PNVeQ2iMDjY`2A-awM?y=!S0nZ<%35(*S6H4S?)O{c37*J zAr^hvFX-=`F&%H*UvM@*xJ%3_Xbx}+f*0pr|$Q#B>)cmWXtv(T+v8Ic9 zB1FMfWg7i32D)*|v=a5fvc!sbp6+TJC{iUE;mhj$*W<3|@AYA+BL`Tv48lT>$5jf? zk`)o|J#6#bydUXB3R+t;H4Ly!%72?)?J9hM7rT`DrZGTLUhCU9?v6uwftNuQx}r|l zY*%eFe_HUKZVB9m@3#>zpUYnh0_ujetd=#=J`}!2tFmuGr^Tg+swdZzS;I`)HhdmO zjyq$G{yo>++pAO(l>9i{Csq z-*hL-KkY8wrGSmJX5L8m&OvYYl7Fu|Nb(!Do|7a0I5*ED7 zJ+_w_W3pe+gb|_>pRF>xtJQ?QiV^kMHX|B7duZ8w>vTZ#-`44a0jztHD`EeqK4am! zZtjUthSOLkIn2s-^neAmYvt8CRWIv#7X z?uPxOTBRWvE5gTk3Lt6~X&Ggycx`AI$Z6|e8UxRvD)+UkgapCfN>|02$QNOo6_Spc z#3)SdK@gj#__0nLf$BfmbNNdS`SWAZ0!J1n_B@4H_!=KwF&V}6CI)BY1xyNmYhTizCktSe~h~0d+NO3H*Iw3bU zqe z5Ul&8kYB#bd%Cw%kOZt&*wxvET>H3)9%(UT_2OX<^tjM@2h{D5R7_J{wo6OYe(e^} z0=Is@^^3|1X=V_z-nSt5y+_$3Oiv4}w`>BHlfOTAb^B2c@!t{p#1kuaFS^7R3D1eQ zOEb3j0=KMG4GQf=98RMA7#k5^08NQ7CDin_h}m5{|b ziwms&IY~#WZ?3@U$RiQA)^FI9dl^RHgxM z8ayZPP*)1ryCgFyx%+cmvd)r|E)+YMxI**mX8^1AB%fS?hs1=Wp}Z<#z<5fYQ|`p zJ=*;bb?3S-%NNmKeBZ&?#L*P1;RSu!`; z!@6XB7e&aIXv;XAAgQ1=h=syNo~d9Ntf`NgBge&}fD=zM3&js5R;FJ&_KcF@_~Ln8 z+p2mum!hb`=z9b*#uSf*WSV7u&C#B2RC$Ur8fg6Yh+6AsY>Y;BX4ODYCcYucwam`a zz^T$*PC`e(cds&v{IOchy?M&8+tf5CK5LOJZ6%w0XjM8Ji67eVl3X@HgHXdjn;&3< z^c(^1WiRiow13_pG3 z`S-)9t6Xv*w6Bn|El-)F`3qf!peyo(3;*umR58)k;0L`iyVQ=qNFe@7`N&^s+Y*uP z*4&n8p|ifR#!V}H_e>f}f~kNft8&SuR@s8MOIke>wS67|m#t9sC!L%x#f&7VxQI!1FCECLPqMN>sxhn?& zoK&EqcC>VE`B3qmS;r7tm)T1^-ky$B*5=NB?u=e6lKwq|5@1=6hSMNS~i`*Wc0SS%Y+yo$>MW~iJw;>%*+PQF%*0+IKQ9|6SH;-SA zk9Cm3qWr3_=dN$5BFT~)z^p9B{Ag8GC*8a^v0XgLz0_z6;b9C-(-g|4Sc;_BhiSY- zuc?y}E1~QH7*6_S&81)nu-fsj;rxpT;mk#E3*LvSRRGL(uR35PO&}KQ0=0nEA;$L( z+=ce_HRF;-@eXCa_T@w9oYvO#_b;IZTkR4nRC~Jm$qT_-Tl-jK%eZMWXOF-d=NUiu zJCJDW{4Q?aj!y2zcjDC51>6h1tmvP{Nd#JVd2w9^{_}Ewy{0Yxg=A}!_a0>bVz4VG z4u?lFmb!EpMG|FYefkRAjCKoP>z7qFbhk+~u^>x&m)yt%He3wTpt zW|Q@Ko=|Z5Il7rA{9b;ixv0|JOHg?FrOzbmlcg`4Lr8w7Ac{L{ey}gqqnPC@pe0pr z>ij;^mGQf=<(O=mlkzwhLhi6(Q&-6%BL%8%XnPw-{ zU>I(%bJLHjDdhILY5y>^o8X~#?|a2rW~gbPk^}jeimZCUD@XfCn~y=13afl3S^MpcsA`TXk)hRC@BfYlvJGmGbjhb;rqB`~u05 zmMpxY$oKyZ#>uAro$pUZ_V463x3iYpPnuHjtJSm9l$ItcypJD0w(fhA2#H$n?K(Lx zI-Bm+aYO}l+>mo+Df6FOlpzh@mD3n6%el|EsUP(J-TQaG_OiOio+_ZmK5u=-kmAhI zW3*Z9H|OZPF}A}c;RN9f?$riqx<%gEQJnq9)uw1WE;{KiU84?8sK!eb%?*Xe_xJpz zxMzLG3c7t=&2pvcF}=g79MLNLu`pT+9chr^%FyWKmQESYJMuUlB9A1|rctF_&G%14 z)d*m*9UVVum9`9I>sd{~Sz``WhWF<)UqSg=dTZRA(sF!66H={1gy z-rx%1JjvMLNJ6E{`!!V8nfw@D48(-HE}RF?S4x}a^&hA?lRSSH(+5zYvBP(1H`vM4 zxB32$-(qdr+5pB;PAxoXvUkNl0VDUd+-yg^Rl*e9A=8^{=B>vQT(7Qkt;A`}{9=jl zkOl!lDWt{j&YA=VQvUeKhDb(ai72iv^Blpki<*1KPW==gcR8A;m6ZXtRB8>4Xy|On zH-@e{YPf8#^T)|B5Dm38>vl%C;QbcMX^?B# z6E%bwsQ7By9guR>`gc-HjelSw9zS}fngo@5sn+N&mK8!7b``*wfRlEqBVl!GugccI zCJ@BgPX^vs_+0jj#p^i|uP_l)YHM9Qj!k%c`4)R>j&{mVb)N$pIM}X#I|s^+{+0y@ zITY7$&e2QnY*OZ5b#MKk<(xcRBm?lo^nSXdP8Iz85m;z5%0W1xX4&p10X&2&lmY^{ z>M|iMl2=*PQ6K3p%3a{{4lvxYovhph832aKTIX5A<}0&(Z?gnO79aqsZq-@LE6P*x z7Ce&N6?TLLgQg=lO@MsOk3_~rf_`Z&657nS%-=E#^y0>XL8_8w;g!*iOvG-$&Y^sW zZ?QFnOE`eebQTF%xNMoO1P??8Dr+=MshNcjwZ>$oeE-Y)7zfH8V>MSCL65)D#Y!Fq zVJn_-?#iBZ&epWSglu}_-|2+@Im`^ZsTe1tc2~`0nN_;#v2=Rs&0r03!LzZPOz)kM z1!ddiD!jh?p2jy=&`jX>Z^S8}`QT~7aY*hMc_BM@zl3* zRQ_nWJIX03i$e9p(XrHE+VOlyj0`Q13nw*Xb-T&N9m8rmeHn~-59R5JCb7Bz=eO8y zdGU)C!mUyP)OxE_4_yh(98RBdqCX->yDe3puxgr*R#~19sCaZg;}>HCVZC#5W{Q8z zxQ&ceS~Z;2gx>+(ut}QrQb`ydE3eY7m{{g6@%reSEoyg&Umet*T$i!CG40@kOqxP- z)R+Nc6cJKXk=n8+yEHxq>oNh&-5r#1fAeSJHG9PUD8@SD!Y0>eOnYtJ)~pS*ho;J{ zU5~{?Z`+oQM!p7aUkyATuhoTlKBB>nMesE;y@~Sh>x1_jD$iIg*7oubU2RO;>vmC8 z(fU`kM}DsAhdE=A9y7ueO>@WvsRNgkav|m2;V9aURXuz+$@RIg6>aCA*b2hdudTl? zzml$aptbCS>%W-?G(DpU5%ENiSC)-;qOdbQq%|xzIEIQM+K)LWLn{U^n0bAff85N` z;{Bx_?}N3AhAl3liPr8!!qFuy|I%6CHDo?k^Hi{ z@AsP|zXO-YyZ2D7&}R_WB_svn?qhL8pB@huh57jyBZ&U64PBu%yQBfB~z3 zXw~Ugdt(TllLFJU;-T;7=o?nxKYBv$@y8db$^7MQZxM{-kRBny--1mnua2ODDu2`# zY3&O^6ahi}h?m1cPV-AO(JD!1F0jo?aFQQ7#lvV=u#nC8o)><-?fr*n*v9V{S7LVonCH!D2Z?7R@1++ze!C&`PjQBC?@^oZh_f*$VO8?-Y zdv#t+suVbz^G>tH&U+NSv)KXNB-?ZJZ+|87QE5f!=)gV;%>^}RK;dhtz=l@8CB1WZ_lIz+e1l2YR z*)m5J_FWh|tK1*Vwb9tCrS!GAi4zS!5ZIlvVi-U5^EkI>2BXxye$-UJV=i9#S&5(G z>OLX)MN;ao9a{XD^Ljf*rZQ)?CbJ)*b7YC6w%JT&<^m;Yh#^@`YFVI)wL!pMam_co zK-YwlC<#@w5{?G1m1ezo@+6cFQ$@r@`}&_RCwuKBjFyz6RY&pWtgHCM8E5lxxm!?r zp%)iS1~I&Dp$5}&cK&-bQ~BN8d-BlKHtN(B`prw#lL^-SlfSTA+=gg{T8W^V zuatvVlt9uT(p>wOS?c2FYNBR_)xOQ@?+BzOa}7_8X5&Fl;q|pS4<^u(?h4q+@ACoK zk6Y6L%Utt6LiGX_)r>z2l>u|fgo-@Gw7M@gtiDh$zBfWy;m*zZHB5-e15*CID|fb% zH$U2hSz{4{d8<$M(#u=w#+MNy@B;&HUn%P;=Su~9-wXwYcH4)B{)A++o>fIZ>?8a|}+@f0?Z1v~fm1fh+{1pHbTd_9c z;@iu_Y|yI-7N(IuVPjb;?QAuYjFlx7>#iQH_Q;|p=BqZn^0D#1E|Ff>Y4fHM`_<}c zK|sjj{?{q5*ViJPS*!Xm7zCzNfbWhFis$Ux9B^3c{Mre*KCnv`w#tC?VFQ)1%7$2) z0?7--U(e!IDP!q$^f=5Fg)<<~(G9&UObPz1`m+8@Nq^cM(T96D!iD?mOP2^-+ZRys zN(gdbRDj=*3P`91YMLopYjyu5f5Fy5du!A(^i_gXMi!(hxBqKF)TgdO4cyOu{bs}a z=g2%m$J15vWq4roPt9x%&qQyw1|bTt)7w)FNzrUK%L3?R<&2a0iGXPt4!H6ZwxQz{ z_8Gp@J${ll(_|B*?4%6aPsBjv7XO;E&u6?zglAhK@M?9ms!K~Ro#`XuV35&*dqWz) zxZ4kQ;Zh19-n{FPf{8uywvpzOJy4-%KnS?eK%DvFQB9mu(}JYp@UI5cm_i#58c_go z?CJF9NA$?u1DX8s^r5g!2#0ARsweVHk)g{o&eYyxdR=9%@>r@Wo#NiNOk$(SbS%lY z9Yl^`2Ppn2P4h_2gG}WrWSDYfKoSyqVWs%B%qMI9rJG6MW=Z&QzVc#PR3LyLO2t=n zK>mr{lMF+}7f{1)KHet+-+Z#b`0EVbN6MPGTl=nw_C7=qIqWVAcM)J#j7$wXP zxkgP?`A*#FtS!)V2CqP68S7i<{&Irob|(HED!~NNl4Ceeo&~r>2LUlrk8s=wcle)p7@rcr5tz@S$AVR=7x z$#Unbptown6}?QUUy-k$=4N}UOlE0NQ?IDkm^f0->ejpryD}Igwr*CO3%IwJjV)PQ zJQKX-1vA~!XTGnfNS;E{AoKS+j9RHltDozh>O$}bTiO|}gI*mQ^CVffqJ9*+x07)D zW@N)tqKId?ZWEoS2U{4bY)C6k55*g<9jfN5CWGzHLYF%k6pvIIykHDNUPED3bgTS! z`7_aLjgf(q-LSR=GxH=Kaikf4KdLtBfH<JyOH?gard9{kV6*p^J z6H1y0OzGTAS(>l4A{6%EAbH+c+rPeNk0hCpNDgBEsh%M%tQL4lx3^sD$uuS5+|#vT z?W+`#8a+It6<6+zJBHBYj=0ZW#o;TDtGs`FVu#VjQp~fe-IjQ=Fvhlivdq0ontF89 zmOgjKxtrxDS#UHeo;)In>+hGMnI&F!tgiJB5EOI$Ygv*qDt&RmRj^w^*&)SvBD&VMISuXNf0 z{O*kEwy)3+nKaWWSTV;IK4y(cOWX67DVXnac>PN#5+%D>(wrTM;~I)HbUOLG7HiMg zku+<={Ut#wtFpF3ljYFzMi0-#QAl)p&%Oi2V&Bufj3E)z@{Yq* zM3W4B)IpBE%4~YKEKIw8PqYH1qevv7#vPL9N2?v(Wl*zhR^WZ_x^`jpvCqnGPB#zt zUc*;3BU7!|&+nZ_E%opEBV-@UTN{`v10A8YSeQvp3W>r3zIEc!^MVgsTGbk`OqXi;*}(L3O_fF^*MU7Q_$Mx=1Nt+oaHYw@QT}e@rUZI{pA(xE8%h%5U|Js zB$%AwewiRE$%HgGep${NL>v2w`62$u>WjX#$MUg~Msaxr5Q(_{CfEfBmW6Ou?6* z8h+S7i@y4E(u}oNj-)XLZpDPA~9 z*-p}B51xPv%BH!z;Zo<5(u><>$#f2xcD-+ex^g{Y z@*qV%OOAZUNM_;p?fp6+s=-htc&HVwl|oSc$J?bs&w6ebX|r&1Ckr9^EWiRXFwoIl z-cuYdMo35czD}Xc^zQNOG9d?0vLaz-$u~RZ4=AX@@&Q=s-|L*~wm#6lV`-6ZiHvnT zBnL|o`H|@Mq~8h~4gS^!YIZHIIb+2{KXZfoPs=!^sD6`gfV_+8=e-rdW>W|m5J6H2 z_*EwH6|blS%P;Yu;nd&Gt8Cu&!t@j4-sOOuTKF(XRX`8^FAfk^gSVqNAdTf+0O3Oc zDx06Hg3UBq0YDp#fB-n)g$d|(fjvv&()?2Pzp@20VB0&X??g!>9WzDGA4#|;RCEq0 z|MuT+flZkzZehLD0vCh@gOMbS#jH+ed|%um0-F`{z?v!h{}e_q5Wbf7S{~rqsGM|4 z%Wt1p>V_8wqfSxv?yGp*bTDe`g8CKKM)&*{suBd<`J(br(}VZ#jCLHiRqNl7g~vhH zP2>~;V=}?535ofXr+@!C6nB*mRCRO49BJ0uw3-Z;*WPL3-^-GMo5!udgta!=_9@K= zq^`@00zpV9rBlws&QE-gT9@~&MzVRi`)7yILQL3Qk(FXI&$j5aGD?1Y9s)sN7y!zLYcWCIreFKSxyL<>$S5ge)42NEW{!l5V*L zms+`&qV#H(dSoOGr$=R<&()ZO4eJpp4+~;uDCan0Vq&{h;_5w4|18j?9mR>*-LU+* zS(Ua#@9tUAa?tMyJ00xw+1D~^seVL;&ZN-T{f&7>lKxdk|&qjmAH@mT)x$vxH4mK@7#DPTSM}iaK$r&z`QQBJ@vAeQZk!buQ=(HbWSSqsCMB8VD9v#uu_C zk-50|E3*pyMw-%79Q8XM5JVE3ILCiWB0jEUg+Z?_%YlHq8>n?6LX>ha|DEjRweYPuXroU(mqsdcPE;5&Z zu@A70z0BWkeTYqlnJk+MSM__8+L(-{n`Y4)X{=^JHMA>j>~3JIo6QLQ1H;YGPiJL{ zN`*#-hu~v-1#Rr-M~jE=x{Q=Q;>nX2Z`6tj~;Fo#D2>=txJq z8-M6|CAPFLYIdxZT z%b*KV@N4w=JF{YkahgCA;^!$c3-?b;8z-}Qv+~GLcP~LW#HLMun#^(HqWbUU z?wb-yh<5%lOGb@`xa--=l9xj8>e>nzN#+e931QGO3m>fm|W0#xHdZ zATWF^4=vL}NnHu=6$!|`G7bml8>Nq@@4`_+Zi5f9%+_ydK~$4u7pz;tckf=gg=y0v zX$ps;c6jcUq*-U#*NiOS{R=p!RJ7KdLC#-H(A7q8=ff`%_(PqC8L$wG7?s;5Q9xTK zLlS*z4>5vz5dw8u&4K{306AM)i9ixhiR|JZ%U?{$^n0qt>jzRoLBtcG3P>}$j)G=X%;;+JbMcoUmb&;W6}m& zK@i^DGQxyvw9RC4BA4l%+aW-iQP(RZtiJu$5OD(9NoqpMiN-Z+R&s*O7-77p@26JM zGdcl&ve=mm#;^+fI}@DnVXb1mjgc}HOQvsfqa@%11McUN_qDT{mdCR0{@;1=@?L@* z?P|GJ%2Vz}2WK79778Zzo4+d6sh(oOG_?6!earSrMXZb^$ zrpO{GEI+>S=K`U8l);3dT)k^N5-~rkRnPsu#2S)HXvM|FcGbhE5w){whrfw+IYMt{ z&5EtWJi+eY^^evA^X$QTUi>l7kO>n#|K=wey%PWRkWw3*@9Z}}Y>Tdu9pQDCGlfr& z@?mZ5Hc;k?#)BdgQk*eI`~b;)BHZI^Q=Y09 zH58#GjJvh9|GjDT;I{`sB5>dT)Cfq{W&2g96}nT|kSLb2EV5U(SaBhBx~l(qG?~xW z@rzxANo-f)X!OVajltC@*T-)E#Lf{cEgqK(DgskTFFYW`fNMU&z&7@1 zh$F?l$t)=X>c$JpO$KD#=Bb)r*eX&4o&9ubW*)n8#B%w5#8U1i$8^cfB<<1Akoqv+ z6M~~MD4k*4EnT4UH4(4WtrSgDq?BXR>@XNnuQhf1HL9hoMdR z&Lio(`x76t^*z))NBjfZ`bb=S%YoZ3$fMR?SmfrWub*E*EC2Li*H1q6d)phn&d3Y7 z_J^6AJ3ZS0vH~>cfzo^nSy)xtW#Dc%D7lKTc0@{EYw$;4aQbn!pKN1Pj+{OBbJ6n7;orVt2}#OEo}02Xg-7cwUb~g%?u0C2 zP)Lo-AFbRB7eG*@QOskos=4{3IsPnUt=woW=3n={)rRH-3?}}{FB1SeWJLam)j_v< z32=1&l>eZyEQe(>(Xn_-mGb9?KzC{CuiACi4Hxx^9NfH5>`;@jo#~jR`bHex&=ca5 z5Eg%)?Z8!??bs!cnQuRG1mM%4V=;|>(d8nQFaM}*JT{n-uOQWp+PmDIEq_(j#V_Bh zVfK_35=yD*E7fYo{z3M%tO;mc4#3H?pA%L?YGElRraDzOM_fo+)1RcqFh1$O+!@-9 z8K_Uf`_2a?QMV3wa;#ug54ve@ag^}QDk%^Qe=MGIQ_YegWWn_oh$-6LnZUU!z_8R5 zh?#B4`xFsQ39jO$T&p&@m_BPDF`ST>4cb}%t>j?&O3lqg`tolM(Q*ky9(|H5>l825 znVDkDTIX5ZY<#xa7zPx9d!;=iWc2s|X1HEQ4_2MR`^6(#Gf!v+vn!H=xSGA;rvi8` zKO2H>BHJ)Ce)VUG_>GE97IqEw`q<8<{`1f4m9!W{wOLUY_x_}7*5Tnwor19rb<}@- z{+eoV8kyBSUhy%um;VT#Mt-|)PTA1f7B+{>yf$#lu|G9m?f|?If$NT~X`YcF&yc}? zB{g|%tphn*bDCL=Og~YcR#_wjVsql92hSf_raZoP4_)~Lif-#Qw{ZFNe$6F9BZ&zt zmCSOy$)=nvNO$-nnKD>3B=xGyJw>T%79%w|t)kI~b=KpC+0%~+qVd)^nZNRAJXBjS z-E15fR9hSxuA+6Ya)ZtsN- zkj=u$B`4Amnpd7F<(FC8e8Te}xuRGIoKn=_d?mk(dEJzOvd7;jX5%L^Nj?C_&Ak?k zuhkWJpzP5ZvUC0{Kn&M4#s#=vK0ud#0z`O-1cX(Lr`Kc(J7}7P2Wf4L6?y<0Z|_U9 zl}Z5`iK`c!{hLf+arnPMSuHZ~%@I)caKEa#FTn9sbh5&{nBS}FC%`vFr|V}Nf7L~> z#!wHEJ!d~V-HF&kBDkMufJhvk?9%!>2asaAP@MJ=?Hic(Od6&Kgt0=y3xugGOeYQ< ztWW5`W}vxD6pQg*aTRk)FfBV9Vp98VuuE6sSl;N)A7220nD>6Whd4YJHdpKW7F(S} zv#_^rx|d?Lj2{@k#XBK0ov8STq}#opRvXduTtLpCYBp}v8F;;0lQ?+hBafE}$ro$D z@RVeLx~uTwfmCJ96rcaefCSw}rX=xZGE0zX^d(o-g}m**?}hS$4e3W9s4lvH`4|(Q z9S8U|S9at#DEpj=8oW9y_Z{rqbiwDY10 znm*XD)UEJUz5Vj92hqi<)3;#nI&0m&rd=qwV4a-L**tlvBEj&7Vn$|~-KTbZ`JB&m z7syJZoClM|6mC_oQ6g;24|jL?uR?YX(nMMuX(@P76S=vzezKU8l><_Cxg&n>U5hd= zVjYnEaOJj#M)uAb)HEEjRHVl$d-P%kH)s6l<{E)#H>4t$$hq%)qoGR)Pxt?J66yS{ zbi_P}&$h&Xn4A})9?gVRk{l3e^Q389dKr0JNH+$%q>VLk_kMEoA*gCwZ#qL$**OVI z;K^aB5r`ReWAtWz3LU|t6zh|7IIgnnmsg5lip+A&d#SeEAF0@xA~?U-zUoPw%wD~8 zAYF)qWxjs0w_s9@V`<5P zsb?eO%)k*FJBi8*zq5Hy4vpoM#x##l@YFo0( z<&Aq+!sMgzrb5|X(^#ASjn_V_1+C$OL-!h2qGRTip!K$Pv7T!hsSv4b3489l@O-Qx z{MVT?BX`%0+?tNB(FNVI^+7-tUcO9C*Eqdm%{*CMS!%rDPae}_P(gH4h^>@u0x zUp8AOnba>AxL!|=h}@;x`a=bZi8W^O5z7&N#UEJ46q!9WjNep z{jRNIpHFnwh58uG)z}qxwJR)bIa%T94d3}*$JtC&XxS^j)iUj^%f#yZ8z9YB*dpNL zyrjl*W%YnSI&J9OL#nY{mAH^ccE0yww7hNn{m~_Z@sXe`AW!yuj$rwbiLuY9llgVD zS$rvA%H&5J-DZlBOd>r}8at3+z6@xMmh0wuI#%#h$?}JxNzJ~a^mEBk9P7i@zVuS6 zXo0#cuQ?hXHrr9vN%f-^%6GE zKb|75xztFjTtQDzrDv%_cXWj3#oy6tq_)M9 zK3JZb6-*qwcjMyhVc`(+&#~XNr(+HxhQ@9_c$iw;^ZylzyLHWKmykWT)V&b&P6hV# z4&s)K|4POVkwPS9adwI0PKpNq2^4su(OG@=L1sc!n&pf53pSRfRNusmGGBTX)bwvO zmmUmhk$rFh4LI%CT`2}M#{ZF1#Z2XFVyo{Ps@Ei_uknC z2~I7J#aeswvXyF+fpKc$6SucH0&#UAI>?uZtsSI7S$9^)MF_#~T#aa|>^i8N^x*G{ zye0IWtw6DZq~QU)Z3!}~T|Cw4+z-J;jG$M_xadArlYa@hOFFVlBoA@b=?e+vnyz!j zjkUN~l6#UDgnuj$+lzp`D~z-u+DxZ?#-652bDn=4&DzZ4TUsE%AD~*@lSz2(X@1=+BE6>GMj|Vx}EMOLybeZj!Zkkk@iTUeM zQAteZUn@3(S3nJQ&v6W8h0*3{G|6@*W=d4 z@J&}F>D)nqSHT~BFUqQoY|CPMVX+R5C|ERdpSv6QsE>;WCW1^ob2+5BLn}F2KN9@?SS!1)-<#(#?b{soN3zqC4{e63mh+-xuD!gEYPST-4Ls&kH}? z<2iOkO^EAq)t7Roy{c$VKp(B78V41GpF0bpOc!AL>@2{$#IrS<;q#oR_@_SUW^wmU z>3nauSkBh$s;AqoXqOTkPXKD3v9a@}&FR)2ueYsMby8&}bA`bxLSpMOt}xAxZ^;+F zutPacXDG8x!dUc}X(cuDPv*0*^-B^KgOpF*$2Pr}Gt(!k$ASs>SdCj-CiD}4b0ST) zt@m6+qa97!N|nXe6whb+d8H7)4AFe32c^hZjN#Dt^36{NwQdoALh;3#r=&B*LU2(} zFX_1siIlv&wl7&)jcqi|8(W1V#~QgLu$&_fri6`eil0^8Z)I?U&qS2+RBuK}`>Ipa zk^YwX3l3zP^7(Upr?^xn$&rW~z4CS@latAzRbVpVklS4r#K?e?Wvb4)#3hCRtEwZF8;*7iiiK?Dwpb6~Aa=_YuK*6(EQ zDWb6)hsc|a8&m-Z*fHmuT{*=qoY>97znUrHWk9~2%r~z?cZW58%I!@wN0WhRyXDNn zff|jh4uuk^+)zb{Cym{(``-r)@`^7fp{Sou(zy%k?bqiN;%}~%e}g#>R!s5FZmfbY zG({}t*>=aCeWl>QM#h|NEyEIZl@cA{#X0U0`t<5Eylbm|b&Qz(xq1?3%-;j!(1AgD z(WCkBi73q=P;!`E?;?xgz1PCGr@{~V;~*bcpF!0A2*Z1!?V7=_Eu7&l8{Dfz<;f8! zu~UT(Y9+_Qg^Gz6G?em1ZaeoKoGq zE=A+%EcH9eDrVs^(r|WdDKy^BoA2m+=y;$jC!Hw*Uw~EoJw{uyJlG;!%1+6<@*~dJ z6K)COMeTUHO9teUM!|3~@slpmL#Z@85Cy0iTLv){!anyZDjX+!Pc8!AeZ&3UGTf2p zW%JRHvsTDWiJ%7q*z5)g>Q)DpIN^31pDl)5?ml-OsEEMP-ZrMpOp!A5nJ<9OJGD^~ z9*YE|zkeXSB4!PqV?Y98S_P%GJzlngrp3(^zhyAQ4TGvVb?=aX51Eo2#hA<-k4H!z zoSuj{kFq8mKGrTxyB3N9ZE|=Z2Qiul@>q~+RA?8XN}sw}IBgiDFZSYc5H122OX5+7 zi#5w213}Y|I9Y%cb@2YB%|e{+A8QGqg%989zf-xMgLPHtZ?iL1y-4N=(EG4&p1`38 zO{FVY5aAL5iIUP39{?~@IzUxT{^h4ao1p(~Q6Rums&6qhGp+njN0(%kdbPTw2OAun z|LuxsgK~pS?R}UP;MF2<3LM}eI9k0heh~`jBAy+73?-h+5_`>02h@1v377fr6_Yd2 zl@Vu~{g38|E`nsD;jA?TcF>H(D&d*NUhQ{iK$S$^UK~u&HaR$7w-n%bB6m6HBr?^y z%bx+M6@km1qs|jXftw z3sQpPz8yX@IREX~Lwo_iC;vJ6own#41vG=ZAQraA?;l=5X#ClE0Fo#SWf0Q7TARH} zCPrP}^`}wa4-H&-o>n`n)zJlWzfP^h)@W}if@r)u^H7+T+H4d6*984R#zYPECx{ZL zY5fREd-oSZEc;I|jfpY;oiK!`1#i)@Rn9hjt+J^6x>|g(XIuJ}pD#LV+51^?u(s#nji>p~nV$4EDnT@v?G^Zzny z1zAvQH@KbBk~>$@>6V}wGivQ=AQAD}1%KEnQI5fVjr^AXozK};Fi0y;9y2*UpysP& zu8efzH}vjs{N9Zz^>HYUVJyxL;dJ*L`77|+A4*g2z!95Fgi~AEldoJQaN1ku=o94L zgjpn-Gejl1^YwZUx<&rbWgZbX?|c($XA-TpUE+LT5zVwq;byc!B|Xkn zHc@By*{@yHibbhO5tTbxY^iu~p*3hp6g&A^1Jiax)EwmTSbe2YjDe9cO^7=TsvUC^ z(*botj@}T@8UCDCn(4>_Nde^yw0b2*sh@>gD`F{DFz>`v z+LB^Zu9YI&-{+`1R*kh7^{s8+B`{D0Tsa`o$~<3~bS>*_XN%b%KACS~iklRr(5Y3h z<2)m`a(d913Fq152D;aE4Tdva^{bAma)qiEE0KC{LATs8;bX9y2jZ=yOArIUC8tQ- z@X-1q&j;l_Ul=hJH&(>+PqZyAG~eT5WFoQAZk9>3&I_t>Jj z<3LG0@4>htsfZ_w5N5$YRg&_bVyF*mQUo7{!If7O-i3k+u4V4-PZ4wCDa{0;PPNE{ zrrz{(h5E%u4Mx;`n4q|Tup}U4j|C$pnI3a61bL=VS-`omOUEd0d3$?<3{$LPy1r4V zRODMA@7^Cye+T}NgrtD)0Y^sJ#(~=7o8KzwzYSqCvBqe}fqD+GOrX*r(H`OR+kTF=!%Q%(d9)g3@*~uel0H^O=KZWDYlN&U%)8b{G zy^<0h_P**~(+v|beQI>xnYOm>4rEUsHW`(toT~4QM>78NTj7g1eH=agp$%i6QvhGS zDr1iP!XgqehPkyiU?enh2CCF6BlCAa)aNslmhOUl{Bx|mqykn%M&Ia4+MdO?PI{J2 zHv{Wrj!}d5MO?xR=L3R;Ubl~-(Pdgu|I|HsfU}p^`_J_;LqOZ|JA96Rha2C*JM;wd z@4zKW$R*?nL6QoXiP6-9KI|$&QL>jDbAz?`j)XybQRn;26x^4vqO|z(4Q`Oj&L}z? z!rO!Qh_(VmekNCiEPylr3#Df!V;+Y&v&90>+qL8>}XuNT0WwrBjc;_n-)A zGYa{36DMCK10SQK4+&X1Tk5`1_1YP8A?mA?3%0nR;KwG9Us@G|me`X2GN@%}lk*is zH$d^wVN8tT9+kZVMIShe5OA&6NBnm;2QGbROan~w-oJ~12D%w~Rdvd$X@8Pb@C~OQ z^eGAAo;gzOVit<;+Ox^Hq?Mc+M2ORAalFQlE9(h>2JsyoGo`*^qFm_zwAFm**XJ9#hHvjW#rVgI{ zb$0)mQFZ3B2@k?#v57P|p@K-z3t|>qDVZebXrazo^X{^r>~5aCw9gpHv$mtjh=3mZ zw#oEy!nE zZF5b393wb1M_efICh>q~(+P{$^CsUch!&yq7mO2%ng6jCfsGs9Zwu@edZEuNl?cyL z-&j|Q+>2&c&i8uj9bo%Y=10Lk7!>#+He2K%a`SlC#!>p|0%D4*_2vO8n}sj5k@02v z08-kh7j0$%lfHn2Xa%y#!7>jydc3-6vXt@kEnJYQQuXaq!0=2u@|)|YCF)xG$7dzi zUtOt_C1o#m{}P{5svzja*E~EGiic*$q&-2#klgZBDND266HFV3Lc{zig5q@MO^f7o za_;v_pA%t^5%81N&@cAf!~n?U0<)lJlZN7G#< z@DUEugQyZ=+&+L6S;c_bR%v*lhM8h)CS-3cA{|`MS(@we7=Oyfbo1GCbVUpsngMaE z0yG4=^uRtw7W3`E#*(9w@igE3>si{v?3E z?GU0bz?hJ;KTlO-BK5jO5AD+ivzXP=Tdb*oWSpJWb;Z zwRpB#xcsUf{4n(4V;x6cNE*;kczYUU#0L-ne`9)$Sr!EY{|Cvc-mL#sK}basm+AAk3}7%n|%_2ANup@zX=i3RDgNP*QAHw+_dx|DeRrmYzX}XDZN&f z1O$lrfR6=x6BHYj_}%oh;z#wXn4OVvAy zUmakb|7B7*_{TKj;vOIMK${;H3=PO7_^HN)mZ=vBNwg!d1(Nj8t7K(z|EV^UC*>DS z>`g4T1pfL4RVnnZ8P8Tp#;lmshVBa>}&d$Tbo=>A#=>7hF1}8IT+`y!ouMe*nfT`I3z>ew%5m7t&Ob zzn{R(^oUSqQ^;+g32DIg0cMja;LIbU8$Idsx(!Kv<5QoQS1`0!T~L?RRq9mqvsNye zvC^yzBWUU+wL@N+GM>|vFJ~>jAG)){uJp#QrS*`#skvnHXpb!p&Db{Qc^!%f0c!cQ zKOoLw#NR4;=?~9(>rwwDnW+?Fy~q1+Eh$4hFb9Mc#yfDR9_qj>hO`j^I+X_U=Og0> zVq7F6>d*8^p48}aPv)znY$0x>qgkE^8m9kuyC2osuOBD- zO(j70Z_xC%u*4*=HQ`R^XpD9!7ZNIp0dl_g$FM5g(%$Ejjcj70@?}4Y(k*U7eF!$P zrlC^ot^%L*J@tp@BE(7l--;K)y(3Av8XlRR`bKliW|Q4l8vj#h^uIv%6QvYo8iD!t z+igX@f&efWYhi*q@W&Y0(_i-5_MKzs^i;LUYzs}e`nVT8Q3o|fT)PNZ5 z7=i!ypQo^_;nl}o!pmRlDbB;B|DnXGFbAsqi3no;|AxFR_b-R(F3XfgOQZScwEvt6MM?o^<+^3uCsEnTSAJ|r=m6Smg^}D%lQW>sfUo?U+gNsZQ-{<(TdFN!)U2@8ACqdt~~bOk051 z#c(D83#+#mE%MT_Le6Zs8%;DN4Z8iQ!KaS7GFuw9_qPJbSl$V$9ZBqy(%KXg&J2&BBbM6!uru7*wXYK6l zY=|;xU+VIGb*{=`4hm0?^6}}5%&yAtuPV7m!7^7;Z}8v@9*;Ll)>$c^eR4)ES&)v< z=5bCX{81MW5W1_@52P@Rva@9gEa@fMCvjMA^$3(Hth{o`^7>_a03qC;YZ6X-sZYgZ zsm=&~>{{yOmh%o8V~O4_(eyGQ#nO=8NERfNb+{r{@)D7rTH4w*=qs_8Y#@Rq&F?Sy zNYZTXpZ*&0JiC8q)Lmt~k%vmao}j13xTU@^t1Fca8whl1Sc-p7XN2YSf}Mdjvw!af zJZ)8l8GYI-^R=Tn##Q3IaS3vleJk-x7|Iaq6T|$x-Ja*4uebYGA^F($v%_6{`2{fl z@LM_RUStgZKukJ=b_)i@p+5dZg`JqsD%G|cEk<3I)C|4 z-ak*Af1;;k-{#)U<-*OCN2Oi%KeoYwQ93fj0>I70xSb>6im>CrO%oQMC!u|nu6cKg z#D|jA%-A;gf_ivV|DgHvKL4Fz=y%~hLQc;Sy{FsyiW8LF7m&n}^Wr9DB|F^(-yZWC znZ)+>2q8sT$e151#pa~#Vcy3^0=Z%r6W2!mL{B**8u3paJD=+)vO>m8 z`}#05OtD1O*wtB*w+DgePoV+SPqF@{cUHyPo_5t-i1a?w{Xs;iRasU^>gV>AQep8Z z9&CjyUBZbFlbxGs^!~D;+whdZYX&^=MhO@LBcQ|{gQx`dvB4!6ijg@gE*AddJF+>n9s)!6Rrh*V+i(@!OM;@{Ur!7*9=>+Mn0lr}=b zvkoEw9vqt~Igv%6koi&yK_81^+odY5+&=l_i#d?~<&p~FY3@8hID(o&nmG|2`Ha!D0&oux(z}?`s3n{ao?=m8+LiTIbuqw?t1_D&2+7yIW!7 z314hon+JBF)=lP~*0+26K~^pz-qAA}<^9z%()WI-+0|9|l40#LIBDa?5DL9lfe=98 z%m!OSqbFeHVT^pW4WQ!}W*A)GN66o1ysR!_e&*EhP|=QZMDkwfz+K&kuUbHRao zXSgCgD9y#jC2g$mp*C1hZ%f@NREc$2L z$YpM->9RQq!Qofd=OgC%D^p4@$K&p3RK{dan1P}2$Jg#9p85Pq%Z)W>WB zMjKHU+SVG8%QW~zIKQQm>XU$l@V#JlR}T(kMtsQ^M(+(xNd@Ut4e{$`ct5@<5D`-T z%Tez878qZ3zK0NWQabMx_HL_3$M`(e6u&iUw5=46TK$Ed=Am)YbW0HzlLg)lvF+gE zZLpRKbEbd&LjD)|t~snR52v^?n17=3zQhldAR@ z>ojgzRQvD?1)dG&Z3&M9*i^d~rVN0rg|@!PP9P`$&R^&Ni8c38S_*OR^?=e(x#Ikx z!f6ior`Xl#aZclrv|+~?y#2lf3tJcx@vj>`Q;_-*+Y;e}r@(u`wSAH7K@HdD&F3i^ z+N+N-{J33n-0R^RzW4fK&MgXK7tbZ)Pj@R$%S#cU#d+8?y_GerH%6FQ?DTnucW2Eb z;?&5g&ZUgc99yihDrWT^g~DzO*ri=9V?l?+6^_Fbx9uLT4Th_k+xeep?fxaJ;*+!g zd40IYkbKHqWC^91LfqUzoDeuI{6}uz(4V0;dc5&i>mR=I5r&67y;br-VdA|r{qXK_ z$gMxZYo*}w*{vx?>zR>g8*mcNJ)(ICNWsBB`P;?@LXj3YE~Tnban?0);hM?&3-q<0-CLtp^V{g^eZ*M z?UR+}%F4=2=`^m96!yrDj_=7p(~EJ;t;fufr)f%&io_&t%g*@Y-5BacB0JDOGfm)402Zb6>Mc@Y!UEXlFxDS|c#i8UQwJXN(I(gSwH$x6Rv@n5*@f6Uhvc%uNXW78>6Fb59x=Eg{K?dSaWrRhbO z@}KFz1tT3qkh z3?gI=A>EYIg{B#Yv69sHJeRi82dYh@kQ#rPd znkB%jFjHYY2r+j(-G9RU|6Wp0D3^Y-6u>Q|}B za1di#<5~7LPfHS5bHe#6i@nT-Y_*FdUl}SV9IBJ?Zje1II3j{V8`M8uK3AoCrLlD~ zg3)G47+N+58a-N#y<&Ffa+^A=wl2)z?dUq53%k!G%h%5Du5?k-rrIBjI(}td^x5|p z&88WkK768Tf=bkHO-t^*Q0pN5fFcdYl97~<JjUd?^K~l-qHXJX22>%%wVYWubc~;=xrjuKP0- z9Qo-6FO45#LAWnchQ_K2+qs!^nss5I5RJ-2Bw9X!R&$_WzBM^Se^O0Ck%_y$6m*=- zTB3FdpW>WOOfDsAwyMeH(-%$%rqj#W<;+7o6dz0Hy>}RKAJK9~=GI}fgIE${MWE^| z2lyV&hS*c@vNYD3*T+OB4HX`X%3^K+%Yb_0F(8|4)5{@?)hkj3mDZ9*b}Pjrf5$5xg7`Ss$^&957+>UAKR7UR;)^XZ)lv+4tPRDPhI`(jVn8a%i zAY^wQckYtu*)B^j1pGmD51q;%3;M?lz4n31EWM&RZPCKQL#1QqbyVZzP`2s}Z3;bV zSByZmjtv~Km`Xq(QJ8K5l2~h^?GEsRo0}gMmM}Z}KKh zWOvoC-!~me0_+h@fcFVX%G$t_XNs=mytwD30j(k+kti6z!I2jeRTh|NAc#}A zayxA5!R*BY?e`uDByuJlhm>^?+Pg*ZQSUpS`l|Sq@g}2ryP?RP=OH}}shA2d2Ofm6 zrWa@6J)XnY6kzC%%(pxO41H^fh(OL`Wb2rN-kly|cwfv6({^Qquvj`ssjVBwbv5XB3M<`c$i@>(N zm5HKRNoft4us>={GzfTA$f}&bu;K_DiC;w{J0IdI^iuliUYwd-(a#!UMVP z?^2nIn<17=$2I&)U-+WX%vU^6!j~U(5jWSKg zJLY@aFBh)x94SiM}sm_UQvm;%Z*DcD!4)>=sm>s6vIXwJxH2MEK za921v9KwkZbV5Qa7@4f8Y<^&+>9(?b>hsxk1-U4tbiTZF38{eJb@?-HIPF(r?*3oN zh*lqTHisZoKy`CP^??D2{^4@2nW4uJbUs(#Xo=je{{H^E+rg-=w#GGp0Zagy+-0Ig zZ@=aFLQL`-{gSV9pJa|JL2pKUUsCN>Wr?5z~a?FnMid5H`%ZEK%Pu);Qfb;4lS=V5~^aeKE|_Hr$UK=D>G~OMUM? zP$g<<{8P7a(cyR%*Za|C$NP){`qJ>jH-J$#+te7Y?GeH1L5Pk1DL~2Hm$Stay-Z59 z((vJ%gv)~M9`VPi@etF9d zLqhq?0)q%sQ<{Oy3jYI#y?(}{UkL2_!?r?4|GCD}QKMsGAYj6gHI@r%Y&$V2aZ*}t zycMlO#-dubd2S9}<5ITznAp}wMME;msMKVisrv-Q_|vzwZP~dBsWpap!2`ut3%e-Z!BEZ+x{QVSHs3 zH&Oa`!=FjJ73=RgV)i&VYhEc)`e|GF=x!}4-5`&lvy$nz2!})_mH`b zAi!bTMyX!&4B{SbaORq>W10M<&fc90G}q}J$8N9g>xk9>q zvq)rK7{-BIy)?bqOp)+0mt%q4gs-1QR1S`0059}g313t;-ki;u9o;LHEUV+^Jmp{Q zx+}NIa`m!^;~5pD_SO0N%V1{rL=n{}a-{k9*3OZLQrGL59blP?&#$U&*UB;MGQMd9 z2eY>awR&g8=|}u7>RSWvY#3zLGPMR9JyU5>sf}bltMW( zZIN$8FM#8=yPL{4_$_@gsy(dwbL_w(?Wl{HbZ9BHH|{gZ?O3itsGA~{Qp7I&7zNM0 zoRqlw5SwR;4BulI^C@uW!C%Uc0#h5^LX&1f!|zeDq3VJ62swn+`*JT;=awLRI3ZKS z*C^|xZK%GPBpgQRmDZKAdFQW=Q6O80%unEIarmOMxu=!#M#6)_Lvo@=3cp1=@w|;` zI@V%5!UwWE?|v4xfC9*pX3p%sjHOkIdVpvH`e@f!GtKtxJX#of@E>r#Yed@?-&Q+s z9vY$i_kMg`(pziczzgw{(9qD&0hBeySrP_+KfI$6G0 zQ@-m9=Ayv}r~%e!gG{Fj7<|&pI2ti>-MYDAr-f|E0aEYp+12k6bI5u&4UYws7dgc+ z&h3ES*8{PJJwyESl?E)?IyBO05u^nM4IQ(-dMK>+eWNp>Rpd`Lb@hP9W%yE380aTd zsppNOo@rTCUuglQFn%e7a17h2j)Q9vy1u7-^M}V1NCL4GPUgOt?_GM^ZX|fO1=%e) zn{}D>e9D^`%is9R3wAGf@RfQjAtqqs^s2xuqib~~MIJOH+vf0%aCG+8)AoDm^c&Q& zFq__%w2E22wi`uLmc%ltkn#1_`>c}_T@x0aZ0}<$qH4W<<-YpjpT5fA@zS>9i5Jt1 zO54l^H1NgtIqku(xE(zx>Es9`rOKy`V`2L+pww83!izr%aN>ylyhLHpa?jm6s1OyJ z_>lQ#(|hM@%HDV-R=-8ba!jme1F!8s(F;Q`dv(eQ}-`V9B(>^%tElU z>eKN@E(iJ11)mKlmMu5)@Kb5<)p)iCn`~^-tmXaPp_XCLBS+H%{6ol-tMdq=RgQ6r zpnAsRVXl|s2C>KG{x^Gdr}cbGw{$$=4BcJ}Do*_CHJ>Vj~!5doZZ@yGVaJ<+i+&rcdqZfrT z=L}()&79q_d0lq7o{vr~GthT++LhB`Uv_SejhfQ!h}!YlA2oCbb|OuWdv8xGVfxr9 zyD~cj+l1=Q>)e^P{t)=K7Dw_{Zb#tFijtXGHy(!Y&8t|B$o)`~bOD z@i3EutH#2AfCWWF;BeHED4-+nZd*~;aIOqNpv=eO36WRc)ym3B#)4vvw}ABvk$_7P zix2Fk@5dvLP~*VhXlKS`3@(wN;XFMQp-*{S;$u_^45FfDgoG)w0kEuQoS3QLduW6#@hu%&{cRx58cK-|Wtj${7j% z5@2(0yZ1{v1h`m7+pP}rE0_ZngIcRXB1I&78et!eymI}LMv6h!6VPWIO)-WZrkjL44%o2bDsEl4 z-E%uo+j->AiO?~4c&`1FtkWc0PN7H-zR$UA0LHt^ltii+YqBip=MC1Mld-u98N}bz zD*v3#)z$@B(K)xe)g#07Oxf?_NfwJbQ$i$Yis$Bp0}9hJ>s~oX^jYgo?(scU5T|Wq zOP!xgEC-iAdi5l;+;ea5%a;Kx#o(oPfkscec{bT@@w+M1P*ppIHICe>+nklNB*|0l z@Mmt6i{U5R5pCC02B^`67mEg8(mA@g8r(8X+h`(VyT0lY#kA>s+@Px|UrZqwDWl6k z`j`b<(ZuqoGL`XQ%Or62i8CR`v)VO(Nix+eV!aq=vq?uPM{n1yC6Qi}6s_f=*I zPfYKlg3)B-JSf29x|wsUJH`&g`_9cf*x>pmkLOAMulfY9!87qgu{kU@dzH{M*S@1C z2J7<~*F2 z!r2XjsaoSvwEKHz$KeL~wphl+7Uj_NiWt$LTsCybw#ALJ4s(UMV`|#+*=04IOAza zB!&d3&JuLEZ*0Pt)t?~|M?+P8nhqBt$3aZ-MpKKrNDc?S^>da$?rao3!4I2poKdaF z{8_V0vUxKuu;r%oiPDs*`)BKWCqq$f6P5s}r8=f;1Etp^fQ&mN4W3aJ z)=0q-ELd#EI63k_@iS6mgiyR0QX>ADdd7h1dDTkfe6yEYyNQ?x@|-;MMm;P0GG94u z?F`*J;Eu`b;jf|iFB>5Vo4sDpq%+&kR+=ru2gUx11s2rmlAjdt*RmMqRlO2I3&yOp zVGSHh=aU_ch^N;Gy>CMlwy)o`=t%Wv-5(CJvV*jj`c&{(aCn{ns->mcrI%{X)R`); zdPj+m|MBBlU+2L@&d^{tc+;mXt7TqcnsNNAb2hDroXVre#xUY;vy2gR));pMH=aH4 zeAj<2@O~7&VVQ1`hF5Ioyni^u{}J&wJ1J3hWm{d ziItPG>!LAqOAk?JdWL$e!fadB4~;w|%7!Ow^VD;6o>+=XO`>rO!GZ9WoUs_DyK(Yu zd~t(%(+nIdk*Y!8=l#ORIL+MKEE1X-hNm8%7TQiZ!V%6Ku2s!vP;Sl6cT7IIYmJ~% z*H=7(s~uUZ^E6PpydOcrxY8P;0O$y<*(*(zE`tQd@aH>SZz`IzhMj9^_bXd|NpS9* zYk$utoNDX9An}WtUaBmyoigiy56-N_a*DJ5n36Az$>)>N?Vxe{7czNzMxq#o^M(01 z#b;eU19(=Fan*p~vlFapAx;FNtEYE75sfz+16yZL)D{(P;kJV6vWsJ1cjc9ES)i>6 z3)k10zoR9ywy|W<1kYGcf&g|~BNzwuCPJI{203IPw9}&8EO0(Eet@divkM6`q@TG# z2`L2UP=mRM{h;q^lwsulN=1K!tDvqbyP$jktS{}Sr76>3?HnZ{NUc)FA=TvBS1?zc z@|KUTaAPE~A#vz=E!#PTB9Dh|$&dNcNOl%aU;nfWl>`ehK@E7WV7qdwW_!h98t^;G za+hYP)>`h!!VY{%bEL%^ZhK*4*D-YA|IJZO`*0~C0*NNMOl#TqGv2FXqGurLF}RxP zq=*W(jECrv{~>N9ldi@qCAj|}Alg@lU^o@|GiW4D2**7(m|x4FqXorOp0>kfRpn9A&;dG`S~I(@ zu#APZ)C?K_AE?5s&M79pBC1SOKn*~DIf`*Z&>Ci5=vHHK4Ogn|8jR*7j?d%rI}s7W zJM8|7p-yI%*-(!r59NBqvQE(%UGqF{<%rn3>~m;a+*3gFt*CV0541J;kCwMcHQ(~- z4}Tb5ka*#H)!*m?`*>{?X@C!3yGS=}u5W&5?X}6mU2)NR49{f@4%54o>an8zMz(uU zKF}HY;;Aeb->86dDB$Knqc(c-l$N#$uoAVQ0VEB@g+xWCO4@~>BjGkySwerjS|Qn{ zRm5o4I&Ss$ZA18sfWrGrH%cKG6FYHZ)q%4LRf6muC%6e^$}jZlJf~73${T&!&%ShJ zZlI(Ngz0iUHcf0fz0)lTCwTzZrOcSceUjg;3tw>B zAZ@}g+?l~J-oCgmwq-fG%IPCnI-wLh)|Zv^EAbDe+^V)&>s4tBYMc#U&3gujt=GXC zE~T0#ve|EET?4e!Y?aG8GZ>i;_s``nWWuXOZD|xs#DuG9Rr=aH(!B@gBJ2iMBj*kt z{*+7y@+3&DIMD~Gw))xM$6$l$28l~J@uhZEbm*A`6@TE3|E35arQwn`{&5ugFkIy+af86Fq4mDdoqy61|pBk9iz7v8+26wiB>t^-n& zaNt7b%piejhk9Vzs2goyiT0w$nN7|rPnRPlindo~>_UIoY>L;hc3*!j6Ev>M+t@XV zefz9pA`9K|)Cyr_cC@=ivYOmXM!n?`86zZRa&x)pRE=ovk6dfYrgn!@0ZBzCUX4d_ zUL|pi+coyulUrOp9AY-Cb%ryt>$E$J@8`0+_<<6m)eVy#=~eQyA^;McAt4F+N$WAq z#LRG;S}!iq?5xVmO`kq+_R;pl1z;z6o0N`i@FXR10&{}n{WRem6dbW}bDY@18)>!D zbgdZXF*Gt(lH+2Pk9&6QgzkR^`|v#>M#_ne<32uD{}(+wgBEJr3k9hTW~OmOh2;{a z^co`R-N+kcou1pP zT0sPAV}@hxUFDZpBN`c{o!>v)|E^!aNXo10}Zdr;E%e;mmsi!{$ zAu3JhuhFJ2Wyky@YL2d}Ub(JY8Tb%KB(>y>={l7#3(-JZzaRrH zb{uP6s(K71%d8zntog2nh&7CiU3z6YrQDh*HU6o35!(}TZKAb|gAj#3BBcaHM!uo# z=0&0sl(QZ(xztJj->7UloA=W1>=q0n*+ZpdrEB4YG)vrNd84r)7W1BcRuNJ;*q;PD zY$CfjDq5MM_%oL?jq5QcYU=&3NF~ya@C1*}gzQLclwkeqQ98F8^B@ZPwAf{8B{jLD z=Qe(VMF*qxj!r~EfZwWMUzMBtAI|S={Ry7Z!+nnXcSbTIS4UETv&VO4qbMG1E$}Pu zw;58AQTVNK?gBrI5H+wyjYhVj5DDoWzfHnzFSnH`se z8Hh9ob23SB*mVComBQ}dU)oGn+kXO7VPG6gXN?VTY64`WJkEQu1_xa)6wnm2UQxFG zs9d|Qm5I?;6GSBz*w?#aemGsR~SE+I?X#oZmcA(xEY9iZoJMSK{sk}~>% z8S+pgR66m+mN#rK%>B?nUE=FWZ>tnMN!dQNsU}LJGg!#e2zOT6>u!dyi~4)AD9mk1TW@w~RIL_kYHRd-C5Tj-Q4!Tu zE_rv@$o67D8n{r_z>y*^b+{ewERUbCc{;=WuD-Xr58k@m9TG1Ads?9^YR-R0qt!GX z_?zVe#)%)o%0R_Pu%?4yUdoXCBaZ#veG7G)cQ|0G{VY1##q;x;WusuT^IGTQ4>&%p z_ru5(e{~N<)tfgMilE-Q#U3(-^Cy{ZSkDNI! z(p>;51fLVPJh%U;wj}k5;wL{&M`j11#bQm;>dEfi$yjxsLY8s&QxsjR1q2>Fp~|V0 zV|VcbqN!F0*!v;bQswgY6Wyu>_D|(<-Hu`(3z#XU&I@Xf2GN+|43YPl+jk20u>jxj zcY;!IX@!xBwx&EtY=C^i{BXRuNGliUttfkPqpV*hLh~r zM1Eh^L)JXYa}9M**f3wcaTQ=I6JRD)!*Y+0R>x&a0XV@oDH8 zw7E2@JbrP}<>a<{^-ZLVaE(#6;nuL$+`Ou+pnmOVNN=@L1+>E*5JMp5geZz0(bjB0 zs*LaKwu687(R#uaCye&&~9y{Z9pyUbHmQXxSX#Q+t?iKH=l1X-Qyx=5Jrz`&~8gHH@(2iY}tLi zQ^{dLcsc5d3Z8j@OS&!Qcolg@CmB+ZU6lbNl~A7Vlm6emAh`Z>5&itxZyXi2y64LHCOW9}a|!rcLu0R=z7f zXqm=oj9C(SfIv58+6k5ud*d-q8}Eq+2eVwTo=O=G{$jyO-;RTk7GUX0$7*o9SRXl) zi=7q@h?GH>_iw=B0vAvAwJPtQGeynpNRW8 zY+%SBJT|fpxfJ6bIa6ScU+RW_6V`PxMz?x7DFcb0i!a_AuM?A4^2&53nm7bXN=oP& zrTAoAS_$82$FDb~jZHQbJS?wK~dn6{M*~lE{*!I z49|(^nL?;XNTf>7#m?bOCHbo;qz>(DQS{1UFOudS)7<(X@$OtTgu5_^r!t&n5uwJl zj7*LF)lCU&cc1(4bCH^4o$Yneudy`GlGS)IU!%AIjeRNbNT#Db$F^*sT1>y}V7~(q zsE9RF-PX9I2DgGiqH=3Ravoczeup*eUFA@^M~Dw(Y%DT{QfBkuKtfk{eGLc;P8k~A z?7Fw-h$|DfO?bM<%5 zXYV@{kP#-1CU*@uCZW7ae-{A_X`4!=ktaMQesjKM`v|%1hrA})kKOu9XzaF$l9^SX zv0POwqm{PTT^voM=%nk;OG}z$bfeog4>u-64;sO-9GVkjRnbdYLAN@}_51d8yJO$} z{f7^g&Qo>~BF*dN;$Qkzf+XsC`{ytmm3i{nUiz}OA17QxtF{&J8I8@Ot<$#VdOt7V zr3(A2vr8<``j)3}}+Bv$Xc-otr_af#6vxTJO2x{V2jBN@4OC*&g7USn`)c#y(XIk+t4oB@O%n+>B5wFXtCihzR zz0`l>h_}#w2(%R*y42i`{%TuCe7>j_k^6ln)!t&sDdj5md{qs>>K#cy! zCbXX3R_`j4$dC>6K>5A}!;!(DPeyY$?@~Ei(m+er>l#BoVo|q0e$0u@aznMIC-irs z5wKL;k;~G@s8RE4w!TE@aP=g+DyUvO(!V`m@0HnG=#G*;^U*5Ns7~&#N4krr7w05m zpCn>4m?$<30MB@@@?MzoBy}0e-wtBcVQJO}BAsUH~&vu%Jwb_u* zKv zZ_ZXz>f-Xa-OI6Ns40*PC#cyqe#Je~&f*qs7A)N%GcY7&0Q1YTrxTcH0STeMI>B~U zh9-P!a)_Y!e(Ed5*GZieRzow5D{|^B4)Sdf#WQP{jefUA53&~f7|gu+SgmodHzaXX zI;|NB$x}4d32}MU%Maa{57?&Dw8f_7#{vkH+mdrck&t^>C=fKx9)dD`^+0=^8PK(uo{@83GTEDMfN=1VYF@%N(^r@f*H~ z*Qg%jQxtJeF%Om62$GW3JmtU?@S?QQL}rYQaU-re$(a%+uIYy98Gw{!V)x|`MJIa! zuN;c)^oPj#q!SL~hjFC+W=}AWGx-(Qqj$SdTKX}SQ4FNg()-W$R3gPp>tGN^_XSk1 z#tcTGjl5aUtzz5RhWYAa_s#Gzk}kBk`!0eN;%xB4gN*iuFt76`#C9w#Ojm5DBN^Jz zx|o8@dYQnY5dRkt_b#m9j7B9ohQ+)0?BFmKO1II zQg{C^{Hr7((f*j&^x$e8PBRr+U%(B_nbI5PjeUP5p7~VgN((xy-|Q>%pJzJ}&5lM< z_bp>`@B^=n1!JR_VO5ipk@=8-XyvO4?9v?=EZ2rs|0otI79ddX#}+7kW>m4pZM%6} zs7J}^!4-7IjnguHOZrf2{)_DpxziSINU2Bym7CtDRwtv#8dJlWXiHg@3^`5*^h7C0 zy`L^2rux3l$FX4Da(#J6>ZtXL#q!+5Vm*V>a@D6s44MeifyoDj+7P1T5$qdl-Z1yL zi+OTNeJs_u3+)>+P2Qd;RTZ;%d*b0CFc*erIP)cyN~AiB>*kcN15&~5!oD{c_pzw1#~p*VBw?2@ck67anVeP z$JT3@&1&&cZV>Op#KTl`5WJ<)zu-lc+`$z$ z5G+BN;iS}ZT$4??|PbJtd2cEp&o^)jqn95?TJigU>AIz~V zJtdzlKwbqE_=K_ll`viWJA~$ri-uxKD56wjY-1g-uj&Nt4j*(B{pk}DdVjqfXF`U& zn#`qLm2#}>iDSsZ3aY8=Z@jtg;Cw_u(d*p2NYI9oo+VU3_qAi1ayw6*`UZ3_pk1uG z34$wE8)gh!^)bUbXnCS2@=835%#ZqL64Z1Xb7>k~-aha!n1)8V>~}F=G%vUGhC(Y{@}7+Xu1HbgodCwN zkb4JOt(07m3NqQx zJ6+1~>uIL1D*@*51@=jVilqu~HO^Cc+CY>=XxmgpKS}zV(O5&8|KNCql&WMXBk=>S zgk3U4GVE;eLzJNYL(=#w&0uq4;&~+#h$v}_jp4b-)8bX$g@NSczbm_+_(}e)D@MX|95|L?N$839o|F(>Nw{}BkYCX>C_JlU4uCLk!L)+{e|Kvci&AlB@PN@&jCW;g- z!?<0#pK@>3Cs5>CxNv4_>}7x2y}1EtsIw#UtW(sTlkps(9HR6XvkRc-=!&&&&#Q5@ zz+&wTF>snwh<(|q~Gn$!>x45_Gt*c|3{->Z72gyS!8R)v#b^Q&f zP7kLg?W5-LL2f7(u2#MDt9*8)Dl-FL@Z`qssr3^cA*Rt&N~pYa>>)2wRaXSlPRglE z>&q>E`gBB=pz>t#Z1!tyPrVp7KX~+6hRJrxS}4mKgg_x^@tHv982= zdH;xsH1TE9%&q~);n&J8df{pfDmes>59G}n?)u=To#5N5gQ0D`ka{pvBv-2LXr^2) z@yS|cx#g#9*YF_6yB!_zC^))yn|LA$XTa#wAgd-d`l`iS8rj)0#Ou|g?)6UJ&rLq3 zlP%h6M{#6seg%(n7D4?ptw*8k?y5G2i#Sgn2L`Fj*VxmCTnJ;smkV}k3o?=mJqLrh zqV^NpJOds1x=aCsqeCRL+#0d@lm_dMFI|h}3<_;eNqxCT_qs6fRRJ}U2MR^{b8$pQ z={XH%@iJ^|b5A!gE{-*#G2rnrvkq{=X>@p|@`n7CmLgA^Dt7uKd!uw9_U?bBbz4N6 z*0}eI1$KZ>oVKx{naV9^2R~!a?Sx8abuDv=*?1Cz{19zR0BuOQbyd9+z2PLn%ha24 zUl|!?H1RDe9c?hYFB1YE*>#Q0!$nfO$40fi8aVNsd%HSEF-vC=xIrH{cg@1^xH2ZI-?IV=evDZaYHS&v>RIOG5O8*EBW%@ z>ff=>XS(!hnH;DtCQ%5`oAyhnIe7+QyUTbjkMncv5 za~~|YJVSy8@NHEh-p5mk4xf0M%J+6VWCu_wOQj86WdC>%=J?s9f>VTP&+3(1S2Wz< zf2uIJqs?t?bceiZdd;RqA=xuq$K!Y~?Y24W2=l&psnpEhVjK{ME^gZkQBYx8%UN4$ zQ7dEv(lOm5pUb12b`kQed+?0+Kt_hY((qnQ+j>^YGV*XHp$#t7K|o*nfFod)ADv5l z;SaU)cD9qBWYMBRU@6rz94nDfE^1jdPWcuy$B@CK{(sT3FVe4@A67~$`OoUF`?2$i z*9Up#y+`D#s;U|s9Q;8!YRGw1GO4O(U>UA#U+*L3&qwKd6-EbAkKq7hOfKphKW~X% zfdir#DS4yz8Wg9^-t8xGrSh~;ZJNAmauk?&xx!QU~@FP;E|CSEAi#%x?cl%Jx&5>?JJUOrOV$rh7N_Jxk{KWt0>mb@GAlti5ds{+4rZ+ND0j8zb=+N-WW{3D@SA1v9m2O+p zSid;{2y@6@fO^MF512nS9)6@ATTFDBByIv0`~(XdLkM4t5cf_kvO%Q}9t|hS3#T|e ze<0~jsDdW6yLm@kGVl^ZKB|yrD~?fx8Ej z*89TMYwb9w;Gpmp`Ag0|tB=f&yzban`xYsyY0>48yV7|J3Kt_8b1Oz=le>rY<42c> z`b>YkOg~*0u|b!fCyZqNb+`?#{dipu8IBplJxH(kda#s6U6uVVA)EE$w>B!8)dt3%8id`@A_fPgLwm!XTKPjiu>j|-jm;~a=Ij;mgNXy_`= zF9Uz9R`&85R(WymX6(AMPL3V%5Z$iE_F@+jX;W}4Bf7bL`>XaRb#QuP7usJuJnT;1 zUmowa+dOB&vm)+YZ)!tCU(~OHOHyIz+-2lRyf8ef>Vdc?S2ROWxZtWvKRgr-HhJr6 zn^nUbP45fRLvayJD{R(Czv+B-l46;N^+I| z*y3B?fmGuQX3)USRgv}nlG1WJ6(uhv-8bNVx%Ko{us1*eP5}96J@7-bP!T_w5rGG0 z%(L8hzb3R2VFfBd zI4yj9qD%O7M?_ z&cPM;3VMxKQIH$-;3@Op3FTxX@4e!))6Kh)u;-TiAF~ybxfaoe!{Ov3ogHZo!BsZv=gDI zBFE11Am4@4{TQ5@)L8;{7Nb)E+~t(8+l(->c6*@feqZvo+1|$Zt&H}j?6z8L+NIdSUaaPR_5;%W9y=!U6{Dz zDjv`E;@24?DeWe7@-A}HVhG-`m~LO4VfnJTl=ikYfAer$TsM``(^habJ_mPichmI^ z_Bi^!$e@YcdAU>(;~PQ-T_%w?5Aju(K4{3_Zmg}Nx##!zNgXe z^pYXGzu*GtNwFmAZ18k*q19ns+t7zabRr|;uy*sLh(lg2e!7Sz{fPym_-tn}=KeYaQ*C(=1~L+(xs#^B z&#MU9r~H^Q=wnzkvOBZ3hN5?L!QH_kpY>V98p`nV{8`j2{SXh>0vO1-v6j|vuIBxH zztY&n?ETa+5Px+C6Gwc?_A5!)dwSwvd?bmsm~~y=c&{71U#*CpG3?`@BU#kJc)bI~ zJe~j6OK!@b|FO9rGUZ@Neq20|hnG0T5ORvX-TTn^!$0WpqCbYL8+`x%C(PS*LOdG0 zMSG(e-)tO*cGCi(8;iLa8;!xP2pz^QqL?V$$B+nTC=$?F%|0++eajVkUQv2l=q66lJt9ucO6cNtD18u4( zsGb3MIV*4TnFAY9p;2dZR{8w_IJ$B$>=Q@C*WG}U^3LZ4UaQn_+vDp#yT`2g>`415Y2oQwJt zYT#3F^liqhojb)nE~j-lSDN?iL;9h$oQnKs)^oG6FG6YM{;O4?n5P3)e`#>h;_Bu5 zj~e(CY@BRybace&A;%xpHZBw^=JO92_!KnM>ot`xyS#w+bHn-5n4h_BBRyWQ=4Rw$ z&cxH&;pAwKtvSOE7HsFpBv5qCLBu?YHxFIPKg@W*&CHyI4_%3>#Lc zflone??Hu1W$<)+yrJcaZ+*!8X+0?A^)hp}n#<6(Klq}X7vE1Dz?R#l7d=!O8+=Pu zp@f$QPqT>cUGWtO#XHidPQJ;ade_-(7x(pL*G80iZ5Ug{=kG>5$iSyyg`2nEJqA7n zYZqTCS15~zqxHY;N%JTiTQ`ks&TrAYaeyhF+5q~^m`D5iwlw+RXSQvgL?!V>$yd9x zV(Xv0)1(xw2F!Xq1D}FQ%jru|^!j8XFVzwnujqWa^2UMsd(v5Lik3b)cPGGoa!>NuBSnZrH~8k{_Q zDE>DMdD+W{%d3q|FUhH_OEBQ8d9+f`JEOcYg?8h?jDHw!qoVgN9-!bE9TBA|{-MEJb>4tdDR&6tawYzq* zcJ2r&m99qbu8rCC>u@{S4B6TzJX6crS_!PjJdo~t`f~h&nuuC+kTxwDW_PXAG0y2RoZTfZv0aQJ_V89 z?&VuB^Oq^qbSlfJCEN3KOgiTZq4YgRjO8G9Gslzy0~QL-$`ME+?nZCEW4}XW@{( zdGUGgmt$uC!il|nkg4yF%nLu`hgB?_K8?kjg7eFpA)AZGcJTFQL&W_lY4{Ga*B>ZQ z9(9Q~`F?Z<+V%O8gO@h(UR&jSx$a$-9*Z=GG!c4qIYZ3fcN{o@z1Q!*IF>Foj^#g& zqFZ+*d>7uIxP+)=i@}PVR8~z9=jk|>T{olHH1~6QD(CLhlf}Ek?lHxy)Pze=K1EFdw@&my1TmH?z{7Q-&r|x=AJY0%ro(v znaSqDFP=vH z2IJVHw_vwgl&8gG$J7Btjs{`e^lkW@_c}!yZXH;nDuaph@mOu|Bq7lU>PZqua{03vj(xV7ZE-G#8wtKr&dC10f(LRKv6yF3g>eV5P zB57Q6z!e_@USQSmAtd|&%vf_4QEI^zDZ$vgkjTb_Ekrh4FsqPkOvDB6I6ma}!%nIi z7}iI(#$wz*pSR7B3?BC$qg?aWXlS5UxZJa|;Bt5)|IPted;AX47y)VEi^_onAMR|x z*dcuUCd?z{@|nL^1Xe$Z)Vc^_A!>IXg2^>}mV?%flY97k|=I4;bcz~$4)=OKKkA|$@TvCF~eHhvV$OPB{LS>B5h zj>D73sM1X2ZoxVA_!l6TlY$kBAyOvb@s@cQ$A%}mc$d>%q!wv{+>WXA>Yzbu@s`MN zM$BjInlTQ8hK$B#cYn3=VUQ5_8Rz$I#Ds~ee4oDKAR<$XoCBGgjMJ-C_b1LeNi;Xn zBi;|Nbnrlon!XtBk;z=J2v=uJ8$1Am1`om7BWhbRCU{}V%+Xx^nY8&l64a_iJ{j+D z_=FeQPn?D_?20-ygd*`*w#;VhUf~&*!B3^XHf;ZJ_U5!Vf>7_sPg49?gkX> zE+7ecf_dWxVDR)+c;lae7pH$CvZ#9YvQ_&L$~RMtEDbky65TXtF!nqML&BR!m^E=2 z7jFF6S-9sBtqNEItekx71OM!JSF9MI%AY|aCga%aSpH54kOzHwa1nFHv-N0Nc!>?zpWpG0pwYO22I3{)1(aYVUQE? z2J5B|#E8kq;FlPRBMYZ;VMk6~jhCUtA6!(YlbQ^HaTUy6v=DX`*$G(&u^uNefz;Qf z+n?f7usha`X3J*~rmZ-RP>CG9wC3OG$o@UWb>T?_++yf_7@qpz%2A8o`GoPbKZ? zm5qZ)+y-IH#6zS<0mS${$7<644xcy=&q7rCI>!4k<_zsm+2X!pV} zOaiVhpUH(`Wpw<$hy0xa*p+#1$ET3Kz!aQw4a4g@M=_P?T{hiY&ibfrt4Yew_ZsGm z8HAZTuHxC<-Q>LmvN3e@YIuKjhjh|cPkW0ar+v_Q(o|R#`5^84^#%iJ*lnzsO7fIT z(=aSLbO(u9g)0)19gEW&CScHjez@ZP8GC2;<>NUBgBR^ZaDH1&o|oo@wIsb#fZ1b+-k7x(K0z6Ha$*zLhOzHm zxyC8KoEd2{F8@aK+Tg)B@Hi529``YQyh?9O7(WM(yyH~?OW@mjgF#00b1db{Z}7-z zIOX~EXR+z=yL%3^#;W?mqef1~aiTYlELn-ip?n}hPHqxj+&G8D3)ub($){Pf@aTh@ zJ|fRae0v3RMi0QOU03ns&JI#Gd9pDG!^f_HPZ}SVz$i2DY~O04H%L559T>9i{5L+d zB5hxg7dHPoiW}1m8Z;TZ&%NO9u`tLAdyQYGkoZqKjgJW-I5clESDvG%t%X};@duZr zH-x4&uwd~5)G4per6#LjFr1z;!}_-){J1sDT6S5)hR@%HM?@suRpMu$j{h~ zc=hQn=JZw58-pj}tXdnuNYim~-9QqzK^Qyr2-qBq@_mZs!vK@s_--lDdd2jHdA*ic)vp#F9J|kZvM@*q z|A3tv$MJbN9-EImD0WUKqm09)#nV+|$U#Fe>7crvR>A6x7l$Vj8J>|IF5(mwHHvs_w z5R1jIv9W=-w>ON9jkzs56$-T(?mvrA3_)rz-uUOBrhQfDll10`3MnhGQi4w&UXWPV z;whO>Wdv?#^7FtBj(SXjBZ^WQC1R&EsHioyK*bkC||Jul)hypG;ZD+x)JV> zG@gVFvxdUa(GiYqTcTz;3+U!AtIk-y+ zJVv#ugi?$zoSaiJsJFdp%TAFt%2cU`*a!P?^0_PgUZ$eU=(!l$zXR+lLK{%emFfbM7#DCP-LE&L?H){Zl8um z?ZIeM;&xryu&G%eE!wq%dCWx|{bG$No$K@W)KTK|_2U?~=oFd`9*@z3x{>^;3ysL< z*hExbRFxqZ)I#+|di?W!7`yH=s&yQI2}1_J!OjZDHcW?`z!9D6sy4I|Xy~A9^+sq~ zRTEww3?^=0hoPNGezSS**c!DfmL_>#kgGaIR;bgYIodU>hT;5=z&RNhM;*l z8GhUS8*;4MqCxqBul%E5-^J7PDj3tHI?{cwWB#0TsM6H|mCBTbrHN`~mq^P16%CTG zZtX5S^Y=pi7Gp7HL{F5Hx?$nLTd-^15!QyP^qAPzLX&2d5&0qrji#-{?4fL4vgvj} zlX_KAN>3~QYZ3j@RnfSC6`q{Bizt05ULN0%QccETY@a4@KC=;t7LKT2&KRZ$!hwh3 zn6YpX>Xk8o1{-;S21=K;#>*XtVLos<1~<2X7WavG7Cf)tMMlL|aI9;|y@w+$2&bKW z(WYY;SQ%?Vp7{~$r%y$4rQw)3tS8z#IG|SPB&^+a4!U)klYGtl%3lb>(&f>xc`Gz4 ztHjAWchSUQ0LmK|t`*v)Y+)An1XEV+MJyvgzX5a6yN5jzU+l#CXL9syTOV3%@o4Cw zT+K#kQb`Q&Hv&xFz7|8&WTRGj%R;h|PfikU-gSme8tTsyEf)cA4%TX2&s?HW6SO< z2vgW#NdJy7=JtV-!E4(X%srZjUSpPEt~c{Jpz+Qw1usys(d3K z?#A48pV4FLB%)I~z$VKLd-iX~tIM8fwCpejH?x7RR?#KR3|{S-jMG7Fv2DdK#q|Xt z!u>8@XO}@ghdST*YDouWYS%~0b`CHOJA>m<6)?F&ZT?;XSutU_`}87iK6HV?(h(EJ zk3xrfmEnD6J2pH5+IOx4Lw@CDsWLUuq=r5&AAXE1vvfQ-dK#5G&BSm=TO2*LpXlrk zsBA`LF5wLp&Rv9HeLIXDJrvzKv`4brZmhl%fv%leLO(Clg&MG~+7K%bdp>=DRnOj2s`53Nbw8Ms(Jz%O!`U~vuHH}ctM21UyUtqwB z#b{7kw^%>o?TIsk{#H}->``aMRDS1w19S+PGl*Hqh#i;=?f{xxJVcj~wppW#reYw`b*yR?h)Mfgts$D$(1VYw1Y>q=z=$pma3JY+ zaA4bKE9mjMML^n9t4j6J)Funt54?f4c?fQve-4M?%h0(pX%kQ1MdK!pu(C9PIP4Nm zM%2ZYg@a(uw{rqbeN?a(QLVvm=+6T4|54{KR|Mw`>Gst}$fesm1l(nvptRG50z4 zdCM`OSF1wXr?dT4W9u^ba_0nA9y$q;RRc^IJsuq!TjScX<#;8jN7_s)5^s{12BlHc zt|`hWA`vZWg5~RHp=-WuG)8#~HQ7*uH7311HXHjr>S5Q0-i5avRm$+vv#NLmRfuCeO%xa~$KxY=vI)d6+Yy9~|2^N9xm4q!05L&AN1gG5=t8 zb+}FCdT7?9DWZLzqtT@8L~nE^BN(Cmak z_9br_%}7&laP4kXoB1nRRWw85ryKB&uZ&KO*?u6AUp+HatyBfiPc6rddmf0D*23he z<4Hff9gNeSVe4j3ly1=kWl2OW%hy7d+j*il9^>8JNVFJA^v2+hXk0@B*Ea6P8&M0i zsHwhPx(Z3$2V8jNj}D#sz?vQO6oS-WZ4*>))D*3WOawhxj{u9l=w7Gz#+i&F3zwG8 z#isj77(aI^di~NKEgG34^vNNt+IA9E1};Stk`0V96L6lr*VcRH9G6Iq221F;d<4V(o(*3~;pL(jz4OdfRHG z?^abCJ{}58AbMk1XEnW1p`c$cAY)cmZ#1z?!?uGy&@m5!^CdTQ9=R0l%f(>Lna4yI zI>OSt6a-(+<4l}Aw#@5C;?B0u0@6=3AaxA5xcwe_uUv&jHaaT3ksD6>#vZ8Fzdvdi z<;ettjDRON1~I;8uyXY|)EqDmBYSipc}a9Z;ytW5?T;p{>|n(ABLo6% zl&(hF-8QXJHsc`kyFsJwa28<v}SKk7)8aGGl=Jnut zdn?i_4~9b(^)VkS8^)-l6@kSox8qG@0Gc{X#t0%Crb+j(@aQv=2OUZOhflYdj8BQ) zXx^kTBE4Ut+0-4FLE3Va-l&fwSF8U0V^d@l3WY+UP$)l*?>;t-4B-9{ zk&%(bTvSvP^Y-}z=IF^I%&`+Eh&#lbICqip`V_{*Mi+#Oj)`UNpWMg%w&xIY>f}l0 z1POcM#Bt{MiEE5kP$>5t_2>Qw$39c3RPwR^fh2uq&Yn8XoIZ1gIdf9l5n^5(VtP8XU~2c6$@r)8o_`k#3FCe52p9j8r_VB{j;sE5c6Mg&-@nhKq@*yL zH*aPxUcAV}$H$kL&wtcK$Hp_CUN|!cPTpj~BMO&$baXTm?DLX2a^e#6E+m>shzVt$ zUp>K`zUjtBs@2qEf4PL?cXBN3ZxVEqtGv30arfw&1`U=Ue%;-*o zm~$V}RM$yf%-A+PnCqc3)iuwF(M_4sO@=bBV|Wjq%#XL3sY7QoJ}Ii}u!qN)nx{jhWhW0ORDD z$ou4>VBTKZ%UpOE!hB0BL|&WC*mYdNB=gsK$bv60eVR{XJhOR^-y-8dy_tRP zMRTMCa)X%JT^lmBx=&%Q`(^N+S~7=T7thn&cc+fKPfs!fhc9LPj+k;V8k$9Jw`PQ8ie@A0I6WX5zD z$Xp35tiuA&&1S5ute7Kyyhl;ee3+??n=@PPhVdT7dAV~2(|6e!ri9`x5s!U+m}W~a z@K=RNeE)=LsiViVUwM=F;mHVQmiOwwEWZAp_uxtKWCk~{#WW%1@-Qe*9%Rf1KVK#+ zzCiYiqKJOR^lR6dx$-uF_fg~H38t!TWoF>o(~N(fXvou;7jND(S-E`vCAc%=x^!pG z2W6?QdA#5 z`xwXe^O;Zli-KMDF$0G#XM)x0oiaC_nNZ7sv7hF|q^OIWQo+1Aww9T(_9TGn<0fINSWZl%<4Uwc^qG~U!Y_%{jM^dhYVm|MHH6jqA1Dx_RVO>j63~_ z_fbd5B)rQ|L0VSw+McQX(R*$yKPS3(Om84v+?wrOf+T+HTxsp-%UtsFhY{eXU zUr^RcMKrUidtGMqp0~UY@sma|n}>I1S`D4UY}~kk8R<}y8NB8$Q!KS4|KhGMVr-g> zX590u3VBb~D`se|n#>MYb!AKZ!>=*@n~q^zf437(!UkPo8dR*z^jLC;@#WQ(lF0jO zZ(k-gQ>8N%>3+=gUpg~RYV8;sr_aY`GF``=CQr$OJTL7PGp^YH#yP)Vq-3Pg-pry= zeV7$jRB2aahm*R{idp?Mmb=b_m6L}@W--$?JYtG9ALL%hl{t*vq)nuj6-TK^XO2v6 z&orKOs^C76fry8zm^RHvFkXCrjD>xV_tAySknx8ZHScetAi8@&o0iP#%b$6l0+g~$ zX59okX3jPBR)Y0UWp>W&#jHN{PIa9T#H{MlmYH|Ni@VN4smNyTEa}M%T>qq){#Hn{ zm?eE$F$drLeuJtcefLv~nlJ+o@p`H#BtKF;b~BD07BT_si^z4r&E3qvVJn$XHHD?f zOlC$^HDH>}I?kl2br6+GIrI9^YG&r9vrGmNQZ^rNF6zygRd3JS4Of?1B_oS|#mww8 zj(MI~w1=r=(%znD9ES{H-o$)+OvX5)tS%hZkKYwF64w7bQ>R>Irq9Y_j33`+Qp(dAS1(^CJ%yfOzF~v zIrdpi50W^&KRlJ`KKVTF!$QI)KVwEW9mu$-={HHF2QzOtsXsSV9V10X2(z$PD`x$R z!hJNhEbknc!OYtFthjC%=JU=M)IIW>5SOJ)n^xl) z-*n!Oz{=9?*vn`MqB2je?bZr@^EHN z$6Cz9BgJ)+A}5Vm*t<1zoC(D^S-+0@>faGbPD) zNwzBf7dFks;iqBWeW>G~LLh*M$wE|g3XDoyK~U&SD)Kjzi|{~ySX65WD+3W&0b;)> z6bOXezyC&lSGJ|;c=q-KYWM6616eL|a|@hh(@wBTdW-u$>~=7PA!8tr5g32^RqxiV0lQk+xcB%IA3}vxsDs*FN1;h+-h)T4Vk20W`ixg@s;#jU zl3WNIbi$Z66}amHtk9veE^eKB&R_pIzLlQPR}Yb3SQnk^7ySxahkiVpbCHYeg>)eSu3sHdxTjj`u0Ry3t^i`*I17 zg88pClv0x3YG~1@oa&lK*T@9&jC4rV;=?ckXz7)LwY4=$n;JqSFT53QJ_v>T#H zy@C~@?8?tl`i96%QQy~%AXh+15<&+1yvH{nx=}7SMV}cn(6d&-Atx28)TFlxu%!0nHPw;^R=S0#U|YD#4~s8F^M%I8I!h2)R1P=xf1 z!q5A|vhjN;Wl$QGMZb17ICJ9+PMtdp>jqs=!GshCX(PB*$FdaohJ1j1@2)6(I;94B zbm;@T>IRUqfeHQ(osrP8Ct6#}^K}d7l$Fq?U0FQ8n76f*3bB?D5k40&u9qs$d-v>z z#k)K(c+nR0tXlYOLa_)b0WYv+>t(=x0){m#ylN@d?E>CaXoL=xRbR#DQQ5IG>YJND zQQ}8Q41BL1!&_rVjB+f?`+YxO)4AW&gK|>OYBa~P5$$;o9{q}#IHnO?uNT=Ki_{@G zY%pT}bU0SZTgo6t&02L(*1YfmKXNs_F4HlFrPu_)*(GdTER{po+#a*%4Mo*Fxf2

n-VOO#7ylX?&ZlGW+)lhlVS?_T!Yg@0jPA;woK-Tv*G}bz z`QW*-6nZ*TFDyg3K(j$TkaX)De2O0X`A2jIfo;>ig~y#|&~DihWtFOTn^&&~P01&C z1gh;DCY3;9Rt4R=cSWHEx}?t3Ygrf3pI#y|PPLgK+uyS7Fb3T!6j?=T+5q)yMB~0o z;r8#3LDKz|pGH@VX{4?M*`Asv?CZBc%&~+QReS3wh^H&k1F zm&EVsjhs+#yo4!wx2u{jznlz91!z97JK{8iP)@ zg%k`#mUgIJB^(d#2k?G>26o%}l1rRnQgQ#PC+hU*f~rM=u;;RHmc+~2Kx4B zSWSJMs1{8043Lprq%TVJhJlGC*S|ISrryv(`7(`AQB7?LbPQl56cfEsczi4WUcJG- zNJjLANqx**Gzzu&;e|kCfM#}eV4$s9Q7s^2kAXcZ;^oPweEUq~IME9mPsL-v{H~l& zK16RwGu~p=P`;l<^v0-J$56ieJk07^i~LlHq&FAfq3nq1EenrlIJvZIk2H^q2rSa> zvQcHr^Q$mY$P_lPuUEa$>R=6HQ)uMm6ww=hTsFQNuAcLMmjvm*>a(&@Rb9K0Hbs}n zMv*p!gFKJjKK^_428BYQP$(42{~CYY$VWPVaj{V_sontfZH=IiO33g;6Xj|*gS99M zLD4CN&-EcNTxT)=0*c=~hwC4Rd2LJ`KMsxU8e;UUS(wGUIct}|Ug&~(8_yuUQ2#my zQ6V4j{{4I6K9q1y6p%%F)e1%gO-=H5bO=7OVLyCCVw(C;Opc_mAbj)>M0`p%*O6yC z>#^Yhc<=WK!I81ZRyzYpg%n|d{@lAi2E~#mkmtuo;q%82h=|VwBO-&YUNgD)cWYc7 zj>A-G`B|_76IpsPVltJmE?o*DRVp~xv-mPXeeo_%01Htn!owmE85x7*Ofu+5Pa^*o z9+v(aUL7_R|G}~L3SW6ZkviULL!_DnE zBE27B>VTfAcX#iOGj1{PfAs*dYO*X83sKIt@FW$7kZ1#iHgfriH+I6!hJ@2ALCa`p z8Y3&Q$l(14l9QG};%N?U%>6qg2YF)YoT2F4_ZL3Thhg|iC#1_2g$BPr8bw+f(scD; zmAAc}8Un@`j2^jP=-e&^WF$`NuoDyP1flv96jCwD)NGH@!-r$cuyJTo*@oMiNRp9^ z@X#1Y)zkyS$jLL+^#waAO`a+ID@_9{EEXtbP}s;(6#cs6(7x1T9J-}CS4tA{7LQ_6 z(6w!&A`KJUMi`*|@P*j5YZvEs9^Qc!vxcIY1z)c+(vhO64J-W;N=#u4fk6gRQoeI} zdm-3~A9>-44U#`>j{S_SeTyQ?5u&m~N8sT}oVYDO&q2+hAqZu3MlgNv+(XCAJxI+?)6NjFo;n>kAUy?#5upeXTXyt8bTY!2yB~vgECcVbOas7(OP*?Px zbsRzy!@u6C{1!PM;ru)pvG=y4C;#p~jPf-6iliUEe3rfJ(M<8+d_~>B-Vi> zQwoJdrCZs0T&{d^nPtmXC@?@yNfU`bgj}NE0Yii0aV(A$zK#A4#4mc z!!fw$0Msxix{BOMizaSCDSiMn1f=kdF zY=6uIcAbgdApP4x-TR`NxeoWf)TnSoC1k0Baj=G|B7HaF_t*6Xkp*EH7<{EZun0(F z+MxX~C_kRT(=a0YBptzzui#6ShUitHh$ba^LqoSJ#;sD<8=Ek-e+%$C<|8{f1yWPf z5_PapgUFhI=#3J-7y5mEj^6mue4lJkC=?2XLZMJt{&EkA{d%%o!;WZE(-Jb7oa;cd z{~=vRGKd#JQ$vI8p>bhZ*y(6_W*P!Ny@R*658i!@0Bge%7A*Js*N~N+4H@Ym=ctb> zLQhF!7%b4Sm?nb+~EyhS#AuARW_LESNS{e9J!nDR8dxN#ht)=Y*&+kvgyJg5B6_?t|=Yv(58>g%hlSn!M|k1xjFEQ5&*u11$WsFF%s&fjPCX^>e4u*ogNJy2 z{{pI~c*6aC!GwiUu0T*wIDe%E`{kr42l`}S&%z#%9}ygZLUt;ioUC}5lr3q3RY`DBRN{1GB3Hn)If zW-06CM{f!R#pO1|5Ud)wW%$J zsfieA3B?WO>8UwLOU}qIGYgBdDBpMr?yKt-&ON~6=g+ZcL3bE(Ayu%?*U&M7O?f`g zZEav?RFdV1;XY0oy!r|@4bZ`cWk(TFcxDYImSv$K6(X}}-o!`ZU2e&U9bmhXT)8#wlD0Fn}mE-L{Nq7z|YZeGH~sN(CgE=jZ6^F5a;f>lP-Wi4&IN%*n#~~ zl9Y!$K7|JfOU@sZi>w{51{qp;Ous+fLmsB0~@H;K36- zaM=!fbs_q}B))loPiF0L?+JNV-g_TD#-pRt5a{fJSg9)4SOY^wQaU2yim!f`<)%Zo zlnyj?RfY-H2p;@7w1oU7eN{y&jI4?*S^r_^L0?yd=t!dLzX^jc5B6c!%G0PnWEWiS z^Xa~S3`_fVgtP=1;tcyF5B|C;62RET23pY(NGPEyNpsR+D6%H$;645bjFLOYn|(*4 zv5T;LY8!}^GCcZiHfC-qvSRjo`NKMxt-Ji6B_e>XZDn+-ZGlTS?m?OrgA=#kp>OYD zP&;<70D%rHY|5hy-%eRus80Xxp#Eu=G4_4f(x-P{Vhk}McM z0+J3^Z}?kv#)D^SdgH+(+;^IU&)07wNud&M)@YEHm`e0U5_heRgvh$CnJ#G)Reds| zq7m#L$`)M_1f<;|^`dkMAHw|rSOcQIjtEh|r#DFb3c9lkbJkx%(~W7+s-5Gp0O zw{bdVZF^cmd3*z8y2?Z z^7V$5d0{1BXk`uEm?*@R@KS{&g|s9@Z~UzK!}H_X6bgkxp-?Ck%FpD-dsK+Orv-M;S&e52?B~*kXg}*$tRK~}U}90j9Q~)S$LXVsVXrBIQY{;wY+VcI z_=?zicppxjIDxZHi%|O06Ws8R#*kl+V`7imKXtWINeGlOq{qcV%g`K#Is#UF@?p20 z)U&LNrY+i`ZJRb|+s*+U+P6XNau%?vSRZxD8LI{x{~{_kaYXK|Yw$`@i?=cwFYX4w zzFAY%wT2;jbm@8W1 zdCjYkA(_efjH@@q=r^=A@1usc7Q`YU`RVU0V>N#?9B!#xWViB2{!Z4d%Maz3|D3F^K zj@%-v>^QWvxRuNrC8S4W(-Om)q+s*KN8sm}c$9c{W(`6c41r@gK7E>+5D7)a@`cL- zp_u&3dk{3mY&mNbo9x%oVYjK0Apg8p@*^R6rlyv<-qnBxiEpud6&b@qI~Fk!g$**Y zoLFS%7TMaDlwnD6Er~J?-O*IwkK<>r!R1yM+6?Ga!X$_miIa%rw|7pi<>{RNgKo(qcy*>qDqtKaW*dtrG#9I1nd@~h3lQj+!Xpn zWrI=4hJ@cT^Lx?Y%SKC!ZK8!}(0?XoPIKfMY#}RCLiYV6Kg6bJR@WZx=Px2&ea=pv zg435y!sm+&hPtZQSL(75_6b*T$}6$RM3@}!uI$2wo%f(#l3HvW1fs&m)DqExrceMq zeRI_9Gy+|<-(czPyHK~Un>HPc77;IT^^LmmOo6-muHs!-GLbjlE1yJMyLb&12Mk4# zok5Gi%DafjYoSMwJQ5S#SQ6jT8(KPg(2exOyuFu^qn1gE^p7}nE*uX1I~DFU5&2ILY50x9VgGrG`S+wnj zMoCZL?87f9Bl)MD8i=ds&mmk*s2L^~FYfrDZ0(LHYp#+3k%079AMGdgB9*&V!5}C2 z5j;NDMfa|idA|bK)pIJnQDi&KVvv3=NxMj+c-jTfMcc0S2)uj&uR;p1GFHfPaCh%U ztU2n&T?f5+4$VemF{NEqz+zy_r z>m)tJ#F+HS&6^BE6NCHM_aKz_RKesX;lj5uSNZ9tds4*!-U=&%n zdifxX9EPD<36u4CeYfIL#GsjGGS4oJuw3nzi1p093S|1#^>XCwCp_`4R?A#$!UOO8NaN zX?7gkUcDe~RuR2H@L(~^oCl$o-H;`ZxoGdaRdS~rW@4(3D>XV($%Z@l5P!$7G?RnYUJw;{<

0P!F2CD#OH%}Foy2ODr$!=ZtJ0r&5ZMv@eTJCEI9M+Ph93VpDf z4WFBLkW;k-TAO^r++QDH)}g~_R-vG)ZERBm%}NJh$;nW3>)r_Lj(yp20XV$p85Zn2 zj&2S3uRsMNSl4fj(xFZ`>2HNT&DqH|C4!&d#LKKo7}%*s{^Vv(vL7y;a7W#N!%@pj z1V!viEI#3fF{@{zo;m++?NVq^%@mh!-bU%R6VNvQ93d6%*N-E+R$n+&HAFx_04Yx~ zY;0`c?d=U?V`G#rUmol^R(~FnP?;1T-uptovK`7AYjFGL7lK?Xm8$bNa?|1w6&;Pp z&@d$C3Sn$&3Ii?m4L<)khTFDr|7OgY!~L7b&yo`j^V+bCy^bvhA46MLi14sLT)MCm zVfsC>Zn7g8kg%ZyFs)t_`kD8z@6WcP7d#WKFnVYQ7?JwK68-TR z++Pc+xFMz zp7-3i_lx^y?bs_~?OjzXvl8{>le746kxTi}Ra7yOIqN%97`YbjFgz|3{z6ER+X%MW zn=YV~(Zz-yPf}DXKa00F_EN54iEh63AyP6@;wZ|02(x+Ffs$Z}F)+^)a*~KoLfCft zoQ)JcOzly(V$+DwDigZmqLu`;RZ(Jo0vQNfE~`!T?L=o>bBaSsLch_tu5cR zKl$&?`Kf5)BL50n=MJMrL^3leCLr17l(XInC9nCoVUr3UkESk&Dg(QJ){xGNft}~e z9w@?Q6w#?id_O?e&V1UNef=X*J_{5r;X_pfb?tKx?PKNcrV*2ett|RZK zYUO&RIZ#-a2CsAYYV)}Q!+S9+b}1UFv@i-8#G%{hw);W!F(uN%1~u4kZ)ml2xE+&= zY$kwu0qby0ITJn+(-suG$vlGKw5Smk2V;qZpHXrP&`l%ml{-Q;M(0Q4xHgNV6p z1qW2n8F%{J4t+37d^V!Q$56MI3z0-3oV?sVuxz(Hwhs?RMp+pBZA@^UE^8&ACdV_- zGYV0{U=_sJ0T4^{!e)WGb&fK)HV#Di#%%Gl=-QmV*m+TiQcy~xcSyO$`hrH<-lsxQ z&{J9jOUB&QZluC#zh(M^xA*p>Ic~>)NVCZZy5s(QUjNJB#`Dxmj#MMhS7Ub&&mAQ* zj_~mo?AhE*>fT%oNtt(LcQp>i@n(`|&?QxBW(;1(1AE1Dx!w4Oc3;&j3XRn|cjO9+ zdcH|4VoO823l#$7g9bF%Yw!a5ZM$)YCV|>nV4z;qMBgF7?yj2I3JYFrfC((8k=g-i z=fDAPgT+Tc~hSFs_Dtoww8e?UhwRid`@gi>-9Cl`J7=W2k7P8-Xc} z1eUKb<|5?k$Vy^RDOE!~Kk=tVevho)Qcz!6mgn~GRDh%qQNR|&?#%%*htCRn)f>EM z7qpo6XNlPJ&e+9S>n8^&S(0r0J1OYc%4%&b$&G^O@4$GIoj=&<+Pu!F=~ctI!nBTm zYilA}I*xW%ArM(mfKwCcVR4m0GZqndu2+@ANKjc=nLuag@B*ZTaHs}H73_OS_F3I& z%;jAS9<9BtR+vb)o^=xU5#T$o-+#o0vfmJCLu(n@c|`wyYN>9$=YjTqeGDk7`=NN% zwf%Vs;ySapL&^iWAT*@}aK+8~p`Og>&+~|Ev(XA7Ulg?-8FchpkHXOr0qGL}(R>x$ zxC2UqYf+PKl|VXhR7Abm<2Z6KQA0pw2rdY$)f0{vq1GR;Bs@D8NO4LTv*`^U97DDn zu(j8>@SEdkA8=*H2^i1Fi$X1%5z~w-3Ldy<#$%~O-&n0Pr2@!+Vi5XDMgl518`5G!&vXe zY6-?Co*ERNDRDb{L!>LjE5cL>P&MI55l1XzBKl)Oun;A%zd8kL%lG2=l--u;FW-(j zZdv^M454uUG`?|S+xr7W6{qLN+N*VL1UrKbAqk&9mc$G|IClmY z=k@f{YSGf~MeThH&jrB4Pa>j>^0?6C49lu!^$w5SGn4!7B1mgQE;yH=Y3np)Gq3 zg>YoCSiqLVh*1v?c3lF9Tt&0QN z^=nySXQY-{gl67@oT*WS*GEFSY)3Ia8Tce>H4zOWEg28cla$O6)|45Bsx74GaJZvp z3X(5&g8G}+aY8pRbC6q%&WESog@H5s^Kq7H{y4SLN`zaJByy66E8I_XCeOf z%R6&_z;xgDQT1`O6vG_icG8<;ViT+1lC|qTLKh+$D(DmSn>}+b78xA|s3jY{#3v|U zN6etqhZVODNOQ*=kO2)OcaW$BLixT9zuG=m%CHr^WQO)<@-={7&ix93b)jaWne@5ZW)a{$XAcI1nfKI-gwFGajP|pk6CT z*au&94-qnGZ*o0;eHk>Jc#hGRvnjs8T14RbC!5mS8Zpadix#b%8cevTFj&35zzju zC2Su&c>5t*$YvAOuvoqCW05Gy5#&Zeu@0qIS0YW@YmL`~qIJ<7KveTiW{i=iboQ9ALEyX<#R zgAT?8G0_9ADWE1N($JYKpa$DZP1VqBLfQ6&4g5FVoIfenn>_R`XdvuAt zuDDfc=e2iPEwrT^;^rR0Dnof=aHnDwb>>Ii^Dw4c_Z!(0HxSoF|9HXkST_q$u7fY~ z)TP7G_J%-J=G#{T*Sp!Jb!D1?%bQ$-&8K z58mBuz2?(mmjtkEj3cCCL3wRnP>66^?jiFB&V$sb1A0cmf)Dlsq=s8ze0u=SmLN?@ z1->{LOy&I%5j5|?l+@(s=;{2CGxBn~{ocAp6hWnjvmgcBEtBlC<;ahhKy>R}v2HHD zH1--SXDcAQ8AJo(|}gL-S0ZCLl+G0 z3VuAfiy!zS-s(#PF@XN88^V-C>9X5nZWkhpL{(XPYL8F9)Og>%GE|6dYUAh;BfUwVxw1IBBYq%ovqeu(kCsw_{-gf4T`28q zNKkAg3bGT#xch6}V{9!>z1wx&-0m`SmvwR+KF=tC&B{AsuFHVU@mvS2%wPUn8SlV> zP`X{mP9$Jh>&9blFy8SZy|vFjVd!duqjkgz6H3j9e`z zG38`bccDCY$T8Jiz?X&S`K~OIn3M-dqir>~GTRJZEIwr=%|FY8BE(5*@H|8W$WZ&* z(?Q6hPe6ZdruR!2+B+|~xD|zsItG=lctVS@G>MhhFfZnK!@?qh3{d^5vs01wYWIXJ z$qq?qFCchG{7bt)%%T3vQmFxz4DbTh9~b+AQ_{e$G(6{tj@dOV@cgJr>z-H5Y~XsWDDuXTQYgHfSWIEDb1<87{$` zWwVMXqkhdBgw<5unEPXo){fg5c@rIx$y^{2baz>07mY5IYcvCIG%<(vaTFu^o5*yu zOz--A5oq0W3X33!p=K5udBi1{(H6&464u+F*wcm}q>F${OqwP{hHQsltZvB9eQ&n4 z5icMoyFa`GKM#c|Zn?R4-hM-$24-Z8nEZy54qZyoT#n5mk@mSiP_YnkWjS0NUt?uf zXk|EhE_hTdDdEvY`f=nrZU5JwOvY|Wf4pQ8-{BSS5yV7d5@QPCq2dpQd|TvW$^`qT zb48x}Xkup(nOPP=$uG4 zR289|3>1IMY4M#0{|~(p1hxlF!&$%PS|#M0S~YaL^APxWSRf-LOmq97(&b!yF<5KB zgNaNUYN(}nb3d~jHm(@Gzo9WML)lebPGh(}(!5;Qsos40PAP$Elc~9XHiy$I+HQTl zp2{2$GTG0;?BoFjlNoH8#=U?z$PmMW**wTsWA5oF>p@R6^5Y#moK9(@tYaWp|9~|M zE_@(LHEHh2jKBCr_oUZ6u7H$IAqg(^t~}BE5S}j>Z{@X^RGtRn>qjcKOy^KVT5%cN zd1zfaoWZ7+_)#Q_T<6%j<2fa3Q8gEYm`@h~{vTs1jqlbxM{9*ji!rGzC6VcPQvDUw za;=xenu6wQwJ>7Nw$L?Np>|u`aI7A(Bcq3Gqj0|AzdEXk8zWiY@c98>pdzg|BmxnMLD}>AGiW>-!q5pHBvaE9yu2Rg@~&d`|FrXG7sg}^4an+$#Gbu{G~ zyt4);Xo{44-%fW(tHUu5&mW`NCHiQa0kT}hgMjudoLhkSBNuVZh4gpz8n7TIK$8Iu zcI7TFl|y^07QQCo=b8Rs`YHldkr#GV@TzsFo>_|~6)^)uAieF?_F%O5=p=%G^dCrB zu6uF#c`>wJf}4S#99fRSN_4rFs&E^jG2%&$;>%u#ocl>QbskRQ*ISHsMx_!^38??YLZQmO#vxLjVJ>tKH@BP>Js?ua;VTNGJi1GAFxSn?JXB6|-a|T))+2 z57LXz`1f0g+4eHBFxQdw*Ej*~BrZ9et|*W2t>^@nw-_SsFR>tYcKE#nEtawZ1D0bJ zXm72Iy-$BxHypxH0YN8^c*cOReYFD@Va9G@=b$#7-TSyq5n;`C#KUOv4>Lg)I$Z9U zmiU!IoXJ_=K?#;p?Oc9LGVB>S+kr0EG7(?%{3vhYdA=tBXJs~8fKgrc^2-|7yfpcP zjI_uprX=&5a6U5?0xr8rSeHe=HZBo4^p$rh_bb$NcYBmau*)CAILwP^Wr!JKp*+cU zIwXp35~n*X!|{mE+C$+oV#(;>h6ZGv9(m$bP5dTJm!aeA$M;{r#3M&kkh!J^XPNBS?D`b66Fr+iE$!Z%gZm-P?syJx4- zIlwi-yIVc30h`4XgiLh7uhwB!EY{N#;85S-psKylz9}El>S+r7kzgW zPo+v$V|+nJfr?I!Oxa+xF^FBmIuFiqUigF@`VHAHIhA5m4?qrNM})ga+}}075e|=8 zup4b&L$#O$J~bcSim<%MkzBr$I3^jE>i2edo0GQk`&y5{d)OkY4+OJ<>^%j*rS|oA z>(t+Zo9y=EFPQc9VKQde1sWs%$E%uEGh+RNT|Hp~=sfX4;6Sg*sB?zb>WT90k+es@ z{L8ayJqiO?$F+ziZfxxjwl$uM84;4Gz&e^^j%QmbWi(a@W+Ly~f{{(LiGr7~HNVlR z5+2JJ>%sXJ7#$WYCb6>2(aLG0Wf!<*42)K)opk8&w=Z6?vEp_)#HuKp1%ML}?1Z=t8pJ z^Oa6h{CGzE5_XpG%~9;Tx*400vWeGTp|tQ4ao>RrJ*Y8fFd5D0!A@NZA;DLI3b@UH zgkz!96~lulonT|)X^0f~?148YRW_N~xTI(@+1s^0JgMt6>zrNiHN-4)%|~_|%W2oH zDip?qMw2c0-Aqc!`@W}!e9hM8tCl3M%@m=Dx#%1|?`S84am|t~JY|6ev$>5()oSp2 zA?We2Vlc8Du_8~0#)R^)BSXa8+o%K8iKHKf)jfhbVz+&zCfxHSZ$-;+KemG2V**Ec z{s92<``gmDQg4r7ynqUYi9m~V`@+TwKw)t=2UO*O?+*dI%6YFAW@->2HHdSl@qE79 z5g&;a^8b8h_f7gjC(dEPfO(_!e+l4CHF!kXFgX`o0#a5eo*n!lSO_M)W?{Bm3J#FS zNoT!Y1C|lV-r55XUGXqfj0I&JMmBYVQ- zCcLh<_2a|fybYM$IMQ6GxP8$%6X!HEFgrOp`P9bC2TRa^7sTBmpXr9;qBN{EK!TPF z@^LH7WKg^}y!&Fle5!HqwSjbMo%dJkv%2LZ=tq0O*bE!YR4>%hvAq^4sDN(i#I~jQ z1wx?rC20A-;uD@Ai^*dL7c*b!8~mxcD0t?Vdz6l{YD4s{-V&1EOisM?26VA?7#?MR zlq&BVetS?3_STBNt?IOae={E7V&LC^T2lQj@rbgdQXaCIdhAv=^9_I zt48ipDBt8?F(y5mBipN@H0T!lm@m~@GyON_wC=jlMGR3)=&q`;Ltr0i9Ch1I(FcjX z2!BV#|0|L^z#o44?t$`pEK3liP9WI(c4P;um@D~~Ofi7{yv&@q{BhN$S2&QE5g$>Q zNE0?hbSW*mXhw`iiGZ5~?jMin`NA)FDDL`vdYos?%6yz$73i^QtWd0I3c%s0tvy>p zPP%O#AckygjC*;e)LxIwA%48pA+TsRpVS4BY6FhSz1DeKO|X*q%T+l16RV&c=Q&Q{ z8K-J}Cg+-j35zNIwdP9)<#vnxx~|srzD~ERo?26VZ&#P~TJe*ME8W2CG`TUNoZ+>7 z^}C=7{BN)L3zei@_X|{&SnP)_<};*J9i1kts|aoeQ3d)JGsVrpqG6C$v#4~_kOBBZ z$jOEQNVz1NR)^PR-|^lNqFMG`)yd;yZ|;rCpc4yop~{a1 zZyCxjcMJx5dHeMS7L&<0-S3e>=IVB#S7-CRf76H7K|a8SZz2ebTZ37KBMjwL6am3j z8}Nnqy^-Mq3W~r1^=u`k*g&9NWebhY1Ap2< zwp@>ddhs(V;){AxeTPKqnnf&)svzS*$rK~4vWj}_6A9uM|;1HE&g7Z z87@oMG^o~(QB>LXCs9nF$`s5;$P8a+!G&z**$PSXFqTP$0xP7)Z*qn_cV`vjnM=Z* z!a1PUR(mYA>-0V*IAmJrd27D){G32_+INZ>R zQ1+eel{GhPj1YmVBS?j0!96OpOqmMg$8(BgYi@sZTQ9`(FDRRwJ%u_kZ>5o!ABkTy zGB!-rSGobhM^`)32QaOdkI*Y)WpSE+#WoBkvc6mqzb&93viLIAhqx0Q@zB{s&rZug ziv86l?|PRf>@*N~YNHq0sRjy$Ve7)0ljwt*B)nI^uQk`5+bPdhyIqV;k|JViGE9@7 zSbgaifYKY?Non&S?q=)tAZpiaqHSrC&2Ar{vS{9N4V0A%>1_Xz5_bJJd(+MrjHp`p z%WKJnQ17bxZP%2dcT;@{-A!Bw7ptL{vnRWkzmly(gM`#vh(%Ou$XOp>PyXv$eZKOx z3~@p2`e((mtsb%WmVv}OcdMvUYr~}ms&3y&^?CcReX?_&9l+HLA*A;gRyXEwZH-3p zta!@zaX4UJSVw>B(YneAnu`u`Wp0e2Y#qZGVBT}63&Q(5_TL2_{82qeGJO7! z{p%9zJ)fXu>B9_*$OkozNCM&ee*r4>S5asSQud~lb&;?0zYVsJ-tf#d94Oj^KcW?? zT&z_ZnRc56Ugm1WGIHvFnU4MfWHtlY@&ymn8#rUw?+I|yL|4xFEIZs^s;2P^1An{>D>nupd>Fxt(Qya=m8z;UR&sQ^q zEVWsJFdU8+$*Q+F+K||_H(wLNamRs)j{&!6vhSr|V6F9@6dP>D3ax-Z>syS<`a2%9 zHm1Dn^TEmFphSp}B7F675#Q*6%<#pB=1eD=pAy_)3BH|Jf;0!z9hde~oD*4ACY$G_ z#CqxF3u>eKPM&B&$S()opn;V@X`e`~I7soO-ArXH6J9|;vz5NHr_kZZdH+y~fTdC3 zgUeY@CfW*2$MsD)dRSiPXyO!cN;)tA2v}~G+7#7{? zY^|XD#@8}wMOQQdDWv5pFpg3=i+(h#jd)gY$^%wWGpAX1Jj$%|<{?xiSN2tMC619O zv0@D;DN<%pm{Rn3gdLLDLn1JqNW9#y+Sz$ottC&454zA?@%rH-ie-M|V7eLUcRK{E zO2rxmn^XO#FPyt3$v4hLA*?Y^?;%701of0fRP+y#hcIE^x6c77k1iy0FGe?q{mRCw zr#qF7y{GiKCZR;k*%eQRYdJ9ixI~``TB>9gG>ECiA!v`r6 zf+|u{w0au~xcln{?{bi%09lmDi}R}qOGbjLFWms>9T!I6)I|*V-1y z*AQ@0c`imKqe4?b!R&sUoYD%y03LP-PA1a(dnZX9^mht!W)P%=BcVDtzyoq!_a6Z> zn$F-CxN{8!fJ4K4Jhfr#1u7Vc^*PY;Ob&m^_rm?#(fRks*O~$`{(s#_^u_SqO7p7R zks}FE7e-D`56%MjeAFS_Lm9vX8H2wa2$KZ(B>P{L5X}eWE!lCcOVKAnpCfkOH7N@43f!vGf645=jVvK2LFmx!7VC_XjF`060k_zO+hzvw>|2LG{S{{p)bzWXu1 ze6GAVeqTX2xVgV_nO`I}naiG!AMwH+NUuhO2j#!PqYD;`{^8B1+TzWXMDLx~q?8~s zpT)(MsaORjf4CTykm7SbUTAer(!Blyp#87O-i~E3=bPRt{=3{d^qM_;Og!%$4}eib zR$o7_uU-A!(zrT2oz*g5wQ99gRS@4^P=8bb^7ifTIlnz(UL2+>fxe}^zU89P7cD$U z-8Mbue_P@I^*^8Jxng|dTLA)vfy1~R`95IGsp%TM{r$kn$;q?RQ{a;m1&xFtMXN;o zdFmkGMU(oH{dM|3t5F)i7HP%)VYd9Ai}KBLnf9(goFhQ6-^^{a@njV{7BU7yj{<$m zZc^yQACZcl%I=I<{YHAn_ocmz>Lyi`;JR-s7BE|jlA6*K40l7_%_mRG)8Y|JNeK9# za{8Z9kNd{r8|@rAYz79*i_A7emxj~ z_ScRXjQhdk;RexSvk@|3&Hfx*5|Bsz^1mng&o=_S&ut)6MMcGTU9eh{lw45U#le(eM;Ds)jf5kEpbLk*{bxoLCdQf8W-o}QhX^Y7~7&CJYH==O4Nv|d9~DocdF zIYNwJjYr#$G3^8R*qcG-<>t<=)I)oIf!`2)S0h=$Ak)GciGuAeVEd|=&Efr&VSP#R z_Jzw}GH&%PAR=z_z0*4g`t?)le`@9dzsP3hoNlV+e@F%5jf}ju`m1}a<`5u*N1=UT z*uOwk%C@jB*0}S%*B;FjRAFp4v=P$?gCwT9hgTI6ggb90sZkD5&+=p|9_>ha%s29} zq|D#dLAGXuL4}ze-L!Q>Cx8IsiHu;Dbbn@9gOZvkd2G3MZbG$FkIl;iz7z}7I1ZeE zTpD6_3jYw|aEYwHI)4XvG(;0*>UBQmjNiLjNHwC=(X+t@I6B36BH@h+=f$#GDzg_E zp4g|e;YLn?Q?{rKTYf=;zWVBSeVaZAjiqa~LJw5>LYah-5M+@OP*?rJY;8GSfY2T^ z*Vcce_I&v$a~Bb1wM)S;7lF!2~nyJT?z_>_C@C z*4a*BUzQ4`h%X>%Dn1Y1f$uKs*ZU`qov{)J9}98D{aZ(*c`kfg!XMB_9$RV^N__u^G zqmode9T}%t{4kH_V*ga2HZ%E4SflFVLAT*Bx%Osq4;^kU%LVJ{u4&fN%2J{&E{1Dj;D*G{cYy5ucT5 zMTxS%85^+Cth@mgPUBDkT2>Ilbz1sAFYRA31^>1(FDbVv(OxuBN`07b9N#I3LFk~@ zPO;2cw4^HMJcZh)WjSSVq5>s-8}opmZP(U42jpow_-#BKcuo=RurJGSw_8thFFQGa7* znd`0n-7CMUd5{07=nl2@bE!sL6|X)A)!~E)rGZ$a_M=xgnJQgjA}#;7zbDEpYKV*4iA>^?xC^4 z{%_M^`Hn!W3j`b{>LB9l2AAX3Tb+dq2$rIF@l-ez8XJvA*oE23mHBIa`6KkuWmf(s zbg6`c;wy>zwL6;U9_*3#x4}vAOR3(NClZZC<48IxuHEM>z!=fQXpjn>xSYui zEk`8bl%I%ou&yGg0ph&jmEPR-4#spl;y|t5ggypKRWy}*C@B*XPq!BwRx|NzLs9hj zRSBV=5}B}w6?D}2vOtDJX!}?UD_TZka}dt~GhU~Yu(}&Z{y_Kk!ymO#mg<0z1KC#Q zw@+xr_;^yTq5u@oH>>~svj6q&FME#uu^^wu?*ha*KZxRibvt!;tP>%lHJb!AtQiyC zvq=1Z0EeSsu4sfw$K_fudoE+03XJrEHl1S&a&O{GBDq{F_CPEy-+O|WRQ^>lf(qQe zKf{^K=Iw~nvL8nc=gWp1I|TUx#b^UA8owW@TWhh;aHMm4z9%waj~>q4f!RhJ!D@E6 zCS-#9X{i>-_SKOSjzpxcRvCSp46Z=&lWf}y!{M6hCg6DU!c_KgaOD3yD&mL9MC{HvSUDrqO5&v=6LK%speh}w{t^zN-@+YQ;B zt~R@BvFkuhv)BjZV&UI^>!lKz-kPfyY}CpgtMLN2;JyBqun?j_5u&55FT5`46(B$= z5Qk zq-03riA9l8U4?k$T_pr8B-p+2=Jh1OgJH9BLpb%tZ;-IC{!%etB2@S&U481sl^|$Q z2%t^LrAGc&V?za${F1nY>c;yC#r`c4tk-F+zL64Tp%SJMv}n9n@&DzPzFgfdMR@@O z1=Y)VdF@1$I>B&ou>`lpglSomqA)Oh> z{yM~DikcV@(t7R)$?=5)W;t7iZ|wr=$l9{!b8yF^!&eVsDeynGH64EuY(X-qJPt4w zH{IJO#@}b4iqsLi*22kTLzrmZ6t_Vn&XM>YvJ?Tz4d0f4NPq3j`#6%sVg~O~_3W=; zBs>VU?TA<~92{zU9cRyIQRJ+W<*p|#Cg0u1y#Hkwy8D*v*1cey|0;^({`>N!H1c@# zNd`K3g-fLtR9Z^$Ngp5ps&9jWx8dWDl1F#n6dZS_$_11tF_DlT;qA#%Wd%snHXbu* zc{Fm^z1iu4@82a=fE;9KtO^KWr5aF}+_!anDL{w=G}YJdetz6Agx&ju?S;DTXb8aV zhqRl`+5aep#{-onX2cH(7PN{(kI7k$KH@`+GqDsJDWzL|xD4p)VF^tNM?;rF+6#o0 zKH3{X$J{kA$hEYA5vKjwS%ph(aP|Jlpod>^KQi3yc+DUzgjXdXWW}MU0Dkz2wQoY{ zl+z8(?71j(JrJngJr0Fer=*_L;&)05T7)E~+Qi`bSYx&_n)(E~U#8gVarvW~*Hu^u zn89!uaD05+ySa%cCnrat+s(7uYzrNnoxzoRyp`(B2bN{h} z{|>jW_DiO9|0Cz0XrK9gXIHGZAAv8PQC?pe-(i>XKjG^?V&hAGdWY_7?-2IS#BbSe zLEh}QEcXl0V4)9eh5a)pos9O!pDq8F3--^$iTn_(w~F7wguLYS@Vl0W@F!6~ZRvv?!8X7v91+OQ`vD^spLaNN$zLJ~`KzaIJ_YR>Ap=c*B$4uW zo!*k@pvfKk=XVj2Lw!8$&+8?y!EU}_O63y$wm-Ba(rz zAG8i{;yE%3_cGmKTGF%nSLo;JEV#vos-?f0fSm@*J+nv1^l#D#BpUw25192y$ip;w z%nZF!{>pt~RWx)!#6=3R;~d-XSZhd zUf!|C#S;ZI`+!7gufm6m!wYffF_Sej@AXU07u<}|qpT#ToUgM$EST{0r|Vj^dZLWC z#1FjPqS37Qz}`T^rXHt^#3f-fG2?Ap zhyNvvQub#&B5AH69rYclD3$d{?JpDh?#7UAozar@V8Rv_=1HkH;($N`m{Z0hHX2-2 zEX7hmYSTSNccEmi;p8b<67Vd0-N;{3!?|vs1ODz;ju+fy8lC8oO?`w@EI~El2Ny$c z?E9=%fOm(AKUteey>PAdDTcON4s2bvj}Hf$7@c6cqGfBQHY^OWsy*q>V5TC+H4$7? z^Y;elW<1ld?9AUHMX(tR5&5gjdg5CSmi-KP*!Fgf9j4? zkb*DnWQAlAy$My428SRRa^!hraFOIHF*O>JoCkJ@)9K$X=vk}x0p>M^*1N3UGP@)? zZ$+sYvmW$-oDpwkwELJ%y6iR#i5%U$h1$@|n{v0Oa8yRTJ|Rx{ zja=(|hs2Wp1u4Cna(JcmZ{2v0eDODJ`)?H%^U>qK^qko*_|7}1y~K<0!6|_Y`NzEv z*xk~iM8v(HP-crI3mw5Z=aQ;jhj1gsj15Dyj6fo*igpYyLus&to!K3Jnbb?D?|0Y&EH>^D3!3me2jh%cu|8Aot3<{NHT>HlM>Oo$dqpkT6d z*q*kGu7C=`HXV?}iGY6=d7=DfXsST%#>*e#aY%HTh95gUkm~u<{_dP3ad%5}GvrR% zbJu^)D^qhZ`pO8>1tv4ddV4(rp5i=><3}N8MVcvGjr(`ly7bEThd5~LLto)SCoX@wo z(GHw`ZoZ5r)an_ar^0rGgTWD1IDDnxPyj zsQ>*X!Z`BYsy}9cgkrIk;LW&9)U8 zNq;m7N+|U&R#p06zi#jwqk-RB^*wJ|p&a{Jq$@1JL<{Z#r9dv35Kj7d}bG(7+oh(IDE2LHS)ta&pihFc^lBU9OEId z-QIU|40dz2OW&|<;W7zH=;0<}ZU)Oobvn3-*lckn)g5i4`aOFW5cjRt8}-IRE~RkY zza8Z2ye@!Z`i&@fNe%7RYqjZAc6}Z)xzr$BbY1j8>Q7kJ$()FA(M(v$+9KDdO$JY#2P&$g7L>!9r3*Iw%P%?iHLpVnUOq+8nh|e~N!U$6!V} zA7#cX=5J_(*S?L^CKUS1KGk4nZaaK%$>DSbCK6r64Z7{z2b5{Ip8P@Ex$R2f={kRdzQMZTEAAxp=PjJ#e z-At!3$?LejEXm<@Ls)&W8jgKw?*)mPRwrn;${Gp7ZZb)8&iRzkBOEuhI~if0T6_GX zvqqQTg&FOREnC<`3@5XNp41#WasyttEf+u2Rd0PTjl=zsuev%rvJUxhXQ%{pu!|=W zie!DV$`nzHg!eW|M4O`?Wskh}Dm%*A)0R-2HZnC+By&w-liwbFldNcW+8;JmW|z}t z9C-akc1QSwF^I@MubpBS3k7J)nXe0hkzR0dDD*CkPM=-+{iz zNwGm3n~SJo%#&ne%X9L5&AuKpUPGM!hSR36L%X_khEd-eo`}(j^CI zxFDEYu(A0kBWgaRg;3H;@2n<~x4M`kvt9Q1n}C$$$tM|2t~KJ9DfL#i^Ol=?>@^i) z`I!IAT4RbEC`IyUtO%Zg2bs-v7d9I+*g4;cg}dNF)dGX6BVEkw2?fKAsN8+S6S^`S zFEqECV(9BtM3(drBYL?Zi&A$jt379O;8|`5fT()rd-x{Al3cwtl?Hc&q8t8URWqsx zo`Q6b0m4P=A8E%fPO#e(gAKTDU_P|ngzh2XLlDHf!H@=z8kz_i#$eWbn52@NVF>5> z@>ZwAj}Q%iQhUlfT5gzi!59g~Ufck}x3TKKHC#gYDw)<+>A%_q0%X@>A3pZj&15pQ zkpqZq^qB0dbxb?S%JV zM-Ok(llV*&?;PyckK9h76bKH%oh{$Is$p4RH;GG4l99R^A*{9b*MFd~I|?B;RZ$k4 zFD#h(aP}NSvFgNt^jCC$pD$yLa$1-l=!eY9t13^bd8+QM&ysJuWv*F4!@a0@?~?=S z*j0d`HLVU9D!8zNdv%ctCZe^glers0QnKaw4V2LiXJ@67-0>wlSj6bAF5b!S4ui=5 zQ{ev#3=)0e`3FbI6{v28Mv!MZ-w`meV~-(y-8wzMzm{>rUQkhq>JaQdH{Bi%kqr#? z5U{Z)+FFAoI=x?h@a1W&OZE7|qB^VM|edV|1S*3;LXq^DUTHmmqM?|vHsvYsN;f3H245K1j}-!dnSxh|fkMROA``c@@# zvldt18Exl!`o?Td>0$C_f=ypP6sL048zk)|1Ol_$s~g_fQ5=9f8wI0Qp&>k}(*+y} z?i8TWZG8VW7VQ;9JMxS1b(=5hd?UiM_*VhlH%A%rqm^bfT#~!8g$;=d%@)+3I!lJ( z_$hq0Z09-KzfAXR&I79Ct`b43-w7||qACl+;m-|>#XOLZr>bD}Wy6n}hPn1ViN@Ng z;gV}m49%Zn#%uLvTy}`6Q`lj6A0hpj`;tdHJq99b5byKtn7c&$g8jw6(gOA(Q;4en zC{14e!GguAy{e9l@isNokL0NQctGP&E|fqvE?*KfcO=Au-|!z|ek<@1=H`gej7UpD zuD#l}F3phfaa9v>-+*%7en0V5EvxV4pTEMJp5A(u5sR9(}1O92<=JLAX^m}^S zZN%hYu1D+HVo{hzi#fRHinQ(DBQQb5brtUz6#KyHOI8tdzg7!GBM;3sGh5NBW>>4p zWB^hFlZjaxA5UJ{HRhU7X!e_}yLke4;HaF2p~>c=%WEgw3w4&W73whH>0A5_mYO~2 zi}aZht7Lw=uJwJh&3rg(t^#S50jZ2jst_kB?C>H0qDG%MOq`rYcmR!)dTTeY!{Is>0-cwdXp%xs)nv z`p3ok$0acEJ59gaihNe_9_%Agl(+Q1GUB?yIv|1Unw;y&+;Ik(yNLSc`Qq;AKE@Dsjdb zR@uoy9|9LP$uHbmGtX1mnx}I=_?`3B&DE+sE=JIi`v$N4>9dcRzbA0_WUiqM(lHqB zU2^>nF~e|l*Z4T~GODaAM1Q$fU%l0hauZ5ZZ@e*^K~ZbnXvGAFEv9kkfN_t(>X<<$ zodd{o=2ic>reZczx3WkAFgP%ZAk~rCOg^^UxvZ>L_~$cBYXKOzc(}#o}gkG1GgL{6Hp?AZe3E{yRBNTJdMOV-T!MI zQCSoHmvM3U;Uk=chdWfBRb4~9i6RuO)e5Ucr8ck_?b?8xGnAM@ZLmXi2p*MM8SrDO zgnKpU__*_2qY36^c4ioJhd~A{lH~R;?Jp(d$d09h%QEGLmme6fajiqwxAL1a3=iA0 zLf&902t`t9MC6nQuFl&_&pPhZOCBgOR@{DY&eDR)+_3hHm&?s|Xw5pe`+Um^p}Y_( zc?#CdlW|VBD@qs%x>4t>ivZloq^H`vE{1QW|HjluY?H^zNr+c_gt5IdAQ)Fo${y5u z;Pv4VQnC6Uk376|=kQ9;=PrehAjAEqd)Dg@awIi|+bf{iB-@7=HgQzxqPfPw= zJN}8-zDRsmMn~kzix0*X+H^ovnC601sQhIJ{mk3IYZs)2-L#QRA&tnTSRVj-xwHW? zRKYT2f!bvPLQW_NgRc~pg(K73AC|K$6+vhZ7P;CF#m}Nsqf7sftGA4bt6RE8gG2Df z-QC^Y-Q6L$6RdG}cXtR9+=IIYC%AipyYqFPBk#GFv41ohx_j(eC9`JLTGb*Zr`}8x zo~B?kP%wHOJA*v!bhiqn-{yqsk=M!85~^pR$%!6=t(zsB@*<|+A>D8I1H7jIQZVE* z*&4Ld=`!jW?vhBUZtP68niPAL+74Zn#N4*q4KDBqO26G5tri>&_|gBx;wZtxHo=1p z)}t%FYJWorK2R7|N0POO4ZZGfSyQ=WI~BntLOv4IX8276Dgw0q3WsEJLNnOH2GX=K zV*5SV5{O}RZniKu^mq;PV6HxXP*)uM zH8d`x#hB&LUOR|FF3q@q6zP(?4i{eOhiFktko0#Qqzx&?zSr2Bx-Tby$vid)j)wJ_ zue*vNUn&qh5by+l!r)mVZExvq^CE0T9NY1ru7SJRd~t|ZVH;)Rs@N1TA4mBjxE#-t zy?g`lVU>qMkeva?Kp^+a{aS%_caNmLE}+6o^U}%+ha_4?7_&n@t~mwejZTa0n%PAs za8{F`Xiq0tS@85C3cG4$H;salcySccTnXTwOk?{E7a7i7GXVV5D%k~QM3u>QPN+UG{#Y66N-*Ep%Ak0ra+U}hRn9%wcClEe zI1`cAMQ?O!C;=(gq_j9`=(bI}ePQ z-Mx)+J)9?q{n(_UbFEQ#E{XU6Om^K&1!iWr>_c4`q2F&fx7GP0-SZkq^?noH{1_RS zYPT#aCDtlHR)g5^dDIT-Wx3WkI(Ipr^79#Ynsb0?r1j2lnk2> zfZ>PSXpf3YV|^r81eHQff|^dgxYZ!Bsx{+}TM5s*BP5eo-WYVE9!QZ^NjGe#rBi?O zgfCSw$s3&by}N-LqeeX30_Mb+`LDfCM`XljYBiM!S&Dkmca5t%N_IJV;Na}Xe1vKF zM7ueT2<#F=6S^|jNo%pI<%FDuE78N0!n(%-^1nGzYp!~jQtFBLQPjFQY2SAi>;4l} zF!Av4SUD?HCo?k=;&4Fa3q2aOGKA{*zkh!sc{L{^f^U7(+>AmAL?KOt1S52io?(n1 z|FxQs{^b;<&gfDuF(nV~tD2b=e4E1Xy9R6sLc_c%DmowtWfKZY%GvTOhP)%|qpLNA z-yPWDlx~c~O`6F{L#cL?D>OdhmhpR@)YC9uVH#)A#pa*`GMW5~Jr!mRsfowgNLXp^ zrQIH@zLt>KSqF<$I?l}~U%H8|5FfU6D)WmHij57~?jZ-hrxq?->&0MEDyW@Ch%it! z>^2133NNEiIecRdG-adDVYDpNg`4fP%y5bba{C@mB2`^qzM3=aM*{p0PYQM5@~v_|4SaKid_2r^22*8?$5LZ_?UcwjW3iB*`1{sP7Q6nhPp zP*Xrmqa7Q&GIH}$)kM+x-^Z3(h{z6GlI|)i6Yn8i(VPPen&#}OmgKvmX+~GHMRlke z)SA5kf2y$3WA-1Im@OBG5whzb1W6=r-Q8$s!Hh+4_QyO0b0#Z36en>a zn<`x;FUIrhcEZM)E2rk^^b$6msIyWIv+=LJQ%@_?*?>qdj3iI3+L$b!9?r(-)w;qR|~_YGzGL&W=9i*JIJbf+DvQN!I;k0$tYnvwt;M>+{mlMd&`F7FN{4 z#c8jU=dBLWo7bWm$F`ke(nHke1B&RF^&~PHiYJ+U^e*M8n zH{XXdG)LVRKQey(udqZ7pVNzJnWFz-axzf>;2Ij>U1TV}N{GseIlX=t`VoHy&Ab2a z_Kv5ow-;MPcw7$jhkr-DgoBF6{#d8yv=oaYWeVBXB>#{dPlBH<$o*l#BSHZoUA|HA zI=ohMErPe|RFD|Kxi86IN=YcR&?pZjAH9)+U+S%_WKbWU@iiHB2N{YjHySubu2gF1 zmlauGAmVZmhi6QZjSWWIi~|(OhWmEQ(9R_)W5B>A!w}R*Hiza-Y*p*72Y>v;{!U2W zdtw&vnJ*;eUXzm|A*0r82OLeH`5p=(_pNXB@r5ejgBzUMoK<{~d|-4Kca>rkrek-0 z^arcW8uj+uFy0Q!RRq#UOgfW5fkw^em=%W2$GQ)r63OoHjt)MbS20x7?dYX_$NMa| z8p7@f*)Pa~W;eQVZJ&Bxy*J-gA`owX_T0Z=E4bttxMBrq)fmp4EJJFlgxC8l3U>O5 z^mhuzL$Mu^6dzE_JE|r6auCZ6Q86jCb#zI5(Z}{N>KXUn>_Aq5vW(JEm+@v z(p!HU;qLZ@OPgGY4v@zI?_5XCDd0_4N<)Pp0t_$yA=}*x+U^sY-q=6`+o7R2Y*m>T z!M1-vnRgeIS`#EwZW+bQA9nLL1`7G+7F4bszVNr&E_2(HV&))+`P#ZSql#n( z3M(Nmz8L->rKU#$yD+@DcoD?n!y|nB5W@HyQ-N7A@L3y(R^2o=WMo`5g!iDSj7fZW3m?z@4A#M4mKq zZTD?-Huy)M_1KHFEMnhU+0=YaSK>4@T8lrUV%(0I*If5~3w>bfE%?Q>+*S@2$ABI9 zmVREDcXAl>_UD`N{!TV%s(K-9K^lj}8!z(7x5M6(b%^(k8txuvp1eY#!&rMr1#?DG zUtbhLR3t|x61WKvC zrFj?`a^m6y62V8ZPC;=oTIS(V#B7rnR|>zcKl+YJVf627hfR9IwA(xBtdW=F`B+i* z&tfB%ogRVRB34P2lMQGjbLBeSizA(AUJpz~}dn6T@2h_=T|OMBb9uB1d6E38YRYh_h#0mEh7pgPi zf9prVx@IvN=|YrKg(CGjCZidti-7HO9Z@pg|s{=6#43{Z4+7W8g&)-_AK;1&*nLt*;i<9 zZ$*dU@6bGO(VGYV#oT=8?WGvl_!T-WoO^p}%CHkzE69Tx%Gsia}`Ol@l%3(U4|RhydE~`c{AJad0V8Lcdl~nXw6sW2hHLO8Q)HRw)6+k zbi3-_)%aiBT|j{AO;Y+R4h-XuLbfA-@89LurMi+MxqyeL1X-i@^VL(#hB{9 zUJ$CYX+H7r@rg-E!Q9{9JGr=sK3yNow%F@Qmp)mP2nBwM5skVmAjVFqMP##=7`r#n z%u5K)*p7#dkqs9ufuEplR^FKV^eEHNKMqHi4iw+ii8M^d@T~J^kj2m$zu6hqJ#~o$ z&0j;M373D1VFh>~R#|9s`E$p(HeT9&IOKR&t+pf?M9F6(g12@{)_jhXB52m}R&+IyAv1`c4#V)8Zk}OM$us6NKRg@}PL%P;GoSeR z8eyz8I{NwdQ5A*mL-2ppm2ZBYm%0y>fRhX3zaZ!<9U+t^)2S>p!pjZ27vth9GJAZ9 zn*5^Q;flic(df-XH z_L4MBouUvEnrStRH!{8cY1_<7{VXPv&3ij|o;K%UDkQW0Q^g67azaDJ^8~uQjb*Iu zi{`FQ9h79PUSLBZa^0U}4%mr@-u0(kl_-A0M2R_nAQfTzNK$2G1 zelqM4PKUk@c2zV;FDn5TMrf`E@xkalZU1vbac~N|Y=n`1)Sv1?+i-2((BAs|DlP6p z^0+I2=b`wT{l~{`X2s20@hHgh{bdNX7uV3dRnbB55AU|4tjJ0Z1m}-I^N>aj6=fuQ zm=7ZFBQR`<*`ceC)Z5P_C|=0YOsXYZU?Ma{#1Y`Cf@`&tvcj_ zDw7)Yoy={-_JG)x_of(sTU%*o=6%1=Tc9=vkcM&_eb0Pmn}W6;^n_-~!&eFGe5v%n z56nZ9#)cmd>QU+?tc5H`825{Tx?HIXe4Jr>f>B)GE6%tc;pLAn+L4E+n}r^CX#-~6 z4(}^oWDgg@MPCw6!4_voEs0h$pN6-X%3)3T*wd9&`$Y*3JQp-sMNm=wGJgLtAA!0S zV3=4vl6{N{h81Ce8DXGvAYp7M>zI1zkLu_YMU)QxHfc_SaK#5lWyhoVSjB!YMJ^F zy;dgK6}vC+k6t-0kMNm}+r9y#V>TW3S)fi7g+eX5GF#K6=Jw-y*V+JMnz|4VSD|CE zJ=-cjPxPUk_js}LX|E=ZV<4gqFCo1K5)D#8r0tI2L@O7&&NX}$*Coy0ibOoVoOh?+ zsDnOOmybM%8MPEGUKC{}k5o%j$rNXgjl!jkG4+`rbe&32-M?A6gV3#w9@rG3Bx$Y2 zM8xdweCkUXaE09;sTSqz%0o|N)T+U+=W!KYFK=|z+Bo*`QYL*n*)GC> zKCZOA?lPJz4dzIHT0FdCMS{LLfu)i^jt1H2fx+FWg~ zV*Id%-Vx?WJmSp{+A;*IU{0gk;l<0()aPl*atdt!Xw+*f@Nzq_Nn-4~P9u3BlgIhG z)p{Gt^X&;)WVq{$?dM`|^zhv|@6kW;e+7gcHil!Uu&-88pcv8HJV1qlt%aiSTO+V> zn3}q9`>>qdCgkOrc(M;7)L`*q*WHKt_g#_{9>KV(Ll7vVu>341 zO^h1-ISubj3Mu4mHd4F$jda)4)fAr~sOD_2E`Pf4B)&^|E({-l5D_00>}}wYv&xSo z$C)chKNQ;$Pl2{>I2Qlu)5oohxQIH;cDX$pf}Q=UR+OEbHMyXXPp+pjHbXP@T1w|u ziZ|2HH?O2QHeyCzq$k|AyE)IUV?|5XnrIqs$1&^ULVvVfkrFL^BK7&~V@cbE*o*K@pX?40c5Ms7S0)9*{9?46=#I@FTsb+3m_%^Rl zEL_%_d2$T_I5XP^vT)`L+}aj>D&W-+%=Y6u8!YB`W7|?${US9euvs{8SuNX$-$Mp~ zhhHS41JfVBfc%ZLQ8uOPGUiDaUxauX^(`UYmEKW%&Uk~Jf-%+wPooKhJS1*QdoJGw zCE5ZY^X|HgQEWl3Yo59_idB&F01ejUOyop}&YX^gS{AnqAxyt)ff zsHVhd;QTe0pjU3()Iw_dcGb7y{beS-z&$jfX-nb{KF32r=PiF_7oe^Wb$=uy{o~WHDPN3RDgO2H-!~G`s1(URy97fcCQa#->NeZV z5&E)OPNj4v|6}4N8K-1;X@7h=b`E$O74I3BDuRB=!Z(L{5!Whq8Rj2%$$E3zus7xW znZUkk3|8RiPJ3o(R zK9S~o;QJ=st3Ic3$Ug@lk~!@J-jp@%Q;WR7|EkhrTDuW3Clg_>nt6{@$`@2fn=X=w z?pDo$TpSuprb;f=D-;c-hi^$ys?@s%P<+Oq4FOQdb~b#Hrz?JZewM9mG@aJcshRI& zjMSn*V_F&mi8$^CI_=Mw#CVz1Q?w`XHTa!2{}aL>H?NbdN--O+U4PCg2kL_-LVf#~ z0NwB-WTO5FAxP+EY^9`UNS2yM*=otaISrMCpR2c<#EwfZOx^8C}=; z{5NFXCM%LIKZ2P?t?$}_jh55nBx8jdl_9EF0(WYVV=_cL7@ z`ev`Q<@#cYdL?O$8tt4AOowBPuF0csYMy4oG0K&=9q zzUmKhT-7Ys9A3B27<8H;+1c6TP6}DCqxI61Dy{~dDLTHvUO{Z0}T^ui%lxGI_ zbq(|*XPw9AabD^((b%6#%h=42LmG}TAd zfbK+vKv@@5gG$=U#P=dx6k1eiwD?)#ij2=~TyL1#VAScUk~JZ_qB;5}@mkD!wlE@I z-H$?^r&6;z>+}tDJY%txoPFAjj%wZ7i3FN8ZyZ75sa5k?6xz<0`HMvwXNzT-;`SmFiI5S5$X` z_V9*S+=7f^j+oQ2fBPSh7kb5G$?x%m$n%M!LX8yvdN`RV_7xK#XEB+PNDW?kNFupA ze$n&67)i`-#NzkrDU%`-*-k~2nr%4W9gxOfi7pa<*nxgQb8SOLa?x?o-FOUTk!J)* zAHDerIBeN!b1o()f4lJikZUHCj?r(lh`r^lc7+49Nq3U*m84Sw*;Eb3s_eFV1Fv)U zGrX^7c_=9*E5mQc^EI) z*{u?8vj(eyH-|EofGJfpb83CmP*uIDxg3!C%ZMUJYFWcor$_NW)4gTvWQ$-qgD0SSzeW3|+qDFF*Ta^t=l8`X`eYtC` zPA{7R{K)Yw)Z2+vT6UhFK)Fb$Uh73KAG0XJg0!FEq(5vkW~Gzkqa=5c6)F{WYz3^x zLd)%}=MEOQW&CShv*y0&e|;)QLEWq{NC3T7kzxQZ*8Vz^0l*O6wYpq<6aOwO0MVL8 zHV6_QkUa;Of(1-dBa_P}j%ezZP~m2Yoy^@tiiIP|Sc1GNSzt7AAq$zcs*dzAxs_38 zQ^AjdwlB#|1?&}55un}IvX);#R_6^~MiEAn@GW1p)_Nu7TKX<^b2IdIay*qz4s>Jk zH0XB@wMtQlt0Mfkn3sLzzn)$T>k0JqF<$FJ{nGT+l*p!7P25QV<#68 zKRS#Um&b|nf@mdSs~jZ48pW9gtiM>|-`A@xu@aLgY9T8)990xbTAruagp38`>Yh>| zD4twbHK}aw?IoM~Q9_Ytm`fh3S>BCS``Tl|IqUTf;m5WKgjX3u&9ynCE9w*J$ zEfqa}Yizs5FMkq&Sg15a zR33^<>)HD-#qlUXxoxn<#dO_AczY%YUN5m`)*AqJymEl{cuo-S5RAE-yQux7^@P1^$!07HdS)WZ6;5`BVZy@Vkm8k}o{!A04v6{%I!l>nXKtxIP+{ zD#*bwDB}KOgr#*wl$eT%!2bviB*8DpO;mb{Vy4NYD2r8EO1zdSyl%gxk8Z`g8_e0b zghWZTEYdaA`8!mLHLG>6t71f^zxklh2&|@D)0%2al7J~(X?D6CM7g#=!lk2gkx`qb zQ>6INPES%tQA^2%l}Sj34)6o7M{669C5+47UaXJ>t{48g=M1hPx@e#MGmNShiBOwV z_@0D;Zn`$@Xz%mV6ZAj!`{HNf+Y%R=d(d3B!>t|;fTl3 zV}h>-9d-6->KH$E);>5=x&s!0JuH;(oOpNe%fd_%p)6tBmqze)uJhLXJ$^{G9~tp? zFGEZ`!`L}n_0ay4MiKK$dqXKPZT|a?^tvr@tu>o{R~*sxR*OiGl6WXScf^PDFN&M# zc@=K1Qe#P_$`8S5)W-bL(H<#3vCQiI|0t?Ip2GVi^q`Dma=a8__#%IN&t$FH~HY58+OE!(P5chWo^L5vW-485~a!_`hH=4CA|fC6FgiE+)ZE+ z0YpAfB>5Y&%UX1rsnq|$udp!|^b2-fR+ev(adBx=*65@%ifO*k+q9EOYFWWCJm-aS6&%5oxAVE{&WRd+3k=<# za;VQ%GOFVs%-U6Y0|K(-JMs6Q_*juM!0R^EjB1&~& zXhkMUEIc+D{?t_kHUhO^w!HN1NgWO@Vv)OdsPA{~njHiCBNQnlnRJ=lU?DDLZAR!c zU8Xpv+cL!DV>j8VYis;6{ldX% z;2#GAgJpKCm0z%yB7};K5v7m}V|EgWrJD8Q(Q_HICL&D2&guG=!n$JOQL3YU@f*08 zuR5ml74I=d?9>Cc-|t@#w)fD&#lJ+W6nm#|%vgMOEr5~osoKb1_=fzj_G|aOaUCLU zUEYM3;$?%c0wy&Fm?N4uiJb=?^aG6~5slVP)G_uL{TR>01Pc)pA# zh$~4{QjH4%nUgMCJ+DkbeK%P1-;^xt{}K;lDuz1yWHHbJ2vO0gvJi--PJeE#LwM6A zD_%L7u?M{+A=IZNRBEI62#tO~`F|KghCl92i8;1m(u4yX+>=lq8E2bDKJEK4Ba-tA9p2P`IgJ@$?Y zeAcaVeDR~_5W9tM#zR%gC6HtCIgyg3eBo;4ELBea7%}_pYr9t2g^OW1WE0Y3qf+hn zhZErLJ)d_)p#O9?KXSIR@eRp(sxF{nOVTQNhr*1{i3mTCGF{0>o2~UXx`H46G?~Q* zU_7!g`OWChl7wlViGhQzCr9j9o=el=HGc|0O zigVh@C}fbYsGtKe=Jfxw5}$!GG=`=p4566@ot4M?+uOuFUVJjP$ep*+KO31#!;LJI z)4+WRK>K2)bbqlnjwDgY?W1oRN_P?n`E{mj)timT77?YU->0j0B90|HAI}uh-~L4~ zJd!ODK9S`MGsL*aOay&qeTYO0wV(LDUeI9_s96`zN$x~039NT~V82h36=2;evv3O6Z)2}%JP+joFr9`z#D7)W#Z{@gCt0AJAF5)PG z67zpP;d$eglc&;QCUO#5Y4#8vKiKkK<=GE#J~p^JpZMC~d0Q>Yyv*XD?H177z^xv6 zg=FG=^a)WB7MXXg)@fvaFK+<{5aJJQ`8_e;zqB~jr3F#gebpLlHCx@iyiWBj!-7Ci ziD+VqNJA71i1w`DDmPvt-^=E*M8b$M-SK%1-cc?8bUMgds(E44j60prFOlPIvfq4A z`hOWO_MzKMo3q)8JUA4Ps*AR%R)4(f02Ub;`9$7OITJ%%NAwzPvFB}D{(D?MqCBkX7@uT_n z`Tgx>F7xjfHe}nOKB?OvLYhI= zbCr&W52w{KM0Z*w+Xmu8Ca>N)5Q`5SO&NqxjV=K+sdYRlp|b8p zFOWYM?noIZ52kfq%5zf9+g3L#A6194s2v%fueXoI32C19XR6((DEP#8@@(0Pem9TB zkk$B(;Grj$wFx8-`;kr?uS$52DX#cm`GlFcMAi1Z>w?f&v+IfKiJJw9iS=BGOp>vL zX%0nv2Z-I0vs@jaFIN5mq7D)bd*DflfZ`SwV^jX`Pg1;EHTpWd*=n_h0y3{;7bDer zt>c9!jbiRcn zzAU1K4>My9Um#Uwztut=E51fhlT^NLabTAII4mI7?#!6Z4|O)uq)hpW9^06Cd0<1w zEb6v~c)fp_Gv91%h?+;ZFMwK)V;z1UD3Da@1}DD`{8a3f-HlF%$^Ltg31FU8&>kEx z;pb&d1AS9mAcuYbeGNv4Wixw56Vb~zENzP&cksUNkL$mxA%9`+q-`kwD6i`=aTg^R zW20z3>1E=mm>ec(?}1Twat^2cs&qeEBrzzEq>Ig4yuUty1a^|Nw6lhk8lPr68R03> zPXJd%zTa%Sq==-@zp-JkdJ|jFwarROsERKk{&w0pUGh~?%+PMUp>}^PQ)MUaRQ&AF z4c>SBx`@khGiA!U-f^oN;YewPPi5sO>0jEVh4wc;*c$-#64QuR$nFgMz}P9rETQ1l zVBUQ%EpB_F2k6GiUXRZmG6uRRnzR8|@VtU?X`4|6k%`Eb8HKJpcy@DjlT_>xN%~>n zhY@?@s;+CDO?RD4=D&PzGeCdqE>H5cEwq4QEp-z?ct4ZVH(JDEYsnKvXE?BiG}IT2 zVIk-+ejCH8^DoZ)>pK2@9om zy?Wj)KTU-pwScHjOY%R0!%OY`L(E!H=lkMrtplcOYBH8YL9O{68<)cd#Fl=sO?kH+ z%@-0{u+bFwAG$H3ffSI4sKyy3%>_ac>GvKJ)Z}({t4%b{V;Dl zs5*1O{1`H$HI7f7RA1<++K$!obJ(2ISRDmCa>6o`n3WDqpObpVf`HZ|(57I820`ViB`rcJRY zb$;H+6!ULBb6-<^;pc7GbSlV78A=`q$06WG7rJ3>_QqAS3HaRQ?QGHGuM3w`S4o@I zWQ`*88{|(`HgmqGB!WZ;j2<1na86821f_N$Vp;|R^NAjfhzQxY)9|#`(KuI)QXytn zNRLks#A5J}yIJke|2csFk9uUZLel*y>EUpLs}(fA8N#A0w4Ny-Dc9q&B_%>dM~?s{ z*4xLkWUz<|-v0Gb7<7dy#gv(Tn*-scX(Ej$#;6hs>EE zU&QPHDbWpQA8EdMjhE5TecjoN-igk>cQkWlj8mjrpVm-MPHMcKgEQ9 z2mnW{C;p^&X&~X{Z#B-hm+X)-LV*UQeKS@`*|nnyDg##e%6~Jz|9nAW7is=yT{?yZ zQ!*|`m!|zvV|G!;nVyBiMO+4Un`UgOfLUXdJ?sNM9x+LY?yucPbrh!X2)Yo_J}ZzK zUBj9XsoEpZ1dCq}&tysSzkX-)!Z?czVhr7%S@>He`Ii&QXidxkfZAs0VEOpw^Gpua zD^%fsW`FDYz)R-P-ZxV<+w25J=H(nh!obMMg*N=_@vou9yKgZN!+_?4VGQEin@?Z4 zf!E|9jFjq`!|x2ha$J`X@1(4Fi)LD|!3fIR7|3KBaef`NUiZR<6*0%88i|Ct|A3Ou z_!L9LL^vO?7B~kgp{fVn`m^NYT2)sYn~Q~G;#N!YH_hlq0uTIg-oI(U!7ksy8gdmC z0PJo2m>NHbThNHXmOEC}J%rxKf9*N;<`P%D|JSv?NAvr?%j;UO9iU>S-M@Q**aIQ* z%UQwzn)ro#&419_g0YeyrAEVavJzAuN+_H6y_jAlGgaWlQ!ZN@zFq8G=uICk@1wwV7^Odsx^L|#cFExVr_>GdhkbYm=q9K`qV(FE zPk2L1`CZ{R-ADBlrgV^cWJTv*d;P=FuwGwK_Lhs6k1!HOu)+QPr8++pbhN7s@0Gu( z61PCmxv@_n@&sJ2HqW%lfeB09PvS>W8BLphh>2Lj7$1M@{SI+$z-Rm>QDDaNlqK-= zpT`CAjX5X@9{%jh^ZCn{+zEP!wEmoClvYFg(!brG)Sy{l1773ziF*aMA%H|UU4 zU0L>DGSe+BOQIBI_HnDju1duUd1b#=U4m$1F*RkqcArW;O?R5yUANScVyi2B#@QxS zB7u#ldn?>g)2VY!GBLIa?n!$TqAe+NoCLbIvli}}GAEzCuKeSAZw*YlhQO+zBbH1J zY=CWM{}JK8t>InZ@;lc}77DquA~UWr^Jq8=VSE?(j%FJyzDY{wjkHe`JfcXBJtMk{ zx>)U!TzGRMyuP|KY@9p_S*EIwKm>AQJqMg$19O>bRiXDaWI7jg;rKFA`D{}FJ-1Gw z_?lPwLIX-j2zg}uZWV$T|E4qU%gDvh=Io2p_4G@G5=z0Z@`5?sOS^fv(`={DhA&-C zX21PTvt2Mr0C&k^P-VYda0mJB#SQ!sp$DH{A68)@9P098 zM-OVw@TVz*YkutZtOX4`TS2$HcpPZ+It?WkPI97&th=gjYxJzu-jstyQ0h&-JF4@) zC1g2Q@!W_Gm&JtAz(wqj%N?jm40pOI5+Zcu4ecUx&z!@EHEw;5NJ8JM?qp*9OAHUkp-UF*O%;m2ZAG4@~*@GW>T{-X%c(uoK5>s~MIEL{=9_ zqgrAkQZ8xqQTI;$BtU{Qxr}4(mtEabgdZFs{?*> z6vrLH#%)WZgWS0{Kg9-O_q7XbXKjZEf9S>L;`!{TG!m13@WkD~1Qoiwi1+bQpn4qO zPE86%G)}y28`d{vSm5kCBMwx|e%n4kv=UENdC;sfbG993T<@rom@T_KWu?}~<>t6R zAOw!cZ91mh>E}I}bbg?C_iP1Ked|{)P{i@<&WC^abvp7iP&h*!RFDdNWyxrKaoHHr zNE0$glqNF9O9;E_3I5{W4i~JAIfngA$EyC6m659d4K%I>fNqJH#|&Nxb~sE*xfqj&JKugAHsD$8QY=NpR3JyMa zS25jZ?J8k9H(6Nd^4#d+_ZLD>mmSvgP45t?_>0|s1)_Z>1Jux5dt)DX&i3d_#GuL$ z_@-fWAPa1r%hwQFRG5md)=iT9IUb;c;wOp?(;KKY8>ypyfgay}YXrv4m7C*%5KsWB z>iV@|I7t>V{VsCoc~Gecrn;?%PI>zQR_Rt5HHVRl`bZ5MR4s75L=A=|65h*ftDe1# zq9H`bSf&GM-oe@XQvLmEyS6GK1XHsm;KPW@S%6dM_g!Vk?!|m#bb)x4tkq*A8spEN zz;aIvbyL(FS&T4m62$Kl>0(_XLYfQf}3)+i48sL#H?3%v@d z^>yDqIYYAu)HB+{V+cn=OC(U`L+DSSi(iFND0lifpHQpQw94$0u|?ZUUOt4T`{T>r ze~-Mb=2!V4fs^u7$^YBEHVT|jx87d5x%WSiX@J==Cyu~dR;u2#^x%J2>rTwO60Y9! zo*sRQkZ>-~{;)hDpx_eQO8+|w5ng1(s5Z76Tm&q9V4rbHT8Ph{G9l#906kAohE%a( zfNWLZ>;sL1L958mGzoIB`2=DjUNV;@TIBQ&kITnMFq>jRFFtS2lu0P>W0MH137u}( zD9qOMUHGO`$`u)(G8RLa+*pXHmhS=JP#n?`XnWDlw_b?X3)HY?ZOB1{gJJ}zA#0Xq zD)lln+H2U!c?`oI<%UR5`9j0F+4Yo;f?Y_@ke28`A)(V8V_Bui;?xeb1(mCrq2Hx% zV8u-QLHT+j>b9qp7DLoP!_Sh%p3{gIzAET`dX8lM1&L`(?7#0!b2_Q70`b&M^~E~1 zB~x+l+wlvKBLh`5_aSwEX!sBs;N7_prix996~)Fvmq(#X?G=`y{O}ZdKj|Uh3$q)j zD2-RH^H5W-{zF_gMEgI5o`2+ivlRfchi0*tN}M9mZK6W4_g9CR1iH*1T?n&LH2rpr zz=qVS0@=mNa?Mg+8x5Mcx)F~Z3>>9s&hf-8V$(F5CF{>|y9&PA2&SjscYc?!0E;t= z8({EpV zbgFYJEgv{2qUMTL#{LsEg`EvCGJunMwFuMZwlcsaKV2$xnwGdn4jm~@5R55b9n{Y8 zU$_0Q7a9H}{1j82?p8`2qnFBqy{P9?NR%WplBKF7l>7+LOZ=nN9Hb)Of*A$DB-8mv zFTP7DD+jd)-CCeDW_S3QSUJLw8Pdy-pO&-ZYOlubxwc;yLB1&sD;!#1&7kkVo!LYLbQ9j#gwHq7^H%5(Gf6CaWT88vig%MyRp z{WMSAu}tQ++%rbBpPhUBa&`20Iz0`DN0Q^+zG>c=F?TlDpF6f*oRcRzAj|!sp=UeD zSrq1Ljf`HYf(=E7C7Q@dRG>P>jIZOV)I@`9{TFim&o$`}k%ww&$VXdDm?-jI=jT+)4b|>jD}MCH6Yyf5VAg}*NUCgaUhD?_zqlaDn!ieTc9r8 zp$b2H3+~{0clZE&Eg9wbC;QnVYCTryqj*SRF=uucep?3c_*^M%5~UP+6A4A{Brc*z zb@CwD^1*A{q*qLZhatKvffMpUQJ?$UJEDU~7QNEm0UX zM84p`v!^R9zaqH(aW-2*FAXKUu@S)4cLf02Cr^|f;PWl3)7N1|*&UXMY`2QdM4aw-QS!!`GVt5IB zUW0b@%ZX1HEWB$_B_W#Hob>rTi26iKVBru4tMMLCvs=me_0P=HYq?cwi4k#E+W9d3IevVrEJty5=x2w)Js$yyE}L`h zoMrjgUgs5p+<-%!Ao#pxw&diJjk?%FO9AKqzncC}u3_|#i!%%P>;NTK3?h}W5tx|F zXoQ1BQ*8>BK`Yebf||}~AlBq2vQVRm-;#x1WE@B4jtXP@oB*!qCMStYZ_Al%U%2?K3b$0>&Av%_-sFrSI8FuE0t)932pBuZ?t#(>E%wzGxe?m z#p*ynfSCuX{XtNO)PvKDDmVN2IkiDQ(nIT}gmMOIO=?sh%PWopfe%s_Mx+%kx|JSG zv!F}Z!{IzP#}PT9KA4Sy^{43u8*G3$9o+6sGh?}689@|!%{~{Xi0`A7A zg9+aL0vL50g1ploq10F~R$YX<<2%G-$y1k;$gN5vq)Hmzo@WoDL5c~T%=Yk}MJLP1 zJNReu@X=Gd3%l^9z=d-DyRYoW2I?_pAuPQ3tseYgViGVRr`>^452nTxhkV!9W}e|| z0~-Rk9-vdGyl!yz?nW1z1hYPr@!zutuO|gU@uVQOR|^Gk5i7x^@MdLsA#&)_h2O3i zR2Br#wKVgR$9>2(?)hoUgViX~$c5)z0c2q2_QH_=MXj^Wlf!_ z)JC#F>OQObV# z{u}F3&Jp8QsxMom!8-rfz+;qVe6Z=wS>kTQm*ShFK>@yDz5>fyAsXrXMsKQ`7rv`~ zNGC4X6`G|3%S)MK)a&bSR;5WA|JSw)^(B@877Czj(`EuOo^D2&|0f(id728XzDCaJ znVT2B(%FNxUI233J8J~r;Mv?T#gfF>ENqaWplH4*%wZ&-Y2V66MC#1x0Uc0J+d(Kop#T44v$&s7?(yS%xWT$$ zrW*)z47zBqf<;Ddz-4A1zTSI5pD)~deZs)rJGkp*nHUEP3qOIovV&m#C>lC?;9QX$ zH8J>-lz+a;_LVQ&-_Q1SBp-d;mm?xEBFRGFh3QNtF5b8@ByU*$6~nbU*VPbQ6p+&Y z8fT`Cw}bgN7mYVq1(O z{0@&78<*mEn?)U64pj1KKTemc3ygaMaXG9|qkO;)m-UVS!KZ(nKyYpMe_sM%(tK}! zrahcYNTW<$CIdt*jX8QU@Btos)dFt6FH{-m-C&Z1BH{%;-y3z0q!Ptzi{G6++4NCI z`Bvj#KdDOTq}&=@q{=_I?he5H=?0QyXJ{k zK9iBq<0Iadh5uSKX1SRo_`fKWsDMeQE{%Q|Zol3n^LIk@#rJ28Xajh7#MgbQ3`k<@ zgm1K26a~*83)%ZSXr(Dsj8y_y!v?7EPmf-k&{0vp9$f!vb#)nOpKLdF9b)^JZ@^(S zXlmBT0<`t|Wix%BWWFTp(ht>!g2l(>D%}?$tnBhDMNc$Zd0#XQWOSeR?n$>>ABjN0 zL*xIo8~jgLy!;Uib|&(VevT7BWE+nq;s?X)=p%GGpp0EcPJ=rjK9Dx4C)yDrD8Rox zQQiw~C*vzah(ZzTx6$~s3X}WsDhVj&3>~bap#IENq`LdPNH-8F(3gB$;(Ri}`{xQd zP_d|%2Ko?FNs(lrgVG1hH2$+{FD^-dMNC>AIpXu7qzc=pC;r^la>mEBIN8PTg8leCT0ijN8V9w*u>i<1vqsY=}wtre` z@4UgY+&SKY_%KueMZEM%u>t|_e_Az%TVJAl|9N=IuFporC{_+73_ZD9T3bn#h&}gR zWP1wAo6$0I19Y*kz~kLr$jjZ8+4ArOo_@h<0=K+4r#+ERZh?oKfV*R7%PrIBqg#H5 zLh?;sEfBho2eVlF4UZnHzoQl)O5#O)!dG#RAZ z@m^}-8g1mM6Zv>FBkH@+Mk!>siC#%lwR){G9>;18fPZu&g$UD}6!+wsn;93*7I9{46?Kr^Ll=^CM!vemZGQpuwOHqSC|h%o_wE5 zD%Q>hZz?od7Mp)Ad;CaG0G*{U3dz@ry;Rq153tk5lHQRPqe$1ul&3JxbV$fO`Bl!; zx%1n#nyChnTs~ouG+L1s-=eim@{@%K3UYk@C1g#TQu#$UM(3yY10seCN;hz8_O3&d zanLgAcm!ZAXhR$5Zc6xpfV&JvSiRQZb>Xv*MxaHiGROlW)2;Sk>g>2xp$JYpo;g`@$F=q_LA7~j-;6+?O!iTesKoKInT=1wIAM8PcN>FIgQ`9B5QL^o3MSF-N!Y36oY zT|{6DF&N+uox-3KXgU}Po~B7kOOIs0q|I6dOWGpER51QtunFGcj}3|=n&|*wtq>rx zh<@QjcXGHS9>6XSqQbg~V*PU6=`A1xM0!prQsHaUB(w(@bCdc;SI zO(51>koQ)8x?`AGva?>mwIcASXRfd$M>cfI(M7_GOxgAtnjIr2LgEE6@AEJq+db|4 z)XRaHv{y8M>p{?&*(jR#zRtRnIp#uBV{H6|kUXv8F`+gAS^tQ!?Sau5kR{&s49(r2PkBUzai6qvxXS!OOCS1mQ z)?n&o2PIk{U$#ERisV%G$Cu$kHvpgJEK7gKsvuzV1(OdMFCs3iYLMFE+{xlVDeb+6 zCPm>4LT?e{^=5YY3UtmU$x#<1G=+ljj5P3*%*f>WN^@k->a&T7lg2V|_X$_R@dXlRwr#uwgwqSzSz< z@gyYX$cg(q-X4L1%~B2gLI`w(cn9qYivJOgy965kxaek*`t|Bv8|T(=A%87Ro3_9v|K}X0_MoD9%ij5ZxT*XY z)BZp-Zvf+(LTlvWcyU1*?$h&0mzB^CB%cRaNcyl@ER$JI4>@_h-WwjBqX#4JLQgD@=ZX@VsQ|wJgj>kq(&!gB zG1St7?Qe6lyVNWNmSP^!CK_iRgcn+Lo=1{^JB=F>}3CA_hnP{Pv!z=9KRDb$c$tc z@VB1>h+ygepvH`~i8`WY=Hr&acZU56^HZ)=P{UlnH^B_D26jQ^An@Ewd||XrO@Qh@ zqiP+o95`;>${$bA&T6}&hEI@93dCtfF&>Qk42#ZRRIw3s`)NP~aC?}IPJMGbeW8Ruycq;Nm>I7F*(8D5`ms3!bC(bIPUJ4K=~bge>Ff(~N={BJys8aV z-vx2c!%OQ-Wz6qCy;>+c?X7akEPRm6_zJxVT^jQ4cV|3ZAP2mz7XY$NipS7ovf$NX zvTh4o)Y+%kwN~Qj&L%TAHExhmR)|T#h3Q>WNNJk6z#sj2n94)=l}1lAxT%#~E`FSoKn9FQ;0dS|kgueMaS; zROhB))6tmc$D4~@z>ePJz9cwvR~p0NSR!_TbosE2v_C`-RzLvq%?Z zA9eP!YMIkXK~W+pIYd%ceP>s6RR+E=#&CZTAKw==JX2lM`AJ)|+=)6(= zr40N!4N7v)GT^eD_*Vu^i?TUFqu-MGZWCPmAd}EHrU;13P1Hm{x|=zMT3wf+JfAI* zn;{+h;I)Ej&vId#s)i#f&? z3SZ^XiiYoi4|RE#6IE+QW%?Mz@{J@e7Z>X+OD4e^Z@%8B%ISuMF+-Tdg+FaTHqj4C z<_EOCiG2>jQUn#-s$ylMVv3_40i9HWK|TB;3ME+@aW-M^k6#fwTgQ;hA6^oLw3F%(WUTlmYdDe}#AVg2) zbH{5U*L=#2$Z_G!3C1{85xL(@#{AQ0uFwLl$o)F#b&*LTK;6JWI17NnQ|nm$qGnU6viMIr z+N}H$Jk5ynxy=Vk#|d+X{bQ-G|ouhZW<>CHlV$tJ_k9C5MOx#@Ys1>@y z5#a7mGq^`S7=MUP0p%PHfWlk%`hCY`CXxCTrQmaz{RC_VdOCvQP2 zZCA`C3j+WYQB*!uED)^*pE&dd!(op*Y!=ImC@c3(pvWm_m}^Od7jQ}YMcm}x(FQ{G zfc>Htr3&bW$Ew7?86p`41O)cAW%kt#RN5ksQrQ&ha8^@KqIQeI0DiQ6^$FQepn?^; z&Zdlik@?VF=@{eiT!Ob0SQI*!O-r(nJvmH27%JPTEIh?O@mGmgm7IS) z762H1ryZBGo)xrN2FodbLYccJbycpTMw$R4_aqHo!|I~y-o4=`oT_OWD5k~D3`9zXviqO{cQQv232 zeEN&b5M2I6sY`tKjRgeE>8*bh#?@Y?2-V)*eEyB=(~AduTQb5XGlUSs^_U=z0>%=k zlu25&0M*BG&TyTb4U^V!wnBf@oeZFhlxdg{jUJE3H@uUu`J6eX{?WUeo6 z-jY?3ul}oR^#17MalWH3Os&5ZA(f*+ zsExJbRvHyrs%GBgM1LB;886+Tf(cduG6p|q;CxO0QB`J`ViZ}8@ikOZL)>5vc{dc` z=54Mdl(q^rq*4vqw6z%tU&AUQpO|j{fgx%rc|7A{JgqtAs@;-B`et7*?0NSQ_qTmG z<-(Zl74$_~uu{tYPyi6RM+Sbj|MCp-j;Nia^UzT$ldagRx8%KtI?BOhGV6)Pq}X-X zNG~Qu*kI^6xtp}Q9-3S8e)x)Bq1G}N!oI6BTw@*BJ2>iByVgkWUv(CDscG2Pz&o!J z*l}FNELAkce>GWHtvmoim6NO%Sq4_^jqeYN%p||z3it^QP3R$3O9<9%JRnRE&B1&4 z56@VajwV*8ltgJCc-PwD*D8(u@j|ZIJg{*(-^vN=m=PhC8-PAB(W79kS3tbjW<8} z@kv90PRgqpyisPwh2Wq#XcZDS{~3}mI}jBd=I6?xk|{YINzgH*IVftG8=t4-@#@Nj z;LxE*h}E?|Uba3|u@bG>{J^A+xnRJ-Sn|ArRxMIdW=18PE5Tf_|I5P|iaUEK0MB-@ zjIxpP#PJwln7$lQ^#0qJn7Px#aWsmNabg`Gjt7i7XkO7$Z5nmn8`6ok6xy6=5s}mJ zf4g5ke*gBB|8(pRGzZu0X~UUZek|Eq42iH|nUq{%MHpBKYB{3$`+h5{^rJy}&02R_ zHlo#j?j%#4d0~?#&e|`#Fih1m9nZ`q|6Eyj%kR;kEPG*LXf)eR(e}?|Qm}Vv1>Ubt*E-c}uoC_#o{JcG9v8Z#~Vlb%51ok&_M?Li_mB@(l@$WhRH>Sx%* zf(~(MRNokAOb?(=xVo)8SuEuOz5+Pr#%o#VCy_W9bVk}Xcc2z5>VjPc_zM@{70|$E z2;!^W^LA?Is}Z9#j$KQ;wk!Eqb8jv<-;`WGg2r@k_n$NCwyj5q46&D)ssB`l^A1$Z zm@Uu|nKpwez8ZO0ucQIr7%htw!*Hb|YE}du9mp~yB9r=~I4d;FYCN?7reS7xzvi^o znIoBrGPo>WhA|s3o4(WC{HWhw3f9iX7f{gfYFy{&ttv^i^ehoFR}2xh$b_mh{6bnwac{nvL+ZDb^f){Lt-ylu~KB*v8~t1ibydLr%L1I-q<=~d*4hA zo$gv^EeVpu#1>{*A8>W{6ot7N{l86SbC|IK3OEK1opf~cF-*tMiZjckjT!Ui1f>jP zB?LMGg_XzCWoC_lO9fOyLI#EBVop4TCrY#sstg&Lua2^E@q!c7mGkJyrSDdA8FPit z#iM7<5MyCvS1Rvw=s`!sgLzysmof;0T(WJyS2J=){p(0XL_>8sMLiuG0ik#VAsM>X`C8Rrm~vGUiErSx7)wdcbLsw3>_qG ztfaI(KH8Q~$tU9`JKjZ+@v~Ii{bz>#5}d-vLK^7AA_ z{9EAj;pv!}NAoYRj$H2VozN{NT0#f+{ORdLyUfye1H415uRBAiScu)QL^pq@kreWA za-xlc`Lz5ywsIlLQki3R2RFqUA8q?4*TSKCp&y#6rH)+3EaH4y&*Is996vj=s?0=z zd1_1x4jT|#e!>v8hrU5QoZZ`Q3H}f06tW#Q&Ubte#MwF9B@q~`Pk)_D)5pK;f1<@j z3Xh2PAMKy}?PYO?%Z7rLY_p>vQr$TA@k%*u_p>#s*hy_)$d)a?fl zHv&YHPm7vl=7!Vh@aJ$oQ6=RLS?#_~IA<|q9dO>z3`DCw7n%AfT6 zWDZ>;aYKuV?RSaPS(upn^4OF*l{vFkVCpq;(U-Dm# z$tyP;!sl4xWM*8s8F5MgE-FW!EwX}WBCbSY$uXQwb<~m7JPOTdB7GyAhij>?V-Sxu zGMxH8Yx0sghsXiBBWGX-BcsTR5?WF=Wpz?gJfrlLa!R}p!AhfTs#~$IMPU^UGGHp6 zCjmRso-KoERSC^ImPD8->^m~LTj>4i8tc(8RVj{99oz z`#V&GFo$FzG#m{_lX+pzp_{?%rq{6uaoPabeNpHtoAjLDm58VJ)Bad`bY1zwIxqSI z>b^O80U_eY*k8DF%SXPEi>88TdWxCv!FNN>ha3O&gpFdiAe9}Ha5Td0i!&Mo^ik4Y zY5Q~7ILHu{7G;Q*$l2E%;V^^V{1Nh|HAJ4NPPV7a=z#zovuzu|OA~iE+B`pZPcCI@ z0-PlCg%{}*Eq9jce6?MLiLE**ACn>S2%n^%0EMN=i)>me5D9-D>vZ7})|>l0(hQ>b z8PU(1h}+>w*3_KL#&Y4Kf$>jH$gYR_nvs*ym(&i#A zZbZb2Uv|#Y>e-@YDZk<1Bv$;Alo;+L4w#PaxCBOfSJi5FJz_@d-frL{U3I%7duGod zr^=L`-{kk>O-wNT1SRk0c6z~nRIx=)<8+@xt1^7Bo2_EMh)}^T+dQ(sg^ehdfg#35PN3|DU!|g_++`%*X zIvOBv^N&4{5nMd#?|R7ueuY!Y5SSbhe>?rQIvhncJQ}oTPy|lR!A2Kajj|*+s>|-A z`0#wMeDk5i;FHXzc$w+;6L(`n=rJwHyol$9U|C87o8^Cnb{;kPzj+PET&}&#vKCTsw#!S;@FHvlxFfLL}sXeH#>prDkdmmd6|mMZh+ocE;Kyk{(@HE8fHKzTB_^YMAsOYNxJ$?fPoq2 zw~YL-?~g^R5r;CZs*gf927#<>YX{**{x-xXs5}DA-KzradP<2s=hwK|qw8D6C%%Z4 z8r0Hp94WM?HNqnMLQUv81i&s;L^|MV6{TKze}`d0V2?TsqRN7j4TTY0{I zf%cTth$#9rk%WNyHKYXkRQ*J~fp(SiSCdINZ15!p(aExJoUs0Xd}L`2q}84F>p#jg z6#9tIhs8}+p%|MbHxaFg8gLfdVHLF1-r)wzBdHWeqk^cs*x3OY^YJjyL{R4{5meReK+{+_-{|}M^Q_jL$??jjp^QYW3)fA1o;SB>-m3}MPFV{%$AslNFJtz^h z-8vviWT}Rp7GwMW+O}=|nonnoLzsaWlQqLVTf-zfJ3Hagk-^iQ2s}V``~%x1307|U zsC?t50${AYm|niyHTH_PA~g&ZDei!Pkbm^Bn}BaLPC%a5!+zfJb1ipZK|;sDE;-~j zWvI{7GdU=Pgjgtki<($Og}LMx+B388j}7|bT%%>WtF;i(Y;;L<2o`MTYji4gTS3c?7e+X-l>Sr-FxhXi$7m9^b?Y}%tSF?bHX1Qt2&dG9_?D# zcm(I_#yd1O{+pNJos`=cr^0+cY8=jVw)C|B(Lq%FSJq!raq>@h2%(0uioOr^C0F3J zRyhmUpHb;GC97`iXB(f@Dhz#8&-i8FQzUIe^z?u|SFL(ZPqDvWxgRSfx{sHyCc~## zKHBo4G}neOe%lM=HC-pIg{mTdCJP$iGFjq!6*ZG@CX_P<^`JNzPk62X_IU5qAO3K% zoYV)V2_EU42>}$mAG!o@Ss#^ox-Mt&6!GhHSbTFjQD35~y*_9~^AFl)B>EqJ;}8R0 z$Y@wT3BB*k42MRUOrzr4oY*E9B<%%o2j-iZ*$(W$pu_J&hCQHB81sEU_aLJ=Ljf@9B zn4YXRGygM~MpXRs`9iHWTXgfvDeH|QW6tI|?ext(8HnrPGt>J~S3c4lC%{UalNE$L zZCWqju*pe|=P~fhX^%cJXV3_3hB7Kx80H|}be>Z%No)`o5 zbm;x_lz2od_i`G+VO~3h^j_6zWy@NK>u>vI340P-R_lwD7Nef{X~PWOtm;JPke61( zms{bfm+3>dGBBK%#7zO#;@r5IuwG4e@ zecPnc1SI{pN=a(&ZI*<-{ej08>lKwyY4y;+bbb6*RJN!>7FXcQ?OxV!4*yuv?zH=7 zd>X0E2Z|kt8_It>S5d)@JXHiB1%V9Cowj{bt+%` zC57g~u1>2eUxU?u%Ga&DqIWGv!Fh=MEQM*d(QtwcIji@a8^u0- z5PkWu+5SpS&0ob}Lh{6wL(z?5quqL1L6ttkDWyd&+&h4!uX5|x38E+8sR|i}{uof1 zQ%BRB+grc6UAMzKrFa~{2g3mF^=2CZ+6ay-f^ZD_d7~Y5pnT3e8R-hYD-+WRc$(Zu z)a}6e7I^q{5R=yYOqDgZVz#kQ*@BU7K97jD6LWtHOt`tfT^py_GmpcXmrB2BwZiG6 z^Nu3rk&c5+#d&7w)>?C|NlbKx1AN>)5`=^MUE}5*ddi22`{Pz_9gC$?kl2!IYdbjHOz1 zl~e8BIsn$3N5T(=$nC!6)IO%@u#2<4A&D?TC0(cZ++8H`>|Yax$}kzu>SiQY zMr({4@O27(9cqI+XX33n-|L}cJYGuedu?-bs!G4b+K?X+lEDUqcbrqq@(ek({}WsoJfo|E^{3Wvw_v$N1kjU1R8*Ae3p|1qhc2w7U;eU|i@LHc=S)021(#C6 zENqb1KF8DT-_(>(z9lmo18H1-%76!Jx3O@kZqzW1&-iBU6RFzW=3iYh9p{Hw3vH0qIt0B$2rNf8=my)tsP$>2C+ak3m3&TSCRIpkV`ldK<^kLZ|vtgvdAjzBZ zX9m>inYc`*bhQG#J#eQlWc9E%GyOVrB%*CB8fikto?+zTd2IAq31M(4{fQx$M9%zS zn0U<9YIO=c=pN6*6RTB_e4aZ!`D+d{n3*V~H{u%KhuOUlW`s&G)3njA^Ha6?o6gJ|lmlwY9IXOAS zPgy7LxaY3WmOOgOMg2QZx6fm-g5S1M{(W*=R(gQ?30r|&)A!`%MGt8wbs;n9Qt};_ z!-@2Wm&Z!oMp-`g52k-gPfvU#{XYnOb|JlPwREeH<*DzX&tK$8n7|rFzRO45fb)X& z-l4N$zW?-fzzDqC&WEEcmuf-uhwoER9UVW&rQ{8LC+NjC1;)$|Gs)V;>FI*l;N)Hw zKh|mVnkw9iWxUYYwlwF;l!_3OJ|-fm{}E1%Iw$^pkWw&nEdLvrJt1`bO7-mMqm8{SdwtwiFtYEhx<_jTySJT_vDB9g!RUmfetXDlti8qA{QF_*lF zZUnGqHWUEE!nmH1w`ZU|C21JSB{mFn0ucXKdwsC!F z&Dcsx^Fp|I_YGg;+AF+nibC0bX8-KW+iaB4MTbv%12uu&_`ld8&q){CJuev|5LOLx z4lPz{&BENKU>l$e6$|A$syviiT`Z1$gNN$m<9|IB9ALt&jkB?n$#@*@7?jeB{$|$o zW-W+UfcXcHSWfB~eV!h{)dNFJtX~UT(yxPy`3fxEFIuWfsKIR{;XO$96phTYJ;Z@0z#gjh!3c)5wgIpx{l3o;&z%*Fo*Tn{z zY#qo0Z9zd&E!*yKPNA2uVk`qy2Xzp2lbS9RkKNG0xcc+t_Hhdcrj~@BxPz%NV7h1< z;mt|Mxw{0-y@VfifkjD|WOh>uR5rKD$C!31nxi#(jTH%R-~-J>_%B-IMbf+l>+dQl zY?PT6;^E^LO=8yO>Yq5`O1!X&DcHFzH~*bs+{4P@*?J;PBBAJhJf3&Ln_0bXbJNWe zgW65eO-3SD?jgM3FX(w6~l@X>H48J(66F5lA7;3E} zz;H?vu)+qH(?-1wqwU`~e1KWD9;|cu*RLn$#QQbkpPB1I`#{#NoURr$CdoxL8z9gk zy*&!Qs*@9}3XPuej~M#Bb8cT?Fb^c#Srpo852hg{6|;!;VZm{m_b-28OkT|sgE{7e z!(3>Z4?OX>*&j{#RfnPL5`PkL68(&|N(QFagd!7VocoM+f*)1dGENMAQrLo>#0~|S ziU4|RvIWs30OQ^W90-oHRPyS;JQTc(%zZq0XIOmlIegdozCZkN1N#kY*-v5i@^D@Q4qAL5Fgi=QLYwv9?o~KA zIG1Q34mfy(=}xwB|2J~7Ad-V40ln7TbKt0i;Fp^<+w~=iD~r_961JE0Euhm_DAk3v zXhH{@_rn=&*msmMiu-s{vAI9PN~51eFzP7SW?x|ei7G8*Lov9lki&5#sZ^cT=)Pbm z$(#?SRRUnKOd}$jbw5PhG_Ee1LWCHjAr2D`Es5%Yl~E)rTPd+^Y@fGC20+f|ahA42 z`PWL7r_mSVc%vCA*>kBv=eR43DsD6sN+Eu}&=njTicZ1Fuzt6{0UvCg-^cqKqoS-O zN8GAL&S6?=z+3@2xYnI(jEjqNi#tim=Jo|$A^u$yFo={p&R7q9uq}KLy;pKq3Y7nz ziZ>y3_edWerawn@K7iJ_$>)l<-ZAE7ww)xRgOw znB`JUT-R*0Jeqq|LrbR?A}`v~x^uXr3sa9akbM#7zJ8*i_Id`KDMtDx1@8rAA#sh^(H=k|923Ymbba{6NdPpNu4tj+g8vB1XS_cFf-3 zhlr!J`!p+1A#_yz%6S1Inp|f*9=xNi zRKFnuiC|emvxibi{19IJ$7>t(BzUvH)`T!p);KEt!R`nn-N;1cj)yk)@$@1do&E8f zLLYB)^?mXQYCbhljCGD`F$=Y)40HVY<3N}@y zkh_~-Sfn%sWF#UOdzoDJvME4U>2JAQ@hRKs=>p#^{pjMG(Fco0ZtYXtoc8Uqmr zTOzL`BlyqlxZ2IM@4xvzE8%z~e6Alle*+p1FKQ>1twY2dTDE~CL3dgsd zPu@r^k~roMp$O|7%;f$-{vjy+jdsEp2g%-g6)9ic`McBkGqE46M_=(Zjv$9weQJEJ zUR*%*Wd4@k-X;i5ge?fxo+SKwE!fpj#3YNMot2nDCTSmJ6lXtkxqX^OeJ zOgEhh@g?9p@C8hfU*=HJ%@h4%UB^y86MPKb1A#G5KEfX;9)6aF2*e?M5%PQHaL&(! zf?Q*!BR94DK6>%2o(t!1fl_`pA$)NEkLiQ)$ZMTh@$EeQA(R7$cBGuXJvcEszD_ZM zd$wfrp^c0oMz~tl=wAm}YRr4IN+{=-x#fCZZFmRP)}aR|=bzKjo=i_dC>g&j7#8eo zgxguVpxHJJ3r>TD0uAQNZ|Kq-8%0L=5a5Mb^!oEOCZ09cZ8WHB6!D~q@&H?hc z4x?vM-^h#vralBQ=9jWXJ95$InS!gS6~2{2{sg(NDC;A0M!xBXB*b+0we;rnGa@9` z1eB!YuY)Q}SK0*2yjDKza@yS_i_F_#ZSPuT8w+$)8TOEynQ)Y+aDZJ@wx{CJh8_@s zJg`{jSDz2v%Ohag{fAZt|Dw@rM&HA1TrZCx*Z76Vj5NRvWih?&ESmFte~`6@RO*SD zoM!tu>!l84!nX2q7p~9*J|dd_c!M{-76P zARYEmJ9?{i8~A1ijQ`rGFj)MJ)_0{I#k-j{(Q4SKx_+g>gjCZmb{M?4PMJLHQ2)a5 zD2kY#sK$N%a>SPUJL^8gp*#p#Du-f`_1?C~4_@=(=yqJ!S6_G32N~5DGKV`Yfcep0 z!rOZ!N-DM1Z45CB3B8+Q-$i0Fv{L2kD@Vo2+mEVCY5?DtZ2jmea)-Ugy?W&x4XAvO za+WXv7x>D8uDEs4-@z<9#?2PXy3hCQ_l8tq~Hy)>LCguGza2;k?#hb*He%ZVjEl;L7))?W;F|=%>!V!wqe7ZP!Yb7f=v&+a7yw+iX0W zZ40tk)Z}2G*&2aT^6-yisxPPktc&hbO9_#}`(P^!fH(Uk#DMK2M7sX(jBOt8pHg0J z?st@&UjtEO)vE(cTkC{Q@CyvL?`FGM{AMmoJ6|CrxnhNlXen(7kfwR_l%C6X>WxkppH% z(pz-*Z_4D1ao3@clH%eh8HE*#yQ|ahGK6(O?&b(RddiFBv}(nK!>L~xu zcVGzFD^rH_NUh|0C3|Ck5z2R~XI9pr?`btLdR^&Cz|^cz0U};%A`flhY~N4*;)NBwMsqNpwZ7;z z=0Xi`*b-%EBKh>1LpByfHQTaRKP#NyCK)Cg14FrV-$BB+b6o|8+vU%^8(mz=G-z8e zZyBTVXNqdo(%OSee5>crV989yC5y~r{V!><_x31%-Lkp^nLc8KI;je_hs}yQrqWmlA3Sk(*PZpQztSkiTJ){zkP|C9 zd1D2{)r^K@DDdYxADGstSe{2sCZE?|_cT%Ja&p4?2FF;+MW4UJp>Kyf0%h=FgvyVD zosE!(AKJ0;YsMfh7ac%jkR&RF-UJP{>Ue;KlLnw$KEgnU;d$+|vy6O(_1KPfCd7}ItErT#DTw-4w+v|lBB#UHhw zgzxNP{#Y+{63J>*e}MPLtYDW0PZ6!>*%8+=kC~*CWpkkj|KQv5bp%Utk_GX7SqVve z#Km6x;|89y`E4PcJQ&;JRsv8v36~KoM}3OtTthyRx1@IE&*}MdU@uPnpSGv@cNZT z=W(eE$~x_Nk_AJn(1*6zX%w$draPE>QjvG!Y3GS8uIed*u`opdoe@ovs5CNs&mkL|ATI_4u?C2_Fb8DV;is|J&GkO-Y6D&N~TU{pEJ2e%!GEz zqk8jxA=KKuDH8Izp`#dqb6Zg~1dKLG0p2T|l8>Rr?K*aF-*0}X9XiUZwsT*T} zw+rug#wUW8xU4=RM@NBHKM`H(oLB;-I~twe6omUZx6(SDI3I}l z0y34dcSqmGdFWD)=Q^d6N>#BHRa?!RoSvoaT#q9eFlHyk>a zO}=iX5-CPY_Y_2x)LO5@+pRmpN;z&xz2_gq56=c>DxIkj8g{^rf2@WjmN1b|jiD)_ z5Pd6@lJMfmNFD=gdICLcB^@d{w$mM+x*=ct=M7zsAZUs0^s=F6#IgCO|^XOyRjxCoT*So`+SYvnYPblR6 zWs@1w={)IoS6uiT?LrgF80Hk^N5*h?0Z_4jo=lLn%7}3^w$F;3cqD(c0~b5Jx$i^wL2q>R`5yRe*Q5P zj_{36mcuq3zaVeHj{gDnhV&USJv`adqZz)dany7Lb$@6F#=s!&tsyz?GppfMd8FvJ z%P$bU3OsnKPXHS}U$^#;Dqo71vje{-!#l!9`2Fp+HIy6LwDawfD<+Kr>{5gd z*0#F`KT{V?bevEXw4V6hZs?+R695L8umf6QXO8CZJIdSJIc_T*yqs3_H&Wg>NaMD_a?M_FPCgEXiR8>D9qr$(EvDAG5TTOr28X=~c{uIX*f4S= z#i>aPucSt+GoA}xJ1h!@;QQBZk@dP=Rc z=hyp2&5@vw&JYB!j}DaSBRJi?d|cS44~BNoR%LZ%y$4%t$=Ttax?GK_16z_s(|m^R ztvLE&P4=&>7g~k!L)MugISa`qi%<4EUT0jyQ5vF9DZiPSgOtPQ`SFb2(*2#jzGV7i zqDL3cE6V1)N-+zE+D_f8IMNV&dK&U%XnTWgd!I+6b}3vNCJ6QHiJvDu^_~IcSZgc% ziDiEVV|kv&5L-vG+hE(zz%8@~y83+kp|(Ls^l!i-)jbRnh)S8l!C8bbo-mfE+3XCT zMi0g-i4$;4+Hg)<%}z=UMEXnb2G(*iVtpPHBq!%1glA<)N%|D!xwTjl`l}WvA0|iD z2K!;$2pb?G`%u`6?NFrA|7^5f4Px;O!HY~PiG^sl^$fi;z`H(?DXbSsto?MlqGeoV zKHQ942@!*nf;h@FK+zNq%^S)mf~veb1+A7M3q>UkH5oFMaId8#=ifSh1iuXbAP1~wUN7f#;|B;$q0V=9If%ufycmy71B&UQl|P>9%w zm)+JSHj(>`oB?1+Y+b7k@KM(<*2H2gD4BpMksD3#M9x?0aK32ekErP>tbM+vya3ba zaah;(eJ7JUXXy&{sVJoCyGpBNLN=BXYd?4@=cYfXT%+Vuf4NQ}n+fP#VqL@+ydSs{ z)#n%Ak(jDruGqA=FIpP;?Nz)za*N`f{CNTK^mY z^@yg_ZcWJM(N3Vt3=`ILMSxF)LAM*NPCLul$wGL{{_b$Si)g7!lJW;`NJY1ehg3!o z61}t5A9rIWNrmh{D=B9=%mLJ51gWWlX{D3uR?WuVu^3e+rY0dTPH)e#f!}Y`2+~$c z$F&NykTWZ)u=?E;SS&#%sgP~K!@e^*3vc%VJKX+cC*N?=^T7>2Dt%b5|65GqueUH( zdQ|c+p5GM%;lYYk+Y9o+5A9bMPFxY6{xtC%P(V9#|E(i!N8+@(%Z`*6c9+3!(E~(q zm1;me>gy?2t5GkmxsXOiY=>gY!WH}UZA7%B3VEXiC9%Z)G!a14)4Jg2(nm}bmAC4> zd=~N}S%%2~_2*K=ID4K{Uk*4$Xetk<$aXr6F1YBSDn>{W zA7`5`ItsG-ulpu?LD(U{K|I3mQa=b6nc0~1ou`N-{fJbdKnXbmU^6!&`s2;l zppTYxPAyeA_vxjN6opI(o15ZFW`c?II2dXD1+9au?j`$1$u?72hB&xPy*#qB_WEM~ zviORGog+Wy%I4yJ#qdJ@JeJ34g4XX&UCelu6Xn&If$53bS8@`qc?CIYoxMz5OqrWz zhf$eyb}i-90F1I?;Cd~?>T6Sfv&{h^Vq(Jv30^Izw%$pvsD3hzYrRWmwgd_O7pUG_ z6?=inF=nW-U*rh0 znB_2zQZ&=YoW686&H@?Wf zHaVrqi}R$CbJW$uubmxrFj=UMD+gqyti;2}tt_x<<1-5hdtPpb#H`<=hmP}88g|It zoZ5>YT0<=5 z?z}=u-~__^mj_822|wrW;0yCthwge05yW<|W@@`ppwrsC0BeDh`vgUv?0!Ud4=t}W z75PmWOKxO=QsMpzc7t5^{f=XI*lasC6YL-qGJIQnJUTP}&OoLvkEoTfi?xYxcw7t) z<_@x-vw6aWb0JrEw)c>3$HZfw=zOvua2x8|Er!2+AY?oKZu|`3{kqj$?eW#!c-8#+ z4|;?U^$*aj_5vQ2VX@Z@F>Yd7WN z5*vBOfe?{WN&)O4-*uj`17w%*zay5q3sk-CP2D5ASdg}smsZ*`fJ*!`;A6Ih&gNy%wF zXCqH3WfoX>i8c!i1c8eHH)Q^XbKF?N4*GSu2oOu*sbzPCY2a18`Hx}?q*)?)Oj+x3 zc4ME_;qG|XZ=8FSeij`Fm_?y>Ed*)5U(HXpdq)0B!UsZORJW?_5Rk!MU-6_$Qa7 zSP;vu|141XJ(WN<^e^9?w}02{=SG&DbK7q@0F&(OlZ?+CCDXDzSmveu?4impehtPa z2;KVtreX5Ea5ofQnz~ADg$J)80udVFek(*A+*eQ_Bv+qb)yI&vu(8R~)OfTi<(T;x zKcqxg7r1BWhB^LZQH{ll^6MIshK?u}iWpR0{%LYXYB;!iAdb7wdzoc|=D&=H>$88u z>=YDiKmI9N^iqPle1fI23V=3m_R1%eYceg!?&n`$$4ESnNe=Zh9^0!X@q zqQJPmcQkE%jbZ+S0O(cA8~jPq-8$2xgPVTF;gLEswyJXx?}~YWMAr1;x51$A71|4n z6Hh1_Su8Igg;KMe>_Y5aGGatMJv?~aC_sq(wWfqq5-8je_sisMT+cHApXgZJF;yIM zE4T4N)=QRaQ1$kE^jm$)kT<;$vj0S8*hYR%zNYCfOH~SuLKdsDi4u(k4m%;<8Wexh zM#+gYvYws_7D9SmD^&t*P6#0!cuwXHrK16@MIDDV-#f%{r;)=Fg3g>tL@ z339=HQ#-Azd%YF^FGkBTUDz4IpqxyXU9^T4==)os+OV#NzaaF1~SPhFLP00$2(cIE@N5&iW%QiYO(>_v-f>Wa(Ap5<9;=lRE z6L}>Sd_k0WhNSDQcNN{rz9c@+kKQiQk{AFnGQ6uK-pfB6$r%lIUsDoZm1g~k{0?kw zY&#~h!%EoJjk=qd)SwcotNpg^d0A|=YD6fIrnYKr3SMc{bJf!W zhfyW2nkjFzziu_zpvLGw-N28HezIWhe{V}NA%?}xsrki)meI1`k&I?#iDQ-f0EfFZ0{sVAx3?(ZFp5D z5A6K-u_dN^rc@OxE+@=4vYXF$3sze+fXrZLILd{IS+U55gOp`Kxaaz7VXU1}^V`>G z!VBJX|G(Js8C(*#CX%BBytw}QKFLozPJ9PjoV424^rP6<_sdPjw2r25UEM1Vd#oEL zh8-JKrn=E5b1WfNeLtbQoCB;GGSbAJkb4rJyu{zC27sJK0#Ombl?tNJGN zR6_LGo)3lScxR-=ra~qUlJRt~+J=cy+V-BVC2tyoplM#Jamh1|xC30?&s9XnRj}EjgQenUqW6&4Awvsg8mr2uyCR|`Lz;yD*;KGfc$~R+uiu+ z0$gFmLJ&e)#rLFPn97dK@IXOf@$F>!so&0&*wM|=2EIkx79KSczY5{aqX7e=&I~Iz z6wH6P=*ics1LiR5m)*Ot!8v0Oo*3=tYZyY_{@tMCsu2tq_?RTz!gRG1(CB0ng{A`y z5N=Rbt2p!_i)y168YQ(=8+DLpOZp!n5dX(oRrBChxNGtmewfqKB=iBtw&qN!obPq5 z?hQU7(nOcM33w^nzw+pn8k98?zxj?RLKF@$G4DcA;Ue)6de7yXywuytRV(mW`~;kK zk)3uBC#$l)UHq?p&VOQF^Fc-&pBUH(6+BmrO=rl-MG*9Zpkn&~J*-b~qWNk{LzT*6 z-6CdG6wwyfu3uobOtx}eJ?||P?CejJN;*e6?&c3oa%+=cH`Smk^wz~%pxD8l(~@>8 zR&EvV2%6d11MyF!MNPawNU4r!#o}ij3gs#1AwMXPt8=KB8g{m>OOxurSFC*$nt>fG z8->EMJdvnmtHm1XqlS}+u1Y}``zr?6B5W5}8yJGrXsiPKAK={eZ5=$vK;eclNeF*k z<&BaxN9ick@kYHR6PKVbTJRHhU`S;yW&|2fi13`A;-J& zd-a4HH`b!Kc`}t&l4;T~Q)MMF^UGelcv17A!4!_+(Vmc$rZkY^bAkY)?$SPE>|aSD zV4HONd;#^#ID^=^pRi~N2P|MNt!{g9>R5_V%TgK?}7_=h|}-CpBiiVw|+3odMbB8UEm?)rM!e~iCyf^kkCGk zy(=w~!<@2zJjuE$IHD;4dw#!iaa^e;7;w}dAcHw7zKE|ENl1^G)MK~~BjXy7YU|Gn zv0#ROcT;L-rqpQq65?{g`FqbKMsoTmAiPAAAJj$>L5 zPWDxf3=}+ZnsPsli2{wewPn1W*oq}A^an018?S5r)b{sZOI0aEuh3&>h-;dWKpi6H zf*Z+G`0hDsvqG@$r;q19ksWmWHgxaLakQoM5S;z+JTcD0=l{9tGj~-uhDco1=G!kN zu-{LmM4?$fYbnh`~H!we*eh#zqj9gfF@7 zCSRO`iL508Q@uQmsWNM-%un|rTM#j;jXg7K42=>Jos8(YAAK`QVqIi4T}@49qs-9N zgOyJoEgst4v8Fp$4zeHN7@+ZVG+Am#DEh!&MVcBMuaZ;XraX-mbTG~#01Z}Nk=n8r*Orhnr$|r$m*y=KYf)lgwcBwW8(QUg{y0ym7cAE)UI9YUs=K}m? z4}CKyHqcX}SJJ|4pK92m9-uSkt$3uHhwsTXx!}yk9n(DmSzoD~XOmwK|Hmv*sdx# zdZ)Xz$C+kp=oO>E@WD@?Qc?$?afnPhi*YXIdkvj;O4FPw!4kn}Iusj|c{{svZJl#T z0~lrnzK3G0Cr_X4kZT4~a?I=qip@^h;aqh-hHfX3c;qW;J4gvEbzo$mtt(>Bg3k2< zD^pawR;@O)m*A0V7_pq4f_`1{QW%!GMA9^V?2&(2xU_xo6f%!F#wcU$EU1R;2cAQo28M(r>gQ;VzhkL^kkw(}YiQzN6h!L?=jaVaapPptj@aG?F8imV*7n!zW`$@r@0<)Q{UA^?W%}1aJwL3qsSd^9cQ% z!<`Hx_nY{fy7#7{veEz(9jUNVHz?cQ^&QiqYVBA4$>u`MA^b3>Eeb!o)bfFMOZ8g> zY1Yzwq8Ni|^BeTV{Cdh{iMMU*4mWLMLSl|RrpfE-Vh1YGI2B%w1R(c^weG?8&mrfn zkM$2(u!EX)@Jl})F_&ItS*-U-9*dB=9zLjcoJ495{9+cC%`r3X_h?G_0{i{lBqj>R zZaasPZ&xa((65NC+?iFRU}2)Ww!sBWk+Vtx`zPG^+hFpD8>UT_Q(GVX4d`}~3w{UTs}Rt+YK1Nv zVc6{$OI};ed?Kzo|Gjwa*8b%ynyT~5ojhwcb1Socf4=f7tLq~{6Yu9{TJf+a*?X8E zQH-l@MK4B@w+W1_+y$wxb{;I*bobCf7^KAE#aHz?{v`tT6=Egp?5&7MB2Jy`u)vJZ z2w3?+7o*JRAx(5JZ#I8vOnMDOV58oy2cGO*K|W9}^x8ejd2n%!|XHIA>L0$O%~2%oOpk z!+$ZPIt{^jF{3YH=7~Nc;|~1p6rlInka(>QpD0c!(KKRi#&bK44(k#^fipvAmVtl1 z+3XL=Njfv5$RQU(X3mb-#W@cHMowJchMu$gi>G_fEZ}s93wv#x9f_n~&7%sSFNc5{ znXAs00?73dHtNtezDyiSKCSfB`RPx+4={RoD2{Lc;!ou<1+3X#!9}*DDH1K`>1>yI zw3?H@@t#rlwYeQ5TA)2*3wAui7${>)MX8WHZ zct)nRGJTmTjh&2=tv);Qr5lg=p21QjOT)mA6JDYOCJmy*I`w}8SszT*Bg~z8&^8dL zzGkj>Abv;173~lr8wA@;{q{Fh>(%hNzZS^!caoBsKR&S@C0;=Aw`+;R|N<_~kOb(6W>_C9B`kUxpj4HYP1=$B@a7T?TqZP}Qsz)Me-9+8m#Dz^Zj^Y@zw zMkl<{lUWv~65$;LaF25Mjkh(d~(aQ|9r=BUtiQ?SG+pby&_368FGrIRdaaK5ue}m|+Kn$FHc1+9meP_LcC{@e}Fhn`FXngxj$ctwizU8)Gy>$yN&J(dZ4Sw~I_7)<z-(2Wedo)EjK_w5cyI>l5^L0DN|T#)m07 zm3!#|`p#Nd{oJQ|Z07VUm61RKch6V$J6;9Vpv#k)L^1D|4V>@L}WjlE9`*`Jd+%m%e4EQ54dPV!TfzvMtZi2s%qq0v0NUcMWeY-^L`cy=)5!HD?dtgPTH}Dt# z+E$p#E;}HJ9~5P-DWuq^BJp5)`}^H^vC6h+qBKm==?3&I^?N&d`}uPq&(oI@BmG>` zFJ3FXSBAZp(xca^InN7k^AiW_MU-y>SQG;;l39D%;n>HIN0h8_6WLqc{RF83mfWHy z`8$3^c+2%0x&L7?#CmBCcd?{R5)t^5*Yi}@UX=!QOtA{*W01{NNhYnnO zV~ZqabZ}5)NB1p`*(ZyOixKRPr|z--b^=%P+}&rM!OnO2>>UCxkB?7ZZZfL@j25F( z670B{8Waoxl>kRr*f5I8u=Ql5<0$6qtB>M8?7EQ{NxNQd1CIpbCJ=Y#%{Nkjmydri z@?sSvFZa!I0*n?K+6m@G`^|#w^z{pdAgkRTjvEv3A zHB7N-cz54O_u8=ZY^Ehe!WS5-!R?O*J{RH@qR0g=A<7NmBq+U+*sm1kIJUOOW*yKI zqF1zf>n*U$3c^yUdO;>*d?tF03M{f1+)5jlAz2G9FR(s74=I>ZGlzdM1T!>6nO1v? zCFkdE`^uuaj1&!c{d}nflrZ;e2IA=emnoFC`w%T%H&E|Yk9){o*Msw;>wsU|IKB=? zf9pGZ7jE{#fpS&aRnTHff5GpnC$ODeE{)r% z9uRQfN}h7q3HAZV5l+M5K1IaY`;un$+#!gR7>*JT+>`a_`um5wM&-%JRUNF=iI<^u z8R+Xo#Mpv*qWl$4jG}NMIpE5DU#hu`7rlrLNc4l?_|HEb9gA_;C)%?SZzIeBk38Fp z9=;MA@WZq?dcjx}S*=^b+8nl+yk+VmGA|N%@40OjBQ<4e2TT#2i|NYdk0(oa66Ahc zAHrWKYdR_%y~h1KVGtTe{=#;3%Xv9CBm#2cKQUPNRWDwOd2_~qJH7~;V$~4wz}Rb{ zu?{Ur0}@}x{FXr-4Y=-m(+4>3HSlklx*DnE68?Ev{TL&oU9uO4$?^73|U ze~92@)dlgsUHofR3Lr`6rY{_o)98ZJ0Y8p=AJ=rMVE}R8-M64s;egKw<)roAc&q4m zvUHB9rN1#0Rd{UVxM*7}P=glJ2_Zvq{cE%+(O!s+$xWvatpUp-?$%C|rw@r+c5`Is z*Y>hwT&bSytjS7aIv@K8)w5tmtkCTpskAbOGRu}vp;eio@S^B!f&2BdsZB@7H!>WZ zbwfQy#bjXv2pT3`XUj^`TJKr~EM=P1uKvp47e2#Uxaad~6dKhTQUOf=KH|bgsKZ0#Q z`DgBpRRp({TG2~*#;FcntcA4Cr2c1iSz%HZ{&_w#>~?&fI2f12a(1>GWPbX|%*kx% z-E`f~c8~bP%~%1nZ#>B@G7@$63vl(a*a6vUqaX*%7j9>OOT7)!gy8#TDD%hxdx(DF zIKFTd>y=G^1Y80XsQUYxfSy}a$luNnA-40PE%5qE<8z3AfihHReTVY37wZz-oeTJ5 zUMLdm#~&CnYY2oS_>A6r2^Z?@zA&{W=dF&`TVcCmyjKZC5G&XRa=TfNBfy78CVpo%SxO0CSBlISgWs1m1_R!y zW0t8S2rg~26-l}7YuBy?--Gcwg!iNx52q*d^hgEPYSHhTf6}5q!%HcwtDDE$5NL?q zPqj^z5kJrE@T>@OU@hOZe*N$+Q*32iXT5~vpG5!hdvNa_L9hYwz^M81Wty;^u100p zkU#f;n4j*cD~{>L4lgZUJz21Zez5r%sn$ZHfCGa;K+pLLMrCDK@@jvc=Cw;jy%f$Z z_zh!g;m;J06xD{@u*qUK60H?u|LQxg>FnWvsDjhqOZn@DUg)U-fwfbHba%s02cpmYI%)#Bv}2~f6ke0lfyaNny-8-t<*n*REO>2uGPa`~psI*PYtUFW9j zFXtU)T0+GaJQCM4lh>^_kKUZlu@hP2hX7|08qk6up;1UrdR|EYG+3Le`_(^nlIEsI9GzccWDa=EP%uyaE|Gq^7HvZDZ@+T7@j`gYvB|` zQrR1e9H9o$-%dO&E@Qs4n(Odv9G#f#sI?@9%eNc0==C4J*2Ac2XU$OdP%65}5Gb9k zL=;avE0ED_7+Mhj+~Ke|ZyLtmvzoWvU67Em}cdX(XqPxqUL%=T6pR^G7w`yyN zjGSlCGqq>n;g2YOj!_t%iT8kuS^Y;yXNGcQb`oCP9GL6_ok_EtJmuX>dX#`KkvzT4 z2I9{h`?-(#zwosV=a0qGU)rIeOzyB0t5l$Do8n2g&3JfGKe>2`$pfJAZl5G|xIn zpNr~qKddYMKAwbaaj%fDN4|Jvm2oo+EV$-V35a{y5}$0SjIds{HN8GyO7%N>enr6) zRmoeNCw=Dj42Xlf)2R5cvJzlA;J5yPjQn3?2)?HIP{}X;97+jR{!B*h5APWdP%vx_ z>7;eNt`N$OyP*3`*gtj}V)9KFiW>3;8}K%v1RFd@%i+faSN`+uBV%B!RYbXd(Dq&3JVL-5%D_oAruoN-rM8hhX$*V&%C)1w+#23yB|l#NC9jU`T_9cfpB z{~DwcqaBp;V@g28EXCH*(Ruk4qQ&mZ$(xW$rU_7?Q=cZLyP|`i1%;kvWFx})N3sy7 z|0R`Z0f|Jb&{F(sP*7qnUFE=&$t%vgpuCGvR_J&IYauWx;lR zHWmE0h^)w)mFEeM8z*!1T5WFJYfaWKTim)%7d}te+@#GSOo=`j(0PU{8z-b6A}=xi zT^_>OEiHUTnhh0vw&xGd!%P45=?+caC$dLgag*?E%8RE(-zLbteX-?-QVLAwGoes- z>@Xltjx<9c!z51J*?Lf|;fH)^q0L8Iw7Xa@*eep^9X8(g_kj0fEd0fG!6h1^CD+5K zk9b+L1(u zv{-`zP9BG5H%24VVETSXo~VGq(H|yXdZJ7-z>kxry-3vS7U7|k$=eUzRg+`Zvp-cu znG_wVlK!0+@nnhd^#jn}c1GIX3=72(|JUtqkQpExBK{i)ItKVeaEU#-m@BtxDJRnD zLP@wtZ68jfg=0mj8w)6u0%v;RB_fl83Mwg)cN&1Gobzc+&YwdiEFoP0Za^YUWv}|W`?x{vaZsIt%?p}$PD~4=fP_>w9Kmz0|+cfABpfd>hFh>t}BS7ELY)6bF%CF@dN@RM*yuW%0S9laVn;C-|Ar zUhLg@il=Le$EeJO|DyYZ8G%9eK!|q^o2OFyr~2n`p4zM=#_^vxGOBQ=mauZN-&Tv& z0z6FKL{fDP4WU{u0C?=?51FggSkE~E!TR-8_{+6)(S_aKqyx$=t8k+&Eu@@vA#7_Y z)235b(xd__T*>QPP&^$L{06=0xst~XB?g1g;a9y~uTmRZWN6c(yHnsp!|EAL|76p& zA0u}gZF)$hu^5qD2hkel6*G=SOo2)YU`}Cn_ z`p3rmK)>*E0U|6uy#4(lK-BYXU%`@UwXKu=0dfvZ5ZG3W-!76Y;CsfO5928p=TieL zv}!nlMDv~H$1P5;g^gc2waQcg9M)QdI!HM_-r4Wt&mL}%3~RK=dD^e}hU?Ruj6t!l z%LM_kN&(UW3oU3VLXRR0v!TWj@c2s=cIkobwC`~|o^LFAg4&e1MJ01}I7dk%AirOD zyN`(8XoexQj$(BVNoe;Cr`=H-R`|<_V#QVR#<#cLSdXjxv8I}al<|hR%c3~Sy*g-{ zF6?R`&8y?5c>hOWeaqZdOa^ZH{R2W}*)rn!e?IXFMhiU-?piWN1>un+*b4=)1!ic& zpqyFs#-14w7(4rNknr(8KTHV#ZBtNC06W@aRDKUCc0qd;6-kC8B1!yKfi6{pju1zY z_`zUgf=bD#P%vKG@hIXU@wa<(q+AStIggC#LCa|4cYW%rCS~UUZQ{!xGhbq45S#(2 zvr>3nh@?`zv9)b1UYNV-ynS8-Nd#%d^>Po@9n#$R8(LNR09FF&6%S87M5^?`8 z;jo$Hr-@sL+S(EH2%|DCbJB?(=fuAOikP(zNz9c%*-~na4=Zfgxz` zySw%AB~t=#JFC_I_Cmts>%^*Q#epUEocpYmVjks&>e(hlOJ2s(uO`v4H0Y#%}$&?q(5;Jk63g3}A zz{3q7d;iCDX-eJ7+P310skRN#6Ixd}A?1Z5=t`6T{pJVfA5^dC#bWn-7l%Bho<+}k z@R|{mLQDl+;_oxvG#_OHcb1A{3+uKo-CG!fS3x0&}b4ujqIiWV_k`tbbdum3@aHHY z4~njt-gT=xS+U`?9q*|7-`DyZPdnok*$W2+&f3qIE2B*oI~ZbT`x9ZkvzbzVji&Ff zI|njXHX0kg|2$$_yAEb|J}@Pa%UmHWrIsG1Y;*El_hD#94PO;Q!#$|=Dh;(D-Cr}Fr5JCw_j#RKL;na6!P4A;KnSJP&7&5kB#g4&*_K6PsNPPSI;^GPm*~9B`%2LK~ zp<_L4k+RqXLd*5wKCN*ummT0~4f}v!YAnQY)`9xGhZ20gnRdYLL1zG`Wa;}a;G!ZJ zt7zl0SAl;xIr({4FE!@!GbaG9U900N82)4Ta1y=q-N_;d#(QiSLI7A!ci1yEaGpnv&YK{jdjAiM zu9<$M*vC=yr$vBaP&-!jCU*RhW*3l?9&FNwJX>wE>c&8-iRQi++mq}q(jERTd{)&} zU87jI&Vv-@6Fa9=b3m%tJ5PQgc62Ka+wnoMvs>?0rc~*ZJCyAXr%c*)v11|;Ica+Z z+^F5={UbZo-Q6H{>ztX91xiQwM0gSsoIvcl5eOXzY0E2y)_ z>R&^Uag-RyF4pTx7u*J}m*tmTz!x`8!G@`*k=X9yOsi)0jsKmmgt11JmfJ~abv0Ir z_lJ|{GPcdS1aKEjdq&fajL67^p#Z}%gq+Ct=j)p0^|QOj2ZITe>OBEaFlr#}M~I{V zi{*HxBm9$=k^_X_)Z_7r+GTe*q)0x)FAEni2Oe$N*f3I$Kh^Exy(3`=7zlDg$w1&@ zMwQKVTys5Zj=5qG!Woo7Q>CCtnrclE-u487?E^tG3V#4(>)LEyj??qTNZDWMwt_^&*qRTbU-4g#_O( zsRSQJZSl=Usej0rmNQ6=0^2M;(A0Cragh*0#U;5~r z`j=!nPC%rE`k2*Ti)aC#+SV}f-_8F;o1^yb>E>Hneaa-UCB#8-j(qcD!+p_d_u+-; zk*EbS-I>lpYIsW1tIWg-Bx4{W(Hs*K^QEL8+PBnL-lis(7=T#QNpKwb+pxpWuy__C z7R{j7q;yN#6ZHLry_DDU>i1F0g8S!Dtc(<(HTbaRu=W!PU)eQ`Z`%>|N_EyWC#n3f@MNf_{nd02=U!hr(ACU?FOL}|41--fd@qAnCck=& ziIDGef9UY#ple&jV8Se?`GxHFtE6G%K75vvqMivYYVH^qPua4O&ftN!;{wM&@#m|Q zuAm|p&T>Acf$8|uwKU-$z`$nnuZuzz!#aBN5~iO=AI`~4A!P_h^M(@JXGs$!Yjvn~ z?c-6{Pw+Cd6!|Jc;Zay`@<+NOs;vqL_+F&lo)czJ{SRL=+x*FPZMYtn;&N>GUhcl} z5x5G@>wz}UKu#CE5}p;1Rmc+*q-!Jph2g!>_;<^3j0t=r*rLYPuq%wl8RbhU*4 zf`LJ@pqjfu<{C9FUQ>Zq{&#aUL(^c8x3zJOC1gx|8Mc|* zNMlU0M~=DAi8Lz5U{p ze0+qg&X@5+Tk8I`P}cARlp@n+Ft@NmC!PRr6AEB1Q%c&7 zDkz8&=qH*Kj*RrgSD70x4Mafj^CiK=y{<l) zb#|rCS{De*9#+{&#LYbW3{n8~R6~^;X?GHeK(!;rL?T3=uvo0}&^pTXboS|P>}~hN z9fz*gJ{fPTB2;9oBYiHTyZTO-(o^K4?4+4uvUx;*ab>iA7{hK`WHeEXd@x(_v%gC* z(q#5a=lc>@X46U0(;He2>2}AV;N^WhoCiq>DZLOMF_d8n4QxUl`GvezcEANFP)fgr z4}Yo{R$-Jhcv*2~Wc&O)QY>n3t6drE#$G@AUDEHhSAsmCGG!3`0WO5xK)wF)mIyaG zK3p0Ik3jxKV;mXd>=O0*{Va%_U7_>!SM^(mPj72dm~yon!h&{5LFjN3{=-U31jcsp zwwv6yXuX;bzglKLgxvp&SKgG?A$Ku>Z8-EFxEp&b1V!KCv>J$Q^M9ImLs->xY2}Fk z4Xy{1A~>+7Vm4Y0`Ziq+J6ch6C?n~z9|6Ox5NuNB-w`r~2e>QzY)qidp0|!H@Y(2k zJRRN~6FTPK9T!QQSn(kvo=PE;2g=viSFJ)zdG-e|D~rS*O$*`jvXoQ&!IuIId%0=g zaeMRerC@iX?xS*(hc=H6QF;0`wqy|P7Q2I>SJa@#96LcVG81?YFG&Vf(#>3{){2z2 zHg8EsSGT-#OeFHo}SZ0@YHlD3@Faz3HW~TZCoTjscvyh?{1gH?SU%M)cXOV$6O>Mf(%e7-JFq`12j z2wE(-6n8BYDbi5f-QC@-6pA~=Ex5Zo6nB^6Qar#-fB*ZgyY9z?wek!z=b1UP_dff8 zZz`LPX+DLLeM)%uMWZZ-SlSA`=Wk@J;ds}Rhb!6vizuQ-HEbrX69ST@gy7E|)YLkA zrcqMbzgR=tw`snh`WqODe0=sgw%D1Mu%5RCn+l=B$m@;+Lp%CgcqGplv^y5v@I)*f zY?_5I-*vmxr8WYaaop#0G%rsA8ltlSQ8aUEi&cqJucJ8j&UULTiX*OHc-KX^w@$vz zXeUJH;m$((Cl$^GdIbj-dIgNA-~LEYf7#lfX#h3f;`S~N`}qF6(oj*z*Q2lv765_W zfvDEB60O3W0T|D`TNB=duVb+vgr5w=!qfG+kVQ9FV_P6XtwYx*167Cz6X^k*Eq!43 zKQ5=O*9kez7*BCoahMHf*bm2uyqUhC-}bW{9;Xe3ZeQW#vZm{;=^^Vyob{pO-CIcJ zV514)IpSp`3?{zc)qMYpGAW>Byy@}Py)$Ewmm>7svHp=5zBr}~}moLw8_242=Er9DZpB3)|FU536NLQM0!-0GLoY;qT1>gFI6c*U!o(SXCy>dXQ(S4 zeLWTz`4NHe_?p%QPosGuR=6fX^)E$(f~;K0|A3(iEv1PfK0I)@Ub!aBSX{oyol~PI z_izdxoEEgrtIsdO0ON_k+SeE2g?K%vOSSs42T9M<4%DDHo9X2H?OO_tC@vW-^aqEP zWuQ+=G*S4@hEzbgc|r5kr;DE5fndB~E6$j#Dfi#x3|}w^L(yK8UK|<*>x-|~;fRlR z>#YM{4}X>w2`qC(RP@8S$5RM@xm_p1$EQsy+S}j%Y4!n7XEK7TvFU-b)SjM^Q6A*> zc)hQNQQC}?3Lj=cM7H>u%X@To7@2PkLf zY>p-y-+100&vQSY8~@9#j@8&b!EA;kT*3e0)pD5s{pTv*;~`PKoBBQe#n}?TpVT6( zn3;wY+}4}qbQQSIr~faen39-XAxt=TG9O)g=jZD0@qKD=5D|K45q{!=Ce^R1rWZ9a zZLO{+`Em)=Wr}U}KIJWwbKrxI1^M~dyr>LaiWf{tVf`)96vyhfj?BMDe6J7_7m@Jefc_8^x$kBE@39iY_CxFB zsr+~)+Fylf?UNHt&n8k~g}f1U+6Gq$f0^-*u*D;cgYMotKi}ETccmpvXPV6xeV#p~ zQJ$?a9t!E=4Cnc{QlZ5)zX=fWQF+M_b0%TaY0iC0`7fp7f@0IdY+*c%OurSM|Do{E zaX_AMp-8hzwaxN{`B@DmrRiD1rXsYRy2e|!u(#%|y%)GbbOCsn%%UCg;};MJ4C(qk zSd@@(0ijs9MZqH@t9bgV*2}494EuyWY?1umTl0$k?_!f8_byTjm4$`HLcS2&p9Vxn zs4%yC6|7DT8`?0pRQ+0VAtoWGiE{TAv{jOsMP3mR8Iq!pjnCg+xC4d(yp!5H^|Suz zI0I=#4^U*phmQ5}O<@>%G6@rI83&3$;b;Gng-Y%6b5AV?n~@)M5`UU%K5%H=q?97e z5igKV-h(Yup|3&h> z9iF1WmHZVkWPaZSdHJIzUxcTk@9>4db;_^?A>DqJZ(`TsNAk*dP3P0bo+HBR{dx;GrgJ`oQ zC^gI=S1qQq-iq`7O)!Eer!S=TG`~CR)_B_JlvnC-Pg1{vUZ%k=g6F>0LNxBG`)c9@ z>^a2fgBd}H$`##rv(7bRbNT7r{watSx_+A$~qq5nY*R}+DHj19D%5UzE|qD zxs`QYY<5+nLVZp^#{0m_fkES!^MA*Z)*?r6^ICmCl`#V2TCp46J$U{tdJl1OVj|;X-{fRm*HlID!vnyBlL1!}7~OwDq>O`1v&TCv?PEhL5yX#QsR`@( z7p71JPYW^UB4fy73kSX2$J2mX71|GpT&Ie&L~juDO9Jk)s&!>$rGF$kzrMcyJR7=J zn6c(%YYRo)$90KcjqoxtfY?!KCzJ~q$JePEuLC0?G=e;p@R8K{qUJIk!aw0JV}!dw zH$)6B4XPz>@70Nf2g4!09PQb`R%CBqi@`pRB0dM@(VT|6R@fN?-2su&2KRPUMQ0u; zX<*f5-mN4EuNm8e*Y4l1_AzJcFf#lWvqBr}n6sH@jz;^~7HFnv4b}#_I+e|EtFM#! z;U7mmV(j%0Jd4+QhmVgZ*SToM&p488wGfED^1qED+RDDh`sh<^Rp#S+HL#(TdT~?o z;>%)Ibtj+!9?nYOi$^PGT6D$NHr(JFWU)dM^Vs#ghJ9#KEO_Qv(`{z#>>R;>8`_Vi4taH7&44BRs}JYn1cLg63ZR`O)f zxE+3MW!3QtVA;b<<`jc!JW#S9Kb)HzNur^r)*v=qmllgdFRSFBn+!p>lIJA_iaBFY z*hT~na6UZ9%b#;Xzv(qE-UdWz3vK#P)}^(e{gX+flh>I9dQ2VL$0HnowxUhPYG42- z7fN_&TN7zqvOo7zd`N+_=TOt*GE4RX*?3J~Kj`~a7O(}yLsaX`KF@nYGbUXL@OK1) z<$6#zYo6ugRE}u*hVl^_7@8;$^V*~yU(8vs(qvF%h|<&3&s#Uf*nG2j1%**(yio{y z<*F9Ql->WABT1TWyXr_ugXq=4N)lss0iH{GxBqaEmpEwFmqW^2PclAL_(VR)Fte_L8u@5UTcZ zFq&`J_WFnJztvYq%iN;)`FuK}o%nU;7m|+%_YPhj2=nHqsy&yT&8WBZ&4vS|j0_b_ z8oN7y-5eRUnZFOR>aD6+lESSJ6Ad7Gt=C<|J3 z&7z8g+ej(O8`GTZ!DA!)OM8alrpBw3Otf%eo~XT4?t}1_s;>Yj`U&^J?0`?W>!V&$ zW=tuI4GtM0y!8<7uyN|u6Ydsa|&G!>wV6Lx0&wEe3B=K#F~p_KLV zZo;yHgo_+&bV~MN8%I8fkspER75OFOP9|@;i6bvNO$C*~c&*0d$e`VwG=Stxfm(?w zScfd4jsCT74S}Bhj}-%AS$1rQp~i*()`kVTrVC@?lZ~54i#f6k8E1E+uYy4_J^r?I z2S2}nLh@(I+9AF1Ke~j;VQG*Vsd4QXt7X_HNmc{BjQ)re&L?s+CDJ(AHT~3$Y7D18 zqgPu;aHlP~!OPlT3u^n^Jo2!AQwrlTsm`nlQ=xC=k0slyWQ(-G;XMpd@p**Udms>s6fem}mjRE2J zw?-Qjg|RvR`T;oK3Pz>mvlLQ7kTGm;$W$@Go`{r~4`dm?Eg9#X6d^jBse^{yB6rtTHBtFy zFeT{^I^-CtTXn}N)<-Z^_=H0@8V_4AR3K%PZ`LZ+&L8SGdzb%qoMrJ{xnR<98#LQS zHMycVQ2IDQrSZ<_Y?J)5=#N*$g^Coh{KUm5HH7B?lUGM1@|XnWnxi(Jc+>5}_z+un zNVt7y02WVV{hWc=7(w5jFLj;CLU|q^){+AQh;h_tBr<6X6r3=)?9NloZFcf+x z1iSHzkaK0G?%Uyh;Ml{sfRoVLG=RpQu(xJC5lS9U69t!}AsW{x^PK7n!^i_TWOfFt zFs7?M5^88IQlkQZe|TWU&t!9(YM7OTuePx6Jg0MQ&68@T@^{r@m}TlMVGF1Z*_#S0 zRfhdtx6shfILQXg&WA+jZ%_-ZdM;SEqM`{&d8(0&8+E20cc*jXmt6f}ajnf@GPV_F;DzYaLaA$yES)R-Ij+ss>rzTC9YTqP*tPfi>MTC!Q~ z^v$#GvzCbQQAs08d!Eh`<2<|PnLK4H(gx|~WA3m?CF|0KI;031usDg{_P?mexJ`mxr zq9QsD4rv%e;kz%9p!thzP60ypNdzdDu5qa4mZQ3nUjpLe=pHI7mBSC+$|X)s2M^`> z-+fkcd&jr$2x(=eyixwjI+y#l2m_$`8as9cczos98Eq_>ww=cd1=^?- zXQS9f_|$ePXIiE$h$nF)ul4hmrebLVFa7s+z2D)z3fT2^Kef zwi)Ht#rJTwB7ds4Eya zl9I~m9vjYwiCV6qz`=9Zip&+`t1xAay5AtgG8la5_?xCb-bsWP;NGb&4t2PJ6&XAm zwDUOl6V;Unogy9S_j!^ERNX_y6Q63KO+$P7a)KYMS?To6IayZlRzGG*oP8iSs7{z6 z+;$^3&kS^Y5wwExo$%ZwJVbON6hn93C@1oP=17ai2SIq#Jll%}g(N}er#)L6T-y{( zp;Eg~m$IHZ-@7N>#4(r7L^Qn?*VTs>?2ooSpvJ);g!(ofd=+6bv3#Gp3 z)a#_88QC*118D+EjY1M&0Es@YOJe^6TYe!SJPs@8ZIyp}HQN8KOcv3^CekxC1@P-+ z_1I>V7(kWIn_}z?a{}cmXJe}x!BUsv>Td{juc{d1vzfdW4?U5&{Zk%eaJk1XD8NCYOIsV=EtwhRieEjZ$nl9CM!TShxv4(qP9+{3VT=7Cvt-fNKI zW9<FaBW5Q64XhX(trf z9CDn4GKEDEsPxQlVY?kgbEx;WW!Ja;Qk*i)sCs0LSCtNoPLfD7S}4Pdya@k_Tt5cS z?COp$FX#GMwMdCB^-X2%OaJ1%oR8NXjQjao_p-5|!-ZtT$q1{Gvv^hXH*IEP4RYB17 zQi?gu_$)59!-gcekbhjJSO9^`70$iGAHQnFbvobgcel@9BCO^U2k>ZCc0|QH>dE&B zEn~)Fn_U{8k#8wJlDy6R?kmLz-_BV!Zh&xM+W7`D^}Pn#)}kI=pQGRxW`6(Vsvv*E z_lu+Xo%D6N;LXr)HnzBJX(@zyJJsy!%E&cBHc_bZsbd(*=LI-cy%A z_|FVL-fZR{NbBCB@r56;pg+ON++1(y2_UZ^YXnjM=PO_5E$b(UFs}5E%6esc08N#L zI5A2!^o9eWgo1eKyY)>-EA{frK>D$j3=T>1C1Y3-tK`K0@GtBi2%K*&(cfKuF#g2; z6M>Dhi`1lC<=}iHUax~_szdf>XJv^BeHo~x_bDjaWOGeAM!~;RN;r{UO&lT6)`d1A zranOQ@;m8<)RQF-E78f$pZV70NDQE|EW}cI$MJP%1e(#+t)2$or51Od1$(_90_*r4 z=j(tJP|OmtdFDnPlJ{M9Xo_6W-c(t`-_Hi$2jOi><0xWcZxhK&q`<&U>}NZnfoScM znH9$9bOc2t=}YGE)MlI=E8%J9Ee7s7k67}<^-y=g4iKlheR-^eIpQ<( zi=KtotgW{v^gF;(z-^nR!E4Y&^9coG%uhY)BT{Y3uB@!G$i2C62$+55^KD6*$i`CB z6Wr)MMbwU&d~t6w-^;2hW?BXIH|}aAv{+rfE;YUW)-G{_B$dlx5&f0O=!BmfjozcL zuS<9GYzd%{)Cl+E-RZ?`hHO8SZ7j~T4s=wghhX^jk}EBfHhos|j~7sAV%dVFl?^I> z$We68@x@T_qGa`%%3R}oM7JeLu4VCzh2{cwO?p@T11zjN)=r2yRm^$$OlB=5%?W2m zJ|xF@ER#Pq@feJP)zKTufkL%MG{pHAq?Y+VdMupg6Bfai-Wg9xPMYk()w9Dinow!kt(;* z(oiw=BhFc-V&2a-)WOey@E^$})>|Bm9OI}9LuDF$D(Y~cg`;Txf|Z^JB>Iukl~F}m zzDTuNaB3M!e+6B*j#+e^nx@fuYwSa@D$9|1iM|R#)kS)EEd3^Gb%Dd-fi9o^W~^Q1 zw=#i0_RF;_nCl*~-tGV@P2y;2Gw%D^2W$ZFm_BARpFjPhb)42S;Kn(HL4N=-wcUV9 zG)J(;ZVj{~t=Ijab+Vn3Cs5sef@eJ~$)j(Hv0n4E1ns){4e>!|BZ$k-bh^dbGEWNL z-^OsPvV}yMg&62#kLK5sk+(U=<6x{6U&f5QU}OB7-!Q!Rvc#glcGDhG;-P=~biovL ze;fw)#K@+xy`^ zcH-RYVLkP~2snqI)5?9O81P|0+D&_N;rA55U$FrW3 zw)vVLX|EgqMCB8fz8g-g97CRRPu-9#vF>fv@jEZLv|FJd(~0sOKyzs;PmB| zCeeujM$NAU%Ce^vr8O)TE00zPFF+3dqa6gS<2#C=Z0vs#C&!!nPjj7w8WIxPw?zHX zg-TM#N65qxl~`~^Li9ILU_ynwh@nmbF>a+tb60yf600MFb{pa8=f4cy^z7{H0a8Ck zidH-GjLQ8ibjxT38tp2M6_mNAduscAGB+tHwZh`GUVjkJ6jJHsc!%s^FglHTl-&HT z;5Zz$tbeItMRj^tqYA5DrUfVQ)rNgE2MfX0Kes>-;{!reflevpI5$cTHG|r1*gE+V zLsS9{VKhnB@IB3Tp$KY9P52d-DKJt6Y(UceIP320>qG<$UCV*TNkEuLDf%U*lO%9c zJd?=+;%g2%zWBR+`FQ3l^hW&4tMJl4Hk#r~#Zo;WgV&~iFxF-%=;i$ZEE`)dj~w~m zkrNekne#lz%%{&|{kZUiB||y0ZM92(P zAq3J{{tSih4!DO;B5)MuPn=v%;KbT#NHrB!=#8v=G67qWbpr1-7yDr`1Y9MG)x!rJ zYURF4mP6UnIxxC$a%sv&MMnY+Blv$3aO9Ey>E9#XloywXzsu#~m*$k$hIeP`z_PFy zrykXXgUcl3l4>5HpaF#!EWwGUtREhW2H+oi|D)nO`kW|q=5yxF+!0s_`{|r|fub340k=eaM3Y#93G*iY zgUPt1%G37nB#Xxb|2}sovsTvh@7dsNrDH8IlwI0NQD{Eyn#=Nzzax87{MRq+QBB5o z&`Q{9$(g5HRi*Q==%zLG-Tks@iUuhx@YPQNJ_cL`!(?q?yUz9&L+GiZMnmp*?6kJd zj+jMHCii2$xEId!Zecj1r!ToN5T%0qfMwqRK`j_yUCX_7j!70d8l3$(8ktT$(uqj+ zIbUGO@g-2D*It`TVcYwrcWoHi%7^HnSIZUneAg4JZ$zK^ z;yiRVT5%m+1#_J`=a`LNNp)3(Ae@*!>QjZFG7M+t+t&J;#(+|J)>LBJFr;Mx1>5z~ zJFd#pXINBdwzX+tc2?t`2qhA`^{)SKw?clDXMk2OqtcD3)VhZB-;;~@qJ}Ddkn}LY z-e|uHR87cdCuDwbl)`qtdicA=tLKMb;Pul9JiU)iPS6)$9dOas*8KV#en(VjI%R&s zb<~Ikhmaz4_);Y#B!q@FkBillOhQr;o0KrFB*Gy?wg#VtqyL(LEbZ+hZj zmg3VF1(BnoM9NhZz-jtZ_kvzfq-jO%ERf4ZQFf7NfYdS#oBfwVnZDszyyPG{G1YIaCEujcyeG4y14$Ug+dBmmQ}@esF=_rd7>Mo?;u=ywBo)N%=|F1-8$o2A%GnjdK?@--n2K}q z!E5pqoGmt>y9I-gzG!fKE$=G!@D$LA2Ft%+6lh=qA07E=ivK;KmS6CXY< zAj`_Jy;+bX34}4|w3DG8@W5J6s?94F zbK+i5i1s3FG8`Sr zSN_ziO;;%iRPstV;#M=dbRzC|_uI4rvHI~~1`<$3rQ(<+NF@K=T}*b!WouTq?rMD9 zMSJd+i-FlD8BLL!v}s2Fhb5mJior~+_gB0+D7Lz`^K7U<8$qL)FcE!#4Sj?|SL7oe z(UvE}&|)=TM1u?EJg-P6oeH8(^*MVKoVop|32(o~QW^x0FJ2Nf5eDx=AdIQ5f`%Y4;tS>VK@|H)X1(JX0 z--2RkkhZo~Eh2t>oBjd*rjAUrFd<|7+>d0LP__8b+DOa>`T2cdj1uamX{8>hV;I5; z?A_Ox+N;bh-t(Dv-fsc2fMKw+tTGc)8G(+ zwmVzTpK^-h$o+}vF9g~~V&NaaAI)#S#f7gP?tD@=Pauv-uUmY}A@RX|% z3&(%3$Ssc5l)v9!m)c;9^;$cR^GR)JKxTXAssUQ}E07NgN=blqN~s9$ByTNfO=SGF zqYRq21u8v;1SMMJS;TvSR_ov(_V!|LE#Wv6L*i4vD3ZxCV|E|{N*|^98ZoV7*B6W( zUA@%u*lno*IR^8M10I*^>zT}CsQF5G?SHTZ@Hy~5sTC)AZw;5-^11xs zroOz`H0avbL6;TUTOaD(KG=E|?YQd~(3%@SUZ!px?q_S&HwZ$j$pIK_kEeMY zRjTVEfwvkD{EEI?=FM!@aTIZxg0Ut141w11T}ZumXY#>bD4+$Xy6PAPfN(44_Io_F zSeEy{+f`Q_ustq1Ld8AkRv0QQu^c_7%t6&3(MrrHGwXaP8wzqAHPKK3CWwu9<+NMX zPC0xEmDysmeqj>tgqB#OrlpB9O;~8+Q|-kMFoL~xbWgd`V`#WYX=2yv-r7nQ+h(?M zXi{5TMM+nD1+gFBT+B4#fvA9hx-o&RRjSUn9MIyd1^In;d?dmR zs0d2j(Ah^N8uqj=R0iVElt3NnZcMiOsQydRukoPNDjC9~T#@NNvDY({IN8|P0N2-t zG~UJEjz}Xv;xS$=-_jYV!aaU=I>&mqBiV5!0t(!@L!ew}{xE9kvzAS>P)~e1;dJf@ zqS!_(Dn1fnbV<{$Agwba;Z9J@oTUv0kdOyi1g8_yLy&LCC%)` zR&fy}#7T{^YCMj(b^apbp#C;fX~sMl&y4z#4E@87sQ%z(7g4VU6~2$;##1oZO~;$q zT;uv{KbPW}DEvKqL1<8YT9R#K;p}T*M~#ZuzsLT-IX^#E6kedEe-`Bbw_`6GznrP6 z#P4xKNAqu3(4yj}JsN%#gh!_$XsZBdog_3$mM6|%Jo$!AIfn^8ZQnLUP|hy|{%xE8 zjH0C@g#U;CQ*?h>_l0`~{~mrsbmEosvoCcd{>ry6es*=p#Zp3DLVvU*u@!O)3V-gk z|EJ`;{*2;#7E4-)d8(@Kz4ul6|JDc(8Wu_t;+>g{3=GI0K74>i^?#8bl2;*o-3G0v z{oe@x{FAGRJPuC{e0BQ&q*T_LPbN}EHB8?J27i7UkiUx;)v~bxCXKr6OW;VzP2yg? zlT7FB1`GeOSV;b!6O!0w=y+jfQFB?V0+mqF(f)0KR`7Zm_?}rpHEjm*rf1}WMd#M` z2a2ed|F_nH|5cFfr}bU@)S- z{5!(6$D)hJD}!J7VVRM_eKMGkh5m1Xxxdct55uGVgL~$Wchw)~FE^G{ z8R$axKtS-&W^oDU{TJ)FM5wy{BEaw8;SbdXo)jDijJ#Jh|mk=M|ZJ~(a>DFgWAG@ zANq8|L}X;>#>TrgDA&@S9lbNQvX`d??}Hu|30CeTu9o62e^-T6*^X|Vd>o~Ad>SSt zYdJzMlz1OU@Galjn|^KG4`Uu$K1L;JD3tv?%LVFqrVM&OIVMh)sE*Xdc0GpKDZ7)7 zuKmypB5}7evOcXRj*~P#L8D9i*k$Y4kI5Il9P14Igm>`_3;%>Eb)vC2-TGZ66-C6p z%4k21{PGt5mq6%@uMt~>9ht1bwwr}MOFTPaF8WQ+q%X6>8HFfyjB1{iIX46BTFXH+ zA^a+pJ7SrV&#<6PW(V?A?|{lE0prs(o`TD?!2>7vVrxu`b$lP2<~x)w03!h^@oGxn z)iCDt?z9^i zv-ygsajY2}irFQO{@2h{pPc-JK!J2G`hK7=@gr1ekL6ELhmBg7a}sI#U@l3!kevbR zop&0K?ePBWq)KcmT6UVVS|yo4BD2Qk$wddFLA(#u?U-}Sr$n`rVwC80d3!&JZxS#j zh#u~L!U&q{NK$#ih*A-1_8`$~VanGv)z15l{iA@^m=XmEUGNL8>&@5S7zPSs9CPc-=^L zJ1<6KN6S7wV9RcBmF}x}3tZ8b$yKwjDZw2pf9y3gg|VxipO8pDqv;zo#LALX)HB<3p|R<&3^qR`MUgcHLAg_!PMV@E5c z_ZCom;=#wBMrOP%7;|?pKa)fs2|EzX0H^@)BTpg>?LsE6h9?$^$KRtp-wh2xIyh>L zaTw@63AK0Nl^0b7R!ph#vDxNjZ?RE}>~TI}rlVxxzHroQXvq--@-^6rWcPCq9zP7hIe_7CpKjam`r8VA@0$2-m5cu2T;#8oGuD_}rA$x7TZep+qYeY_ zElE(o!VP=FEr4KwZtwo41B#prz;}4Tc6gV+eb{rKsRn>u%P)ieV`CsrPj?87HaL0^ zVyFd+;@EFW0F-fk7NU06kc$2NKZ5~zY`_ER|7S4J#XG=g^w~Se^u7j;qrRa43L=n% zEb~g8HZKx9Dv72Us0~O7IIgj$67*{zjFKL!8yu1c$HL1%|aX+R!#Hxb3TcU%Lvz zQtDXGepLtu&8y7o9Nxn3?(LgGe-48bX3Yw{K1uKN-cTZUk1N@JvB# zY+3(Xk7Eo7y00x(DgBs9OJ`e5G5UKg2V9>+brzTqo7EkfE)z3)r%v)jNF#77`-<|+ z-l+$hr_ORYp{3(PFEh&OC}L`tx>zHeounK0GHYEPbROXqTeEIn(4RVgq)Ss%+bPJ7g~uun z_FR_&neJb}a*t3uzU@#6Iid8VoxSyzyc*2a;xVOoQq^0}z<9>at*YT1Msj5+cL$5Q zD7Y%B)Vn#)F=hg%*jdp(DqZx1PfJ+LoUlFU3q}b-TQW{Jh`kV=sd6h{W3!9uzI|+V z*%8n&`pM4OD3cadh;#CaaCd9f_bFwQ4zdZo%8Ys3ZsEpl!mmKqDLL9yP2!$(1@l3y zw>9cG+p!A8aXZGTyx075Vs$bDINML?=9BATy+y<;4OLh)szMw3{J~?auns^iz-^hJ zL`L*L`TJsr7Y!H}mh0RDeHPVzPC|FA^L}ejLvH3YG%ULfagUAKqm43L5k0}cu?xtS zN*i8!@*Fz<==LK7e{$_ANM~e9k5!P{ZjBgW0xv~y^n@`k%NMx=4#H6zhd@CtgnkI- zgE~Y=muvEJ#!g%4e97$1gtGi-K!jPe&2vdXilBrN&5@}ZBMYv@^M=vA$0 z>*-WPsU2CY?T*E;tWX4yk!%@6!Gm_~kFa&^AHF@RmHTN{hQZc&{30sH@wA`cBiwOV z0}M=`FMWsCsTbzk8cRd8(Ou?&r_NR!yZRj8!y*%>bEh#=l)!J|5#7{mU^)9+e}K@t8NOD)_{ip;44S4#fKwK5v<1IppqQ@A;6(R<-ox zNhqi@;D=j3EB7cMg81iUPGsojpKWlRn)QXlnC*RVCiHLdnRMYjTiE-x2qg!MNS<-f zsk#UV#|8b!Kn=%GQz2%}5_s?b^F~2_#3=kYoN_}$y4Tblm z$K#dDjCOhDKh&br%W+SgI!A4KW8PAR)qPi(sFG?L-H)_AH=k0X-$q`MC|bzF7?#G| zSm0i0VoB$i1NM@#|NCbaiAA=uw^$|gQieL?*x&dpIWd*T88uxH)IGnB@Ux9&aG^58 zpP_q5{j?EZyNSHFKT=XP8Le-~g8VOO7iz}W7qNi&8BU2I`RB{c!3km>Fuc>FSNCEC z(?Ru8$j?Mh(yd*_e1|{Rwn>$1IH5m8`+heKElIC(RK$77zynVE`X0iFb-19C5XO1O z54@kx5u=kFe_SM%!(Rf~r*uF90NEU{{%o{L%gL|mf1;AFVx{V}@ji=>@LvOgSys0#j-|?RN0d@k6fWVEBg|^n1aVe zPhcs?X+zpW7Cu9-o>@~VJE|+(weNL|wQNeNLpYXd_F$_pr>v=~8ltB&5WqU?*dtw) zUZv?Hq*R>|MPW>|73_e~e_WAF_?E2>SCjgtor*M{ONZc3`kOLLy)1T#Xo$mg*>bJ3 z6&5YoUfQIc7jjY27lC2^p!UOy|HbZfuwLUUPT^A~_!J5#i8={Q^2wHu(q6$X@fXv7 zt0xVnr%GsU@f1M3wF^vm&qmEV3e_lM^o7QMn#YGB(Yqjv-Zp*>F3$0K%@@uw`V#-j z=N!-TrMzebNtZ3xe+rhE$D1>|ZTP`)z{AOd;;B*~Hl&o}i(gAaLxZ}go_y^Zgz|Ii z)}NsT`V7Rb^Ztq!UBl-(@o3R%G@7du4mf(v>fTB3YzZ9w!71h8)q+$WS9l@nP$R#L z{&t}-z4a%9QwaaV5z9_-W%mTR8oR~K=UX{a5#6O=zn6nvy6-F>-?B2X>@KncS;@6` zrpNgF&>NwqDE;4HzgvyxSow5P(CRwf`dC_8ZqF9drPkh8sbr)3uWx&q(j2e~1{tuB z-_}cUEHxUk-igTZVMeHr;d$7zdAXcLq9~;7I>WrZ{2epAU3-%gQiJ^12d?N)Er9X%z9b4^g!cjFel$kBJSA~BOBa}y z{hwwD3LxafnO@`kNQbKQor&1=_9P@Eng^nZoRP37_8>1W{A_I1F<2Y=e1Q9pYd`zK zn{S8!j@5b{JK=3>SHbixL-xYWY#Sq@yA!@wFa7Jn&Z(>QZgfp9w_R(GNcQ~xn`|S4 zW3A$OD#!}ibv2%`(b0H%rm>$3m>fHrI`H)hCvN6wt4=rTS{PbXz9(

%5)wG*8?I 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


Y;Wc#A1~Dcl#3 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

=)ZBRF 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 |b1!%dPFYugY~27*>=* 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ಜtC{uo_tE2en=v>)0Ot>GE1EnSE^Zu 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�`Z3-diS5YSdi)_-XGo- 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

wcPLK@Id1CiAQP2ubft|Z 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 w3p|edRG4VUJpUEx4~5e?PtHls|BK3Px# literal 0 HcmV?d00001 diff --git a/docs/src/README.md b/docs/src/README.md new file mode 100644 index 0000000..9bd9219 --- /dev/null +++ b/docs/src/README.md @@ -0,0 +1,31 @@ +# Introduction + +The Host-based Firmware Analyzer - Fuzzing Lite (HBFA-FL) is based off of forking the original HBFA from the [edk2-staging repository](https://github.com/tianocore/edk2-staging/tree/HBFA). The original release of HBFA is described in the white-paper: ["Using Host-based Firmware Analysis to Improve Platform Resiliency"](https://www.intel.com/content/dam/develop/external/us/en/documents/intel-usinghbfatoimproveplatformresiliency-820238.pdf). The original release authors were Brian Richardson, Chris Wu, Jiewen Yao, and Vincent J. Zimmer. + +The goal for HBFA-FL is to update the original codebase, enhancing some features and removing/streamlining some others, with a focus on functionality for Linux environments. To that end, HBFA-FL removes much of the original HBFA code base, including support for Windows and unit-testing; we retain support for fuzzing with AFL and LibFuzzer. This repository is effectively a fork from the original version of HBFA at this commit : [ead8f4f8eefdb2eb762184e1a5809c43d6908952](https://github.com/tianocore/edk2-staging/commit/ead8f4f8eefdb2eb762184e1a5809c43d6908952) + +## Version + +The most recent release for HBFA-FL is version 0.11. The release is an initial release with a focus on functionality modern Linux, for AFL and LibFuzzer fuzzing support, and enabling additional sanitizers and coverage options for HBFA. + +### Supported Features + +- Command-line interfaces to support building and running of fuzzing +- Execute fuzzing harnesses from common fuzzing frameworks (e.g. AFL and LibFuzzer) +- Incorporation of Address Sanitizer (ASAN), Memory Sanitizer (MSAN), and the Undefined Behavior Sanitizer (UBSAN) +- Generating code coverage reports (GCOV/LCOV and Profraw) + +### Features Not Fully Implemented + +- Support for symbolic execution with KLEE/STP with HBFA-FL has not yet been fully updated. + +### Features Not Supported from the Original HBFA + +- Windows support has been removed +- GUI support has been removed + +## Getting Started + +To get started using HBFA-FL, we recommend taking a look at the documentation, starting [here](./SUMMARY.md). + +Return to [Summary](./SUMMARY.md) | Next [>>](./setup/README.md) diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md new file mode 100644 index 0000000..6db0893 --- /dev/null +++ b/docs/src/SUMMARY.md @@ -0,0 +1,21 @@ +# Summary + +[Introduction](README.md) + +## User Guide + +- [Setting Up](setup/README.md) + - [For Linux](setup/linux.md) +- [Getting started with fuzzing in HBFA-FL](fuzzing/README.md) + - [Where to create and save a fuzzing test case harness](harness/wheretoharness.md) + - [Creating and Compiling New Test Cases](fuzzing/building.md) + - [Fuzzing test harnesses included with HBFA-FL](harness/includedfuzzharnesses.md) + - [Fuzzing with AFL: RunAFL.py](fuzzingwithAFL.md) + - [Fuzzing with LibFuzzer: RunLibFuzzer.py](./fuzzingwithLibFuzzer.md) + - [Generating fuzzing summary and coverage data reports](./generatingCoverageReports.md) +- [Tutorials](tutorials/README.md) + - [HBFA-FL: Writing a fuzzing harness](tutorials/writingafuzzingharness.md) + +## Archived Documentation + +- [Original HBFA Documentation](archive/originalHBFA/README.md) \ No newline at end of file diff --git a/docs/src/archive/originalHBFA/Doc/User Guide - How-to-Add-New-Case.pdf b/docs/src/archive/originalHBFA/Doc/User Guide - How-to-Add-New-Case.pdf new file mode 100644 index 0000000000000000000000000000000000000000..61b2009a1162600b6717352c0c0bb99d2a84eb99 GIT binary patch literal 1646119 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

mu3_OhrAWw0_cyT`Vy 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%0As{d31E1* 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

lT{a+s{+SEQDlRueKtZLfy3ZEk)_{ot0jR( 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ΠA#8&3FF!MMpMvvJdIC{9JaIiSsCjabzp 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

pA6uqvttQqMC1zRO@>l3Me_vM;?bn|wu+^(p# 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�U@;(Qi}|axj^UfPDEJ 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ά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�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 z zX!k@om0fXHq1V7Efzt)fo9wY~wL3KByPqh^?rRcz3{W|;hY|T8$JZRy0e%Pg4dLJ9 zf2!*s`d6ZJ0sHoqw6#EG%tFph_O!l_xT*)I4V-##@;H4|3bK`k)0A_)L%wYq-AL4z z7HfyM3H<~bW}x8=P|G>p^vE+<)C`^FJ_f8+F5tmys?nJUyO zqE=4%jgH)C{uP5?3VsRQ6Fuj1ZmI<5eC7D9I5$157*4V@{CDg*S~bgB zsjb&!X02cr&!=Cj>C1fVX++(n=xm62*}7OZXd|n-v_z@KM%!?iPZV8M|flu9wbS->%W8 zG!KMWp2ht`ct3g?>D%x_#bBMvm{FV=4{-KB$jNs$=gr0TW&`?advCxg8%cLPwdUEA z=IK{xYoS>9DmNHQt~8gUzE>Q}hM;=agV!}@4<$_mQ!xPJi(ga^%X=X6#_UEjlFn&-3TDxH4;@3)Le&rz!1!4rdxN)9elh{c+9(a}@n+*;n*|zerbquLFC4McB4kvr1M+ z_8Xhgvk7|!YkmmolPk88Tegrfu46}3ft^E5-SdPMgDS!yQ<-e`|HlL`G2e zOS#ZnI2~+aH@J-64W?g@Fh-A1Yl@=RN%aJK*aLIJ>~&(d%%0!tgx`+)(sys6qMQvi zOBA7j^~=48{oV}lBIIvm#3y3mAce7Fz#H_Z1UI2+&;*&R-JIeUIR?-zwHD6KzDlb!snj-K*P34IrmchS=v z@<52?8`-TbWw*8wdv;;rd+c&IQ>z$zhSOp(d*)H>nK!{-hU9i)^)=+lV{Xr|q43`Y zcj-P~bWWnyVQR52CASYFx3>&+FE=85LcI4i^QD#ETKLuU#>TW_?tjN^#t!aqzKb}j z;T2!MhEU?Gx9{*rihKe79D;4vp{FW(p7eDc>~CqJ>p8ToKy$98qnlX0J!|7XEu8oL zZJM$Dr~resEmPJS?zQT| znWJ=tZgA$XQuL>l<6t#78+2b03?Q#QMIOeJ;r)1tp96*u2C{Nxh3whtVC`MpYi0Ca zF1VcAIlDRxvNy53U1#q+*{!wXPWv8v4|aO8=pjO~)@WbCs@7WF3svZ*`?R2(d%~tf z#kEAm>GI!*hJMkVx!wV`;-<76cjKRPH#ix3EWXXQ_q1rpXEZyh26wN&S|ndrbXUVU z!M$8BZp90^A@E^p5dja^MMeQw2didAr}nKUr~JP*eA!$jpN?nV&CI zQyKRT`|}QVQ-&6Y(_&@vfIXAefxjDmcC_2kyz#L`-Ztj#)A&3eYwN-I--9+LC0wsrY^j-EHQ@29yRuFbjf zG&`sUS}Saag?ZH4kDe0r?B`Z?6IpsC{JHR#5}B7_^LlD6R`j!(ar3D4IM_h%mPP+@ za(-tbLFp6WP3&d`-Gi)>OV~{vWPGP^k9xCzq0(?Zg7bSgADup5e^SHxn8S`}0jv3^ zXgG!ZDRxtXS*a_+d4pEs$h<)YyP3BaAz8=LNanE$e*orj*SA-H*TQu7^^W2^MbjP0 z4SM_Mafjn>U>!f8zX>Cmr?=8kuIo+y@2xa4dF(6JMz@`_g>H+s$Ivb+W$%o)i zg3}nzBsjl=GnHLvtw3*Grm_!dsv5!y+#qq%_nN}DKflgl7jy-0zhe)11u}V>{enL! zdiKWP1MVvO`}$LoSJ)?y;iUfx_8+0{K&-t7d;W?&1F`V0ynWujRe5Kd-Qj>8@ZM}i zho26ZYm}Beth=?|?AF%fv1$0QGrR6S-2Sa%EC#~)HJmTF<6Xd7yanX<8Qg=c(LNkM z+CNv6S}%YFYMZPPcd^b&i+-A$wCk{^0si@#w+*6ER*oH=4dnKx?OmV#PK)dW9%gM- znFrwi{d9Ao(dpffwH44a7OPrf)jB+XyZuQ4YuRW{tg|_>jz<2VuQJR0ntDUaSaj!X z@`avF%q6tQ{kFLziWA*s-9U8JvZoR}*#S>}45x%zS9!(Eo%@LjU8(<~Gbl{qjS=*b znH4?^XALs!mcyZNzB}DP^bFP$ia*_-r!+mP!C9#dy`I6jV5`amHzBi?nR}hS4Tc0m zlt!jKF_vbA@-tsk3a2OIQfhZi+>LNgB6KfuR4;m=Ee5L1#T(v3Ix9`F)(u=VaI@;Q zU{79+nSKtVvy8XrMB}b9e^fLL;nYRu6J+Yz8zeu?>`p6B^YMtY1n`3`ozZN@RCtB8G+qsMgr@4UBoZ&QQTKo6uPv!jDO51xj?3}7mVS4Is ztob9nuariI%}+GxCme;}8(LE9p~kI;81N{sQ-1oMj0 zitZMAH=5pUiS|wzJgl5AB98UB_GKD;dwRW^SyqMkZ07s)LePA!7%a0iRyEUIL6B6G zOeKAB$)Daoz%0eEhNWroRcz=?Td%@-5RdJJ^Prt;-U{|obmvp+0%W)k^p=y8 z>%%{ahWc3kGM4`x%U_1m4Vi_=Ji0eL>9MhqaHPZ5N!DaPH-&7#p|;crDs>tNnX5D!lcI?q1F6?nwQ;IP(`pcVzUF zyK_Y5*H)fYAWwfj64vIn%Kp4^52KdBw)^SzUG$pUMbjHjXE?p#bhSUJB*)eQi@=`D z_vi4yMmWXbgy<)mFA4n#{pzB5Ojh1pR%Fe7Zy+;|e14i*@8IoREPsc$-I?`AxzWny zzA-m^Q)DVfH^Z7UTXBoKf;}5Qp*HQpN@Q<6(QHuKya!$8@4%C~zdFq+;1oB;SLp90 zN>J8NxhTkT_xwif&l?sQ;hE3XPZ#>4CY+Hd~>;;aa7*z2HvLVe5>er zXy}NxLQ`9_irI)xrH`46b(u6lS8HXL*>5y>lEy+P9dv&VH$ zy8AU_D7vTIqnc+-6Ty{c1h*5}x}Lgw)G9^y22(>hW~r_n?%#Aj0Oo>MDvC})=X2<> zV0CvllDjoCK<{#gYPLb=Mt7#*c=uD?VN&;7wZU=p#O*l#*NR~_^#4Ft;dj(4L0<#^ zPjEzo|NC&JV!7^`exD^7JG@Xi;e~KgyiGy3gKlSOmGlq8ISl78oYQblE5|#aw0FSL z`qrBVXP$C`%1Q^7Elu5%)IEu|lgbI&BGXnm##h?-mPURY^5fvVz}pur&D;9CtxxN> z)9&q-#**F^;SA#KAlkiyT6ZWNZpRPXv9JM_G_W+bWx>gU(-pd_rFnZRoLkZJ6?(ox ze_iy~MY1PU+sk=-IU3$Y z+q;%V|4}$c(Uw7T1{?6UkGH)Kk@*n*J@D^=eiZsqWJVw}0=heNcVtE)GZK0T^bqJN z&{LFli6YlV5wYhJd!`Lz+6J8;pz{Oxd*JVZ#yuTk(I0|3mZ_p}z>a zFLYn%InZ;U--do0J@2FEefV#{e*^xP@V|s+tUbosOF}1+CnkMj(mMtJ6!y@s(DrLR z{PoaJK|ck3FZ8|0UxoZt=xl+`7RV4k{__@j+aJ0=Z~uXYf8d#4;hA5-Uj=`a)kcKe zM6H_`i*1a>HY8UdxdQ${_y^(t0sbGXylRl$j_S{aL%XhRmtGs&>pt|N5ADvN#Tn48 zpj$!bL+2xpXF@z<)}dz|tzS&*7t_`^wDk=#^O2bkO&<+?G{w-x)FtXXqAplUv@eBE zBzrcJr$JAHz5@CRXtI+>b_&K*cRciJ=+)Ri9s8$4Z-(AX-J{I45sI$OlXE~aRd4|s zF0e5G{}$@rf*x|9PY(3$h}(=Yg}TG3I~+?cgT4$sc+A6NK~*HH;tl4eVQ!jw(Dld_ z=a4tfLGwOZ*@vFj(epa|>)~IIPV@wJj^7CXM(C>0v{m7CZMOn-E6~RZ^fB}pSr0uO z(9;1M-ol2rptGT~k-yO9b9}fCofFVD0ZHiG@Ww)qg{F@lee@VW(&9Wb{2o-y@@XHlw}+{SI{pP){xnng-jMQK2hWoMZr+|G8B1sj3GNlpKR}w?S0ltpS99s{qk79f^(^RE;7}T zsSeE=?XyOEO)?=^eu~!U7p>q^=;wxi)#Vqrg zW&WqopF*=z`*t@%4)n=^E_*qby zd9sbM*@l?+h&K@rU)AC-^hM8R zzNa-gu@5W7F68u$wkz#OFWoA09OHETzw*8FTb!!St@515_s*;Hz4P<=-uVTNe($`7 z)6ePe)O7BXCx@?|U&vR_FXF4`zu>Fqd3^Q!V!nEQ312zwt@mCgovn)222W_biQ!@?p)&>lBYG_KEIA{ zpZ^!%KEIxCpSR`P=Qr@}^Bej0c{{g`TgSQC&2#gd_I&%i1K&RH$hXfs@$K`@eEYl$ z-#+ikx6g0k+vnZ*_W7;uf4fgOx4BQcPdYvM_IV-SK9BM3^8{Z#Pr8fUx15x_%w6W( z&R5Ux;H&4o`09CYf3*J_=WhRHf1-1bztmsm{L+8lU+vuMAMpR~4Di48k2&`{`qw~) z|1*YTjhtq&M*2;{SesZo{r;YQZ|{fi?8P4D8LHo8UC#B8f1KjOr2>vn0YaCbFG3S9puz^2g`^y;A{2`-RET#8!?KF8O1C4cKucETkcY)iR?dGR>=S7codHC&nq19 zZ_l%Z&lip>ocQB2wQy$i%=x!xLE)0Z;^EF>G9;tQWhbQjX=ifaQ595_%%j4C5d}_t(@Lc*6Pef0= zLA;5?!Vizw6>k~O|Jie+l#cOkJU!(}Mf_gzzJmAt7%RoG8u16?L(cFFk3StB9UmKi ziDz}e%pH}XM@ZVaqNAHzxHd60 zJ|woTa71FJ@av1*#KOa|`iVJ0jf)>kED#%)B#IL&6KfM25?h$dYweTxB*A=5>`xq) zrz~;2&^|I(6Xi*t)}*Cm#aM2#n$F2&4bgl!nVYPete?Cx*&^09**cnkIs*%mZIjYF zeI(B6$lLZZ(mj)1<8_h+$wcyw_>5#98C@BzM7w1FQd>! z)A5(&O@sK1R1=L;!9}T-sr=N9sg8*)scx}tsh;uGsg%UyeC=DRSE{eHxkw^(z4kA4 zU#x%X!PF4(%dph&!if^4gCyo!#ag7EPK}l

>ocd17R;ed?vupV}5_XB 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%0DFU}%zN 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%0AsZ~7`xq(@G2w2bW|5e%#IfH7M+WjF%te!a9 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%0A@l=8 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 literal 0 HcmV?d00001 diff --git a/docs/src/archive/originalHBFA/Doc/User Guide - How-to-Run-Test-Case.pdf b/docs/src/archive/originalHBFA/Doc/User Guide - How-to-Run-Test-Case.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5443a027a4cf87c8342c72215bfea8909c03e73a GIT binary patch literal 2084632 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

  • Ldg-2KJt(Q#BqnWhH!`hBLy9-qmLZq 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

    n@SvciHjo_d9KZ0d(xMDA{}Oh2nMxRw?sldpxw+ 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 _K>ZzF}{m==A!OjNghgxWZS1M{OO#3 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�k+ZR1)$tTDUBO>5;MdZ&T^4J)|%- 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

    A8X8e~$!MD)(OFdZW*pyZz>B7t z$`Oa!9WZ^T{{n4Z8>|9X#|iu0SWSz5?ma2<-GgB9BVZZ#oFC*^=pM*14wSRx1rDKp z#w@8Dq44F#&exnyLYyt3j$ed2yjrT>F939|e@MSvCiq!oG5~fM=iG%Aun2X8yiI%h z|L%_(j=CCc_G!qMgBOp05w-j6yZ3@;Q(&IW+e1RAm&B2n-9R}#HZJ7#BOs;lX6!Nu zyp;iU@N`Cd1PD@GrEMe_Xur*9koqt6uj_oarRKMCJ%NTRv***zlZQzFNBGE|wAU8* zpI=TaHr#ITfmRlPz*O<3F>6bDYqo*-@7lW@4i@P;A3RM7-kG+rxBBvb8tGP7lE~j- z5vf3<;ii)DkNw0-@S!!2Vvf%#9Oevq`if@BT zs-zB5^+9M49sl{)%fmi6YN8b1q$PdE2`DnloWh=cLG?+^7w3{kfRPw|Z?dtAVO;UT zM;MVcP=2=jgvSlIgx#mOt7vxX;as!F(zW6JN?fT$oyHD>U(A*Oqth_MrTF4S17A(X zu6f?3Ik`3Lx{%i~P5|ZJWK5x6FJ4c2cBJ#`8Pz1@(kGTjPq9TfiR%#ONWlH&Sk;T zA#oAPyzN1ET~}=(Ki(`ZGOtO9n%8Xpp0E)#02#5L;xmjDzdU zw6M^<@qJUWZAIQ|hlb}&SMgG(FllK*Kdi)zp9flmQF ze+xdCF01CPz@?T?pP;`Xhy*1GB55$mK)+d8Qx!i<>B~weLll_Gv{k~-8x5kCNzgrj zf{&k^>EE6{0(^B(G=do%*nQ~fv|TA(?)!BW;xJkL*Vm1M`JP;C)0C91HV&YPJfsJ} z8RqaI+YvEG-A_zOauM3`_@$cFyRXP7tz?fmWCJzTT{aX4hY^0lrASdHtLXweI0*u> zUB+~~;(7equA-WZS`7G}k*y&Dh{oi`#vcLGOW7Sdw{x{OkAODL3n}(zm5+d6BgKBZ z;R4iNB<~bWZ(%NCpUrxAFz(VKl7;1Te`)q4WhF4O=!0>Xa{@{uKUdFT^X_8h@_Ia) zh#XpUui_*+gO#=fZ)9>A9M`i{S?9crTgspqd$No$dqmx5-^fv4sc&R{j0l zLoY6+d0O}G0~yS>%}pD&E)xQARg*Bo)9+{3;9HC+iJM2{X$2)u(2I+9w2O{G`NRv& zW4SW(P%g+l=}7V11v?MDx$<1QDrzn91?jzsTc7+eiNme;W0%*OXPD#NYa78p z%FtJSLmFSYU(LI;Y)Jzf@#t5+e-w*f6bFTmYQ6XIMc4)Ocoy{dr0*t?gd};;=kzG6 z@@51>9Y=R;+CSErI`zHFkerO!#tn|!Z_1MDp4WLKgFCPH` zGX|cA`g?;$1S$2fv`Fn8JDJ=OYa%N5oREdFOqED)%yk?}HwP?pFN&s`(HV`2@kL(t z;EkxGxY%ee&5rdKgYFMp+{MIP_+QT}w;&x<6q22uX*XT8nsA;1=)=77pa$ zQckPBZGmZY@LrI|fO(@-Geo&<3sE>5G;dw|nhxBW# ztB+z>>SF)ckojX%=Kt$I{I>oKUlt})xZ(3utm`#BcTaQKF^5DxPFrrt71sr80Lr#-k{NLIf69;nr)W49a5%Mio(3d^7lBFQe+Bxv^z5t^yK1$8c>XdG*OYS|33+JYoEf?2}hcp@5=8zuCw@S}gTnwQ(>T>^F z{&0=?T3lUOl=j{F3t_xc-cbQseRBcAaVx#)X?kT{y~UnW%&;mkj@1gXg%njADL%h$ zXA=BTs?jRKFafP`jrh$?n_VP;3_L6w zRl(>(JfF_8L<8Qx_HrV&Vb!v|=bz4)vTU2O07}))gqKA!3eleNA=+ZGu@zFZDd+s^wIKqI=$z zoPU>xtg5X49C*`n{Uh|5o;dpcy3?NamEenee(R6MZk6*ooz71h6e{NUiis!!qJ`38 z73Gn+)=5Qm4iY*Kz!C&Rw|cp`D9y}_FCKDm9U>K|Rz`i91eH`buK71avzwb5bPtA_ zziH2d&9w1hg{2_bp!9%g)T4H;c9K|!f6V8}Tm(LdaTR{-!=2jD&v5Q9z&XCCA}eGK z6F5^uVyR+YG;v~}WH@xeSkol5BG~Y4n|uDcxgoWz3G0OQ z0AijeXQ)qhfCL`SJ6T;x$z?+xFM{=+(S$Cxozn6YoUb>76@i%%C#sy8a`Bhrn>*SN zDx;8vnvL5d!_-6}#EmV1fIPEEV(~K>8GiYjPpv3y5%7~=@cdP+j1_HIVb*MaNubJc zlXlhs-GD98H&oftKE;0g-LUYCoCqOF>(!=k1c`v9{jrQlY!$L)j5du8hvVz7!rI9t zrI-2xGr9^H*3-`mv0z671r5#=?`>kW@+~Xwzx!qW`?0umpPvHi zWX8xb;nfVRlzVrx1^)OWbTH)MUCiU)8 zuqWc*k2S4j=MlH?Kf%j9V1LqIrWro#TSr zxW_~Q=gISMSu(dO_7c+Oq+2>1a#u9n~KhKadHfcQB~U9}qC!wU9)X_=ef zVZiEw({vM{aJkn?4}n?WQHB9n68^;f+s)2L0PS7J?3H+X^x~J)~u6neL;x9u)ajFb@0kjrHNaX{n{uziJ2m8)0hfBkSU- zJ9}H_w;^Ogbi#b8*`Htsi2~EXqvC>h8?7A$*XwXAxzCpIRj4PDHXZqKI+kReD<;SO^nWEIeUb5bVI!sEHara}`%sXMb6_MdZ=tIhOQurEC{^25k}dn$9(Z zg(W}Niok*}q2Q|lSP1Aiep~WiT5Nw2J`dU4nLf&C}!c~5~Z41qXp`N9s&Af zm({$)BfpOLuD4s8EKFw?xjGndU}ZZ~ZKFBTuslcsYGwTc za1;*}SP=D66=+@_~DI6GgzPM|dL+W|V?iY4=8`!{J@C?YdB z;c!wZu8oGCXel6zvus#G;b|t!ZixebUCn<0-IkL_w*ut07W8V^_gLbk&V8m66L*fz zHOnF7hnC0kgeYkur56ys*Mn2UOr0Q5i~WJ|jI=s`?9U+jk3n5~1L!QPiS20Js~C~h z>EK?DzJgRU-1CFXvv;pv%M^J5Au@FjJ%Xj#+$*L%I>oJ>g=OMJ>m|{=g1=I((tko@ z+32_^^{3sUsLjZR#3oANWzajyxk=qfC-Afk`^UYN1c%n(<{`y#O~d0thsPhizkT0yi?pw9HaBQkq>#KW#UBN zQ^EWVC(>MI7zcv8OPieP8QX5Sze4Ok$joN+nm;#u=~McPlvNBKu0$m2Nt4?#(8_lD z6dTcP=aza4`mgeKSg!rf`gr7 ztk869xsV+?5$xCh)H;r@27rET*lFM&(D~DSTPw~4I`xE3Fp=<1Qu%$Y{r zSB9q4T|ld@o8D4tikc~AC1~BzURp{I`cX=uZ>JEi|DDIAKQofe!~c;-I4O7U+j*=O#f&? zhv_|D5J(a zpF@=J-J3ESISiCQjjR7%#{JEJ?Z9hk*F#3tkswQBrbHa_{h|GgifUaJOR9$hY8ovY zQAQCAQF$(DOpgNjN5D)Z&lDz1Vf~7P|Eu~+Sd8@N2sTd=N=xFX`OFtloFq z`W2D?!M3jO*!utc(%-AlU#9f?#s6wy{P)45>uZ_>zT{(>)0E2N?QD_Ctm_n?-Km6B z=KE!%=(e`yO(&-W!UWo1n=?AE$IeHt->TBkD!D+)sEZcl;Pw0*&1-Z? zRaM=J0c^)|_8A|a1d59ztkHe80}NrHi0tUXOupBD$e@wGmO;KDbAQNQg=yp2i$}oU zS}3Q_-$I9T7Xp93`hN=o$`LrG@4eaaPQgE6o(5@dH?&%C5esZGaoD-XvhQAv<(HOS zO0@r9vMc`|xNU^{2)~mJO5)&)8+Sj+`%>oBNLq=czJ4dj7CSXyy(Vdul_;9h?uGE4 ze-FGH`_{dCYF^RqLAuggyK4LAQCB75RJ;d@KZW6k{q1?@a{997$nTpg5Vd8@hm`0j zs_I7%t#B}9-_r$YP*V~)V$V&Aud;_r;jO4}Q$uPl^B+sY&U8zutnAURHxXvOM%i2p+AHnclV~Q_T5GcCEQH-I}MeoN;guG zI+sJ3hq!NB-I8XT6$YKoxZT4f)Kk`!Vz(104$6WgPnXtvy^=?h;)@b&6dr=@WI0le;S5jt-82kQ z$L2*Ux>nXc#(i8&m4WnHDV;VhZoPy*%&U2!yhDwnjbRYlH#TX!6{61J*XSkkE(_#C|vmO_9A%QX0Ox;uOc;xa{!y!^FoG+ zSLm4}akkcuQ7bzRf#X)+i7P7bzR|FtGl!d(<4zabO|KfCsoDuLJn%*gs?NZ_Tv9M2p~konfHH~RKpLawxHYbFc>rRp`xKN;JkJ{Ey#IYQnjXL%8S$=-RSxV#+l}u7)Eo)+TYQvp-5beByOBG+g(fX4h z^#Kl+IDFIz3orcIa7!dZjRst0BT|r8-Oe|@+SjljEIKb1vo8Kwb(i)mM2e}F=z-SQ znn7Q_y0Y=O>x%S~T;4tiBw{r9liJ-Q%jw*pQ2S^ zyyn0|^rNfWWtnIC0;TECmf<@%Mx{o)gT418b zJ^USGDLd`85sNA3(@inRsecTqVl%65Ggh2tapp}#+!dErKz6=9Wd+EY*;QQu>0yp& zl>@HUW18_&JQtR)wAXrf42xqFrMf%<8o+TJC0q%_m~X~g_D@^)!xW%CGvKS0){cl@ zo|~2H*Eq6bc40})A8T2B2x~+?K2b#A+G;VET+O=0+@Z8h{gr6`L_yBD1lb40>m2(Z zqZU*@BZ*2y+t;S908DOG)wPE^7vG4yAIq@qNxx99Qg@$ zwOY$dOfb6)jF=maB`+@v)n_=>wTn2Xy$Dh;=(V(&hywcdqG>LAgRC)EH}T%f8X&^Q zq^tNMp{019Tu)!7^3~!X)6IEwXmX7Cv{T%wtK?s1)t(vWoy)F#kW)sZI&A}SzSm_b z2fu64Av*6i)i&d)ZmuqnNgLq1^#0e4GCGq^9Bv%I4MG|yp0mgw`Ti$LHm*K;F1%v7u&6g|=cg;@2nh;%{Q-=_Q05;RF z@QBCx^hfOP%L2x?MCF3QC&@t-q_IdTfE|+T zE`Hg32${GOne;QK<@oIVYW2;t z{uxx3MUU_%@o0d7ZdSZ;ue`veCoMPIx%2|Kv?+Vn2v$pJW^SMNZmeXpvLX4$i=OQt z_U+G}_q0?@S~DaWk6UFZ1CYp_dRNWu=F}rKf6C5O$cBF2Fv5@5ZL=8WS-Un(P>tsL z!I4IY`~1y!ljq*VOANNBB#1h}77$rp|hc{=#(;k1bamW`QWkuNt2 z3K4eB5V-M+!#IxREU_vE&U9J%r00p7z3;gTT!ORRQGR9)KLRS)1#b~y_VQA|AA!j~ zwJxM-1nL>O-LYJIBC>a1?m3}f;z}3V<9}i*16UEA7gX%o^MB4khz0u4OXK5tiswgbH0jv8;ddi*{@l7?WJX}w8<7Xe&^&Cy3FPGN z+3gD&G^S`hM8Sg3qdZ5@drnvq_Jy|Ipe5 zj2ff__cHvp`*%&MGeVa#^_$?oq$fAa=5<{4viWW@W?A3&)S>zKhzNPRw+}Vpm*spa z3j7n;A#a7~W{FZHNsCdiIrbx)V=dj25r2i}pMjfEK?~mx=`sQFh3M`iTkAZ4JgsyC zVFthe`0r?fky)^%rP-9h`>B=?KQbGvkKb&`7A%VXt4Y{u?C$vy&xMa|$BE+SR?s^B z8a{34r-s5}`Qab#rdCwQZw4%az%Jw6o|{V}=9jLq@6($$;S9G%H)9LyOWk;VZqPfZYp|=D755 zZGD{iYok;(Bcep63?>@%{~F`@Vx&3=A1>eijU5mI6EN-jN*jMehuK)3b}*c0{`h;@ zA^rAty%F)hfav=CyQK8zohz^lcmM|`;VuXel_aJ&V5{Rm6qb=NqwVDt`5&l3e14UB za_E&&Stxx(B0Q2;bd)d&RU4C8VM$pf`ObQvGdRt8*3H5mh`}mdc#6I8{FKv+ed4|) z_cU|kLNLw}-!5`$*iD8vkuI!tmRM616B!U;`_{gH>B_TtNR@znB$1H4XqJvZmc>Ri zer@ZjmwnpfpPe&v#n;JxJGg_y&sXroMQ&fGZ^6v}LR%_G-m36H6z2!y=&x)B%-O_mHrLS_M^v7$J zR)-teAK&#JGER>F@y%S~M%G6`vH>-2={dd`7$Yg4iCVBI$Gj#>!?RoT7 z(iU2Jv@tCH?`ogLL^MOE90VEj@AGav6*e@6`)%ugl*HKu*k2-3ni%{TA@>`=*}s38 zf`)ADa@E>W)fk7fgwd3S!7!d)*?O1dx0LOu|IgkEkg|0NZnU_0gQ1k}?*|*7)+M~N zUV1w_l2pr@Y9O#nR7Ta5-2{go!SO{kma@L$GMOX0X25?GR%*6&6sWY3MxM-Ay`AC2Yae+stw z)JXczAqp=?&Z(n_QodyE+Fqwv%5Nh0;`)8mvf{gPNGyyW?m>^C3Z zX8&s~Q6c|yFtX$tBdF644rKrMpG+RI7~>ynElLWDS!ga8xmzDr%_rtL8@(vd_AyAW ztqz!E3f8o?9Mt-P>1LR29b8*$Y9?!FV_dE5SXjG!UI$~Gsr#rW<5h#|(BF?sWJ)WTM?1opZqU6@E zf;w5WSgAB$vjF6$A$H8YY#S$U4ZCA=O|4lGc_kNmbu%c2oAZi@p z4}sKsNy!kt+jYmPF*{H{&T(enHAkNHL^Y!hHG?KqBV$(Uzj8aQXS#x}!V_dQ7rmjrIW zmtbGGn_()mg~j$u6GWrbh~fLL?T7h;1e3KprrFA#>MNfM>;^rQn9p#@IXLr0q!(8o z9IPcY(U@>yvD46?!A%4{#tW7mAWh;db@5vN`ard>Rtxbd=S@dHi(&BPu+1wZ`e%Ft ze2Ol9gp|*v@SJm@d7srRc=V_7FE)Q-J~QqBk1-ycy$*1ea9zHXY_EXx?R9l6I0Rz# z=qB9SfIehvlk;oAwNdY`E-KiS3vo9qbIYb$zV74ojggaEwk8cgRk6i|*t)P<;Rq_C zTah98}wAC2y`qpP9xpvQNN@Ld!rsGu@7tPn;wUR4q3WjHb4kVWW($P+ur; z*(6RacPaCW+Pxaiq3qc03(_UiYzZ@%Y}VkvaS&CHp5IPQ`6l{)_Ah|mRwrunVQg*FXFUbj;5A3z-M9Sj!uH4I?b5*|>nY7ac!|!8}jBtPVA@^H~ z+K+H}(Mww$CW9-asMIOwr1(b=MWMG!RpRe`E7C7NYxRb*c%Dx;a$4{1Ob{UUW|9gG zFiRs+-gmRQKZ?MIjEv`)iwkWcO8bga%mwn|QH&)A+TWFc1YrFuisM<(*WZ`q_pQ_TPU}a{1 zO+GS+%yjz;AbJEXc@gxm=#wsXb(Vj32hBFAc`W-G4Pnp3Y_(FzC8Rz(1~|bdpreo#mskyZsqko+X_$S-`^=c zK0;%Q%Z|sdjaHuc{ob1Vs+~NQwLUiSaiRMtr(pG3mPWLAg=f~ldVLxi0efns+T=Hx z@#cNCs{>btP^e$B!TJAyq#9~tj4Y;#LJm??v;4+8cfxhyXj|6)Hkq9Scc&FQyxjI% z=$?hy7FsUvp~k%BV$JdwQ;swE;nzQ87;kE?{wGX7%d$Xk`P)1_a2lN#mp zLZ_3)id9l(vlTC?OLoq(e%p`jYz_wINvqY)4ufzBT`@~n>_LYcV&~_70dy0%4qpNm zUS9qJ+*Dbps>*tj#wZ?Q3k!&BoF%1@dx%vyh>BsZz-#2zOxrO<| z!OMsAs1a(a+)mq4!Gs;A^tBQorueKnI|y9qrRnZ$U~|4~Xz@Hl1*O*Z{SOyi0_As* zf!LTWicp?c`7crNb^d$>=dxuLpX8==Zs6? zu^l1=NPpt+$C;9$d)Mle|2?k=(USj1sEgX{N|F+PF!oOv#{aKPh*?zdhjb^-3Y+h@A)50V>uz;{ZwSCDF{;ba1w3oq9Ct}VgUc!N1e}K0LsH3EP~BWV!M!MNh>YM zH=ic_!Y!1lWYM`#qnZaa56wTmQ_erOqHvR$EfWT8HG7p-q z0%%oD9GiECW0S1jgy`};mW7(<_WqBT-Q*YXv;Nb z9t={)Mc}1UAZ;8?^SF~)SZBz;<^W1L=f7Fluj)o=1{UtvEl_SXm1nk1%?!qMy*DFy z4iFf%ZNY5wa=8r!jl}LxTsWzX48Y6^ABr@@Ktr~XPs`Ky&yy`rA3e*skMC@z3&5Ni znU)MD(U^D#lz#!(c#p2(ORV)|EL$Qp`>n)BDR)XM92}BnmW8~>SHsY9g5ad3iNvP2SXgPI(WoSTYA~7v-tH9V4{A2iR%ThS z7wQCmOynHhxFulz&imbzt|PmBx`?ssZQ|d6VeTSu^tusvDL?REz>P#b676%zW}xgzocsd zjW*>k%ZA4kiSk6xJD!ea3-!h%e9Gvs2WbR>SZ9w|6A8|S7p`aDbw{ePyM&^aBt~TK zDia&Tbvzr$frkWn4{uegWA3;cCnTIb{fFEc_iqV&ktMrPaFa9;VMJ^xsx{jflzRJg z9Rx%lo^4uae_LS>crfHO8!s?&tGx(U(A@ZVD{;2SjkehGw&aeE@x4vQJ$!iHW}ULr zIiI(>5;UwPDA~?u#{^z*Db%26v$<&);XEg+S+$1hMboxn*oCJ`2suA??&hVsj;b$8 zwN&eDOvA_8p-$qU)T8fh=RA6Rj{ep~uxQrf1uY(&(Jjw9oW$juh$UxlNZc5!oOL(T z<->?zp_P;BK@G%#xDD&2P(kEWIlJHN7)Yxx(YAGZX9+j}hkO`BN_aU+@^k!RPL8P* zpvCV>H|U2b{e)dIimxnKY1P)GP4ozO^!4j-zPxRLUT7n$YryWy(Tn=}|Nki%tob2} zR4#o#%BEI$mMxZ?+5&B%Ea2EMreu9plhe_in|@IVDH-3kii-$6TUPANitv)c8)++y zL+}uYZGd0(6A~IBWII9k$ht~{-VQC5d}%h~up{qVmbP#Q9H7hl7?g4=%V z1#c&g)e;5Ldz40TQG?Nh401}S`Q>;XV$H1pH$(~(-TiepBAq^-Dr~{4Pp**JwvEV5 zci4?vu`4#?3;=K<^G4bi@^i`aT`Fx{9weXTo2bT)hS@zB33Tl9${}6QGiY@0sn%7X zG(IJ{)Ff;nd>q8Rr@&Hlw(adc3y6>H&7>H;=24053L3gaB zb6oOu!&z?(emtHLV26>uz31QLBFhWZf0$qDf;cIL>-C6QAGX;g&}f)y_+$&2qCyL_ z0s*evs!HF+OB*@XXJJRSvBkG3V!9%c7KF{}beEQ^^InEc6!t$|2%zqJW0qXye_SFt zy>V)t_=*CrO^qcaRIf!m=`4e>8elWxP&2dx3S2^HE%zW(LVNpYiF5Y6JrFMJ>)#V_ z)VQXf`_VvrZluQub1iwF8j(V9H?Lcr@OGu_a@{W~2UE_M((j&ifi2#NvSsk zDycd`o%+%3IF3|xNE0P~Z0@vhaYDvb{~bf!oa}gu$tv{e9Fh?G>>hNET1r`I#`Bb>vN3Qcn>&YiANfto z6j~~o>T#fe@GIRZ*C6S{hCVeUh?JnNLL}ZydC{YzTZcWl3<7=!T93YZtJmlTv@A+LZs49*PZh8g&0sRO9y=6VK4n=(YLgvnxNXLNNwS!uYS~Y0i>F2HGT*7+Xk!9Jh-3hQV z!_J8E(CoXsg-=@bosL!pc3NEGTfOlcga*B?7abg{&N8&{!9veIRr7YFQMvs&k(VLf zKe?$UN!Z#*;L`RU{4{}qj4_f%*GzD|yzJXvF8PBo9-}d=AVdE5Wc8n;^0+v2JRU5w z6ogzO5-R1uYMqY?pT~V0i*Y~0%J5C_VUuI@ag4geXI3yQw;;%_%NkNQC3#`Jv0g<6 z;+E6p+#a;l+-&P2mjzc}b`@ds0t*FZe8}A%H1Kxx`kI8Ev$%fnZ5Lz0o*h9YslU@K z%f{|!%^0s$kx;o$kPCt$X`f+2yXK>QDrNbgu+0 z#ls6vro#>%U(V$_96qk0nvv(4=Bs?e)u*GrpCHcmFnd(CoNxyS0l%rwcflYrxk$pL zYLwbN=i??>c*IRTn_gK%P53s5F^8xl7nc8WS%dRW-H`z^cn50SkH}<1NFCd5A^E=3 z*+Y@O)!5Y3Z5haHK!@w^99!N$S&FvfM^c)b>X&;IEf);CyV~`vi;!!O&3)w3#TdMH zo$0LNi71~dCo2t`b$v?*W>!E|_n?Xa!9;Bj;nR&@b+#Q|)grl&23b@bk~fz(oDN80 z1`zcIBUzrMUZj*V=@{)OBy=JH#OwfjN-gf7R)&sN8*>n?Hhsv(j%g8x5oW@y$%<$X zvt5m^dApzYM?@7GWlTjPmQZn#J5u)-`j|INn)A|JpQsVx$eI%NKLk=gnzJrzx(X3Y zBy}8ydQ*Px^$!e$bs)4dj8EU=sfz&c}nQ;gKnuGT19G%;nz zq0~$v@ZY5&HY<0Q7`6ugVDPD4H2L(IK}MmED-oIc663@Aj}qf-M!K$WR0(t<655sI z7~yKH#X66=N&L1gtF(2GHj8(~Fo{WAiuxD@l;sZgHg{YGM_(Z_F^z(I;l_hMsX-4} zlleo-R#P#vT>768UYj~{^;7cC8m983b=;=41%p8@tWx4I1KZ|Qi-9fdZ_-W5YY!}L z%iWxu${RQFlRkJ_uydVI1S%sRl9+_VG_M!0#a6t`k*0R78h(pKRxY5z zEIDpXTSnp~ovE5o%3*=9dtr-a(zzn;CYnzPXjxu)0#nMlTsS!gJ-+Aj2V3+!+irnJ zK`dS=XT%dLs%PKNR8iY$l9H{7?Tl0XGqV|WyU;vpZ$41)kyzEvzWsQBkQ3K|%|h|% z@bxOv0r6qEZWT}VVqZJ`%09Y(@fGd{U6()1?%lBRjrY8yEdHsP#R?d+@Zeu2(=A2requcB>%`fQLW4@L4ZfJsw}RbF&#T0e`_ioVZXy@sGt?aYf;)3H9X-D zw1xJeD604k@BuKT3*QiW_p;b7(iXTOtc9ga=v^UK{Il>ddCy%cbp|}uo{^`POO&S7 z+X-i!aQV(m3`?p^4rz9TT#4q&CA`B&c|upvhz&bM>W-^jw6~J7KpF(~R_^3MEEoCI z&0A7WO_~JV6p}RAn(%oY)?WGEjk=llu-+$rYBbA-X}9B7kI_X#NjRV0cLTRMkH2Ee z)Ued3>*{|@u-7pI3V0a%CIV<181L1gMOU?HrSXsHxH|?$lyk1)+mDn2)Ft=b1h@2) z$e8Hlf7Oc3mnm^+qT@3O5$%t%awZ&W)wS5=H_8#ButkA0wK-7H0E%+Eg~C_LVDIE- zqM44CetO;$;>X>6@|(lHT}{Wj^P&Jb$#DNJYra>6RNQ6)Z+U7f@UEB!Yc|om=VBVH zGrPZ*L8IxuApfx#~f;g~-Un!fD&a7pHnE8$YNV>)Xs# zDG}4uKxwpa6#S2it-f)SlGs@g;f1k%Y_8y{^5wi(J+uSM+AcRZLlSdD@n2|(lSEVE zs+b!k!B}iix;ku49awMK$6@Zb?uK8+I*oAOwa>V$H=o_KVsFtmGh2r9F+os4N!-71 z=F=z?4<9A%_u^dI-_5q=ZW=xvmI;~RyZ1!gK_(3hub)$-UAhj}Yq~kwh5D%}ik-il z#vitLfTqbyha8EE9qcJ1=L;4N`FOFXzP$&{Adw&;5u|z4fcjQXak6JVKJD5e**lJ% zD?cBaM>Ipd2eTO;S|3PNk_td!@sf1;KfvGZxTf`teqDvVbkto|R+0U?`#J8+z7?uR zC;o4z^h9PK$0qlUncduM3A}m{nO)TMa992HvAq5C^jP7_+pOEa$LC0bA3kqsT&ZH5 zr)A2HVy7@SiY(Yl^%FY92A^9P__C%L)0Dj0qe#EP_+FI@Sy<)Z`hHYI;8?$V1@%Eq zFCyQ&Em|(WeN~Jr!IfWN7o;-=WN0;}aPA+GOMtLn%J3g0N^k787&S8HocV8ZcYBQL z3PY^e`HyGiuD&@@w|&v!wW8Eq8Ve|Jx*qYnIbW_R_Q7($)FW$ShFZ{u_8L=#Z`NUs z6Kox0&d3j)y7S`XdwOgm5^>zKEhMOwGhoH}uqJst8*La(lRGJTdTiu*hYvf-)Dj>@ zm8B*Tw>QOpz6;hx{X%}ebI^aARg7^Q3D%Y@RLAdvO;R5oRI9(l6N)Qxe>w46CYZj~ zd>(xSn&o9(3xyCD*+s_1bLGUG~K@qD$nHNiqIEZ3{? zOC$}=5k$AP_>L#eEXCYp<5D-Le_fWkb|LsT5(-7JfE&xr?z@uB&1S|eqZ-~=0F>QQ zw>M>TlEI$;2R&?apVAw^5%r-YWg8QdG!h9Fh}Ba1BW04Pdl>!X!8Ty|@NvGj8Zz*5 zwj|3Ra6lw&lzvqE3V+YBDR!2>uTbhB4h3HQ=Co_EyN3;sG!LGFs36nYhKiaxyDh-B z{&>^$&MZxg%~MV`(d^vZ_@I_ouTUt3ZiN&DhoRN|n|$K-2}H)IPR?HUI+>ktUWsF( zp~{K;Okw-*NUNl=HO)LrMx{g|+*DAVP*9;K{<47kZKz@f>bq0oC+2keR-$h8_6sg> z_guE87ZC50vs+l$y=H0dx2|T{+eXJ3^_=Zci5CsDqgH_=%@!#-T!@vx-iwFkigp9x zD}7{Bx^G&Cv>jvmyA)UR$+C4G25yI?u%+aNJ*j`({Kj2uFo4x)ARbt7>PHnd{Z%8Mq5#B^J)(*bMSO z8%FC+<^#2V_zUo6vJ2j^jTM8^@nx&)^DZ|`P3Uma4W?lHVa6zPZc1YG&``>>ceU}~(YrOI z>=tY%EL>M)?MkItvUAf7npyH8!H0y6PA12r}+Dv>Ks8nqq=k%$&syQkBdxt61ge31dt~=YFna45^oo^-BegCzQNOYD}8jI4o9McfX#cVAhM(!%|)T*UGGD_yFSe8K1pCweg(Q)&9o}COyn$=d!8& zoLRlRQD=s;pTp_sZST@rg?*44&S(ue=F8WejjJi0FZCIawI7kP-~P>G_zW+p|go)9y2>ol|U-q&Y@hY0y=$ubv9BoUDVS&FOB{&vGxS{0`%44 z<|v+7CBT6jqBCy2J07mHR7~$Iv0L6^0@fLXw|8jqV~Dc?j1pv;wd1~fs%Zya&G>45 zN^9fV(3k04s^;p3v5*Wy&`KhXaFy7bcY%80ah6Tmu&05*+!CbsRi(&LsU!mAyYUKI zkBT9;rv6b+)n~M0VjD9q@!5XY!^#TSO*(irx)T$H#%##+135td=bk=NXqNQXItA%k z5sd2V!wyD58lo06=Vv$PM+#CR!(OY)y;&nD8T6q_EGMkuaP-+|v)}RuvI%CQ4k(r{ zq-ow2>b~i?Yb?1w*{V^oCUy5lY_hKY)p3Qpg~-w6dHAM(L@*}Yfo*5;)#Z(ygy1RA zbgFfyKUFA}vO6afsRosKx$l6;>upv5vAnJ5I8nMwdvUWjeXmL|XL6nxbCXkr?uWZ1 z`&_L2hBm2DH)EJ)v#**gM=BDQ$-FgIuRb?Pzv}1i-c2100X4hdRh~Pr7sc3&RFYu4 z8joW8!r8XL3XSv*IleC0rTpe;EA3aZ1^M<)o(}YB(~RGO))NBy?iM4%?mp<0&(2>Q z9$Ub2Ht77Yz05RMvaq?`+u(p(VlvN(#wm`?@Z5Ek19vQU3;IFiIr&@&+YBw~vot5Q ztdEFrl_&ndc~d@431olBisk+EUanqB#{39ooG!Nn-EGEMl8dE=nylH*dIuYwA35-h z2p;INYPSAa@2CcL@|Epv5;AHN6Y18I@*pq~kCNIxXQ({gbahF^v<$op0~?xkRWzZ`!Od*m=Dk;LsT?L&U#y4Zu*7Z-3Pu_CgcSK&BTGKE{@x&o6T6x73wE-@?IfP zuL?bJ??bQ3L_K+qSv*-?k2Gbm4eK^RmMeRf2 zc(3d(!~6XtakMT90sc_}GkJNTX;HK}Gjg((DU~)*o?pmK^dq-`WuT zMVpPiPv#6#jSiejLvzF?%e27hE*gLh?QCq97~N+lBDH53^;s7Ffkn@hrjeV~Uy=l2 z#c=T#0jv%@AS12tY~ak-%sf{BC;L3m*%k31*3AG;*Er+m^ZYrSOTe)TvEr6Fa^j z#S7e2#krIWpiVl1iex59)^fq(5Gg^Jug}bAEIKKy^|r0RlW;zfE=RfsI#9P;&Z5X1KJn>>C9yKQT*OVGa}I zy32+P*GJwiqP%{d>JlHp{|kVn%sCQ-TH(**3|=}n_Ra`>WoN1p=&%YG^v-6y;D?LC z!Dw~x2Se2`hjtk7XRDi2B}hx%eay^V15MXLvXH%ci9{wb%oryAE?8_L)6J{6re<>3 zI=P;y2VVMM5*tfV%57TE0P#!(_PKR~5Fh7M-g2;ldi&{_3+ba8&CmTQ6fXMxdRZMk z*ab3Ya4@{6l4wUULdWb7AqB9(Od{xk`6cGC^{ue zKQ|_iM^uulqIh6Y}cF5B)+PUG=;`5&M8iy=zRcU@>0n@O6U*0fse zb26VPcLFW@w>|h7DQ^nVHNEuSm_?(>%Ar7SrYUyO|C!gl~L&&*F$fmkoHiL*-tm(KNyVlhCM<#T{b0 zioS2JIG?3$5tT*DB=e@)q^cqQyK&nc){I~qVBE;>>IgjJ&g(1Jzfh~~LyzN+Au=It zVsTU^XM*Xv0N$0K?2(VH^}qalw*I@ZZAqOsTpM;HZLE%MM?6+rY+ep)|BZ7>NJF5> z;={r}u9bj)kFaT0hO7TKwo?hZ%}h+5>vLl&DX^nLQ4~mO@hMl;+Q66V#8+3*>ZY)6 z))u?QqSYK3(`%S~}n-#IfBz3EAPA zf$vQr&)**A{%)3-JXmD-ptkZ=8AmK)K>mT4pi0GhZb65paS00z(t(gPyzkt^sJs5Z z5w#8d(He(3QM+%@T1IQ%7Kq3t-ChQ<1${`qH}0-4bd5(vgsa6AfNJ`toqy23{I==2 zD6Nb$^3w#BS0NnnXkU%!&hD7CGQ&Zdc(4^kG~-XeoTX6F4ANcXvDDv_gf1~_gY3qRh zUkAwqJBo394+vmt|C{3|cL|T>_i8pCFsuKT0^W|@VhCEC+yj?cyA$8oD!_6Az_oEt z4mV%RB(j<S^#vSs<9A@tf8ad%aTrP{RqU*%NXH>>X;S~@UarlzeyL-RqovAevsyCtAGCv8B7qh$fdaUEN8gfx(Ib3y=F zK44*N3_KcmUHumzgT0G1*@i=ZmR8=2CGFFPBhX!dxBj8<*SC5f&}X@u$ho`t=przZ zM=J>Q-nVr}A0%DNA9PAllo-2iQ-A{yl?ce^Y^m%QMfIYolW6x-1G@BrVS&4ghY2Hb zYAu7(oxJR9COsi4TTDH42udEtgKZTAat5$7dYOzi=2#3qNM$m@E_s7B7E0^|>@{W^ z!j5xAC8pv6>)2*tbyR1 zAz$c8SN|oV@%CN^ilGqULF&UYMVX@o9t5E3pkJVQRCt;s$OuRU zl6Z2(&}eT8I_+y_E6<7VGPjcCHz*Gmm}P{c5a1DPvrAntbNjbg*S^ExJwsy=V^LJT zka{=rql7Ly1R@n66mQG)Hdl7;=}~#d=jH1*4#P6d2*)ZpY;OiK6<%DwphTxlH)rbkbv^l6uJ!i^aOj^BHPQt}MeH;@ z8ZznT4D^^Xh7#f1xr@7~0Xd;q)3a(vAF~yEJG<>Nso87D*rzAk5{sMstS*k#=N!`z zxrZwh1o>YN5PfkBbjnn!d$0Ojwqq9?H4B!bqkj2;LUdPMKtS~dU`G4=!_&^VvxC_t z-OdBOQIal+Ias3dK>8MLXg5ffq#`i>}0u&yZqaASeW48K=DzZ8B$xaw|!eg_8tV_ESFc zzJ6_#+0M+N8tTiBMu$9*iaC=!uuIHtlJ<&u-T z%BgB}d;5}h-h%CXS{Np!>c`Nd!{R+JW-vu69eH3IroOHk$TFrB63Ub^LklJl>{9j| zxyjwtuj}FO=+Jhxtko|#k6 z80@mi!Vu=sV0C@qvt#QfgE{9yPLEaSBZ}B-%8~@kFI~P^kPM`X4Q~n5#)#e6@4$K5Nc1v7xzyv#77FArix|r6>D7!{UG}q@<@1&*{11!pGXH(;?&GVS= z-^)+6U1>93#=E$sS;QYx`1xOR=_ifW^--pl7Osw)!GETcB#GK<^)fbl9G!2mE;(4Q ze_aAqD=n3wIws)1JJg^-nVMVg75`CJGe}$eE)J2N-Hi6t)Or8i)gpte*+aq5{BPH! zAvpiXEm1RdZ3rpYhakT_$R$Ykd+E>2S(kEt{$nuD3~xwf=M5lqt1lWN0ziMEl{;Pg8ca`Ke2*naK&WD zvOBspXAE5$Hzy6D<2Xr)xHkDe5b~Q7J5->Nmjm4HwBXyljU1mmqvP_V0#Dw6)AX{X5GW9-A+Z=?g4CB|a10zT_#OFGU_BpTOK z1pJs5`p+Cq4sEX0|F|5IMcxtJloOH>?HQIY2fuRoqWBffELf2l<1YW|9P9Z->`6fv zBG%ql^ZUf2ZPUqblLATN^5t2>TQD+j+7pKes6j~r6j%Z~)zZb_QS^oge|bPiJ-&aj za4;gweL{=PZ^Fd=jop&l#4Z5J@oW=&0Z>-^MD zJnGat;yvf8$XB?l1 zzXhfx#b3g*Em?0Ik1@5+EeGc^cr@4zNV!wVa4UWiCkTDH99A{3{gU?iVpv>SX+Dgas2zSE^^+!O4*3V_jWman2#*5Yr- zgEKNQkMQo5(-y`rI=2xd;e(cl8e0pO%X=H_lwPtzVag2J?>2fm^|G4WugPYGDQ~+ZS6WX=)^WzyxSf!*Y+0Qef%3myn+2 z7~>&{8lIMRSMu))2s?AQB@Z){Y@DE!F7`-jHuczLIu?7=zK8GCX5J6OC=5A`$C9&I z+@BAt*jDFUigRlO)AKf0yxKRPC$V#~|Fb zf{ZAN?#idIG5s98M0uEa`%86Fvn%xQ zh>Yvnjy|krK_p8EgmkM8n@g3(3$vf_4Y95w)|w{ zgx$g}J4K7fr4}NK7d0W#7{oe(d>?@V;d2QK=Dw+FwCfB8Mfu}l)1%g6pT1KR1Ui}} zkILDmWC#@36?I7LptU3o@Zu&er1}uz4rts5!=yOOlJ8QbvTa43jU>~Jqs0AUp_8#d z-@ZMhu)bAocPp+c>gejxbWht`-;AbJtpbOJ;jr>kiTiAPeRiZ&025DkNMi-EXW#ZL01uvGan_|%pN<$N(Dvab~e#?J39S^WoeM{ zo2#coMI8s@k%Sj+?e)iwDr&tR9WVWi1XRg9aEH*i5eJ&KL%F}e^(crIv-K8w(st@} zw-;Lkr}ne1iXaAv35sMRy^Wh-fqQ&+=GUb;_CceaODgkz${s&3Ff~YSQBOHu%0emK zX3C0XY(})WhY>M#Fw<}(oFKBoz<{l+iPf$9jcs<(I?VU%t}tk30cLqWa0L%igiiOW ztmGC0jH+_0H^3}LfT9*tmaJKm)K1cYjeY}cSvdjgB-iWcP$f?AsW+mG_xuB+ybvqI8% za2-)s0jE=a-7LU(6gVoc<^0CPj=2>T{pI|c4Ux|5h$vawS_6nZki#r2m_rI;d{}Xi zbZpcfamNg5q;|gybIbi+2>$9n^vvYPWH@-J*|DIazkW>QYTMe7roHQ02$D-&W942< z{_1|T*-7UP@}gxy2c-(^IonzgQHS%5fkqEor9n!%bg_MYw(xr#0SsuCsRA4eHRSE?>tHzhE3a1R7B^ zVjYgh+|u`W>&NGZ#Kl)p>(Rn8*@d5K!8`BxDgQMraxytZ|MhsKskdObqLtKeAe(hM}-2c6BgEW0L zA7ML04l-OnCdC18>=-|qM$M@+K9E+CbW8W$JDiCTerJ|xwuw9$swkIsFTP76@`W;0 z*{(AJEmG5j2*&|Vtdp&eBJhsn=v^s8EvEHxMXdr)*Bo18)0w2b+<>I02?P=U^gdDq zfV8!A{Mn$Ud*|TiF!Lvv^hxRoFaNNLQNY!V;KHpck)U9f{cpD#)KS&0WP``IO)Sza zja5V>sFAe4I@9)kdJjAP-e)Zw9xh7m_zX<|L+Ko}!tL#?Pd!7`F-pb_6B z&YRkdp(*6oGQ!xBR#25ws5I#7s|6@;R-Ra_Cs^Eg^WTf=O{UK4nQwLLS!)NE`-VDC z=a&UB7oGg;X=!}Z*l65C6m&jmXd>e@2Q^& z?s;Cx&_yrkXZ(@THF7i5Z5CQA8=8xmV!rP?jt#V=+3^ehh78AkqV?sZXo4Nx@KhWz zMBh01T&uEPm%f<=9h+69ZsUVK%rEskJ!tOS7mbvX><*i^5et92>J}B3_ zm1A&xjAnGE4D+gJCIQi^^fMnc`myfi?OB*wwu9-*GD|Aw^IG<#)ge<)h@%WKIl5K* zXZcE7F3GoH<0=Fh*^blToU`u|NBuXo!BX31b}IXQchFe*Su%TeEw{{c-NmBLcsP88 z$AQu@R4P#aq_eZ16|}aVUF~rNU((#v77Hi6#Gc2gF6D1T)yLVUf)RBP#X5(BQZZeu zNI~*Q&T~=%_ot4<(<3v1a-|Ja&Hs?O05Q7)8HnlU= zUu*W?jF*v#I}*B)kr2p*%>r(A;=OMvGH1Wk7|1%JCk;}a#|S@ilU{&;d;-Fr4{8>R zXY8eYEikQgs$5)g!0HlTUY|R-i`wkpluBUxJ6ja9!0xJk^{8Ho;B;~IT7;h!s#k7p ze=R4NfA(0j4pN| zBrnn$YFZU-@yy-l_#S!r4?9YmgGvd>_>O+g^^IDmr1B)w+N8egiD} zjyR|IyZ6ti*aD`l%~)jkvdta;){XiP2EFYRRYOh(Qgtoq&PeDS(#s`(p8XjiW1VU9 zA42;$Julp=xWieO|I_=;Hp#EB{|YYw;oMQBT#NKn_WpBvZ7pZZ$D_0ZmiC`P^KCwH zBR<6ZpZ^4Zi-$Dh&TgV){oME zda5V-2NoJ`UAjB_oFzX`bDAbugu6;0C}U@CDB=nB}*&S=+p2Sfrj{yf9$aGIBV$- zTI36zv8$WNW9B-zuySqiP1>}a4phLh?h0e69V;qeDL|_N(hQ~;RO#6f9g2+V-w{{T z`SZAW__=x97H5Vrrp<*GqJ|_G7Erbq`t!IPu%rVW6NSQoPZ9k&z^02=S4(iW1b`vBRXG<>H<~lJp{^mV+Lj?oD&~voF(WtEA~XQnOhE71xq5GO~9T!D#y#4n|(!J zI{!zmDWvj%_*&{3p>u3!jHwjRoc-^)a?Geo|4F}T*O>FUO zxjgxckYp|4|Ez=3nJwjg=v&&K>r?AJ;XnJgEEyMsT><3=>w`|^8(b~(v~q>06IdGh zIfs|EWpplFxaH@VOS%UmLd8`1h)^X;;+2&c3uZ(PJ%LbRaw%!&M#%+eS(< zc?P6UAD1~YB4henuE;+9MiKfHBuPot&U|PHTY39YQ{A&(x^Uc9HeyqZQ}lgk74fy0 zgnE`uc&6opWJ^FYK3wcovOz6hf>3_->LL9WU>Y7%5*u1HZFK?_|tk(J64+kGg@XE7K%e z=6$^Q_q9?sv-r zxnulfOIsGV8@L)l%ox9%Qmo=XZ6^e#_!iuQ;^dr~!6UcOHP=5V$DO1IKybys{^9r4 zLyY0eA+O@$tTj-!p4Tm83$es%ft?|IlE~jbn5cg}D9W8!wC4v#r)*P_HE^C)>A=Jy zk@xm`d{*Fre6HMhr9HaNrtDyco5YB_H>2Qixx;%YO;wS2{nf^ky1yq#1XKp20nf4AXWJ(oEsbNQ?DIs?;Z{M48 zi&dU8@rTa}2%nFZ%}cKC^(N{7uuAX=@5Hc5>6goW8*H6!*~T5;N!2v(ZIkC`Z;ZXGLZ!JTAS8W;Y_0dc=8m;apMXo9!e`OXa86+h$hiv+)j0ENKkDYmS&+Oy&h zTbT44IS9vLi6Tn2rA?AHY|#jNdmqUB_$DN%>BtQ+z7OK(n+wDdPp75>v_KPw1R}bhRU`I&OPT8;0tM zwN1RrXwJqb0Gvv~(Y7K=6lu0b5uB;@Et8IF=mpW}Qb$dJ6$4EN>m=^{Zl>{m)ZJ?E z5>^{*a(L^r|HO0wftzf2OM34}Yg-cN7*7(*pUyy1V!}@MML+hC(gugU_y{+i78X@1;az*Ueu!#LEN&l6YA|VN@X@W zJoPW;M7sOk@@Tqx(Pop}$$0D#0&%aJb=xKW$fB@iE)!Bm>iroB95;Wp8i>yw&# zgFBYKsEN>1%QCJ^;_>@d#1R*u8#F+`?!CQ=w0(_p{AY&6f#G!U*Q>l9rmwwW%qYB4 z*#-OBpSJ(% zs=ZMs-FD8^weVfJMgD5BIWUSGlVKGeLq4yiHbUrJ14c;$r~)a2Sb*SRy^l$d+@2;|z?G zxCALrXWASpGiTkfh`yeMY+#8XZbQq6WfVsed<4}gaT5OOu-fN%9m0pzk*MG^AT0g~ zyVgp>sp_$7$@2U_jjQMk;m&)&J7+F&pDZRG_B?Bo+dt#}v<(uDqr$VfI@N#Y|YU+CP0 zmt7Xv2x@j;=K6w~2~kHju*`CjGM|o&>)+$#Kgz5Af6TpQR9juw?;YITi+j;x1%eiL zC=_>!26q~0acFS}#UYg9Uff$K5FCnIaCe6y<$BXgZaL4_=RM7eYR(r19mMu^gC$sFiz;9votj4!L-q>-P4=FhG4;T6rVz0PBEU9X5{cw8pB zN5WCu%XH&{OWm%$pkFh}DqV0P8Y0)fw&h=_FmWO^m29#Jj?vzhO@MrB7P>k2)6PGC zk$+hO5r%-#g5INEOr&x9Kju}-DZG_Ik*(k^h7ZyxMU0NLHTm>u!SdUaa0YqSjpQqF z#0UGRGhkhpDA@rC#y$Fzt~@J`YzFy*5i}gp42U^mJKGyT*g}FDzJ$TM64YKrqfm8C>x zGCMebNLQ!CO~w7w3OnV^7^C(uK#5LLN$1imR{XFc_%k&Z5aQ!velir7wVlMw`c;n` ztbU{YQ+tRyV!oucg~uDRH+J8aPzU>zcY%e}@#bo~pkaom>KG!_n8;;?TEHt{;Je(i zm+Q*))Q~0eCw$+}gR}*6QQkh_NT-4?11}VV=1lMCYhSTrwR@VM0W}3Db`Mbv5p%HM zjm!?pL>h}R?b2x9P%Ih}#nxV*svNGoB`n-tbU|!d>nMP>CRvou>ia6m=!?rM(Gl|s zV<*o^IavmmE>aq62JJsXI(&q+u3RpKBLA<;b`0A803>)_k>wbR{EbKZoc7&T@_U|$ zdxehbD6*om9eX^djp6K;C!ZN?agB7b28H^K)? z*)Lt+Jbwwgd!Ioqoa`6cwTZ0U%s6Bf6mSyn_$xagdH9}|{dy*M3!Dq0_H(%}2EzQU zi-2S5uW}7)0E?xj$; z*ymo$UDj;Hh#LPcioUeGAx7V}^1omXai0^jk=->V(G;#D9yh<;98Ln__o=MyjR1PD z3z{gqx_&80j1V$V5fTdsbQfBxtj(LM>#PReSqMdrne{|mQ%XuII)2~fWXdtj1M#4> zl2dWqw2T#x-07Y7wTSpVf7tz?!=jbG7HBn4vHTtMX zlSFwd8!FR(v$4=%sZV)x#XkH+w_N(mpnKS!w}E9%rTzLSOIlb zR+Jh?q~U1)9HHD7q$p_x`bybM^#ibF#jWATjKM0hVCPSFp+R!8(Z>{av$^CG%Z@G> zsK=D(8IqgArvqHVYlK7Ln<1AK=|aG~Cs)*H)leg zio#V=XOtU@q_@^^-Vtpdsy6a(B8UYpz9<7Bf%J#s5wRB}U}^F2m*^^NWiciRO(tf7 zN*^OWCn*LbdP<+<&J?wVY(W;32ahAoep+{-5(d#c$>PB%W$|LEW-7hScd5YK^~l|H zRIPM#9XB&m-weF%0{8-uZl^QVt&>lxXR>)DbMx_XB_6#vgt!hQ z4-xbgVU-g_8cv%veF2ce1m1xzk*2g2{;WXr58o{NpNsfUWMe{iWu}fIPX}F&9+paW z#QR_9x&W-9x7)2xI6ohr~WUlwJWLGeE`P!!~V0Qp&JOi&y6zLy2US++-weoH4-1V>wo$A4?xc|^kP2{ zQTQz%Ig0zrHZG0zBzgtjTerEHVQf(q_thiT>sbGb5i@9f&qKFtN6S|T$d$@-9JXv6 zifR+8nw{Lg>;I0U=}FGuk|X)y>E}KYAtexlB|*C!F0qz6!D~nGbFO^sA-sAkjs9>j z#8dIS;8b)^d!RbJ8Nz5Uh!(_Sfy&`B*vw9e!gEK*>AcwSz7}3_w=^i(DsMSA&e+Yx zpO}IO7MiP;^q=xNXpLyd5--pYSo=~#!#7tMZxJ>s{)e%3B{}_Pl&e!9; z`{u;h8>k>|NbFXcQ6#*$q{wvg*e+Jy;*1>qX3Tk~m<;zuN1^go3&_{cM@EA}Kd5PF zT}&S!724=fx;?XHxWzclt1~)b4^;{IP}2>tdAI5^O5nP*&o+IU(sxLmSE9eRgHsahBHif-oG;zjs( zF*-CT?soqGERzlWOjhXl+E$mke0}237MCeB-^d{LrGHduLl3i5b7W4(MR9iz3%dY; z{jDVtD|%0pI>8WWFF?Y;>`Bf}H@{xb7_wS>ZVX~~F91WVz23P4D#S&r8Bcvu3Vb00 z!d;~Ov3ZF$$M-$BXYn2TpTF@70G)YG+>8(5O0BQ9j_|uYt?z>Ta=%x}fLQB)^s_~S zjNtEia(Y4_?ttBna;g2rmr#`yp@71s#59z*K#W2DjbHZaG(Q-pK0}xC#@Xk|hBQJ? zW0Bk3r4gcr*=?o%x?dld8XzoC%Jq*YLFt5=S|fvr1d{Jcixo4r(?;83k-eTo1@10< zf@ZL9oh0enPF`We&E9jKhVbqtwgb2=X&8U4?HWF&IGC7zIF@q|(VXZ>Dg`n2V>cgc z+a;vm9U3)GEX*f%c@gqb5>f_Usjwq<;8-qu6+rfz^E}@Nuoq>w;9@S)Y%eezV^=Rm zwa8wYI4;}fOJ#V=qiNv*B!KKW4`(5ZSLKcixv7mu`DVAstAle8n%d1T^aqk2Ke07` z{rD=|&oE_t2|lf}RS(11;?MSIad%e~k4`(pLv6f4cOdPINCDt9TW%(n5qR}!IgXl` z>9T%rOc0N}c=%*af9rT3f3oabJb+)y(<2yU4bR7vD8+=3w1uJzveSBH`W|+)FeT3{lF1kZJfd#rTm)Yne&Y#;zl?GBr^#JOTLtsLw{ zkHvY{BPO~XaVJ|(cn&&-h|4Y%zTkcGlo<9sh}Lhi=(kBW;u+1yu9c-z^Jwt3HKKr* zGQ=%?I8gZ&Y_GQ@rndEU)8!!_4VypW5K!{|x@b{i_eS+c=MSlQ#$DNSY4Ge;zN(p; zdZWXvQXBVhTNH#ClZGUL&oW6%xBm5&Lh2;1N~=Lfyp}|mK)=lQ8ydiiKH7jO1N|iU zz6)wy@3tzE1Clt_!VBPH*CJH#=PRY_(3q{qu9U~|_Htz_mgB>f_AN&Q0)^v>zCOry z85WLou7b%G!4)hq>^G{#1i5;M{Dt-D{PjJjl7x-`T#zwd@Iox^y*ME*-Vy?zoO`IU zusI@BDr|RgtrFMPm~z;`7o<9*Myn{QPdecm&kiEDb3jqV!oZ1=EU%&E&{(t+s?G}` z591b>Rc<45FHvToZS%VE-#EQ4&6}vIoPjF|grNwc?D4m~F4{`s__{W18SZsL zqgJVQ9~8~*f(0i5mKR2oKRu7d->lU-jKAQ&U_<6W@kO7^PQjq@f-3lszS4Vws8*E= zzE&$?eM5c3+SJ@H$_ya*)T?+WG4f_sx*5M4V+$kO8px@|niTz<7fYX$^zw#7CvQ>YH)a#43@=k7dtckaCV$(-P zHo@3x;3HkJM5g=cJyuf^67|gyCx7F&v4J#H>~Ovw7}PS)8DhDq&v7O~#ATR3`+uj{3=D^kvaMr!>>Sa=c`@_7y+r^Q% zcYb#r4NNJE2_RgG%l%zZN=yHtoK8dYO?{rnX6W|QIeuoe?2sQ`A=%T6>o|Gbjz8GQ zLe;_`$(pB4_a@2KO9?6EJKotYHKt=D}G6)ig(Cso;4;D4c(wA?k^^!)K(9sU705)zYJ zDWgwi3*ttAn>GVKf(#(bCj8k*0>ZN|vpfetU$z?SMa;e5nY{qwQq7x-b$2SW11h`-cv1m{M2V1eZOrA zJH6#+D#IYERVoH2g;99NMn$K0zax z$ItEN$a8}(el8%hw|J+^+20VU6 zgK30RZ!0jzjrB2{W%SbW2xUOqisYw-98Pq#wKDvuJoZ zLo{&nCFW920ZoyosJUqQ)_YGkUf7VMF!q+QC-w%=JOhSwDG@KZ|7I)HZ233E*aSf_ zF2}0}E-eL)H&VcR{c2b~;*17fV~1jGSI>8Of$-`vY;wWHX+?&=sbPgM;qeq-hyQrY zK6kUm*k`Bn+`M-L&HsKm{JjPkJCNe2nc&T90_O|V4?;>=NMAjeJ&mO)w81N=8u{x5 zTyFpPY2(pfhV-(#G|Uv2IaD1>m%9wR{@?a$6Dq~`(_^13crfyGhd=(hx0_bbTig; zQI465-4qX;7@97aE`M%uYU_|)Uz&L(;ei#bA4Nr#-);5PTu~EUvSYsK>l)i-S*Z3@{yL1xY4=*uQ^SvVmJuI83_@JjPB11_Ea*>aAR zSBVUD6iW_+K!hM4NLgIdquCy?>U-3)vm#Z|eB{D6wOz`E;&6cjj|ag2od>LJ9e0Z) zdJ&%hi26oS22Ng?z%8;$>{5!@)O7Um()BF^b2*qXG6P56{}u+>>oiZ>-E)CSOhoM# zK5QO4S0N%6JmGX=_phE+U16<35RXZ$dY&=gUaNH0Hfx|&KT3itEJEWw|J1mtmsm$;=wJ5{u5%FR@I@M4r6Yc}%R|hAr7M9H6CMNAWH!F@W znsxBuZ#!f0=YMgC1zK;5VROb;dOUAP{fTnIO-gFIanQAKTITP4<7J`1GhADo;~cm7 z@z&3)tqFmljd9#?GojYiR#5)_*W~i={qD}`2E_KWsPsW5;&?hU??1mZFK-W7evanA z{r?Y9Ts1&QEU93B8+Twv`jrHD%oiIfpcoJhLu7|`g_oBiVu6lYLWs^0P-0hb90G3C zg)1M1?GC@Zn<>*Vp{mb-cvBA6W({SFVa~ml()FhIDi#`F+a>#K<>!tohv`9&5ctRI z4-Oj1acwF0Gj}{oU#`F1q$%k}wC}h$bpAN$QRjQ;l2EO6{3_wSrCmzgQWq%jwkJsB z5ols=?LWRPQYj5$*ir~kv#o20U!ux*X-SSE{Rz3K7-5c5`f>w>vo+{<){oyMMcbUs z12T<6Xh~1_I~*>kXP}>iqx}$FBFZX$vNd%m^^kxxZ1oG^74QzbjC$Po>*B1nc{|Lz zR-q{Jy(fCeZEQy?kczWE-&GI zur_C2)6%{X)2o!$O3)0+i(2~Fc#{3>61fU-2N1)l2dYFQB4j&%ja)MyA$$0%nf#Zi zztd$*MIUv5Pc#rii+kbn&nW-vGSY#uStGfZrab$|2UqatWG8l>E&y>F*dYB^L!S>3 zsv<=F1cZmC{^Jr!>I@+sL;M6?l;al@Booey5EiMK1pjHw4ApGa#Q7;D&Y}r8V&0k= zNtft?4hsmwP%R|CMxPKaso3-BMvbmB>2K%oq@-<&!nxX0k1+?oz;Sw(Ze#fU*xZlp z)a$Z%fYFOt+;&9_xCIAky#0{aDmg zn(pr4E3!h6zw42{dqq|)cD4lzLB$)fcmnpIvAyk@{d zF^%QMH}eMR`R8kVbS|(TRTQ`cH(w~zXtJxtwOkb(gTB9zeX%{^JPLhXwwlxK)fecm z3vpUD<>CmHg{Z!cL4CVvFD-MP*~GChBR_9`BlriP?gTaUM8I_Tiy8V$_S?qvQ>|sH zZj#wXkCy|sWo9^+P^$L)$SBmgA&fDMAdiIO1jpIOc}tt5{1j_7E2)W3G&VbDlqHCC z;ViNJWr@T4TFctGX}(L#8w`)gX+rn-z&vIz zN;Vp%jZ(EPKk6~`Q4eFG3{&9^3@k!-!VZj$%`15eS>lQE!~1BGTw%(Vnr{k|4XvKT znM8~j6>Z@!cmY%lel%BwV0I_8c-mMB~p6RzcR?OAo}=Sqgd%1?Rx}f#=i((^7-?uj61$zH#ZmF6lQ2LQ&p9 zw8oIz!QGUvN!o73({>rJO_Kp}`H;^S1y z9|Ow8i>zzT2;LnZ+^BmSj4m z<2ghJxZ-!A|GYY0mGu6#pPW|$8h6BVwY9UT8?CE?dm4O_n$9Pw$v_YK@Jc-nTF*9B z6;d#b5E>NvBl8>iS_vf(RDfD$=7byw^t%Z$rp}BXt&t$pknb}aDuScEdGSga#z4$b zst*idBf7p*>Lor-ZNOu+VJA*DbUDk&^QJ^}F?aBYoOHBps9EHo@PeVT{@ajXE&68? z1g;BONPGcjOqwS>9?F5m?XEdPiG1*Yh?`s+B1tx;9H z-rf)1gx|(G@-dmU5oRe7ta6(X4*;U%n%V?Rl?V7gt9Dtkjk$N!D!es!bGTjT@RY7n+{%bXA+M&5uE64 zV!y=6ZN;&)#v4_Bq?vjWe%&~c-kUwC(2_!Z^la!Uz+aJ`R>NX}>n=d_ze02?CJH?H()Fce!`)HJ}(r5=xU1*mpIw3CD0V z-Eg3-c__7NZA`sez-eYvO5{tRAm)Ev2-Z=)MF8S{g3cB86M;ew-PLMhYdj>w)^uGv z9`9LjbJ~gGvnQEmTvHETh8#T%Fp4Mnt1MWh!x1zDW`1!!w1{s z{W^S0D)h$jM%+Kv*O%8qAo4Cvygf-F2curHv2I_4?-2^YH6~>FUsH+#WoF^;8B%Rm z$xv6TB{{5S7yJw%nC-A+2OeflYuCfgDzEstvT+koH5fIi+Z(5k31I77ovO?!<%+Lz zT~gfq!{w9Nx(9V)CwLf1T#jVO2api>W`x)9QU>fNlx)gcrMAcyP59H6C6&`7mJrBZ zgjJ*g27`p`zSqZaH$kG zOc8?9m_QrDwpAIeu^UL|O0>;4g|>5kHszH=TRrE-Wy}LL*=;T;TV3?Lnts-a7_^|M zvgLOrEZRMVMmtOI-Tl!eE-DlVmUA&v#S`%s`Qm9$TsqP*3d zVv1I{ldvemp!rf^4|g*z^OKc@t(bMciWX29?V7D%(#uN;-K5*`^G8R84Vm{gBaJL3 zso1(cuEntgTk;Sm`RASvKJ&$)K;mILBchi=;kbN~D(3k#8Vy1_;;34RYsL$qC=^KR!d1s{YWE>R4a~k(O87>{c!_7XOJ#v97B!gw4O#yh^{-O zGJBx7^7Y^otc9tiSXj0ZA6T^B7R3wHlv2iF+B>U~Zd!+ePnPSMrr0vi7l$&*qc$$s z6gCyx-Y~X7-nH7*VTDcvG<^+LpwTS-Dn5@RPD6GOEOy1-AjLB7X39;d#WjF_7S+#P zK!x&-%J~en6r8)xQ6;a%>HUxko$NgL{y%%2jz=oRnW_%O6GX#cpRk8(LGCo~2f~R1SlnU|*Q23hl?NHI+ z`V|khp{;o7oM^Yyfs$QsqAAk>YcY_Y5|&;+H}+nd{EYNXtZ2;g5dL1ZW+wCQ6F>lq z_O@IQ)JT4P65v^fp$k7`eYc|39+blgx~>)CotcedCTFN0`6#u?4|9Bm<1DGXXwU}1 zTzJZ;BK4!DKY{U9=4NqrFX==J`nW#2ew6bt^+AzXvUzJ1h@cx@RR<1% zt#EQRJ>3B$LxHqEE1$YBK_8DNY(6qE@mcvWE?2gdj5!BPf_QUh!lod!#vuDh_6EcD zX>qldt(MidU*~t|RX^VqRb0T;_XMx7M}sOLW$cXm2#VNK@$YbPqb;oWJws-WldV!=r#IH| zaFQv9r$#@m7{vZFlm#?3FFoD#V-iJw_EBQ>4?vaELz!dbe_U?_WbuSXKP}+<9Q_pV zzxapTvGWj+TT-z<(MA<~j=@}Me@MS#G4pq@3JXAGmn*6HEAawc7GfF>ny=Yj%TT4U z+$lOawxP$RcQdU8nG?e%I|s0v%EIy#6w5{^xC2 z$VZkhR|B{FYMA3QP`&RAe7*#|3o;faIH^9+FRSV~r}JmDLdSV%?n{ffzXz=B&3-fg z<+zEPG~_*rx$_!g(~M^Ky0dsI{+GCc%fG8?%zS%sZObF@)M}Dvy@>(#fs~Lx*J7q} zvhjDrie101emSvowWX#cE_mF>TnYVYbhfUuMUH>2aTa1FcJzAy<9{~jhlp?ZcQuD* zN(zz2GYgAy!FA;nnYhNpZid)RLU6@cqq1wIUA&QXl4Z0o0`Si(0FKBoG`<_G3pVZho_26`l5^rooNdc9BXtn2Du} z&9<+y@dd}wTmQoxGKGLSpwUQGahsBGHSk`pb5&Jq$u%15>gKxKoK|{QfV0GKMx9}y zEO2+!_iXlg!@s?vGGbJY9D`V#Sw7x9*8e%?&s%t(bN*dIp_Amd@J5F-?%<-@!r%3` z{yYB#jdj%cw<~!o$p5=C zVx6}5yV3kVEi(O&)m*d)eU3l9h3a1>SZK$UJdRHHyzwBB}om{*hX};h>upUsrJ02|NVJ!adj&5@*xR{dnW|-f` zIZ?3?ukfmjv0s$w-%Wq?WwMt+RfwN{)qV$&y}TK5Aw?zHemXW&Q*_#!(`hX^G{oTo zGa{qBgz>#{({jF_R_J|rF}bTGRs5MjFA@2Rd&KM4=$NP+DA_dL`A4nP_MFYhyeqA) z`I2uC#MjH*)7U;%c%;hp!o?OW;YTW5YiR>IFCBr1<-qKCpS%73_JifT9?K?l%TwxX zS3z&hWnMU?KjJ#&`U4#oh<4kJ+4K9nMVc=GE&s!X{7t4_g?wc`iBp3fF*=%zDCI^{ zX4|hMXBIlMNtW`b>150d5%WLd!#!U1t+hQ}*h{rva_1X?DFHFW!3=lX@ebgK^cpQI zTcL6qF4xaQg1OwKi;GQesu5L}AiJR=n`~#7abb5uToL+bq6bI%tmB`Xn|-rhX3GBf z02Qo9mi$c)ny89!j2^zhA9goaV&;}ZAL#6}`l+KSX}FLk8(-t%WJN>qdc_~M_e3^n zhc$j2f+Tud1~O5$=YyMkvdm}96J?I*WbvBQ&lxE&_`>b>bpGGqAXy8%`62N0@r<6@ zP%O&99gMIh$rmscQbot*3zC>!ZUf&x01H-D5y}}XJe)fo4*fd(ztOLSwN51uQMzqi z%Nb<90RHMWzp>Kfdepu_`Dm(B`4RI67*u14su=S<_H3fk#o~51w~|`v;nHFz-cJ0# zo;%gmejCppLVu%OTX#Q#2QI3Y>FOuKq!I5&_gwBO4lY=) z^4IZe`pa)zV+($_MvFh~GkeFm7cRQ)Ol9q2Fk{_6?O=!kk23fEe4XkZZ7RFaZd#Vq zDyz|j?L1dCb|B{*D%29J8+dD2Zzp)4Gzk4%jtDc9W}DM%;EE)Yy24kp*(Az_y1zIu zjtX*OIl$J8RHROk*_SMxG+XRq@fZ?d?spG{7Uc@1hSmxc{GgLzaFNyCmQMGLb#c?{ zy49M2vI}p9-^<7L5amS|bVRJ2WKONu8^A*okkv+;U@Pf8C|H8`J!l~Z*H_~7v{=Cw&fuv z6QeN=S|8ETWgac{D|GsVoLHO@$EftiPaMX_sip*X9L7w2@}V+=u{hGWa1-^3#-g4y z+%l%y7p6y)ESF=hV!B6b>o>%jvsGrJS_3do{1>B0tKO9g?TtQmDoLTA5)pF=tlc0v z^>?Zhe7)P)<&;V3VZp_D?4OFqgnNfbL>`HDDEKv7!w1jEZ5I;-`gmaOo*L{A%;_H# z(`pq_>VrQY0VTm0qSt%9PJMp3gO$|B2B@Xj;67tRUZ$3CH4X&zSn1_|;AC66VvLWFeitH~ZrNQq+x*VC7M)KL6SH<7H4mBv7v) zA@ZfaZd>ra0?oP1U`7&tln@>@TORxI5Gig*=m7B3>V<*XE+7jV&vs7s9PnBjgRqdDT@HaVbQ+3-`tt)5W~ZE@{KJj^YFPvcCK&3GP1oUga@`PRqzdN(vlF|ZMPGzXE?3#S+J@jTV>}X7r;^=! z7h2s1$Ip)vNW^1cMC+dJq)w!C1T7!orHoFVb$W71RkTC@9xMkl&G zcBYcYHjF(76MH5G*O+BeU%x?yP=9b`B<^Nvx6eoE-uzsuNVAFz@no5ttJ@L9e^ zKg&`8)icIq-(fOV-|RrLcAbF4lOOF1^+a>O@}}#y3L+3lPDC;tv1yNWae=d{0rZPd z&u<)XgITDO^Q499*8pqRS;F-8h8JxnTZ{cxW9GRjvO+jHyD$e${B1O?Q9p9ji+wG1 zJ!8~m`LJGnHpwoQF|!u)^iltfMOrT%dZLBE)9}PHd%P5+FI`%J=*kDt#fX^=e2ssn zw+#^j09eZI?~;g0uAfRKOtG9>>92+~6fg z|H|TpEH28*A@rvN%-^2d)gUr5{!Om0Oqk!^V? z9|(Uo(Zz8OoKTj#_M_~pQX-w5y_}n>)0|tXf6Wd&=odI$8A6Vdhnx|x*= z821%1`_#SWutOw7xE;yN=Qy)Vh&Jfv5ew1_t<+ri_L$-xVa|Csek&l3Fg)}H1|`j< z)#6MAZ?(e8Bl)ShiL3EqEhaU*eIv?F|)kb3{-pb|dM-r=*hzG64q)EYBt> zmpXO)ZQmHyc$I<6&Ffy8`lDuZ#f0mT1jr=DM_4gh55Cej(Ov%8PX%JVE%%msS;G0- zJUB-ZC|!MsU@`L)*$tVNmb&=q?XaO2oo~ah4yL9?iX73{6oSGdn)wmI^IW7G0dz04$-+Fn0plHw7B6dmlP#TLgrswQ-I|k@gS}9-xGm(ZsHZ zS1@Z!ROF8W7iM3imzv_iupG81pQnHkSM<|A0Q+Mv0W?r0nTdEqKeA0{xM{BwQK}uI zCkD15Bme+p-_welQJ$U^H?*-K3}WuDXgPdNH5~@;%2`)nG}&Y>0zL*d6e9O0G7Yb7 zqTqJ=JjY{+Zfgk#C(^~a>go$Rw@g;FN>J%iUj?6THdd}v*rkU-8cq!aRn z%LIH!EH+9_5*sr`4QH%9tp^~3C!Ph7!rl&5sOf$7fVVA0-`?{c`@}d6mG2sh8$B`9 z;c|~l{Z^HegE2jCA&{eZgfU zx|_x0Hfudwy?K;R83kjZ=^$s~t;qA#Cbm*9AC$py%4?IZEslXvLz~T61*560Z>_p+ zQ-~wn;k<#rVXc3EI_x8v-h(L21M|Stq}jLM>@fj69|6SkR|ryTD>i37J8k&%uv+@_ zr^or^W8w^Y-9o`7K=CG<&9hiNGydvla!;WfLu%pp%MR>x79*ip8-9h}^&zscPXPhg zg_6P)9HVA(l@fKB^1I=DrmA9L=ZRkM00LNJ1+jOHd^5K#S_rqN@<5-oy59RySXWmc z1}#_0zFbg3unO5Cx&n@HI%J57#`7y20aEj~xj^&Zbbhdn8yL=RGF zeD-n+xyKzN*|4sY*rDoi9m+OC)|PPo2SkFF4by2<2+M2MG@ko>B36JU(kQrp=d3u+ zN$^a@@w)nl?zmyp77=xzS(ItwG;xZX85MyS#eYY_b_O zEXz|>3pNe;hH5PpCRFhdCj0o_Er3Lg^?Yc%-6PW8(oYn_m(SlWOUw~@|0lQC5Khms z5k7^JJ3zZ_-_zsgl;4w&UzUcMQh{)z_b()Z4MPdhJGtN2}D6U}j&hJw>cq<2CVoytRMx5i^oC zJHUn7j_40x(j%x}D9q(!#PaP;E;o2@u(tCRoVLPE>xLL883{~DZn4Kd7mhSoog=`8 zFJJ!rGZROd-|XpJy2R1Sw+t(dd};nY1E#++JGLx&eV_4fn4+MQmvV$N507QH;+N~8 zQAh_^sXnw)5Buhed>Zj8TCgDcX$4hu7rM%U@G3twHpMCtmtyCC zst~;_9gFn-CFv{P#aR(vwe`IQb#;TOOxVJogxkd7!o=JNjfj$m1cys?gxQ8r5$-|* zZ5eY6tSlG`^21H4MFVghdtwK7)$&iB#nM+hR;2o;6b`>!%*b38;%NScD@=?p*f$a~ zQ6T2hnWmbtyss2DkbAR)W$Hbqey6vx+%d4{L`X|~SP=>2S=JI6#+OeKHI;oY%IDO>sZf-StbrUSersytncU8)3 z{f$Dz!d5M=8r6y_-3Rr!PlC4iB2VQ8hpF{V;E_#zx+$!Z2BsJry59oVoN(9Dp7Je= zTRS)-0ax1i0l(KJmZ=`~f5-Rq#5h>4;;E|Wori8XmJl&31JOqPyapDd;}-_cm#4tK zb&9B8h=>vSE$~Gkg0W8=wVHA0-yd6wV7losCS}A%LyUQSg~O{7B_l1e6PtO zx;R#h(d3^7<}sW}kV)G0OCaTPZ!GyyP!>W15K!&(= zgpj&#o!3THzc43HiocUocsg;VaMAO@&Yr&At7%8OX$zxT)Rlnr_&(~6nt0xfx71b$ zi=-P{plwJH{N7jWZLw&d*K*0yZdw!hcn=-7f>6YZWa^YrKbpL5Txi%CnU~6i^J-Hq z6o?vc>$7S_;rl{#)m@29xcqfmjqH;pR+|)p;ZJLRxL4N|x0w)y=Y_*V<D3KUl=puC*eV+1m}N>!1&^Vt0*^n>n=OK>w>0mJH*e<}0<2hf7BVSh)AYYTcYz~g z^=bA=7wWhE*uJ+Rup6&XU01TVZf`tHhF}3{eCXr27Wbpxd2FdXgD`Osj>_DMp3M5a z)va_X?_o3nZ8!{uaWuakYx^o%s!^GtWd>8r+tDDZ5S}o_dN^5rH+wtKh1i+zlha6r zImIl=V(Ii+w>Dvyv2x!6f_r`Afd|lO)rD^T#yX!6I$(U~ia=Zs`m+B;b}YTAUA=Uj z$&ug9Gn7%55M(8;W86+UzBdQa0X~oQcy}m<7DCq*sn_mIvg7^MDYb3iT7_{#5?mW( z@z9Oljx8J8%2lV4q#CX`BDC#+I$AXL-;BS3tUW+H4Q*7hMBmY0Tb6&z>3x4*u^2~w z=EA7_IcZKsyzvGu!*hNm;jvQk04lDm;sTTNcysOct`DAuFsargF$=2!trA}>COGe$ zmKKknxK_WthEU>E87sr<^5zU2R&71Kpi(I>Kw^>h&v5wc*<@0rELW0NvI#5-Rf<9W z;ZIVs>*VKRpW4Ck(Z7rBNGfkop2(eeJd^EqNYjzb&U3MJvh*T#RaN$E9vhUDmhdUo zC~_3R@z_?dk8HU}!X4IwjWoL@$GQhx+|G3LeiYH^=FV!8^=x+b!??o^mP1b_om7N; z%V67n=|^nT7RZ*LQ`@4-lebLm_UvAv;5&e*+l9rNYNtr4P=PMSizfB>e6gIXu0CKc zl4Ua%+U6gs#6HpR9Fb3EylOSXPmM)E*FUq8wqPbr7&|Fdewmf;ll-Q~`A!w6RJaL) z)TZl`nVLf-&2_Cujp}f(>d}IUI}M%GiROGc^NWsfIEz4!wWUYLz=gnIprvjE3=;#R zTGgOoYNO7OCuJRZ+wOI^O{ASIb5frqXDeu-vSX+fc36vLlwq?VCs?f+)GFB5VIlZV zrS?$6cJ02Omj`NO?LkM?pHz#z1HiS6SCX*CK*?16afNl13REcL2Yc1pGjKH?CVaGs zPv3p#_-+0{t%b$lqgV-&u}qVA@Br22h`+BX@D6QR zKmc{`^hQf6hj1*pFGCL09Q)Mkrln8wDl7EZY{fbcl@FCrW>EnVAejjw_jbl4?nvC#G9EO0K#;b_(fImH4jr<)0^Y6UCVM(44yomEZY1 z3hXMYAHZFI08D3Zb*J(E;~I7&Y=TCrt!$-0`V#4X@eh^4o{%OOOzR}=`3GR^`NP=H z>HD#tH`3Zh)8lGug3yhoXAc(^!+!wcsM8+7)!RX^EYr)okLxpguQO?v0~nK?2+Ql3 z`~i5{dF+ zQrxSlD!~6NvoWnTSxq{Ni){j?hZh$twu-EXZXkJkU9{UUWx8Y3610=~X#e2ww^7gK zlvBa=(z#IBy`JmiFFaX-S&Hv zWYAVb2()oKcP)47={7e%T*Yz@xEg;uVqA>K1?heNx2ONrp;03R%tRq`+wevZpvTN? zCH);Naet<}J?*;D+!}LZ!CazGl&Y)KN!;hBoxOo_fC%&H-WK^EcdiyaPa+eT$otF~ zBZ-iso9M@*gvW{2I6EXj_`p{iL^xU>Y4QK`AR-0{iHQ#$sPH?RNZa54 z4ZrXEHTh6lUs=-kuVxT~3lAN4vqMm)LV4~B*qOHgP^5lJsgy$9(G1tu?Frj|092Q@ zMX0DF@$otHho;g3!@f0C_{0;E~p?ZfJo1~gURIGm>(lA8!-buHPS0f)Facgqo0|Dl*a4r zF%t*EgsvARcH_ydB6~*%KlRdity)6tK5!{65ir%-o*rcl2~B7S+u*gOtdb;;3f?A1 z*I7wI=0i~X25?`1kW3+7uonn;bGEe$hTl8IzLGsPrX>yprh_XbIb|aW8q>d1sJYM( z9myI=)@Z|=-Gm^;b?xoxRtb#&XO>u+^@KkVx<1uh78MVzF*S4*TLLd|t2o3>)26uONcPAk@ z0SbrU79hC02KV6ZR=86*!Ce9*5Om#1viDm1y!&pu?X`B=J3nedRm~y2k6B~RF?#>L z@6pDV`s;LTz31~7vRH21<*6z(hoO@RoGe@CUqycKmKk#yl zkuUKS#BD!s>|qxgU~tM#r?YqTG@2SAVQGt$7gSq&w9;A?C#S3OO+gs(hV_xcT+^ThX4l`ku^Avn2*9=8Zd=(ncMNaD|kM#N%Y#7-P7Ab(|aQGDU#XuOG$l z?*tpl$Qf!*o0M4s15yoWfoG@8gWR=c^-Sh3?XgfcF~lodt!{&dmA&|Go~x1_{itKo z`P@v#1>Kg^WFG>*rRD+Uv7@DQAX0;h0L!+7SwR!(L>`glalhhxrtq4m@s2@-b8Ljc zx~iHsNny|G#>3RL8zB735ofQ9cCj~Q!WW_#9I$6?g!h6JQ?CJ=t7n)Et;p`5ma1jG z69l4K1c>ZqAP{i6E}bxGE|T|@)jV^$G+K|HP=LBmRxFuNjIck;$L1G{)3ySG)Ic*! z<@yWhGACbx-7em%;d3Fy+{WLeCFR+IT;Kk0KXzLjT$&`R*N$G{*C7=gRTC@kMyLJ- zUmE)uV$eEsT0!1e(@Itu`$|%So;<6x8F)Y=(X$UsC=XDpX`cT32R!B(Z(Ar!4r9vJ zGSE?O;72#=#Bt?g6|6&$kQry<_+T&dV2vkd`K~+34X>JUd_f{5Q9Q{P(oFrcR28Ss zx+Rw=bTlWXbC+WvN(fC<2bpE3=DPD$Ahpe9kpr4d0Y>N zAV!4?a^1*9ViDe-SB3o!=9|ktLAEcG-Z3t2^?W5o^-ATPum`n&sA#XW*p{^|Ut3vL zsEmd1<3w>1s}2cZ#7{ac7bt-X>t~sb)6ONVY$9K}+y*#h8(19DrRBuH$IDG`xVBni z+*gyrSj4fk0RXsziwTqGKa#Q+uHyOnboF>b#=D+Lajm-?%UO8z!554!6FE z{o+uU5od2NJ3$iN&ib=mjNW^^DtG~(J86NkP|QS7b~6qT?~@Pzs4dxG?t-8eYf7b4 z3>lgr-Q#yqSsSh%Nmr!mkuey=dLY8OSO*I&NAD;N-{xqa8qPAC$G)}`TyKn$$#sm3 z!0h!ET7>MW>L1<)jKQN(bQ=VxywCKp;eICqXf1!zi%bpU56shZSNKF%E}tClSTcw# z7ZHEdkM0w8LOaC>Eb!do?Jj8`qr4D-2z#Ch>>Gyi$@tc0`y;%{E2rF36+?46A(2id z9T*=Q)5m(Vdct%k*VnsjTHB~?7T2n=-A98b8s=^FG~Xe4x&^}}7CdUDd3K~H+xJ@$ zX!o}x_E2`ck?jTjUP|j-Fb3H;Q6(Zhpi1jX!g444a%D(}DTxEQbXw|Vu!u35KILtO zaY4LRTg^po9Bz_+B3g?2=Mh$Xp30cebqkd?g~98Quf`}5BVmv$I^D?t-Y@6f zR0imz5L&Vc8Rigy>Pv(5Vxr6FcG)+cI)pQhs$W+)CQF0(x1=vdEu73UFnI@HRIH5V zE6tG&AlOodg>KP)T-&H{^8zk~JxNY)^{b{CHS=W?XP;9z+eUb=rA`QV)6sIi;E;+$ z3$4@#>nfu-=)vO*@Qz2aGX*hTm{Zdi3pkK_*iLIPX1Y z-}IZjK@}O-w(tmtvk4rc;Dw4ANRFN?5h}Ks)Gio(715seTEMvwscx~-_GDhM7R3So z;aCPg4~K!Tkl&5>ssKD_vIRYj(7NFLR34AbkD%LeCYr70G=}iFiBibE>T^oJNlEC? zz!pMqHBNipZOO6BpsOeA#H;x{=dEWo4(LH&(3a?3?c~YIUREIG)>4gG z%O{sgV}720$i zJsrVggDc`32C3%Nh$98f!pNH(DFG>iNVU@+Rl&5nN zBrV=-r1dIi8pl#ZQq(QU8X*qdH0@QDV9N9EL}7f@q*iQAhd;Rsnduao)6{;cFbM zTUWtJ88@p~Z-R=%0LnS`@TrHtBzUpWIDPyQ@r$LX<~o1P>0JoOA400GdV!MWmiDP? zRoNQ#@FHIoTcr=v?E;;;(aRz&j96bqJ|4T&Kh5zAB7+WIH}b~~X+gSsXp2iy)}`Y6 z4`$`UN6}v_kEd*fvxQH z_z5LYh598Y{UAeb@ELn7O>8grLNAyb%_&-L^>KKnbFXLq@&4;C)rZ6)--)2F4>#|= z7w?6+$+()+eVDI8GD-eGlNm5V%6MUCr2kdakM)$^NvX-Roo{X9>MV{0V%ar>gSteO zEFi_pz<8C_YJ%*`I%W`zf3hL-KGGx-0Y}3KR!%Kk?*+BPk0&9Z|5?GGmrq3L&j6vH z>c3!`z9qi<&uBRBDQ)EEZZXlT((DE3yC3Kwj}OT8s)V1Ryp$$E(Y(}4^@=|z#F&q* znQuV=XwN5zzL?oa{ae@0d&+MUD#?ac}~=yjKiw+LqGQ ztvWO{N|qHhUh#3D<}a8WFX8KbjS8n{L$5eWUx|sKJ{+sx_YoU@ltWPAK=qT z?jmng|6Bts!0rx=N1BQ#0f;mXLt}~NzrG#v#W`cz`n@D9od-;!4^b_&pxKOY7oxkX5&}d&=PMtWsL0-UlxbctkEh zKFA127a6>J_{=f2V#`#wZ`s7;aGlTCRCh?x@pM>oxMj;>w>ZRz$+7xWYYnZTB5 zY}&J?j`T|L5lLH$f+7FeN7@hYpQD@ZD<-e53Xh*g^4|m)dMp3Mmc59jIDop&ipi*v zZIjz3xaV08s>6iW+yG-}EAi`pIn3PdXIm)R?^iW1d?B1)oVR ztSzRD$0ln~(y*RV5FDZd2!IL)Kz_n?v80v3UeHLnd;@OA(vPv*>|F8|oy0$S#2B=rjEpxF!ZL6b|Y4br8q8KrXs)TH()gbX${)k*L# zt}q@xF#nQfBCcH0)f^q>3M7FEWv-Zy2`{{sJc z#D}s7%=d(h=SHl99Fw2 ze{@}OwEs8`Ijt`#DzO?X)+>MG5NZ<7ka|~1ND{^R3+e(1IW25YT33KEa{ZconhzJP zSg-RdK=JAbrEBn$DMWnQF(rsI?6Mi>+p5Prtbt%?b$)Bukf>$YP=RaR85a`o+B#5P7&O>F zc72-B^8Qq_^G>yieTYaKlVjOUDr`NPQB#LoIfZo)P{nKvu(m8ndY5*Px~a8(atzuS zlMj^J+LcQB=lWL6%~K0CmcpVQ_W6FIS;=71!g}-F?jj$PO7sTcw-ERvSfqhvAP!a^ zPo%gcA_w!VKyqIHpue<4gU%)l^u1KA@-AZ{W1=$2=%4&*beyKgn8l@Z_%$bWHL29o5KCBX-rPc2IjxY{&gWb#9a27TKA+-l z;rKpe*jpOsgP_{9?8$~KQk*lJ6ze@j^N%8fLoR5%H1?>tumUY9s(<`Go22GmRR!^I zWR6}_j6i%<%+AHuu24~!_{I@ifB2|QWd11uMIoOjay?g>1?q=K`*>Hb&mE2)S0v&$ z8jO_-^ek*#&rV-dZ8U*ku7z3d_m#ZiRw;muE}u#Fk8ut=52HLcJ{bl3Dw7 zOmnX-L=UF(9~Wwu!EOx}POq3|GJAR9T@MtZ4XTq6&BDZ)(_Dihz@%F|Jo}c{y{kY7 z`;+U)?oHuM@XRHebdj9LzSeL$uC-q($kK<6&$Xn|#gksTNwyFfdLC*z0RuOam3mcj z0?uoxjoPuNa9I&DvKPvU6;C*E#nrCP2J*jllKK^AY}I49QQ>aXgZ(X0Kgsf3N>ScG z#(r+4Ri#ygOQJ@)AR~ohfMb1p93TQ$_lKV8t)4u6$?OnhEWc?M)$D;NtDx8{FF|u9 z`EjMy?2q2xlrrh0r;HK;DX$qsx)`ZGj(ZD=+?Vzox}q(sT_D&ok9Ng)Pn>xR9$=~0 zn)%g_%FOtgsFRLZ%w+i@Gqcnw{1RZbvSU|h#4{ILZglr^8s~#O^ySOg=PJ}n7~ze5 zytE?_ek)k|b8c8q#LQl1Pz9tW+XZ*d(d%noBTr~3Mj7NLQ!t?7ku56CvG&DO?e`E2 z*Q8QkzKpAAGd11biq=C9Ie8@*Nx1`ux1?j@aOmMuW?gD^I#s&1Tq~c=fCL(g;`v!( z)Y903W|YP&#s#GTGKon%cnbrjXt_e+^751&RmXJ|GFY!S(>PExV@-9b(fpnpZBY<8 z^czH7(K4+qV=|O-zn}E$@KJGPZ5ezJ{&J&z` zdzJ_E5eyl&tYuExb7I;E@K(lgyVF*_!1ZldzG1Tex{Hdn|AJ3YY*;sfb+zXLVM)~h z6J5Y$KJZ3;H>CnI`<~(|J={J1l)fr+>-5(7KuHk|an~wt^T5

    BY;_S_=Vm#Dc) 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 z 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 z�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

    hGAd^)>`*{U;pd+U8mWrW2IeQ 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�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 z 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 N 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⩔4qU8U9;holaeh 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

    )P=8J$Ut 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 ZC5J{$m$OJl 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

    5|k;+>rTtfC)c|?X`pOw#2xPpuiTV$AwKTY9E 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 Kqd(6){r>>2ds+1W literal 0 HcmV?d00001 diff --git a/docs/src/archive/originalHBFA/README.md b/docs/src/archive/originalHBFA/README.md new file mode 100644 index 0000000..edd6e87 --- /dev/null +++ b/docs/src/archive/originalHBFA/README.md @@ -0,0 +1,11 @@ +# Archive for documentation + +Several documents related to HBFA are referenced externally or archived locally in this repository in this folder. A Table of these documents is included in the following. + +| Document | Reference link | +| -------- | -------------- | +| The original HBFA release in the whitepaper | [Link](https://www.intel.com/content/dam/develop/external/us/en/documents/intel-usinghbfatoimproveplatformresiliency-820238.pdf) | +| The original HBFA 'User Guide - How-to-Add-New-Case.pdf' | [Link](./Doc/User%20Guide%20-%20How-to-Add-New-Case.pdf) | + + +Return to [Summary](../../SUMMARY.md) \ No newline at end of file diff --git a/docs/src/fuzzing/README.md b/docs/src/fuzzing/README.md new file mode 100644 index 0000000..bdd4a73 --- /dev/null +++ b/docs/src/fuzzing/README.md @@ -0,0 +1,12 @@ +# Getting started with fuzzing in HBFA-FL + +Fuzzing with AFL and LibFuzzer are supported in HBFA-FL. For a given test-harness, the source can be compiled and fuzzed with either AFL or LibFuzzer. To do this, you may directly invoke the build process from EDK-II or you may leverage the included 'RunAFL.py' and 'RunLibFuzzer.py' scripts (recommended). Additionally, several fuzzing test-harnesses are included with HBFA-FL and can be helpful for fuzzing, or as a good reference for developing other fuzzing harnesses. + +- For information on creating and building test cases, see these sections: [Where to create and save a fuzzing test case harness](../harness/wheretoharness.md) and [Creating and Compiling New Test Cases](./building.md) +- For a full-tutorial on creating fuzzing harnesses for HBFA-FL, see the tutorial [HBFA-FL: Writing a fuzzing harness](../tutorials/writingafuzzingharness.md) +- For more information on the fuzzing test-harnesses included with HBFA-FL, see this [section](../harness/includedfuzzharnesses.md) +- To get started fuzzing with AFL, see [Fuzzing with AFL](fuzzingwithAFL.md) +- To get started fuzzing with LibFuzzer, see [Fuzzing with LibFuzzer](./fuzzingwithLibFuzzer.md) +- To learn more on how to generate Fuzzing Report and Coverage data for your fuzzing, see [Generating fuzzing summary and coverage data reports](./generatingCoverageReports.md) + +[<<](../setup/linux.md) Back | Return to [Summary](../SUMMARY.md) | Next [>>](./building.md) \ No newline at end of file diff --git a/docs/src/fuzzing/building.md b/docs/src/fuzzing/building.md new file mode 100644 index 0000000..cab4f11 --- /dev/null +++ b/docs/src/fuzzing/building.md @@ -0,0 +1,32 @@ +# Creating and Compiling New Test Cases + +The original HBFA documentation provides some helpful information on how to to about adding new test cases/harnesses. For more information, see [Host-based Firmware Analyzer User Guide: How to Add New Case](https://github.com/tianocore/edk2-staging/blob/HBFA/HBFA/Doc/User%20Guide%20-%20How-to-Add-New-Case.pdf). Further, a [tutorial](../tutorials/writingafuzzingharness.md) is included in HBFA-FL, which gives details on creating a fuzzing test harness for a vulnerable (fictitious) testHelloWorld UEFI shell program. + +## Compiling Test Cases + +The recommended approach with HBFA is to use the included RunAFL.py and RunLibFuzzer.py scripts. These scripts will invoke the build commands needed (see the sections: [Using RunAFL.py to build and fuzzing a module](#b-using-runaflpy-to-build-and-fuzzing-a-module) and [Using LibFuzzer.py to build and fuzzing a module](#b-using-libfuzzerpy-to-build-and-fuzzing-a-module). However, one can directly invoke the build system in EDK-II. + +For building a test module in EDK-II, some of the important files used in the HBFA environment are described in the following. (Noting, the file paths are releative to the base of the edk2 repository.) + +| Filename | Description | +| -------- | ----------- | +| edk2/BaseTools/BinWrappers/PosixLike/build | When invoking 'build' from the CLI in HBFA, this Bash script is ran and acts as a wrapper to invoke a Python-based build script 'build.py' for the HBFA environment in this Docker image.| +| edk2/BaseTools/Source/Python/build/build.py | Primary script used to orchestrate building a platform or a module for EDK-II | + +When building a test module in HBFA, an invocation of the 'build' command may be done similar to that shown in the following. + +```console +build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -m UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf -a X64 -b DEBUG -t AFL --conf /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf -t GCC5 +``` + +The 'build' script has many options and features (e.g. see the output from ```build -h```). Some useful flags used (and available in the HBFA environment are) + +| Build CLI option | Purpose | Notes/Available options | +| ---------------- | ------- | ----------------- | +| -p | To specify the platform (.dsc) file name | In this case, the platform should be the HBFA, UefiHostFuzzTestCasePkg.dsc file. | +| -m | To specify the test case the module specified by the INF file name argument | This should point to the test module file you have created and with to build/fuzz (or a pre-built test-case) | +| -a | To specify the target architecture | Per HBFA documentation, only 'X64' is supported for LibFuzzer. Use of 'IA32' is ok for AFL in HBFA. | +| -t | This is used to specify the toolchain | Note multiple targets can be specified (e.g. ```-t AFL -t GCC5```) | +| --conf | the customized Conf directory | For HBFA, this should be set as 'hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf' | + +[<<](./README.md) Back | Return to [Summary](../SUMMARY.md) | Next [>>](../harness/includedfuzzharnesses.md) \ No newline at end of file diff --git a/docs/src/fuzzing/fuzzingwithAFL.md b/docs/src/fuzzing/fuzzingwithAFL.md new file mode 100644 index 0000000..0c20c18 --- /dev/null +++ b/docs/src/fuzzing/fuzzingwithAFL.md @@ -0,0 +1,107 @@ +# Fuzzing with AFL: RunAFL.py + +To demonstrate using the RunAFL.py script for fuzzing, we'll build and fuzz the TestBmpSupportLib test-case included with HBFA-FL. First, it is important to understand some of the required arguments for the RunAFL.py script. To that end, the help contents for the script are: + +```console +# RunAFL.py -h +usage: RunAFL.py [-h] [-a {IA32,X64,ARM,AARCH64}] [-b BUILDTARGET] [-m MODULEFILE] [-i INPUTSEED] [-o OUTPUT] [-c {rawcommand,manual}] + +options: + -h, --help show this help message and exit + -a {IA32,X64,ARM,AARCH64}, --arch {IA32,X64,ARM,AARCH64} + ARCHS is one of list: IA32, X64, ARM or AARCH64, which overrides target.txt's TARGET_ARCH definition. + -b BUILDTARGET, --buildtarget BUILDTARGET + Using the TARGET to build the platform, overriding target.txt's TARGET definition. + -m MODULEFILE, --module MODULEFILE + Build the module specified by the INF file name argument. + -i INPUTSEED, --input INPUTSEED + Test input seed path. + -o OUTPUT, --output OUTPUT + Test output path for AFL. + -c {rawcommand,manual}, --commandline {rawcommand,manual} + This specifies how the fuzzer is initiated from command-line for Linux-based distributions. Specify either: 'rawcommand' or 'manual'. Using 'rawcommand' will directly initiate the AFL fuzzer + after building the test module and is recommended for automated approaches. Alternatively, 'manual' may be used to simply build the test case and print out a command that the user can run to + start the fuzzer (this will preserve the fuzzing display for AFL. +``` + +Here, we will need to reference a few files when running the script. For the TestBmpSupportLib test case, the following files should be referenced as arguments to the RunAFL.py command. **Note**, the full paths for the files should be specified. + +| File Location | Description | +| ------------- | ----------- | +| hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf | This file is used with the '-m' option. This is the component description file for the test-case/model. This file will reference the sources, dependencies, etc. for this test-case. | +| hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw | This folder is used with the '-i' option (for the input seed(s)). This directory contains several Bitmap image files (.BMP) that will serve as a fuzzing corpus. | + +Additionally, one must specify the target architecture (this example will target 'X64'), via the option '-a'. Further, the output directory for fuzzing session output should be provided via the '-o' option. If not specified, when RunAFL.py is invoked, the default assumption/value for the '--commandline' argument will be 'rawcommand', meaning the RunAFL.py script will automatically launch AFL after building the fuzzing harness. + +Putting all this together, the fuzzing test-case can be built and ran as shown: + +```console +# RunAFL.py -a X64 -m /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf -i /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -o /tmp/fuzz_RunAFL_TestBmpSupportLib +Start build Test Module: +build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -m UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf -a X64 -b DEBUG -t AFL --conf /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf -t GCC5 +Build Successfully !!! + +Start run AFL test: +afl-fuzz -i /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -o /tmp/fuzz_RunAFL_TestBmpSupportLib /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestBmpSupportLib @@ +afl-fuzz 2.52b by + +[+] Looks like we're not running on a tty, so I'll be a bit less verbose. +... +[+] Here are some useful stats: + + + + Test case count : 8 favored, 0 variable, 10 total + + Bitmap range : 23 to 94 bits (average: 64.50 bits) + + Exec timing : 135 to 172 us (average: 147 us) + + + +[*] No -t option specified, so I'll use exec timeout of 20 ms. + +[+] All set and ready to roll! + +[*] Entering queue cycle 1. + +[*] Fuzzing test case #0 (10 total, 0 uniq crashes found)... + +[*] Fuzzing test case #1 (36 total, 0 uniq crashes found)... + +[*] Fuzzing test case #2 (37 total, 0 uniq crashes found)... +... +``` + +Here, we note your full-path to the hbfa-fl directly may differ. Alternatively, if you wish to simply build the test case and run the fuzzer later (or with other options), you can invoke the RunAFL.py script with the '--commandline' argument 'manual' as show in the following. + +```console +# RunAFL.py -a X64 -m /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf -i /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -o /tmp/fuzz_RunAFL_TestBmpSupportLib --commandline manual +Start build Test Module: +build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -m UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf -a X64 -b DEBUG -t AFL --conf /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf -t GCC5 +Build Successfully !!! + +Start run AFL test: +Run this command to initiate the fuzzer: afl-fuzz -i /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -o /tmp/fuzz_RunAFL_TestBmpSupportLib /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestBmpSupportLib @@ +``` + +As can be seen in the output, a command is printed that can be copied and used to run the built-test case with 'afl-fuzz'. Adjust and run the command as needed to initiate a fuzzing session. E.g. for the present example, the following command will kick off the fuzzing session. + +```console +# afl-fuzz -i /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -o /tmp/fuzz_RunAFL_TestBmpSupportLib /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestBmpSupportLib @@ +``` + +The fuzzing session can be terminated by pressing 'Ctrl+c'. + +### Examining the AFL output directory + +In the example provided in the prior sub-section, the fuzzing output was set to output to the directory '/tmp/fuzz_RunAFL_TestBmpSupportLib'. A file listing of this output directory is shown in the following. + +```console +[root@92fd93545422 hbfa_workspace]# ls /tmp/fuzz_RunAFL_TestBmpSupportLib +crashes fuzz_bitmap fuzzer_stats hangs plot_data queue +``` + +This is the standard output directories and files per the AFL fuzzer. For more information on the output, see [Fuzzing with afl-fuzz](https://afl-1.readthedocs.io/en/latest/fuzzing.html). Some useful folder locations include the 'crashes' directory, which will include an input file suitable for triggering any of the crashes discovered. Likewise, the queue directory will contain input files (test cases) that will reach each code path discovered. + +[<<](../harness/includedfuzzharnesses.md) Back | Return to [Summary](../SUMMARY.md) | Next [>>](./fuzzingwithLibFuzzer.md) \ No newline at end of file diff --git a/docs/src/fuzzing/fuzzingwithLibFuzzer.md b/docs/src/fuzzing/fuzzingwithLibFuzzer.md new file mode 100644 index 0000000..9c7b266 --- /dev/null +++ b/docs/src/fuzzing/fuzzingwithLibFuzzer.md @@ -0,0 +1,89 @@ +### Fuzzing with LibFuzzer: RunLibFuzzer.py + +Overall, the general approach for fuzzing with LibFuzzer is similar that that done for AFL; however, instead of RunAFL.py, we will use the RunLibFuzzer.py script in HBFA. This command offers a similar set of command-line arguments that are required; however, RunLibFuzzer.py offers a few important, additional features. Examining the '-h' (help) contents: + +```console +# RunLibFuzzer.py -h +usage: RunLibFuzzer.py [-h] [-a {IA32,X64,ARM,AARCH64}] [-b BUILDTARGET] [-m MODULEFILE] [-i INPUTSEED] [-o OUTPUT] [-s SANITIZER] [-c {rawcommand,manual}] [-p {t,T,true,True,F,false,False}] + +options: + -h, --help show this help message and exit + -a {IA32,X64,ARM,AARCH64}, --arch {IA32,X64,ARM,AARCH64} + ARCHS is one of list: IA32, X64, ARM or AARCH64, which overrides target.txt's TARGET_ARCH definition. + -b BUILDTARGET, --buildtarget BUILDTARGET + Using the TARGET to build the platform, overriding target.txt's TARGET definition. + -m MODULEFILE, --module MODULEFILE + Build the module specified by the INF file name argument. + -i INPUTSEED, --input INPUTSEED + Test input seed path. + -o OUTPUT, --output OUTPUT + Test output path for LibFuzzer. + -s SANITIZER, --sanitizer SANITIZER + A comma-separated list of sanitizers to run with LibFuzzer. E.g. '--sanitizer=address'. Included sanitizers are: (ASAN) 'address'; (MSAN) 'memory'; (UBSAN) 'undefined', 'integer', 'bounds', + 'enum', and 'function'. NOTE: 'address' and 'memory' cannot be used together. The default sanitizer is 'address'. Support for Linux only. + -c {rawcommand,manual}, --commandline {rawcommand,manual} + This specifies how the fuzzer is initiated from command-line for Linux-based distributions. Specify either: 'rawcommand', or 'manual'. Using the 'rawcommand' mode is recommended/default. The + 'manual' option will build the module and then simply print a command-line option that the end-user can subsequently use to run LibFuzzer. + -p {t,T,true,True,F,false,False}, --gen-profraw {t,T,true,True,F,false,False} + Generate 'Source Based Coverage' (Profraw) instead of the default compilation option for gcov. Support for Linux only. This setting will invoke the compilation flags '-fprofile-instr-generate + and -fcoverage-mapping' for clang and libfuzzer. +``` + +As in the prior example with AFL, we will fuzz the TestBmpSupportLib test-case. Therefore, arguments for the architecture ('-a'), the fuzzing module file ('-m'), and the fuzzing input seed ('-i') will remain the same. Likewise, we will not specify a value for the command line ('-c'), leaving it as default so the fuzzing session will be ran automatically. Also, we will specify a different location for the output directory ('-o'). Notably, there are two additional options we can consider with RunLibFuzz.py: '-s' for specifying the sanitizers to be built into our fuzzer and '-p', which is an option to use LLVM-based, 'Source Based Coverage' (Profraw format) coverage data. + +For the sanitizers ('-s') option, one can choose any combination of those listed in the help output, except the sanitizers 'address' and 'memory' cannot be used at the same time; a different build and run of the fuzzing session would be required if both are needed by the end user in their fuzzing efforts. + +Regardless of whether '-p' is specified or not, a GCC-based gov binary will be created when the RunLibFuzzer.py' script is ran; this can be later used by the 'ReportGen.py' and 'GenCodeCoverage.py' scripts for GCOV and lcovtool-based reports. When the '-p' option is included, the LibFuzzer fuzzing binary built for the test-case will be instrumented and emit Profraw ('Source-based' coverage data). This can later be used when invoking the 'GenCodeCoverage.py' command to generate llvm-tool based coverage reports. Note, you may wish to set the LLVM_PROFILE_FILE environment variable to control where the Profraw coverage data is emitted. + +In the following show an example build and run of the TestBmpSupportLib test-case using 'RunLibFuzzer.py'. Here, '-p' is used to add 'Source Based Coverage' (Profraw) and nothing is specified for the '-s' option (a default use of 'address' sanitizer is applied). + +```console +# RunLibFuzzer.py -a X64 -m /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf -i /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -o /tmp/fuzz_RunLibFuzzer_TestBmpSupportLib -p true +LibFuzzer output will be generated in current directory:/tmp/fuzz_RunLibFuzzer_TestBmpSupportLib +Updating UefiHostFuzzTestBuildOption.dsc +Start build Test Module: +build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -m UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf -a X64 -b DEBUG -t LIBFUZZER --conf /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf -t GCC5 +Build Successful !!! + +Start run LibFuzzer test: +/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestBmpSupportLib /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -rss_limit_mb=0 -artifact_prefix=/tmp/fuzz_RunLibFuzzer_TestBmpSupportLib/ +INFO: Running with entropic power schedule (0xFF, 100). + +INFO: Seed: 446151718 + +INFO: Loaded 1 modules (754 inline 8-bit counters): 754 [0x5abdc8, 0x5ac0ba), + +INFO: Loaded 1 PC tables (754 PCs): 754 [0x5797a0,0x57c6c0), + +INFO: 10 files found in /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw + +INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes +... + +``` + +For LibFuzzer, the fuzzing session will continue until either a crash is encountered or you press 'Ctrl+c'. If crashes are found, the files will be saved to the output directory specified via the '-o' option. *Importantly*, for any additional code paths discovered during the fuzzing sessions, additional seed files are added by LibFuzzer to the directory specified via the '-i' option. *Note*, if you wish to run the fuzzing session with additional parameters for LibFuzzer, take note of the following lines from the 'RunLibFuzzer.py output'; use the command printed as a starting point to add/modify to the command. + +```console +Start run LibFuzzer test: +/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestBmpSupportLib /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -rss_limit_mb=0 -artifact_prefix=/tmp/fuzz_RunLibFuzzer_TestBmpSupportLib/ +``` + +### Examining the LibFuzzer output directory + +If there were not any crashes discovered, the output directory will be empty as shown in the following. + +```console +# ls -l /tmp/fuzz_RunLibFuzzer_TestBmpSupportLib +total 0 +``` + +However, if there were crashes found, the input files that generated those crashes (or sanitizer detections) will be in the output directory, e.g. see the subsequent directory listing. Noting that some UBSAN detections are printed to the console output and do not terminate the fuzzing session. + +```console +# ls -l /tmp/fuzz_RunLibFuzzer_TestBmpSupportLib +total 4 +-rw-r--r-- 1 root root 62 May 21 18:35 crash-0205a0e4ec89a2fd77df87a0688599f704a5ddc2 +``` + +[<<](./fuzzingwithAFL.md) Back | Return to [Summary](../SUMMARY.md) | Next [>>](./generatingCoverageReports.md) \ No newline at end of file diff --git a/docs/src/fuzzing/generatingCoverageReports.md b/docs/src/fuzzing/generatingCoverageReports.md new file mode 100644 index 0000000..14f4edb --- /dev/null +++ b/docs/src/fuzzing/generatingCoverageReports.md @@ -0,0 +1,266 @@ +## Generating fuzzing summary and coverage data reports + +HBFA includes two scripts to assist with generating fuzzing and coverage reports: 'ReportMain.py' and 'GenCodeCoverage.py', respectively. For AFL fuzzing runs, the underlying coverage format used by HBFA is GCOV-based, and the LCOV tool is used to generate HTML reports. For LibFuzzer results, GCOV-based can be generated, or, if the '-p' option was set to 'True' for RunLibFuzzer.py, LLVM [source-based coverage](https://clang.llvm.org/docs/SourceBasedCodeCoverage.html) (Profraw-based) coverage reports can be generated. In the following, we'll step through examples for both GCOV-based- and Profraw-based- reports. + +### Generating fuzzing reports for AFL fuzzing output, GCOV-based + +We again use the TestBmpSupportLib test-case for the example. In order to generate the reports from our previous fuzzing session with RunAFL.py with the TestBmpSupportLib test-case, we should first run the 'ReportMain.py' script. To run the script, several arguments are needed; first, running the help option will show the available arguments for this command. + +```console +# ReportMain.py -h +usage: ReportMain.py [-h] [-e MODULEBIN] [-i RESULTPATH] [-r REPORTPATH] [-t TESTMETHODS] [-s SLEEPTIME] + +options: + -h, --help show this help message and exit + -e MODULEBIN, --execbinary MODULEBIN + Test module binary file name. + -i RESULTPATH, --input RESULTPATH + Test result path for test method. + -r REPORTPATH, --report REPORTPATH + Generated report path. + -t TESTMETHODS, --testmethods TESTMETHODS + Test method's name. Must be one of [afl, libfuzzer]. Will be auto detected for default. + -s SLEEPTIME, --sleep SLEEPTIME + In run time mode, # of seconds to sleep between checking for new seed files +``` + +For the test method, we will specify AFL, e.g. '-t afl'. Next, the fuzzing module binary should be specified (-e MODULEBIN). When we ran the RunAFL.py script, it also ensured that a separate build of the test case was done using GCC with GCOV coverage enabled; therefore, for the TestBmpSupportLib test-case this will be (your base directory may vary): '/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64/TestBmpSupportLib'. Further we will need to provide the directory (-i RESULTPATH) we had specified for our fuzzing output ('/tmp/fuzz_RunAFL_TestBmpSupportLib'). Lastly, we need to provide a location for the report output (-r REPORTPATH). Putting this together, we run the ReportMain.py command: + +```console +# ReportMain.py -e /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64/TestBmpSupportLib -i /tmp/fuzz_RunAFL_TestBmpSupportLib -r /tmp/TestBmpSupportLib -t afl +``` + +The report contents will be output to the directory we specified: '/tmp/TestBmpSupportLib'. For this example, the following files are created, as shown in the directory listing. + +```console +# ls /tmp/TestBmpSupportLib/DebugReport/ +GdbSummaryReport.html IndexCrashes.html IndexHangs.html +``` + +The file 'GdbSummaryReport.html' will contain an overview of the AFL fuzzing run (e.g. total case numbers, execution time). The file 'IndexCrashes.html', should contain information for detected crashes; note, if there were no crashes, then the table of cases will be empty. Example outputs for this are shown in the following. + +![](../../images/hbfa_summary.png) + +*Example GdbSummaryReport.html report with no crashes* + +![](../../images/hbfa_crashes.png) + +*Example IndexCrashes.html report with no crashes* + +![](../../images/hbfa_hangs.png) + +*Example IndexHangs.html report with no crashes* + +### Generating a Fuzzing Code Coverage Report for AFL fuzzing output, GCOV-based + +In order to generate code coverage report data, the 'GenCodeCoverage.py' script should be used. Running the help option will show the available arguments for this command: + +```console +# GenCodeCoverage.py -h +Usage: python GenCodeCoverage.py [options][argument] + +Copyright (c) 2019, Intel Corporation. All rights reserved. + +Options: + --version show program's version number and exit + -h, --help show this help message and exit + -e MODULEBIN, --execbinary=MODULEBIN + Test module binary file name. + -d SEEDPATH, --dir=SEEDPATH + Test output seed directory path. + -t TESTINIPATH, --testini=TESTINIPATH + Test ini files path for ErrorInjection, only for + ErrorInjection. + -r REPORTPATH, --report=REPORTPATH + Generated code coverage report path. +``` + +As was done when executing 'ReportMain.py', we'll again specify the '-e' option (MODULEBIN) as: '/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64/TestBmpSupportLib'. Importantly, the '-d' option for SEEDPATH will be the 'queue' directory in the AFL fuzzing output '/tmp/fuzz_RunAFL_TestBmpSupportLib/queue', as this will contain representative input files to reach all of the code paths discovered during the fuzzing session. Lastly, the '-t' option is will not be needed (for ErrorInjection), and we'll specify our report output directory for the '-r' (REPORTPATH) argument. Putting this together and running the command: + +```console +# GenCodeCoverage.py -e /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64/TestBmpSupportLib -d /tmp/fuzz_RunAFL_TestBmpSupportLib/queue -r /tmp/TestBmpSupportLib/ +Capturing coverage data from /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64 +Found gcov version: 11.3.1 +Using intermediate gcov format +Scanning /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64 for .gcda files ... +Found 15 data files in /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64 +Processing UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib/OUTPUT/ToolChainHarnessLib.gcda +Processing MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib/OUTPUT/SafeIntLib.gcda +Processing UefiHostTestPkg/Library/BaseLibHost/BaseLibHost/OUTPUT/SwapBytes32.gcda +Processing UefiHostTestPkg/Library/BaseLibHost/BaseLibHost/OUTPUT/RShiftU64.gcda +Processing UefiHostTestPkg/Library/BaseLibHost/BaseLibHost/OUTPUT/CpuBreakpointGcc.gcda +Processing UefiHostTestPkg/Library/BaseLibHost/BaseLibHost/OUTPUT/LShiftU64.gcda +Processing UefiHostTestPkg/Library/BaseLibHost/BaseLibHost/OUTPUT/MultS64x64.gcda +Processing UefiHostTestPkg/Library/BaseLibHost/BaseLibHost/OUTPUT/MultU64x64.gcda +Processing UefiHostTestPkg/Library/BaseLibHost/BaseLibHost/OUTPUT/SwapBytes16.gcda +Processing UefiHostTestPkg/Library/BaseLibHost/BaseLibHost/OUTPUT/Math64.gcda +Processing UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost/OUTPUT/BaseMemoryLibHost.gcda +Processing UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost/OUTPUT/MemoryAllocationLibHost.gcda +Processing UefiHostTestPkg/Library/DebugLibHost/DebugLibHost/OUTPUT/DebugLibHost.gcda +Processing MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib/OUTPUT/BmpSupportLib.gcda +Processing UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib/OUTPUT/TestBmpSupportLib.gcda +Finished .info-file creation +Reading tracefile coverage.info +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointGcc.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseLibHost/LShiftU64.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseLibHost/Math64.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultS64x64.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x64.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseLibHost/RShiftU64.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes16.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes32.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.c +Removing /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.c +Deleted 11 files +Writing data to coverage.info +Summary coverage rate: + lines......: 21.0% (202 of 964 lines) + functions..: 8.2% (8 of 97 functions) + branches...: no data found +Reading data file coverage.info +Found 4 entries. +Found common filename prefix "/root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library" +Writing .css and .png files. +Generating output. +Processing file BaseBmpSupportLib/TestBmpSupportLib.c +Processing file /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.c +Processing file /root/hbfa_workspace/edk2/MdeModulePkg/Library/BaseBmpSupportLib/BmpSupportLib.c +Processing file /root/hbfa_workspace/edk2/MdePkg/Library/BaseSafeIntLib/SafeIntLib.c +Writing directory view page. +Overall coverage rate: + lines......: 21.0% (202 of 964 lines) + functions..: 8.2% (8 of 97 functions) +Please view code coverage report in /tmp/TestBmpSupportLib/CodeCoverageReport +``` + +The output (coverage report) is written to '/tmp/TestBmpSupportLib/CodeCoverageReport'. Examining the directory contents, one can see that an HTML-based report is generated (e.g. see index.html). + +```console +# ls /tmp/TestBmpSupportLib/CodeCoverageReport/ +BaseBmpSupportLib emerald.png glass.png index-sort-l.html root snow.png +amber.png gcov.css index-sort-f.html index.html ruby.png updown.png +``` + +An example of the coverage output is shown in the following screenshots. + +![](../../images/hbfa_covreport.png) + +*Example index.html code coverage report* + +![](../../images/hbfa_covreport2.png) + +*Example code coverage report for BmpSupportLib.c (drill down into source code view from index.html)* + +### Generating a Fuzzing and Coverage Report for LibFuzzer-base fuzzing in HBFA-FL + +Fuzzing session summary and coverage reports can be generated using 'ReportMain.py' and 'GenCodeCoverage.py' as was done in the previous cases for fuzzing with AFL; however, coverage reports can be also processed for LLVM, Profraw-based output (in addition to LCOV-based output). Noting that for the LLVM, Profraw-based output it is necessary that the 'RunLibFuzzer.py' script was ran with the '-p' option set to 'True'. (Also you may wish to set the LLVM_PROFILE_FILE environment variable to control where the Profraw coverage data is emitted). + +### Generating a Fuzzing Session Summary Report + +A summary report for the fuzzing session can be generated by using the 'ReportMain.py' script, as shown: + +```console +# ReportMain.py -e /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestBmpSupportLib -i /tmp/fuzz_RunLibFuzzer_TestBmpSupportLib -r /tmp/TestBmpSupportLib -t libfuzzer +``` + +Note, '-i' points to the artifacts (seed) directory from running the built, LibFuzzer test-case binary and '-t' is the target type (here 'libfuzzer'). + +The report contents will be output to the directory specified (with the '-r' argument, here /tmp/TestBmpSupportLib). For this example, the following files are created (shown in a directory listing). + +```console +# ls /tmp/TestBmpSupportLib/DebugReport/ +IndexSanitizer.html SanitizerSummaryReport.html +``` + +If there are no crashes, the reports will indicate 0 crashes. In the event a sanitizer records a crash, a report may not be generated, instead a sanitizer log file may be written to the report directory, as shown in the following directory listing. + +```console +bash-5.1# ls /tmp/TestBmpSupportLib/DebugReport/ +HBFA.Sanitizer.log +``` + +### Generating a Fuzzing Code Coverage Report for output from LibFuzzer + +The GenCodeCoverage.py script is used to generate code coverage reports. Again, the HBFA-FL release can process the coverage data in two ways: + +1. The original HBFA way for LibFuzzer, using the GCC5 build target to process seed/corpus files (the original files, along with those written during the previous run of LibFuzzer), and then post processing those into a HTML-formatted report (leveraging the LCOV program) +2. The test-case is compiled such that source-based coverage data can be emitted ('PROFRAW' data is collected). When the GenCodeCoverage.py script is invoked and the target binary was built using the LIBFUZZER target, the seed/corpus files will be used, along with llvm-cov suite of tools to generate coverage report files. + +#### 1. LCOV-based coverage output + +In order to generate code coverage report data, the 'GenCodeCoverage.py' script should be used; the use will be similar as that done for the AFL version. + +```console +# GenCodeCoverage.py -e /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64/TestBmpSupportLib -d /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -r /tmp/TestBmpSupportLib/ +Capturing coverage data from /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64 +Found gcov version: 11.3.1 +Using intermediate gcov format +Scanning /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64 for .gcda files ... +Found 15 data files in /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_GCC5/X64 +Processing UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib/OUTPUT/ToolChainHarnessLib.gcda +... +Writing data to coverage.info +Summary coverage rate: + lines......: 20.4% (197 of 964 lines) + functions..: 8.2% (8 of 97 functions) + branches...: no data found +Reading data file coverage.info +Found 4 entries. +Found common filename prefix "/root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library" +Writing .css and .png files. +Generating output. +Processing file BaseBmpSupportLib/TestBmpSupportLib.c +Processing file /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.c +Processing file /root/hbfa_workspace/edk2/MdeModulePkg/Library/BaseBmpSupportLib/BmpSupportLib.c +Processing file /root/hbfa_workspace/edk2/MdePkg/Library/BaseSafeIntLib/SafeIntLib.c +Writing directory view page. +Overall coverage rate: + lines......: 20.4% (197 of 964 lines) + functions..: 8.2% (8 of 97 functions) +Please view code coverage report in /tmp/TestBmpSupportLib/CodeCoverageReport +``` + +The output will be collected in the sub-directory 'CodeCoverageReport' of the report directory specified via the '-r' argument for the GenCodeCoverage.py script. An example of the output is shown in the following. + +```console +# ls /tmp/TestBmpSupportLib/CodeCoverageReport/ +BaseBmpSupportLib emerald.png glass.png index-sort-l.html root snow.png +amber.png gcov.css index-sort-f.html index.html ruby.png updown.png +``` + +When opened in a web-browser, the coverage information presented should be similar to that shown in previous examples shown for AFL code coverage output. + +#### 2. LLVM-based coverage output + +The LLVM-based (profraw data) coverage report can be produced in similar manner by running the 'GenCodeCoverage.py' script. Here, it is essential that the 'RunLibFuzzer.py' script was invoked using the '-p' option set to True, so that the proper coverage instrumentation (and emitted output) will have been generated during the fuzzing session. Assuming all of this has been done, the coverage report can be generated running the following command for our test-case. + +```console +# GenCodeCoverage.py -e /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestBmpSupportLib -d /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw -r /tmp/TestBmpSupportLib/ +INFO: Running with entropic power schedule (0xFF, 100). +INFO: Seed: 1478178115 +INFO: Loaded 1 modules (754 inline 8-bit counters): 754 [0x4b64a8, 0x4b679a), +INFO: Loaded 1 PC tables (754 PCs): 754 [0x4993b8,0x49c2d8), +/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestBmpSupportLib: Running 1 inputs 1 time(s) each. +Running: /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/sample.bmp +Executed /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw/sample.bmp in 0 ms +*** +*** NOTE: fuzzing was not performed, you have only +*** executed the target code on a fixed set of inputs. +*** +INFO: Running with entropic power schedule (0xFF, 100). +INFO: Seed: 1488500083 +INFO: Loaded 1 modules (754 inline 8-bit counters): 754 [0x4b64a8, 0x4b679a), +INFO: Loaded 1 PC tables (754 PCs): 754 [0x4993b8,0x49c2d8), +/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestBmpSupportLib: Running 1 inputs 1 time(s) each. +... +``` + +The output will be collected in the sub-directory 'llvm_coverage_report' of the report directory specified via the '-r' argment for the GenCodeCoverage.py script. + +```console +# ls /tmp/TestBmpSupportLib/llvm_coverage_report/ +default.profdata filtered.txt report.html report.txt show.txt +``` + +[<<](./fuzzingwithLibFuzzer.md) Back | Return to [Summary](../SUMMARY.md) \ No newline at end of file diff --git a/docs/src/harness/README.md b/docs/src/harness/README.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/src/harness/includedfuzzharnesses.md b/docs/src/harness/includedfuzzharnesses.md new file mode 100644 index 0000000..e887c67 --- /dev/null +++ b/docs/src/harness/includedfuzzharnesses.md @@ -0,0 +1,74 @@ +# Fuzzing test harnesses included with HBFA-FL + +A number of fuzzing test harness cases are included in HBFA-FL. These, test-harnesses were included in the original [HBFA](https://github.com/tianocore/edk2-staging/tree/HBFA); however, the original HBFA includes a few additional test-cases not included here, which are described in the following [section](#test-cases-presently-not-included-in-hbfa-fl). Carefully examining all of these tests harnesses is very helpful for learning how to implement fuzzing tests harnesses in HBFA-FL. A listing of these files is presented in the following Table. + +| Fuzzing Test Case Name | File Location (based from repository root) | +| ------------------------------------- | ----------------------------- | +| TestTpm2CommandLib | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.{c,inf} | +| TestBmpSupportLib | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.{c,inf} | +| TestPartition | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.{c,inf} | +| TestUdf | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.{c,inf} | +| TestUsb | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.{c,inf} | +| TestPeiUsb | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.{c,inf} | +| TestVariableSmm | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.{c,inf} | +| TestFmpAuthenticationLibPkcs7 | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.{c,inf} | +| TestFmpAuthenticationLibRsa2048Sha256 | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.{c,inf} | +| TestCapsulePei | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.{c,inf} | +| TestFileName | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.{c,inf} | +| TestPeiGpt | HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.{c,inf} | +| TestValidateTdxCfv | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.{c,inf} | +| TestTcg2MeasureGptTable | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.{c,inf} | +| TestTcg2MeasurePeImage | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.{c,inf} | +| TestVirtioPciDevice | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.{c,inf} | +| TestVirtio10Blk | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.{c,inf} | +| TestVirtioBlk | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.{c,inf} | +| TestVirtioBlkReadWrite | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.{c,inf} | +| TestIdentifyAtaDevice | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.{c,inf} | + +Additionally, many of the test-cases make use of stub-libraries to simulate responses from function call that would interact with hardware. These libraries are included in HBFA in the relative directory: + +``` +├── HBFA + ├── UefiHostFuzzTestCasePkb + ├── TestStub + ├── DiskStubLib + ├── Tcg2StubLib + ├── Tpm2DeviceLibStub + ├── ... +``` + +## Seed files included + +HBFA-FL includes some seed corpus for the included test-cases. The relative locations are shown in the following table. + +| Case Name | Seed Location (based from repository root) | +| -------------- | ------------- | +| TestTpm2CommandLib | HBFA/UefiHostFuzzTestCasePkg/Seed/TPM/Raw +| TestBmpSupportLib | HBFA/UefiHostFuzzTestCasePkg/Seed/BMP/Raw +| TestPartition | HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition +| TestUdf | HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem +| TestUsb | HBFA/UefiHostFuzzTestCasePkg/Seed/USB/Raw +| TestPeiUsb | HBFA/UefiHostFuzzTestCasePkg/Seed/USB/Raw +| TestDxeCapsuleLibFmp | HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule +| TestVariableSmm | HBFA/UefiHostFuzzTestCasePkg/Seed/VariableSmm/Raw +| TestFmpAuthenticationLibPkcs7 | HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule +| TestFmpAuthenticationLibRsa2048Sha256 | HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule +| TestCapsulePei | HBFA/UefiHostFuzzTestCasePkg/Seed/Capsule +| TestUpdateLockBoxFuzzLength | HBFA/UefiHostFuzzTestCasePkg/Seed/LockBox/Raw +| TestUpdateLockBoxFuzzOffset | HBFA/UefiHostFuzzTestCasePkg/Seed/LockBox/Raw +| TestFileName | HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileName +| TestPeiGpt | HBFA/UefiHostFuzzTestCasePkg/Seed/Gpt/Raw + +## Test-cases presently not included in HBFA-FL + +The following fuzzing test-cases are not included in HBFA-FL; however, they are in the original HBFA. These test cases are no longer build and may be re-integrated at some future point. + +| Fuzzing Test Case Name | File Location (based from repository root of HBFA) | +| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| TestDxeCapsuleLibFmp | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/DxeCapsuleLibFmp/TestDxeCapsuleLibFmp.{c,inf} | +| TestUpdateLockBoxFuzzLength | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/SmmLockBoxLib/UpdateLockBoxTestCase/TestUpdateLockBoxFuzzLength.{c,inf} | +| TestUpdateLockBoxFuzzOffset | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/SmmLockBoxLib/UpdateLockBoxTestCase/TestUpdateLockBoxFuzzOffset.{c,inf} | +| TestHobList | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Library/TdxStartupLib/TestHobList.{c,inf} | +| TestParseMmioExitInstructions | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Library/CcExitLib/TestParseMmioExitInstructions.{c,inf} | + +[<<](../fuzzing/building.md) Back | Return to [Summary](../SUMMARY.md) | Next [>>](../fuzzing/fuzzingwithAFL.md) \ No newline at end of file diff --git a/docs/src/harness/wheretoharness.md b/docs/src/harness/wheretoharness.md new file mode 100644 index 0000000..84fbb69 --- /dev/null +++ b/docs/src/harness/wheretoharness.md @@ -0,0 +1,22 @@ +# Where to create and save a fuzzing test case harness + +It is recommended to create fuzzing test harness cases in the file structure provided in HBFA-FL. At a minimum, the folder used for the fuzzing test cases should be located in a sub-directory under the 'HBFA' directory for use with the RunAFL.py and RunLibFuzzer.py script. For a fuzzing test harness, a minimal test case folder would consist of the test harness C-source code file (containing the fuzzing harness logic) and a module description file (the .inf file). The 'HBFA' folder shown in the file structure (tree) relative to the HBFA-FL repository root directory. + +``` +├── HBFA + ├── UefiHostFuzzTestCasePkb + ├── TestCase + ├── ... # The directories here somewhat follow the + DeviceSecurityPkg # analogous directories from the EDK2 root + FatPkg # file structure (e.g. see MdeModulePkg) + MdeModulePkg + OvmfPkg + SecurityPkg + ... + └── TestModuleFolder # This is the folder containing the new test case + └── TestXYZ.c # Test harness/logic goes in this C-source code file + └── TestXYZ.inf # The INF, module description file + +``` + +[<<](../fuzzing/README.md) Back | Return to [Summary](../SUMMARY.md) | Next [>>](../fuzzing/building.md) \ No newline at end of file diff --git a/docs/src/setup/README.md b/docs/src/setup/README.md new file mode 100644 index 0000000..54bf60b --- /dev/null +++ b/docs/src/setup/README.md @@ -0,0 +1,5 @@ +# Setting up an environment for HBFA-FL + +In order to leverage HBFA-FL, several additional software packages and tools are needed. Further, setting up a few environment variables is necessary, so that HBFA-FL can source necessary build environment parameters, EDK II source code, and invoke the various tools and fuzzing frameworks. + +[<<](../README.md) Back | Return to [Summary](../SUMMARY.md) | Next [>>](./linux.md) \ No newline at end of file diff --git a/docs/src/setup/linux.md b/docs/src/setup/linux.md new file mode 100644 index 0000000..4e1bc24 --- /dev/null +++ b/docs/src/setup/linux.md @@ -0,0 +1,198 @@ +# Setting up HBFA-FL for a Linux environment + +In order to use HBFA-FL, several dependencies should be installed. If viable, a recommended approach for setting up an environment for HBFA is to leverage the [Tianocore/containers repository](https://github.com/tianocore/containers). The Dockerfiles there for the Fedora- and Ubuntu-based images provide a good baseline for HBFA as they can provide all the necessary packages and dependencies for building in the EDK-II environment. More, specifically, the 'build' targets in those images are a great starting point. + +## Installing EDK-II + +For EDK-II, please refer to the [instructions from EDK-II](https://github.com/tianocore/tianocore.github.io/wiki/Getting-Started-with-EDK-II) for additional details on setting up the EDK-II Environment. (Note the use of the Tianocore/container Dockerfile should result in an environment suitable for setting up the EDK-II code-base and building various platforms/components.) + +For a quick-start, you can readily obtain the EDK-II source code from their [repository](https://github.com/tianocore/edk2). Following this approach, we can clone the repository to our local machine, and then build the base EDK-II tools, as shown in the following. + +```console +root@a791b2478af5:/root/hbfa_workspace# git clone https://github.com/tianocore/edk2.git --recursive +root@a791b2478af5:/root/hbfa_workspace# cd edk2 +root@a791b2478af5:/root/hbfa_workspace/edk2# make -C BaseTools +``` + +Here we note that when the 'make' command is ran for building the EDK-II base tools, a series of tests should be ran. Verify that the tests are all passing ('ok') before proceeding. Lastly, we can run the 'edk2/edksetup.sh' script, this will set several important environment variables. Depending on how you are invoking a shell instance, you may need to source this command again to set the environment variables. + +```console +root@a791b2478af5:/root/hbfa_workspace/edk2# source edksetup.sh +Using EDK2 in-source Basetools +WORKSPACE: /root/hbfa_workspace/edk2 +EDK_TOOLS_PATH: /root/hbfa_workspace/edk2/BaseTools +CONF_PATH: /root/hbfa_workspace/edk2/Conf +Copying $EDK_TOOLS_PATH/Conf/build_rule.template + to /root/hbfa_workspace/edk2/Conf/build_rule.txt +Copying $EDK_TOOLS_PATH/Conf/tools_def.template + to /root/hbfa_workspace/edk2/Conf/tools_def.txt +Copying $EDK_TOOLS_PATH/Conf/target.template + to /root/hbfa_workspace/edk2/Conf/target.txt +``` + +## Setting up HBFA-FL and the Build Environment (EDK-II with HBFA-FL) + +Next, obtain the source code for HBFA-FL (e.g. via cloning the repo with the 'git' tool, as done for edk2). Once the source code for HBFA-FL has been retrieved, you'll need to set up a few environment variables and run a Python script included in HBFA-FL to help set-up the environment. To do this, follow the steps shown: + +```console +root@a791b2478af5:~/hbfa_workspace# export WORKSPACE=~/hbfa_workspace/ +root@a791b2478af5:~/hbfa_workspace# export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/hbfa-fl/HBFA/ +root@a791b2478af5:~/hbfa_workspace# python3 hbfa-fl/HBFA/UefiHostTestTools/HBFAEnvSetup.py +``` + +Noting, we are redefining the 'WORKSPACE' environment variable and defining the PACKAGES_PATH for EDK-II relative to this, which will include all code from the edk2 source and hbfa-fl source when building. Running the HBFAEnvSetup.py script, we will generate the 'build_rule.txt' and the 'tools_def.txt' configuration files under the HBFA-FL directory: ```HBFA/UefiHostFuzzTestPkg/Conf/```. These will be used by the EDK-II build system when compiling fuzzing test harnesses. + +## Installing and setting up AFL + +If you wish to fuzz with AFL, you will need to obtain, build, configure, and set-up a few environment variables. + +First, assuming the use of the original AFL-2.52b version of AFL, you can obtain the source code from http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz. Here, we'll use the ```wget``` tool to download the source, then build, and set up the appropriate environment. + +```console +root@a791b2478af5:~/hbfa_workspace# wget -q http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz +root@a791b2478af5:~/hbfa_workspace# tar xf afl-latest.tgz && rm afl-latest.tgz +root@a791b2478af5:~/hbfa_workspace# ll +total 20 +drwxr-xr-x 5 root root 4096 Dec 7 19:03 ./ +drwx------ 1 root root 4096 Dec 7 17:03 ../ +drwxr-xr-x 10 500 500 4096 Nov 5 2017 afl-2.52b/ +drwxr-xr-x 36 root root 4096 Dec 7 16:35 edk2/ +drwxrwxr-x 9 root root 4096 Dec 4 18:24 hbfa-fl/ +root@a791b2478af5:~/hbfa_workspace# export AFL_PATH=/root/hbfa_workspace/afl-2.52b +root@a791b2478af5:~/hbfa_workspace# export PATH=$PATH:$AFL_PATH +``` + +Here, we have downloaded and extracted the source code for AFL and we set the environment variable 'AFL_PATH' to point to the extracted AFL directory. We also add the AFL_PATH to the shell path. Before proceeding, we need to build the source code for AFL, as shown in the following. + +```console +root@a791b2478af5:~/hbfa_workspace/afl-2.52b# make +[*] Checking for the ability to compile x86 code... +[+] Everything seems to be working, ready to compile. +cc -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -DAFL_PATH=\"/usr/local/lib/afl\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -DBIN_PATH=\"/usr/local/bin\" afl-gcc.c -o afl-gcc -ldl +set -e; for i in afl-g++ afl-clang afl-clang++; do ln -sf afl-gcc $i; done +cc -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -DAFL_PATH=\"/usr/local/lib/afl\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -DBIN_PATH=\"/usr/local/bin\" afl-fuzz.c -o afl-fuzz -ldl +cc -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -DAFL_PATH=\"/usr/local/lib/afl\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -DBIN_PATH=\"/usr/local/bin\" afl-showmap.c -o afl-showmap -ldl +cc -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -DAFL_PATH=\"/usr/local/lib/afl\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -DBIN_PATH=\"/usr/local/bin\" afl-tmin.c -o afl-tmin -ldl +cc -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -DAFL_PATH=\"/usr/local/lib/afl\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -DBIN_PATH=\"/usr/local/bin\" afl-gotcpu.c -o afl-gotcpu -ldl +cc -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -DAFL_PATH=\"/usr/local/lib/afl\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -DBIN_PATH=\"/usr/local/bin\" afl-analyze.c -o afl-analyze -ldl +cc -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -DAFL_PATH=\"/usr/local/lib/afl\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -DBIN_PATH=\"/usr/local/bin\" afl-as.c -o afl-as -ldl +ln -sf afl-as as +[*] Testing the CC wrapper and instrumentation output... +unset AFL_USE_ASAN AFL_USE_MSAN; AFL_QUIET=1 AFL_INST_RATIO=100 AFL_PATH=. ./afl-gcc -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -DAFL_PATH=\"/usr/local/lib/afl\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -DBIN_PATH=\"/usr/local/bin\" test-instr.c -o test-instr -ldl +echo 0 | ./afl-showmap -m none -q -o .test-instr0 ./test-instr +echo 1 | ./afl-showmap -m none -q -o .test-instr1 ./test-instr +[+] All right, the instrumentation seems to be working! +[+] All done! Be sure to review README - it's pretty short and useful. +``` + +Last, you may need to adjust the core pattern and CPU scaling for the AFL fuzzer. To do so, you may run command similar to the following. Note, if you are running a container image (e.g. via Docker), you may need to run the container in privileged mode to run these commands. + +```console +# echo 'echo "core_%p_%s_%c_%d_%P_%E" > /proc/sys/kernel/core_pattern' >> /root/.bashrc +# echo 'echo "performance" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor' >> /root/.bashrc +``` + +### Test build for the included fuzzing test-harnesses with AFL as the fuzzer + +Next, to verify the set-up, you can copy the 'build_rule.txt' and 'tools_def.txt' files generated when you ran the HBFAEnvSetup.py script into the configuration directory for EDK-II, then invoke the build command for EDK-II (where the platform provide via the '-p' option the HBFA platform UefiHostFuzzTestCasePkg.dsc). We specify the '-t' option as 'AFL' to ensure the build leverages AFL for instrumenting the binary fuzzing harnesses. Note, additional details on building and running test-cases are included in this documentation (e.g. see this [section](../fuzzing/building.md)): + +```console +root@a791b2478af5:~/hbfa_workspace# cp hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.txt edk2/Conf/build_rule.txt +root@a791b2478af5:~/hbfa_workspace# cp hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.txt edk2/Conf/tools_def.txt +root@a791b2478af5:~/hbfa_workspace# build -p hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a X64 -t AFL +``` + +If all is set-up correctly, all of the included test-cases should build without error and can be seen in subdirectories under the 'Build' directory, e.g. see the following directory listing. + +```console +root@a791b2478af5:~/hbfa_workspace# ll Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/Test* +-rwxr-xr-x 1 root root 197952 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestBmpSupportLib* +-rwxr-xr-x 1 root root 148848 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestCapsulePei* +-rwxr-xr-x 1 root root 479448 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestFileName* +-rwxr-xr-x 1 root root 96528 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestFmpAuthenticationLibPkcs7* +-rwxr-xr-x 1 root root 114360 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestFmpAuthenticationLibRsa2048Sha256* +-rwxr-xr-x 1 root root 383072 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestIdentifyAtaDevice* +-rwxr-xr-x 1 root root 1149560 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestPartition* +-rwxr-xr-x 1 root root 207256 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestPeiGpt* +-rwxr-xr-x 1 root root 383688 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestPeiUsb* +-rwxr-xr-x 1 root root 1164584 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestTcg2MeasureGptTable* +-rwxr-xr-x 1 root root 1165784 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestTcg2MeasurePeImage* +-rwxr-xr-x 1 root root 268480 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestTpm2CommandLib* +-rwxr-xr-x 1 root root 1267064 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestUdf* +-rwxr-xr-x 1 root root 1347160 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestUsb* +-rwxr-xr-x 1 root root 2096272 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestValidateTdxCfv* +-rwxr-xr-x 1 root root 1702408 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestVariableSmm* +-rwxr-xr-x 1 root root 1171248 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestVirtio10Blk* +-rwxr-xr-x 1 root root 1085704 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestVirtioBlk* +-rwxr-xr-x 1 root root 1086016 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestVirtioBlkReadWrite* +-rwxr-xr-x 1 root root 937816 Dec 7 20:07 Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/X64/TestVirtioPciDevice* +``` + +## Installing and setting up LibFuzzer + +For LibFuzzer, it is assumed that a modern version of Clang/LLVM is installed on your system. For example, at the time this document was written, the Ubuntu 22.04 default package for 'clang' and 'llvm' install version 14. If you wish or need to install and build from source, see the [LLVM web-site](https://releases.llvm.org/). For fuzzing with LibFuzzer in HBFA-FL, the necessary steps for setting up the right environment includes setting a few environment variables, as shown in the following. Take care to ensure you provide the correct paths for the 'clang' and 'llvm-symbolizer' binaries. + +```console +root@a791b2478af5:~/hbfa_workspace# export CLANG_PATH=/usr/bin/ +root@a791b2478af5:~/hbfa_workspace# export ASAN_SYMBOLIZER_PATH=$CLANG/llvm-symbolizer +``` + +### Test build for the included fuzzing test-harnesses with LibFuzzer as the fuzzer + +Before attempting to build the fuzzing test-harnesses, we should re-generate the 'build_rule.txt' and 'tools_def.txt' configuration files and copy those to the EDK-II configuration directory. + +```console +root@a791b2478af5:~/hbfa_workspace# python3 hbfa-fl/HBFA/UefiHostTestTools/HBFAEnvSetup.py +root@a791b2478af5:~/hbfa_workspace# cp hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.txt edk2/Conf/build_rule.txt +root@a791b2478af5:~/hbfa_workspace# cp hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.txt edk2/Conf/tools_def.txt +``` + +Lastly, we invoke the build command, this time specifying 'LIBFUZZER' with the '-t' option for the build target. + +```console +root@a791b2478af5:~/hbfa_workspace# build -p hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a X64 -t LIBFUZZER +``` + +As with the build for AFL, if all is set-up correctly, all of the included test-cases should build without error and can be seen in subdirectories under the 'Build' directory, e.g. see the following directory listing. + +```console +root@a791b2478af5:~/hbfa_workspace# ll Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/Test* +-rwxr-xr-x 1 root root 1887656 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestBmpSupportLib* +-rwxr-xr-x 1 root root 1851200 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestCapsulePei* +-rwxr-xr-x 1 root root 1981072 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestFileName* +-rwxr-xr-x 1 root root 1791440 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestFmpAuthenticationLibPkcs7* +-rwxr-xr-x 1 root root 1801336 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestFmpAuthenticationLibRsa2048Sha256* +-rwxr-xr-x 1 root root 2013056 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestIdentifyAtaDevice* +-rwxr-xr-x 1 root root 2610336 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestPartition* +-rwxr-xr-x 1 root root 1880272 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestPeiGpt* +-rwxr-xr-x 1 root root 2031512 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestPeiUsb* +-rwxr-xr-x 1 root root 2595768 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestTcg2MeasureGptTable* +-rwxr-xr-x 1 root root 2601456 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestTcg2MeasurePeImage* +-rwxr-xr-x 1 root root 1945488 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestTpm2CommandLib* +-rwxr-xr-x 1 root root 2643528 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestUdf* +-rwxr-xr-x 1 root root 2737248 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestUsb* +-rwxr-xr-x 1 root root 3115320 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestValidateTdxCfv* +-rwxr-xr-x 1 root root 3024768 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestVariableSmm* +-rwxr-xr-x 1 root root 2637264 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestVirtio10Blk* +-rwxr-xr-x 1 root root 2535064 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestVirtioBlk* +-rwxr-xr-x 1 root root 2535432 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestVirtioBlkReadWrite* +-rwxr-xr-x 1 root root 2402336 Dec 7 22:39 Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestVirtioPciDevice* +``` + +## Setting up conveniences and additional path and environment variables for HBFA-FL + +A few additional items should be set-up to help improve usability of HBFA-FL. First, a few directories should be added to the system PATH, as well as a value for 'LLVM_PROFILE_FILE' should be specified if you intend to use LLVM-based coverage data with HBFA-FL. + +```console +export PATH="$PATH:$WORKSPACE/hbfa-fl/HBFA/UefiHostTestTools/" +export PATH="$PATH:$WORKSPACE/hbfa-fl/HBFA/UefiHostTestTools/Report/" +export LLVM_PROFILE_FILE="$WORKSPACE/fuzz_session.profraw" +``` + +Last, ensuring several Python scripts associated with HBFA-FL are executable is recommended for usability. The following files should be set executable(here the files are relative to the $WORKSPACE environment variable you have selected, e.g. /root/hbfa_workspace in the present example). + +- hbfa-fl/HBFA/UefiHostTestTools/Run*.py +- hbfa-fl/HBFA/UefiHostTestTools/Report/ReportMain.py +- hbfa-fl/HBFA/UefiHostTestTools/Report/GenCodeCoverage.py + +[<<](./README.md) Back | Return to [Summary](../SUMMARY.md) | Next [>>](../fuzzing/README.md) \ No newline at end of file diff --git a/docs/src/tutorials/README.md b/docs/src/tutorials/README.md new file mode 100644 index 0000000..3b9b4e2 --- /dev/null +++ b/docs/src/tutorials/README.md @@ -0,0 +1,7 @@ +# Tutorials + +Available tutorials: + +[HBFA-FL: Writing a fuzzing harness](./writingafuzzingharness.md) + +Return to [Summary](../SUMMARY.md) \ No newline at end of file diff --git a/docs/src/tutorials/writingafuzzingharness.md b/docs/src/tutorials/writingafuzzingharness.md new file mode 100644 index 0000000..9e40c0e --- /dev/null +++ b/docs/src/tutorials/writingafuzzingharness.md @@ -0,0 +1,2342 @@ +# HBFA-FL: Writing a fuzzing harness + +For this tutorial, we will be examining an example UEFI driver and how we can develop a fuzzing harness in HBFA-FL to find issues with the driver. Specifically, the fuzzing test harness for HBFA will be for fuzzing with LibFuzzer (and AFL). To do this, we will first examine an example UEFI driver, modify this driver to introduce a few vulnerabilities/issues. Following this, we will examine how to go about developing a fuzzing harness in HBFA-FL and discovering the issues. + +## Table of Contents + +- [HBFA-FL: Writing a fuzzing harness](#hbfa-fl-writing-a-fuzzing-harness) + - [Table of Contents](#table-of-contents) + - [Setting up an HBFA-FL environment for this tutorial](#setting-up-an-hbfa-fl-environment-for-this-tutorial) + - [Setting up and environment for running the HelloWorld.efi driver from an UEFI shell](#setting-up-and-environment-for-running-the-helloworldefi-driver-from-an-uefi-shell) + - [Running QEMU and accessing the UEFI shell](#running-qemu-and-accessing-the-uefi-shell) + - [Edk2 HelloWorld application example - Building the application](#edk2-helloworld-application-example---building-the-application) + - [Edk2 HelloWorld application example - Running the application (optional)](#edk2-helloworld-application-example---running-the-application-optional) + - [Extending the UEFI driver and creating a HelloWorldLib library](#extending-the-uefi-driver-and-creating-a-helloworldlib-library) + - [Files that we will be modifying or creating when extending the HelloWorld Driver](#files-that-we-will-be-modifying-or-creating-when-extending-the-helloworld-driver) + - [Files that we will be modifying or creating for HelloWorldLib Library](#files-that-we-will-be-modifying-or-creating-for-helloworldlib-library) + - [HelloWorld.c: Examining the code](#helloworldc-examining-the-code) + - [Additions to source-code](#additions-to-source-code) + - [HelloWorld.inf: Examining the source](#helloworldinf-examining-the-source) + - [HelloWorldLib: Examining the source code](#helloworldlib-examining-the-source-code) + - [HelloWorldLib.c: Examining the source code](#helloworldlibc-examining-the-source-code) + - [HelloWorldLib.inf: Examining the source code](#helloworldlibinf-examining-the-source-code) + - [HelloWorldLib.h: Examining the source code](#helloworldlibh-examining-the-source-code) + - [Updates: Adding a reference to HelloWorldLib in the platform file EmulatorPkg.dsc](#updates-adding-a-reference-to-helloworldlib-in-the-platform-file-emulatorpkgdsc) + - [Building the HelloWorld UEFI shell program](#building-the-helloworld-uefi-shell-program) + - [Verifying the bug in a UEFI shell (optional)](#verifying-the-bug-in-a-uefi-shell-optional) + - [TestHelloWorld: Creating a fuzzing test harnesses in HBFA](#testhelloworld-creating-a-fuzzing-test-harnesses-in-hbfa) + - [Where to create and save a fuzzing test case harness](#where-to-create-and-save-a-fuzzing-test-case-harness) + - [Whats needed in the fuzzing harness files (.c and .inf)?](#whats-needed-in-the-fuzzing-harness-files-c-and-inf) + - [The fuzzing harness test logic (C-source code file)](#the-fuzzing-harness-test-logic-c-source-code-file) + - [The module description file (INF file)](#the-module-description-file-inf-file) + - [Developing a fuzzing harness for HelloWorldLib](#developing-a-fuzzing-harness-for-helloworldlib) + - [Files that we will be modifying or creating when creating the fuzzing harness, TestHelloWorld](#files-that-we-will-be-modifying-or-creating-when-creating-the-fuzzing-harness-testhelloworld) + - [TestHelloWorld.c: Examining the source code](#testhelloworldc-examining-the-source-code) + - [TestHelloWorld.inf: Examining the source code](#testhelloworldinf-examining-the-source-code) + - [UefiHostTestPkg.dsc: Examining the source code](#uefihosttestpkgdsc-examining-the-source-code) + - [Building the TestHelloWorld fuzzing harness](#building-the-testhelloworld-fuzzing-harness) + - [Using the 'Build' command](#using-the-build-command) + - [Using the HBFA helper scripts](#using-the-hbfa-helper-scripts) + - [Fuzzing HelloWorldLib for vulnerabilities with LibFuzzer](#fuzzing-helloworldlib-for-vulnerabilities-with-libfuzzer) + - [Reproducing the crash](#reproducing-the-crash) + - [Debugging the crash](#debugging-the-crash) + +## Setting up an HBFA-FL environment for this tutorial + +For this tutorial is it necessary to have an environment setup for EDK2 and HBFA-FL. For this, we recommend installing HBFA-FL as described in the [HBFA-FL: A Quick Install Guide](). Optionally, you may set-up a separate environment where you can run the test/example driver (HelloWorld.efi) in an emulated UEFI shell. The set-up for these will leverage QEMU for the emulation and some details are included in the following sub-section. + +### Setting up and environment for running the HelloWorld.efi driver from an UEFI shell + +The following is an optional set-up and not required for fuzzing with HBFA. The following instructions demonstrate how to set-up the environment on an Ubuntu (22.04) desktop operating system; however, similar approaches can be used for other set-ups/configurations. Here, we will leverage the QEMU system emulator and a build Tianocore EDK2 OVMF UEFI image to provide access to a UEFI shell environment. When the HelloWorld.efi driver is built for the tutorial, the application should be copied from the HBFA build environment to a location accessible from the emulated (QEMU) UEFI shell environment. From there, you can run and interact with the driver. Further, this will provide an environment where you can confirm operation of the driver, as well as allow for you to test any modifications, etc. + +1. Assuming an Ubuntu 22.04 environment, ensure that the appropriate package is installed for Qemu (e.g. the 'qemu-kvm' package). Ensure that the 'qemu-system-x86_64' is available. +2. Next, you will need a copy of the Tianocore EDK II [OVMF](https://github.com/tianocore/tianocore.github.io/wiki/OVMF-FAQ) firmware image. The is included in EDK II and can be built within that environment. However, the package management system for most main-line Linux distributions will include a pre-built image. For Ubuntu 22.04, this package is 'ovmf'. Therefore a simple 'apt install ovmf' should complete and installation of the firmware. The installation should place a copy of the firmware at the following location: /usr/share/ovmf/OVMF.fd. +3. Last, download and have a suitable operating system ISO. Here we'll use the Ubuntu 22.04 Desktop ISO from [Ubuntu](https://ubuntu.com/download/desktop). + +#### Running QEMU and accessing the UEFI shell + +Assuming the above set-up has been completed, the following command can be used to run the emulated environment. + +```console +$ qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -cdrom ~/Downloads/ubuntu-22.04.2-desktop-amd64.iso -hda fat:./share,format=directory +``` + +Importantly, the OVMF.fd image is used (specified via the '-bios' parameter). Additionally, the '-cdrom' option is used to specify the location for the Ubuntu 22.04 ISO image. Last, in this example a directory 'share' located in the run directory is used. When invoked ine the manner shown, the folder will be presented to the emulated system as a FAT32-formatted disk containing the files saved in the directory. In this case, you will copy the built HelloWorld.efi binary to this location and the file will be accessible from a file system accessible in the UEFI shell. + +When the previous command is ran, you should be presented with a Tianocore splash screen followed by the GNU GRUB boot loader (as shown in the following image). From this point, we'll step a few menus and ultimately to gain access to the UEFI shell. + +

    + Example Grub Boot Loader +
    Example of Grub boot loader presented from booting of Ubuntu 22.04 ISO image under QEMU.
    +
    + +From the GRUB bootloader, select ``UEFI Firmware Settings``. Following this, you will be presented with the UEFI settings screen. From there you should select ``Boot Manager`` as shown in the following. + +
    + Example Grub Boot Loader +
    From the 'UEFI Firmware Settings' (accessed from Grub), selecting the Boot Manager option.
    +
    + +Once you have entered the ``Boot Manager``, there is an option available to select ``EFI Internal Shell`` (as shown in the following screenshot). + +
    + Boot Manager Options +
    A view of the Boot Manager Menu. An interactive UEFI shell can be accessed via the 'EFI Internal Shell' option.
    +
    + +Once you have selected the EFI shell, you will be presented with an interactive UEFI shell. Noting you will need to press the 'Escape' key before the timer expires. You should see a shell console similar to that shown in the following screenshot. + +
    + An interactive UEFI shell +
    A view of the UEFI Interactive Shell console.
    +
    + +## Edk2 HelloWorld application example - Building the application + +Included in the Edk2 distribution is a [HelloWorld](https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Application/HelloWorld) example driver application. This driver is intended to act as an example UEFI shell application, which will simply print "UEFI Hello World!" to the console when ran from a UEFI shell. We'll quickly cover building this application and then look at an example of it running in a UEFI shell. + +First, the HelloWorld application can be found by examining the 'MdeModulePkg/Application/HelloWorld/' directory withing the edk2 source code. A listing of the directory from EDK II is shown in the following. + +```console +[root@12a70ad5bf59 hbfa_workspace]# ls edk2/MdeModulePkg/Application/HelloWorld/ +HelloWorld.c HelloWorld.inf HelloWorld.uni HelloWorldExtra.uni HelloWorldStr.uni +``` + +Two important files to take note of here are the ``HelloWorld.c`` and the ``HelloWorld.inf`` files. The ``HelloWorld.c`` file contains the source code and logic for the application. The ``HelloWorld.inf`` build description file is used by the EDK II build system for informing various dependencies and understanding the type of application being build. Don't worry, we'll dive into some more details on these files when we extend the functionality of this program. For now, we'll focus on simply building and verifying the program runs. Lastly, the '.uni' resource files are used as a resource for the text printed to the console + +Compiling the HelloWorld application is relatively straightforward using the EDK II build system. From the 'edk2' directory we can invoke the EDK II 'build' command as shown: + +``` +[root@00c4495bd766 edk2]# build -m MdeModulePkg/Application/HelloWorld/HelloWorld.inf -a X64 -b DEBUG -t GCC5 +``` + +Here, the '-m' option is used for build description file for the module we are building (HelloWorld.inf); '-a' is used for the architecture ('X64'); '-b' is set as 'DEBUG', so that debugging symbols will be included; and '-t' is GCC5 so that the GCC compiler will be the target compiler used for the build. Behind the scenes, the [EmulatorPkg](https://github.com/tianocore/edk2/blob/master/EmulatorPkg/Readme.md) platform is used. This is noted, as we'll need to add some updates to the platform description file when we extend the functionality of the HelloWorld application. When the build is complete, you should see a file ``HelloWorld.efi``, as shown in the following file listing from the 'Build/EmulatorX64/DEBUG_GCC5/X64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/'. Note, the 'Build' directory will be + +``` +[root@00c4495bd766 OUTPUT]# ls +AutoGen.obj HelloWorld.lib HelloWorld.txt HelloWorldhii.lib +AutoGen.obj.deps HelloWorld.map HelloWorld.uni HelloWorldhii.rc +HelloWorld.efi HelloWorld.obj HelloWorldExtra.uni object_files.lst +HelloWorld.inf HelloWorld.obj.deps HelloWorldStrDefs.hpk static_library_files.lst +``` + +### Edk2 HelloWorld application example - Running the application (optional) + +If you wish to verify that the HelloWorld.efi application is working, you can take the approach outlined in the section: [Running the QEMU and accessing the UEFI shell](#running-the-qemu-and-accessing-the-uefi-shell). Here, you need to copy the ``HelloWorld.efi`` program into the directory you wish to share as a FAT partition before starting QEMU. Once you have accessed the shell, you should see a console input similar to the following. + +
    + An interactive UEFI shell +
    A view of the UEFI Interactive Shell console.
    +
    + +You can list the mapped file systems by running the 'map' command as shown in the following figure. + +
    + +
    Using the 'map' command to list file systems in UEFI shell.
    +
    + +If you type the file system name from the mapping table (e.g. 'FS0:'), then the current working directory will be changed to that location. As shown in the following, we have switched to 'FS0:' and we list the contents of the file system with the 'ls' command. Here you can see the ``HelloWorld.efi`` application in the output. + +
    + +
    Changing to 'FS0:' and using the 'ls' command to list files, showing the 'HelloWorld.efi' file.
    +
    + +Last, the application can be ran by simply typing the name the application (file name) ``HelloWorld.efi``. As anticipated, the program will print the text 'UEFI Hello World!' to the console, as shown in the following figure. + +
    + +
    Running the 'HelloWorld.efi' application from the UEFI shell.
    +
    + +## Extending the UEFI driver and creating a HelloWorldLib library + +We will extend the UEFI driver, adding functionality to read and process arguments from the UEFI shell command-line. Importantly, the functionality we add will introduce a stack overflow vulnerability. To do this, will create a HelloWorldLib library that will process the first argument read in by the HelloWorld application. Later in this tutorial, we will develop a fuzzing harness for the HelloWorldLib library to fuzz and find this vulnerability. Firstly, a few tables are included to provide an overview of what files we'll need to modify or create when extending HelloWorld and adding our HelloWorldLib library. A relative path/location from the edk2 source code folder is provided for each file presented. + +### Files that we will be modifying or creating when extending the HelloWorld Driver + +| Filename | Description | File-Path (relative to /root/hbfa_workspace/) | +| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| HelloWorld.c | The HelloWorld EFI application included with EDK2. This file is further modified to read/access arguments when invoked from the UEFI shell. Further, the file calls a function from HelloWorldLib that will process the first argument in a non-secure manner. | edk2/MdeModulePkg/Application/HelloWorld/ | +| HelloWorld.inf | The INF (build description file) for the HelloWorld application. When extending the functionality for this application (including additional libraries), the INF file must also be updated accordingly. | edk2/MdeModulePkg/Application/HelloWorld/ | + +### Files that we will be modifying or creating for HelloWorldLib Library + +| Filename | Description | File-Path (relative to /root/hbfa_workspace/) | +| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| HelloWorldLib.c | The library code. Here we add a vulnerable function that processes the first argument. | edk2/MdeModulePkg/Library/HelloWorldLib/ | +| HelloWorldLib.inf | The INF (build description file) for the HelloWorldLib library. | edk2/MdeModulePkg/Library/HelloWorldLib/ | +| HelloWorldLib.h | A corresponding header file for the HelloWorldLib.c file. | edk2/MdeModulePkg/Include/Library/ | +| EmulatorPkg.dsc | This is the platform we build our test driver for. Depending on the specific platform being targeted, you will need to update the appropriate platform description file. Here the[EmulatorPkg](https://github.com/tianocore/edk2/blob/master/EmulatorPkg/Readme.md) is used. One must add a reference to the HelloWorldLib library (providing a name and a relative path to the INF file). This is required for the build system to find available libraries. | edk2/EmulatorPkg/ | + +### HelloWorld.c: Examining the code + +The modified source code for HelloWorld.c is shown in the following. Additionally, a figure is included to help highlight the areas where new code has been added. + +
    + Source-code for HelloWorld.c + +```c +/** @file + +// + This sample application bases on HelloWorld PCD setting + to print "UEFI Hello World!" to the UEFI Console. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include + +// +// String token ID of help message text. +// Shell supports to find help message in the resource section of an application image if +// .MAN file is not found. This global variable is added to make build tool recognizes +// that the help string is consumed by user and then build tool will add the string into +// the resource section. Thus the application can use '-?' option to show help message in +// Shell. +// +GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringHelpTokenId = STRING_TOKEN (STR_HELLO_WORLD_HELP_INFORMATION); + + +/** + The user Entry Point for Application. The user code starts with this function + as the real entry point for the application. + + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval other Some error occurs when executing this entry point. + +**/ +EFI_STATUS +EFIAPI +UefiMain ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + UINT32 Index; + + Index = 0; + + EFI_STATUS Status; + EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; + + Status = gBS->HandleProtocol( + ImageHandle, + &gEfiShellParametersProtocolGuid, + (VOID **) &ShellParameters + ); + + + if (Status == EFI_SUCCESS) + { + for(int i=0; iArgc; i++) + { + Print(L"Argv[%d]: %s\n", i, ShellParameters->Argv[i]); + } + + } + + +// Shell supports to find help message in the resource section of an application image if +// .MAN file is not found. This global variable is added to make build tool recognizes + + // + // Three PCD type (FeatureFlag, UINT32 and String) are used as the sample. + // + if (FeaturePcdGet (PcdHelloWorldPrintEnable)) { + for (Index = 0; Index < PcdGet32 (PcdHelloWorldPrintTimes); Index++) { + // + // Use UefiLib Print API to print string to UEFI console + // + Print ((CHAR16 *)PcdGetPtr (PcdHelloWorldPrintString)); + } + } + + + if (Status == EFI_SUCCESS) + { + // Process first argument from UEFL Shell if there is an argument + if (ShellParameters->Argc > 1) + { + ProcessArgument(ShellParameters); + } + + } + + return EFI_SUCCESS; + Print( L"S\n"); +} +``` + +
    + +#### Additions to source-code + +The updates to the source are shown in the Figure below. In the section labeled A, we can see two additional file includes have been added. The first is for our HelloWorldLib library source. We'll be calling a function from that library ('ProcessArgument()') which will be used to process the first argument provided to our application. (The call to ProcessArgument is made in the part labeled C in the Figure.). Additionally, we include the ``ShellParameters.h`` file, which will give us access to the necessary interface and structures for accessing the command-line arguments for our application. For additional information on related interfaces and structures in the UEFI shell, see the [UEFI Shell Specification](https://uefi.org/sites/default/files/resources/UEFI_Shell_2_2.pdf). + +For the section labeled B, this part defines a reference to a EFI_SHELL_PARAMETERS_PROTOCOL structure (ShellParameters), which once it is populated will contain references to the Argv array of command line arguments. To populate the ShellParameters structure, we access it via a call to ``gBS->HandleProtocol`` to ensure the Shell Parameters Protocol is supported/accessible. (For more details about UEFI Protocol Handler Services and Protocol Interface Functions, see the [UEFI specification documentation](https://uefi.org/specs/UEFI/2.10/07_Services_Boot_Services.html#protocol-handler-services) and the [UEFI Shell Specification](https://uefi.org/sites/default/files/resources/UEFI_Shell_2_2.pdf) documents). Once we have the reference to the EFI_SHELL_PARAMETERS_PROTOCOL structure, it is straightforward to access the Argc and Argv parameters. Here, we loop through the arguments and they are printed to the screen. + +Last, in the section labeled C, if the number of arguments (Argc) is greater than 1 (ensuring we have a command-line argument to process), we then call the ``ProcessArgument`` function from HelloWorldLib, passing the reference to an EFI_SHELL_PARAMETERS_PROTOCOL structure (ShellParameters). + +
    + +
    Code added to HelloWorld.c (highlighted in red boxes).
    +
    + +### HelloWorld.inf: Examining the source + +The modified source code for the build-description file HelloWorld.inf is shown in the following. Here, we simply need to add an entry for the HelloWorldLib in the ``[LibrariesClasses]`` section for the file. Note: if you want to learn a little more about the INF file, jump ahead to the section: [The module description file (INF file)](#the-module-description-file-inf-file) + +
    + Source-code for HelloWorld.inf + +```ini +## @file +# Sample UEFI Application Reference EDKII Module. +# +# This is a sample shell application that will print "UEFI Hello World!" to the +# UEFI Console based on PCD setting. +# +# It demos how to use EDKII PCD mechanism to make code more flexible. +# +# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = HelloWorld + MODULE_UNI_FILE = HelloWorld.uni + FILE_GUID = 6987936E-ED34-44db-AE97-1FA5E4ED2116 + MODULE_TYPE = UEFI_APPLICATION + VERSION_STRING = 1.0 + ENTRY_POINT = UefiMain + +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + HelloWorld.c + HelloWorldStr.uni + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + UefiApplicationEntryPoint + UefiLib + PcdLib + HelloWorldLib + +[FeaturePcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdHelloWorldPrintEnable ## CONSUMES + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdHelloWorldPrintString ## SOMETIMES_CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdHelloWorldPrintTimes ## SOMETIMES_CONSUMES + +[UserExtensions.TianoCore."ExtraFiles"] + HelloWorldExtra.uni + +``` + +
    + +### HelloWorldLib: Examining the source code + +For the HelloWorldLib, three new files need to be created: + +1. HelloWorldLib.c +2. HelloWorldLib.inf and +3. HelloWorldLib.h. + +The source for these files is included in the following sub-sections. + +#### HelloWorldLib.c: Examining the source code + +The source code for HelloWorldLib.c is included below. Noting the code is intentionally written to be non-secure. The ``ProcessArgument`` function is intended to be exposed and called from HelloWorld.c. This function takes a reference to a EFI_SHELL_PARAMETERS_PROTOCOL struct as its argument. A character array is defined, which will be character array ``MyBuffer`` stored on the stack of fixed size. A crude implementation of a ``MyStrCpy`` is then used to copy the first argument (from the EFI_SHELL_PARAMETERS_PROTOCOL struct) into ``MyBuffer``. + +
    + Source-code for HelloWorld.c + +```c +/** @file + +// + This sample application bases on HelloWorld PCD setting + to print "UEFI Hello World!" to the UEFI Console. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include + +int GetLen(const char *s) +{ + int len = 0; + while ( 1 ) + { + if ( (s[len] == 0x0) ) { + if ( (s[len+1] == 0x0)) { + return len/2; + } + } + len = len + 2; + } +} + +/** + A dangerous copy function + +**/ +VOID MyStrCpy(char *dst, const char *src) +{ + int i = 0; + int len = GetLen(src); + Print(L"Length of string copy: %d\n", len); + while (i < 2*len) + { + *dst++ = *src++; + i++; + } +} + +/** + A vulnerable function that processes UEFI shell command-line arguments + + @param[in] MyShellParameters Shell parameters (arguments provided to HelloWorld.efi) as an EFI_SHELL_PARAMETERS_PROTOCOL structure. + +**/ +VOID ProcessArgument ( + IN EFI_SHELL_PARAMETERS_PROTOCOL *MyShellParameters + ) +{ + char MyBuffer[16]; + MyStrCpy(MyBuffer, (char *)MyShellParameters->Argv[1]); + Print(L"MyBuffer: %s\n", MyBuffer); +} + +``` + +
    + +#### HelloWorldLib.inf: Examining the source code + +The source code for HelloWorldLib.inf is included below. The file is based off of the original HelloWorld.inf. However, there are a few differences (items removed, changed, and added); the differences are described in the following table. + +| INF Section | Field | Notes | +| ------------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ``[Defines]`` | BASE_NAME | The basename is updated to HelloWorldLib. | +| ``[Defines]`` | MODULE_UNI_FILE | This is removed. | +| ``[Defines]`` | FILE_GUID | A unique value should be generated. For example, there are several[online](https://guidgenerator.com/) GUID generators that can be used. | +| ``[Defines]`` | MODULE_TYPE | This is updated to BASE (used for source code that is not tied to any specific execution environment, see this[document](https://github.com/tianocore-docs/edk2-InfSpecification/blob/master/appendix_f_module_types.md) for types | +| ``[Defines]`` | ENTRY_POINT | This is removed. | +| ``[Defines]`` | LIBRARY_CLASS | This field is added and set to the library name 'HelloWorldLib'. | +| ``[Protocols]`` | - | A protocols section with a dependence on gEfiShellParametersProtocolGuid is added. | +| ``[FeaturePcd]`` | - | This is removed. | +| ``[Pcd]`` | - | This is removed. | +| ``[UserExtensions.TianoCore."ExtraFiles"]`` | - | This is removed. | +| ``[Sources]`` | - | This is updated and the only entry is to the library source file HelloWorldLib.c. | + +
    + Source-code for HelloWorldLib.inf + +```ini +## @file +# Sample UEFI Application Reference EDKII Module. +# +# This is a sample shell application that will print "UEFI Hello World!" to the +# UEFI Console based on PCD setting. +# +# It demos how to use EDKII PCD mechanism to make code more flexible. +# +# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = HelloWorldLib + FILE_GUID = 2e20917a-a9ab-4a19-99ba-4acb72a70f22 + VERSION_STRING = 1.0 + MODULE_TYPE = BASE + LIBRARY_CLASS = HelloWorldLib + +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[Protocols] + gEfiShellParametersProtocolGuid + +[LibraryClasses] + UefiApplicationEntryPoint + UefiLib + PcdLib + +[Sources] + HelloWorldLib.c + +``` + +
    + +#### HelloWorldLib.h: Examining the source code + +The source code for HelloWorldLib.h is included in the following. The file has a dependency the Protocol/ShellParameters.h file, which has includes the definition for the EFI_SHELL_PARAMETERS_PROTOCOL structure. Last, the ``ProcessArgument`` function prototype is provided as we wish to call this externally (from our HelloWorld.c application). + +
    + Source-code for HelloWorldLib.h + +```c +#ifndef __HELLOWORLD_LIB_H__ +#define __HELLOWORLD_LIB_H__ + +#include + +VOID ProcessArgument ( + IN EFI_SHELL_PARAMETERS_PROTOCOL *MyShellParameters + ); + +#endif + +``` + +
    + +### Updates: Adding a reference to HelloWorldLib in the platform file EmulatorPkg.dsc + +Lastly, since the HelloWorld application is built for the Emulator package platform, we will need to add an entry for the HelloWorldLib library in the ``[LibraryClasses]`` section of the [edk2/EmulatorPkg/EmulatorPkg.dsc](https://github.com/tianocore/edk2/blob/master/EmulatorPkg/EmulatorPkg.dsc) file. To do this, the following line should be added to the ``[LibraryClasses]`` section: + +```c +HelloWorldLib|MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.inf +``` + +
    + Source-code for EmulatorPkg.dsc + +```ini +## @file +# UEFI/PI Emulation Platform with UEFI HII interface supported. +# +# The Emulation Platform can be used to debug individual modules, prior to creating +# a real platform. This also provides an example for how an DSC is created. +# +# Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.
    +# Portions copyright (c) 2010 - 2011, Apple Inc. All rights reserved.
    +# Copyright (c) Microsoft Corporation. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = EmulatorPkg + PLATFORM_GUID = 05FD064D-1073-E844-936C-A0E16317107D + PLATFORM_VERSION = 0.3 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/Emulator$(ARCH) + + SUPPORTED_ARCHITECTURES = X64|IA32 + BUILD_TARGETS = DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER = DEFAULT + FLASH_DEFINITION = EmulatorPkg/EmulatorPkg.fdf + + + # + # Network definition + # + DEFINE NETWORK_SNP_ENABLE = FALSE + DEFINE NETWORK_IP6_ENABLE = FALSE + DEFINE NETWORK_TLS_ENABLE = FALSE + DEFINE NETWORK_HTTP_BOOT_ENABLE = FALSE + DEFINE NETWORK_HTTP_ENABLE = FALSE + DEFINE NETWORK_ISCSI_ENABLE = FALSE + DEFINE SECURE_BOOT_ENABLE = FALSE + + # + # Redfish definition + # + DEFINE REDFISH_ENABLE = FALSE + +[SkuIds] + 0|DEFAULT + +!include MdePkg/MdeLibs.dsc.inc + +[LibraryClasses] + # + # Entry point + # + PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf + PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf + DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf + UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf + # + # Basic + # + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf + CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf + PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf + PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf + FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf + + # + # UEFI & PI + # + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf + UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + UefiLib|MdePkg/Library/UefiLib/UefiLib.inf + UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf + HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf + UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf + + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf + SmbiosLib|EmulatorPkg/Library/SmbiosLib/SmbiosLib.inf + + # + # Generic Modules + # + UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf + OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf + BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf + FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf + UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf + BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf + SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf + CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf + SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf + TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf + SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf + CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf + # + # Platform + # + PlatformBootManagerLib|EmulatorPkg/Library/PlatformBmLib/PlatformBmLib.inf + KeyMapLib|EmulatorPkg/Library/KeyMapLibNull/KeyMapLibNull.inf + !if $(REDFISH_ENABLE) == TRUE + RedfishPlatformHostInterfaceLib|EmulatorPkg/Library/RedfishPlatformHostInterfaceLib/RedfishPlatformHostInterfaceLib.inf + RedfishPlatformCredentialLib|EmulatorPkg/Library/RedfishPlatformCredentialLib/RedfishPlatformCredentialLib.inf + !endif + # + # Misc + # + DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf + PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf + DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf + PeiServicesTablePointerLib|EmulatorPkg/Library/PeiServicesTablePointerLibMagicPage/PeiServicesTablePointerLibMagicPage.inf + DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf + LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf + CpuExceptionHandlerLib|MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf + TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf + VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf + VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf + VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf + VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf + SortLib|MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf + ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf + FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf + +!if $(SECURE_BOOT_ENABLE) == TRUE + RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf + AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf + SecureBootVariableLib|SecurityPkg/Library/SecureBootVariableLib/SecureBootVariableLib.inf + PlatformPKProtectionLib|SecurityPkg/Library/PlatformPKProtectionLibVarPolicy/PlatformPKProtectionLibVarPolicy.inf + SecureBootVariableProvisionLib|SecurityPkg/Library/SecureBootVariableProvisionLib/SecureBootVariableProvisionLib.inf +!else + AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf +!endif + + # Adding HelloWorldLib + HelloWorldLib|MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.inf + +[LibraryClasses.common.SEC] + PeiServicesLib|EmulatorPkg/Library/SecPeiServicesLib/SecPeiServicesLib.inf + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + PeCoffGetEntryPointLib|EmulatorPkg/Library/PeiEmuPeCoffGetEntryPointLib/PeiEmuPeCoffGetEntryPointLib.inf + PeCoffExtraActionLib|EmulatorPkg/Library/PeiEmuPeCoffExtraActionLib/PeiEmuPeCoffExtraActionLib.inf + SerialPortLib|EmulatorPkg/Library/PeiEmuSerialPortLib/PeiEmuSerialPortLib.inf + PpiListLib|EmulatorPkg/Library/SecPpiListLib/SecPpiListLib.inf + DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf + TimerLib|EmulatorPkg/Library/PeiTimerLib/PeiTimerLib.inf + +[LibraryClasses.common.USER_DEFINED, LibraryClasses.common.BASE] + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf + PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf + MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + PpiListLib|EmulatorPkg/Library/SecPpiListLib/SecPpiListLib.inf + ThunkPpiList|EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.inf + ThunkProtocolList|EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolList.inf + PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf + PpiListLib|EmulatorPkg/Library/SecPpiListLib/SecPpiListLib.inf + PeiServicesLib|EmulatorPkg/Library/SecPeiServicesLib/SecPeiServicesLib.inf + + +[LibraryClasses.common.PEIM, LibraryClasses.common.PEI_CORE] + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf + MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf + PeCoffGetEntryPointLib|EmulatorPkg/Library/PeiEmuPeCoffGetEntryPointLib/PeiEmuPeCoffGetEntryPointLib.inf + PeCoffExtraActionLib|EmulatorPkg/Library/PeiEmuPeCoffExtraActionLib/PeiEmuPeCoffExtraActionLib.inf + ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf + SerialPortLib|EmulatorPkg/Library/PeiEmuSerialPortLib/PeiEmuSerialPortLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf + TimerLib|EmulatorPkg/Library/PeiTimerLib/PeiTimerLib.inf + +[LibraryClasses.common.PEI_CORE] + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + +[LibraryClasses.common.PEIM] + PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf + +[LibraryClasses.common.DXE_CORE] + HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf + MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf + PeCoffExtraActionLib|EmulatorPkg/Library/DxeEmuPeCoffExtraActionLib/DxeEmuPeCoffExtraActionLib.inf + ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + TimerLib|EmulatorPkg/Library/DxeCoreTimerLib/DxeCoreTimerLib.inf + EmuThunkLib|EmulatorPkg/Library/DxeEmuLib/DxeEmuLib.inf + +[LibraryClasses.common.DXE_DRIVER, LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION] +!if $(SECURE_BOOT_ENABLE) == TRUE + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +!endif + +[LibraryClasses.common.DXE_RUNTIME_DRIVER] +!if $(SECURE_BOOT_ENABLE) == TRUE + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf +!endif + +[LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.DXE_DRIVER, LibraryClasses.common.UEFI_APPLICATION] + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf + EmuThunkLib|EmulatorPkg/Library/DxeEmuLib/DxeEmuLib.inf + PeCoffExtraActionLib|EmulatorPkg/Library/DxeEmuPeCoffExtraActionLib/DxeEmuPeCoffExtraActionLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf + TimerLib|EmulatorPkg/Library/DxeTimerLib/DxeTimerLib.inf + +[PcdsFeatureFlag] + gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE + gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst|FALSE + gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplBuildPageTables|FALSE + +[PcdsFixedAtBuild] + gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x00000000 + gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE + gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000040 + gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x0f + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x1f + gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizeNonPopulateCapsule|0x0 + gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizePopulateCapsule|0x0 + gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|TRUE + + gEmulatorPkgTokenSpaceGuid.PcdEmuFirmwareFdSize|0x002a0000 + gEmulatorPkgTokenSpaceGuid.PcdEmuFirmwareBlockSize|0x10000 + gEmulatorPkgTokenSpaceGuid.PcdEmuFirmwareVolume|L"../FV/FV_RECOVERY.fd" +!if $(SECURE_BOOT_ENABLE) == TRUE + gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800 + gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE +!endif + + gEmulatorPkgTokenSpaceGuid.PcdEmuMemorySize|L"64!64" + + # Change PcdBootManagerMenuFile to UiApp + gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 } + + +#define BOOT_WITH_FULL_CONFIGURATION 0x00 +#define BOOT_WITH_MINIMAL_CONFIGURATION 0x01 +#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES 0x02 +#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03 +#define BOOT_WITH_DEFAULT_SETTINGS 0x04 +#define BOOT_ON_S4_RESUME 0x05 +#define BOOT_ON_S5_RESUME 0x06 +#define BOOT_ON_S2_RESUME 0x10 +#define BOOT_ON_S3_RESUME 0x11 +#define BOOT_ON_FLASH_UPDATE 0x12 +#define BOOT_IN_RECOVERY_MODE 0x20 + gEmulatorPkgTokenSpaceGuid.PcdEmuBootMode|0 + + gEmulatorPkgTokenSpaceGuid.PcdEmuApCount|L"1" + + # For a CD-ROM/DVD use L"diag.dmg:RO:2048" + gEmulatorPkgTokenSpaceGuid.PcdEmuVirtualDisk|L"disk.dmg:FW" + gEmulatorPkgTokenSpaceGuid.PcdEmuGop|L"GOP Window" + gEmulatorPkgTokenSpaceGuid.PcdEmuFileSystem|L"." + gEmulatorPkgTokenSpaceGuid.PcdEmuSerialPort|L"/dev/ttyS0" + gEmulatorPkgTokenSpaceGuid.PcdEmuNetworkInterface|L"en0" + + gEmulatorPkgTokenSpaceGuid.PcdEmuCpuModel|L"Intel(R) Processor Model" + gEmulatorPkgTokenSpaceGuid.PcdEmuCpuSpeed|L"3000" + + # 0-PCANSI, 1-VT100, 2-VT00+, 3-UTF8, 4-TTYTERM + gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|1 + +!if $(REDFISH_ENABLE) == TRUE + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExServiceDevicePath.DevicePathMatchMode|DEVICE_PATH_MATCH_MAC_NODE + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExServiceDevicePath.DevicePathNum|1 + # + # Below is the MAC address of network adapter on EDK2 Emulator platform. + # You can use ifconfig under EFI shell to get the MAC address of network adapter on EDK2 Emulator platform. + # + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExServiceDevicePath.DevicePath|{DEVICE_PATH("MAC(000000000000,0x1)")} + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExServiceAccessModeInBand|False + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDiscoverAccessModeInBand|False +!endif + +[PcdsDynamicDefault.common.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0 + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0 + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0 + +[PcdsDynamicHii.common.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|L"Setup"|gEmuSystemConfigGuid|0x0|80 + gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|L"Setup"|gEmuSystemConfigGuid|0x4|25 + gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|10 + +[Components] +!if "IA32" in $(ARCH) || "X64" in $(ARCH) + !if "MSFT" in $(FAMILY) || $(WIN_HOST_BUILD) == TRUE + ## + # Emulator, OS WIN application + # CLANGPDB is cross OS tool chain. It depends on WIN_HOST_BUILD flag + # to build WinHost application. + ## + EmulatorPkg/Win/Host/WinHost.inf + !else + ## + # Emulator, OS POSIX application + ## + EmulatorPkg/Unix/Host/Host.inf + !endif +!endif + +!ifndef $(SKIP_MAIN_BUILD) + # + # Generic SEC + # + EmulatorPkg/Sec/Sec.inf + + ## + # PEI Phase modules + ## + MdeModulePkg/Core/Pei/PeiMain.inf + MdeModulePkg/Universal/PCD/Pei/Pcd.inf { + + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + } + MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf + MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf + + EmulatorPkg/BootModePei/BootModePei.inf + MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf + MdeModulePkg/Universal/Variable/Pei/VariablePei.inf + EmulatorPkg/AutoScanPei/AutoScanPei.inf + EmulatorPkg/FirmwareVolumePei/FirmwareVolumePei.inf + EmulatorPkg/FlashMapPei/FlashMapPei.inf + EmulatorPkg/ThunkPpiToProtocolPei/ThunkPpiToProtocolPei.inf + MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf + + ## + # DXE Phase modules + ## + MdeModulePkg/Core/Dxe/DxeMain.inf { + + DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf + SerialPortLib|EmulatorPkg/Library/DxeEmuStdErrSerialPortLib/DxeEmuStdErrSerialPortLib.inf + DxeEmuLib|EmulatorPkg/Library/DxeEmuLib/DxeEmuLib.inf + NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf + NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf + } + MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { + + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + } + + MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf + MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf { + + DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf + SerialPortLib|EmulatorPkg/Library/DxeEmuStdErrSerialPortLib/DxeEmuStdErrSerialPortLib.inf + } + + MdeModulePkg/Universal/Metronome/Metronome.inf + EmulatorPkg/RealTimeClockRuntimeDxe/RealTimeClock.inf + EmulatorPkg/ResetRuntimeDxe/Reset.inf + MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf + EmulatorPkg/FvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf + + MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf { + +!if $(SECURE_BOOT_ENABLE) == TRUE + NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf +!endif + } + + MdeModulePkg/Universal/EbcDxe/EbcDxe.inf + MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf + EmulatorPkg/EmuThunkDxe/EmuThunk.inf + EmulatorPkg/CpuRuntimeDxe/Cpu.inf + MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf + EmulatorPkg/PlatformSmbiosDxe/PlatformSmbiosDxe.inf + EmulatorPkg/TimerDxe/Timer.inf + +!if $(SECURE_BOOT_ENABLE) == TRUE + SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf +!endif + + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { + + NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf + } + MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf + MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf + MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf + MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf + MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf + MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf + MdeModulePkg/Universal/SerialDxe/SerialDxe.inf { + + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf + SerialPortLib|EmulatorPkg/Library/DxeEmuSerialPortLib/DxeEmuSerialPortLib.inf + } + + MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf + MdeModulePkg/Universal/BdsDxe/BdsDxe.inf +!if "XCODE5" not in $(TOOL_CHAIN_TAG) + MdeModulePkg/Logo/LogoDxe.inf +!endif + MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf + MdeModulePkg/Application/UiApp/UiApp.inf { + + NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf + NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf + NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf + } + MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf + + MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf + #{ + # + # NULL|EmulatorPkg/Library/DevicePathTextLib/DevicePathTextLib.inf + #} + + MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf + MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf + MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf + MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf + MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf + MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf + + EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.inf + EmulatorPkg/EmuGopDxe/EmuGopDxe.inf + EmulatorPkg/EmuSimpleFileSystemDxe/EmuSimpleFileSystemDxe.inf + EmulatorPkg/EmuBlockIoDxe/EmuBlockIoDxe.inf + EmulatorPkg/EmuSnpDxe/EmuSnpDxe.inf + + MdeModulePkg/Application/HelloWorld/HelloWorld.inf + + MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf + MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf + MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf + MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf + MdeModulePkg/Universal/PrintDxe/PrintDxe.inf + MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf { + + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + } + + FatPkg/EnhancedFatDxe/Fat.inf + +!if "XCODE5" not in $(TOOL_CHAIN_TAG) + ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf { + + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + } +!endif + ShellPkg/Application/Shell/Shell.inf { + + ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf + NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf + NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf + NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf + NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf + NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf + NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf + NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf + HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf +# SafeBlockIoLib|ShellPkg/Library/SafeBlockIoLib/SafeBlockIoLib.inf +# SafeOpenProtocolLib|ShellPkg/Library/SafeOpenProtocolLib/SafeOpenProtocolLib.inf + BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf + + + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 + } + +!endif + +!include NetworkPkg/Network.dsc.inc + +!if $(REDFISH_ENABLE) == TRUE + EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.inf +!endif +!include RedfishPkg/Redfish.dsc.inc + +[BuildOptions] + # + # Disable deprecated APIs. + # + *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES + + MSFT:DEBUG_*_*_CC_FLAGS = /Od /Oy- + MSFT:NOOPT_*_*_CC_FLAGS = /Od /Oy- + GCC:DEBUG_CLANGPDB_*_CC_FLAGS =-O0 -Wno-unused-command-line-argument -Wno-incompatible-pointer-types -Wno-enum-conversion -Wno-incompatible-pointer-types -Wno-sometimes-uninitialized -Wno-constant-conversion -Wno-main-return-type + + MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE + MSFT:DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 + MSFT:NOOPT_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 + +!if $(WIN_HOST_BUILD) == TRUE + # + # CLANGPDB tool chain depends on WIN_HOST_BUILD flag to generate the windows application. + # + GCC:*_CLANGPDB_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE + GCC:DEBUG_CLANGPDB_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 + GCC:NOOPT_CLANGPDB_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 +!endif + +``` + +
    + +## Building the HelloWorld UEFI shell program + +The updated/vulnerable HelloWorld application can be built in the same manner as done before, by running the following command. + +```console +[root@00c4495bd766 hbfa_workspace]# build -m MdeModulePkg/Application/HelloWorld/HelloWorld.inf -a X64 -b DEBUG -t GCC5 +``` + +#### Verifying the bug in a UEFI shell (optional) + +After building the updated/vulnerable HelloWorld application. We can again, copy the HelloWorld.efi application to a system with the QEMU emulator, and run the application from a UEFI shell (as described in the section [Running QEMU and Accessing the UEFI shell](#running-qemu-and-accessing-the-uefi-shell)). I.e. starting QEMU: + +```console +$ qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -cdrom ~/Downloads/ubuntu-22.04.2-desktop-amd64.iso -hda fat:./share,format=directory +``` + +As shown in the following screenshot, we can run the program, giving multiple arguments. As expected, the program outputs the arguments, as well as the length of characters copied from the first argument to ``MyBuffer``. + +
    + Running the extended HelloWorld.efi application with multiple arguments +
    Example of running the extended HelloWorld.efi application with multiple arguments from the UEFI shell.
    +
    + + Next, we can verify there is an issue when a large string of characters is given for the first argument. In the following screenshot, we run the application a few times with a varied length of 'A' characters for the first argument. When a large number of 'A' characters are input, the emulation freezes. + +
    + Running the extended HelloWorld.efi application with multiple arguments +
    Example of running the extended HelloWorld.efi application with multiple varying length of characters for the first argument in the UEFI shell.
    +
    + +## TestHelloWorld: Creating a fuzzing test harnesses in HBFA + +The [Host-based Firmware Analyzer User Guide](https://github.com/tianocore/edk2-staging/blob/HBFA/HBFA/Doc/User%20Guide%20-%20How-to-Add-New-Case.pdf) provides some recommendations for the files and folder structure used when creating a fuzzing test harness in HBFA. In this tutorial we will summarize and follow this approach. + +### Where to create and save a fuzzing test case harness + +It is recommended to create fuzzing test harness cases in the file structure provided in HBFA (although its not strictly required). Further, a minimal test case folder would consist of the test harness C-source code file (containing the fuzzing harness logic) and a module description file (the .inf file). The HBFA folder shown in the file structure (tree) relative to the repository root directory. + +``` +├── HBFA + ├── UefiHostFuzzTestCasePkb + ├── TestCase + ├── ... # The directories here somewhat follow the + DeviceSecurityPkg # analogous directories from the EDK2 root + FatPkg # file structure (e.g. see MdeModulePkg) + MdeModulePkg + OvmfPkg + SecurityPkg + ... + └── TestModuleFolder # This is the folder containing the new test case + └── TestXYZ.c # Test harness/logic goes in this C-source code file + └── TestXYZ.inf # The INF, module description file + +``` + +A number of fuzzing test harness cases are included in HBFA. Carefully examining these tests harnesses is very helpful for learning how to implement fuzzing tests harnesses in HBFA. A listing of these files is presented in the following Table. + +| Fuzzing Test Case Name | File Location (based from repository root) | +| ------------------------------------- | ----------------------------- | +| TestTpm2CommandLib | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.{c,inf} | +| TestBmpSupportLib | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.{c,inf} | +| TestPartition | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.{c,inf} | +| TestUdf | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.{c,inf} | +| TestUsb | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.{c,inf} | +| TestPeiUsb | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.{c,inf} | +| TestVariableSmm | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.{c,inf} | +| TestFmpAuthenticationLibPkcs7 | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.{c,inf} | +| TestFmpAuthenticationLibRsa2048Sha256 | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.{c,inf} | +| TestCapsulePei | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.{c,inf} | +| TestFileName | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.{c,inf} | +| TestPeiGpt | HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.{c,inf} | +| TestValidateTdxCfv | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.{c,inf} | +| TestTcg2MeasureGptTable | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.{c,inf} | +| TestTcg2MeasurePeImage | HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.{c,inf} | +| TestVirtioPciDevice | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.{c,inf} | +| TestVirtio10Blk | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.{c,inf} | +| TestVirtioBlk | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.{c,inf} | +| TestVirtioBlkReadWrite | HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.{c,inf} | +| TestIdentifyAtaDevice | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.{c,inf} | + +Additionally, many of the test-cases make use of stub-libraries to simulate responses from function call that would interact with hardware. These libraries are included in HBFA in the relative directory: + +``` +├── HBFA + ├── UefiHostFuzzTestCasePkb + ├── TestStub + ├── DiskStubLib + ├── Tcg2StubLib + ├── Tpm2DeviceLibStub + ├── ... +``` + +### Whats needed in the fuzzing harness files (.c and .inf)? + +Behind the scenes, HBFA defines an EDK2 platform "ToolChainHarnessLib" (see: [source](../../../HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf)) that acts as the glue to interface (pass information) between the fuzzer (e.g. AFL, LibFuzzer, KLEE) and the functions and libraries one chooses to fuzz in the harness file. The specific implementations for this can been seen this [source](../../../HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.c). Likewise, the module description file will reference the "ToolChainHarnessLib" so that everything is included in the build. + +#### The fuzzing harness test logic (C-source code file) + +For the fuzzing harness C-source code file, a few important functions should be leveraged when creating a fuzzing harness to be used with AFL or LibFuzzer. These functions are ``FixBuffer()``, ``GetMaxBufferSize()``, and ``RunTestHarness()`` (shown in the following example skeleton code). The ``RunTestHarness()`` will contain the fuzzing test logic and a test buffer (``TestBuffer``) is used to handle the fuzz data passed between the fuzzer (e.g. AFL and LibFuzzer) and the test logic for each fuzzing instance. The code/logic in ``RunTestHarness()`` is ran on each pass (fuzz/input) of the external fuzzer. The functions ``FixBuffer()`` and ``GetMaxBufferSize()`` are used when setting up/handling the test buffer. A skeleton structure for a fuzzing harness is presented in the [Host-based Firmware Analyzer User Guide](../archive/originalHBFA/Doc/User%20Guide%20-%20How-to-Add-New-Case.pdf) and is included in the following: + +```c +/* The FixBuffer function is aimed to fix some bits in the TestBuffer so +that the TestBuffer can pass basic check and touch deeper paths. It’s +optional. */ +VOID +FixBuffer ( +UINT8 *TestBuffer +) +{ } + +UINTN +EFIAPI +GetMaxBufferSize ( +VOID +) +{ +return TOTAL_SIZE; +} +VOID +EFIAPI +RunTestHarness( +IN VOID *TestBuffer, +IN UINTN TestBufferSize +) +{ +FixBuffer(TestBuffer); +// test logic that use TestBuffer as an input to try to call tested +API. +TestLogicFunc(TestBuffer, TestBufferSize); +} +``` + +Here, the ``FixBuffer()`` is considered optional can be used to adjust and set initial value/bytes for the fuzzing buffer if one needs to ensure the buffer has certain bytes set. For example, overriding some bytes from the fuzzer (e.g. AFL, Libfuzzer) to ensure some check in the code being fuzzed is passed. + +Follow this approach, we can examine an implementation in a fuzzing harness included with HBFA. [TestBmpSupportLib](../../../HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.c) is a fuzzing test harness for the [BmpSupportLib](https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Include/Library/BmpSupportLib.h) in EDK2, which is used to translate a BMP graphics image into a GOP buffer. The fuzzing harness is shown in the following: + +```c +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#define TOTAL_SIZE (1 * 1024) + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GopBlt; + UINTN GopBltSize; + UINTN PixelHeight; + UINTN PixelWidth; + FixBuffer (TestBuffer); + GopBlt = NULL; + TranslateBmpToGopBlt( + TestBuffer, + TestBufferSize, + &GopBlt, + &GopBltSize, + &PixelHeight, + &PixelWidth + ); + if (GopBlt != NULL) + FreePool (GopBlt); +} +``` + +Here, we can see that the functions ``FixBuffer()`` and ``GetMaxBufferSize()`` remain the same as presented in the skeleton fuzzing harness example. ``FixBuffer()`` is left untouched (not used) and ``GetMaxBufferSize()`` is used to simply return the buffer maximum size (defined with he macro for TOTAL_SIZE). The bulk of the action takes place in the ``RunTestHarness()`` function. In the fuzzing harness, the appropriate variables for calling the ``TranslateBmpToGopBlt()`` function from the EDK2 [BmpSupportLib](https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Include/Library/BmpSupportLib.h) (see also [BmpSupportLib.c](https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Library/BaseBmpSupportLib/BmpSupportLib.c)). ``TestBuffer``, a pointer to the buffer containing the fuzz data, is passed into the call to ``TranslateBmpToGopBlt`` the input BMP file to convert (i.e. the argument ``*BmpImage``). Last, at the end of the code block for ``RunTestHarness()`` it is essential to clean-up and free any resources that may have been allocated. + +#### The module description file (INF file) + +The module description file is described in detail in the EDK II documentation (e.g. see [Build Description Files](https://github.com/tianocore/tianocore.github.io/wiki/Build-Description-Files#the-inf-file) and [EDK II Module Information (INF) File Specification](https://tianocore-docs.github.io/edk2-InfSpecification/draft/#edk-ii-module-information-inf-file-specification)). This file is used to describe to the build system on how to build a module (e.g. a driver, library, or application). For an example, we'll look at the INF file for the [TestBmpSupportLib](../../../HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.c) fuzzing test-case. The contents for this file ([TestBmpSupportLib.inf](../../../HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf)) are shown in the following. + +```ini +## @file +# Component description file for TestBmpSupportLib module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestBmpSupportLib + FILE_GUID = E911AB26-4741-4621-93EF-305FEA98A851 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestBmpSupportLib.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + SafeIntLib + BmpSupportLib + ToolChainHarnessLib +``` + +The sections in this INF file are: ``[Defines]``, ``[Sources]``, ``[Packages]``, and ``[LibraryClasses]``. A description for these sections is provided in the following Table. For additional information on these and a number of other sections that can be used, see the [documentation](https://github.com/tianocore/tianocore.github.io/wiki/Build-Description-Files#the-inf-file). + +| Section | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ``[Defines]`` | This section should include the fields shown above in the INF file; however, there are a number of additional (optional) fields that can be defined that are listed in EDK2 documentation. Note for the present file, the ``FILE_GUID`` should be a unique GUID value; likewise, the value used for the ``BASE_NAME`` is used as a base part of the output name used in the for the final binary. | +| ``[Sources]`` | This section should list the various sources and header files used to build the module; in the case the source used for the fuzzing test harness is all in the file[TestBmpSupportLib.c](../../../HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.c). | +| ``[Packages]`` | This section should list the packages used by the module (the package description files, '.dec'). For this case, the files are[MdePkg/MdePkg.dec](https://github.com/tianocore/edk2/blob/master/MdePkg/MdePkg.dec), [MdeModulePkg/MdeModulePkg.dec](https://github.com/tianocore/edk2/blob/master/MdeModulePkg/MdeModulePkg.dec), and [UefiHostTestPkg/UefiHostTestPkg.dec](../../../HBFA/UefiHostTestPkg/UefiHostTestPkg.dec). The file ``MdeModulePkg/MdeModulePkg.dec`` should always be included as a package in this section for an EDK2 module. Further, ``MdeModulePkg/MdeModulePkg.dec`` is included because it is part of the dependencies for this specific test case (e.g. TestBmpSupportLib is a library and part of MdeModulePkg). Lastly, ``UefiHostTestPkg/UefiHostTestPkg.dec`` must be included for an HBFA fuzzing test case. | +| ``[LibraryClasses]`` | This section contains a list of the various libraries the module will use and should be linked with (or optionally required by a component), see:[EDK II Module Information (INF) File Specification](https://tianocore-docs.github.io/edk2-InfSpecification/release-1.27/2_inf_overview/212_[libraryclasses]_section.html#212-libraryclasses-section). Here, files included in the ``LibraryClasses`` section are those used included in the test harness ``TestBmpSupportLib.c``, from the Edk2 libraries. E.g. see the ``'#include , #include , ...'``. Additionally, for HBFA fuzzing test harnesses, ``ToolChainHarnessLib`` is required and included. | + +If you jumped ahead to this section from [HelloWorld.inf: Examining the source](#helloworldinf-examining-the-source) use the link to go back. + +## Developing a fuzzing harness for HelloWorldLib + +First, we'll take a look at the files we will need to create or modify to develop our fuzzing harness. Here, our fuzzing effort will focus on developing a harness to fuzz the ``ProcessArgument()`` function from HelloWorldLib. + +### Files that we will be modifying or creating when creating the fuzzing harness, TestHelloWorld + +| Filename | Description | File-Path (relative to hbfa-fl root) | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- | +| TestHelloWorld.c | This is the C-source for for the fuzzing test harness. This is the focal point where the ``RunTestHarness()`` is written for the test case. | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/ | +| TestHelloWorld.inf | The INF (build description file) for the TestHelloWorld fuzzing harness. This should reference any libraries needed to build the TestHelloWorld.c test harness. | HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/ | +| UefiHostTestPkg.dsc | This is the platform defined in HBFA that provides the fuzzing interface. When invoking the EDK2 build system, this should be included as the '-p' argument. A reference to the fuzzing test case INF file must be included under the '[Components]' field in this file. | HBFA/UefiHostTestPkg/ | + +### TestHelloWorld.c: Examining the source code + +The source code for TestHelloWorld.c is included below. Several key code areas from TestHelloWorld.c are highlighted in the following figure: + +
    + +
    Highlighted areas from source-code for TestHelloWorld.c.
    +
    + +As described from the fuzzing test harness skeleton file, the key functions that are declared in a fuzzing harness for HBFA are: + +1. FixBuffer() +2. GetMaxBufferSize() and +3. RunTestHarness() + +Here, we'll focus on the test logic we are including in the ``RunTestHarness`` function. First, as shown in the code block labeled with an A, This block of code is all about creating a reference to a EFI_SHELL_PARAMETERS_PROTOCOL struct, which will be what we will pass to the ProcessArgument function from HelloWorldLib. We allocate such a struct on the heap and refer to with the name: ShellParameters. We then assign a reference to an Argv array to the appropriate element in the ShellParameters struct. Last, we swap out the reference for the first argument from a dummy string to that of our TestBuffer fuzz data. Therefore, when the call is made to ProcessArgument, it will handle the fuzz data as the first argument. + +In the code block B, we make our call to ProcessArgument and call ``free`` to clear the memory out that we had allocated for out ShellParameters struct. Note it is critical to clean up any allocations in the ``RunTestHarness`` function, otherwise you will introduce a memory leak which get called for every fuzz sent during you fuzzing session. + +
    + Source-code for TestHelloWorld.c + +```c +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define TOTAL_SIZE 64 + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + FixBuffer (TestBuffer); + + // Allocate EFI_SHELL_PARAMETERS_PROTOCOL struct + EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters = malloc(sizeof(EFI_SHELL_PARAMETERS_PROTOCOL)); + // Create dummy Argv struct (CHAR16 for UEFI shell) + // The value for Argv[1] Will be swapped with a pointer to the fuzz buffer + CHAR16 *MyArgv[2] = {L"arg1", L"arg2"}; + ShellParameters->Argv = MyArgv; + // Here we swap in the 'fuzz' (TestBuffer) that is source from the fuzzer (AFL or LibFuzzer) + // with Argv[1] + ShellParameters->Argv[1] = (CHAR16 *)TestBuffer; + + // Here we call to the external function ProcessArgument from HelloWorldLib.h, passing the + // ShellParameters structure + ProcessArgument(ShellParameters); + + // Clean-up + // + free(ShellParameters); +} + +``` + +
    + +### TestHelloWorld.inf: Examining the source code + +The source code for TestHelloWorld.inf is included below. The TestHelloWorld.inf build description follows the same rules as for any other module that one would develop in EDK II. However, we note one must include the following items in their ``[Packages]`` and ``[LibraryClasses]`` sections as these are part of the platform (UefiHostTestPkg) and libraries used from HBFA to enable fuzzing. + +1. In the ``[Packages]`` section, there should be an entry for ``UefiHostTestPkg/UefiHostTestPkg.dec`` +2. In the ``[LibraryClasses]`` section, there should be an entry for ``ToolChainHarnessLib`` + +
    + Source-code for TestHelloWorld.inf + +```ini +## @file +# Component description file for TestHelloWorld module. +# + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestHelloWorld + FILE_GUID = cc009d97-035c-430f-ac0d-c0e7451f1a12 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# USER_DEFINED +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestHelloWorld.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + ToolChainHarnessLib + UefiApplicationEntryPoint + UefiLib + PcdLib + UefiBootServicesTableLib + HelloWorldLib + +``` + +
    + +### UefiHostTestPkg.dsc: Examining the source code + +The source code for UefiHostTestPkg.dsc is included below. Further, the relevant additions are shown in the following Figure. + +
    + +
    Example of references added for the TestHelloWorld fuzzing test case to UefiHostTestPkg.dsc.
    +
    + +Importantly, for a fuzzing test harness in HBFA, you must ensure that there is a reference for it in the ``[Components]`` section of the UefiHostTestPkg description file. An entry for the TestHelloWorld fuzzing module can be seen in red box at the bottom of the Figure. This entry also includes a reference in the ```` field to the HelloWorldLib build description file. + +
    + Source-code for UefiHostTestPkg.dsc + +```ini +## @file UefiHostTestPkg.dsc +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = UefiHostFuzzTestCasePkg + PLATFORM_GUID = 9497CEE4-EEEB-4B38-B0EF-03E01920F040 + PLATFORM_VERSION = 0.1 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/UefiHostFuzzTestCasePkg + SUPPORTED_ARCHITECTURES = IA32|X64 + BUILD_TARGETS = DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER = DEFAULT + + DEFINE TEST_WITH_INSTRUMENT = FALSE + +[LibraryClasses] + BaseLib|UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf + CacheMaintenanceLib|UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/BaseCacheMaintenanceLibHost.inf + BaseMemoryLib|UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf + MemoryAllocationLib|UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf + DebugLib|UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf + UefiBootServicesTableLib|UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf + HobLib|UefiHostTestPkg/Library/HobLibHost/HobLibHost.inf + SmmMemLib|UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf + SmmMemLibStubLib|UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf + DevicePathLib|UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf + DxeServicesTableLib|UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.inf + UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf + SmmServicesTableLib|UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf + MmServicesTableLib|UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + PeiServicesTablePointerLib|UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.inf + UefiDriverEntryPoint|UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf + PeimEntryPoint|UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.inf + ToolChainHarnessLib|UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf + + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf + ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf + SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf + SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf + PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf + DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf + TimerLib|UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.inf + + UefiLib|MdePkg/Library/UefiLib/UefiLib.inf + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf + + SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf + + DiskStubLib|UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.inf + Usb2HcStubLib|UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.inf + Usb2HcPpiStubLib|UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.inf + UsbIoPpiStubLib|UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.inf + Tcg2StubLib|UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.inf + # Add below libs due to Edk2 update + VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf + VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf +!if $(TEST_WITH_INSTRUMENT) + IniParsingLib|UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.inf + NULL|UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf + InstrumentHookLib|UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.inf +!endif + +!if $(TEST_WITH_KLEE) + BaseLib|UefiHostTestPkg/Library/BaseLibHost/BaseLibHostNoAsm.inf +!endif + + # Adding to support HelloWorldFuzzing + UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf + +[LibraryClasses.common.USER_DEFINED] + +[Components] +!if $(TEST_WITH_INSTRUMENT) + UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.inf { + + MSFT: *_*_*_CC_FLAGS = /Gh /GH /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 -finstrument-functions + } + UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf { + + MSFT: *_*_*_CC_FLAGS = /Gh /GH /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 -finstrument-functions + } + UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf { + + MSFT: *_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + GCC:*_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + } +!endif + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.inf { + + NULL|MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf +!if $(TEST_WITH_INSTRUMENT) + + MSFT: *_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + GCC:*_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + + InstrumentHookLib|UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.inf +!endif + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.inf { + + NULL|MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf +!if $(TEST_WITH_INSTRUMENT) + + MSFT: *_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + GCC:*_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + + InstrumentHookLib|UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.inf +!endif + } + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.inf { + + NULL|MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf { + + BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.inf { + + HelloWorldLib|MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/DxeCapsuleLibFmp/TestDxeCapsuleLibFmp.inf { + + NULL|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf + FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf + UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf + SortLib|MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf + HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf + BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf + DisplayUpdateProgressLib|MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf + } + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.inf { + + NULL|MdeModulePkg/Universal/CapsulePei/CapsulePei.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.inf { + + NULL|MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf + NULL|UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.inf + AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf + VarCheckLib|UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.inf + VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.inf { + + Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf + Tpm2DeviceLib|UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf + Tpm2DeviceStubLib|UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.inf { + + NULL|MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf + } + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.inf { + + NULL|MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf + } + + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.inf { + + FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf + BaseCryptLib|UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf + } + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.inf { + + FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.inf + BaseCryptLib|UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoLibStubRsa2048Sha256.inf + } + + UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.inf { + + NULL|UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatPei.inf +!if $(TEST_WITH_INSTRUMENT) + + MSFT: *_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + GCC:*_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + + InstrumentHookLib|UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.inf +!endif + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/SmmLockBoxLib/UpdateLockBoxTestCase/TestUpdateLockBoxFuzzLength.inf { + + NULL|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf + } + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/SmmLockBoxLib/UpdateLockBoxTestCase/TestUpdateLockBoxFuzzOffset.inf { + + NULL|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf + } + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.inf{ + + NULL|UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf + PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf + TdxLib|MdePkg/Library/TdxLib/TdxLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + RegisterFilterLib|MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Library/TdxStartupLib/TestHobList.inf { + + LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf + QemuFwCfgSimpleParserLib|OvmfPkg/Library/QemuFwCfgSimpleParserLib/QemuFwCfgSimpleParserLib.inf + MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf + PeiHardwareInfoLib|OvmfPkg/Library/HardwareInfoLib/PeiHardwareInfoLib.inf + PrePiHobListPointerLib|OvmfPkg/IntelTdx/PrePiHobListPointerLibTdx/PrePiHobListPointerLibTdx.inf + PlatformInitLib|OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf + PeilessStartupLib|OvmfPkg/Library/PeilessStartupLib/PeilessStartupLib.inf + RegisterFilterLib|MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf + #UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf + #LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLibSec.inf + CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf + TdxLib|MdePkg/Library/TdxLib/TdxLib.inf + PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf + HashLib|SecurityPkg/Library/HashLibTdx/HashLibTdx.inf + UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf + PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf + ExtractGuidedSectionLib|MdePkg/Library/BaseExtractGuidedSectionLib/BaseExtractGuidedSectionLib.inf + PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf + PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf + QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf + MemEncryptTdxLib|OvmfPkg/Library/BaseMemEncryptTdxLib/BaseMemEncryptTdxLib.inf + MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf + CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf + PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf + CcExitLib|OvmfPkg/Library/CcExitLib/CcExitLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + CcExitLib|OvmfPkg/Library/CcExitLib/CcExitLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + TdxMailboxLib|OvmfPkg/Library/TdxMailboxLib/TdxMailboxLib.inf + TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf + HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + } + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.inf{ + + NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib.inf + BaseCryptLib|UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf + PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf + SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.inf{ + + NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib.inf + BaseCryptLib|UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf + PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf + SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + } + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.inf{ + + NULL|OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + PeiHardwareInfoLib|OvmfPkg/Library/HardwareInfoLib/PeiHardwareInfoLib.inf + RegisterFilterLib|MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf + #UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf + LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf + CcExitLib|OvmfPkg/Library/CcExitLib/CcExitLib.inf + MemEncryptTdxLib|OvmfPkg/Library/BaseMemEncryptTdxLib/BaseMemEncryptTdxLib.inf + MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf + CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf + PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf + PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf + TdxLib|MdePkg/Library/TdxLib/TdxLib.inf + PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf + MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf + QemuFwCfgSimpleParserLib|OvmfPkg/Library/QemuFwCfgSimpleParserLib/QemuFwCfgSimpleParserLib.inf + QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf + PlatformInitLib|OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.inf{ + + UefiPciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + BasePciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf + VirtioPciDevice10StubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.inf + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.inf{ + + NULL|OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + UefiPciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + BasePciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf + VirtioBlkStubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf + VirtioPciDevice10StubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.inf + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.inf{ + + NULL|OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + NULL|OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + VirtioBlkStubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf + VirtioPciDevice10StubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.inf + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.inf{ + + NULL|OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + NULL|OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + VirtioBlkStubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf + VirtioPciDevice10StubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.inf + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Library/CcExitLib/TestParseMmioExitInstructions.inf{ + + CcExitLib|OvmfPkg/Library/CcExitLib/CcExitLib.inf + LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf + MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLib.inf + CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf + #UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf + RegisterFilterLib|MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/SecPeiCcProbeLib.inf + TdxLib|MdePkg/Library/TdxLib/TdxLib.inf + PlatformInitLib|OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf + } + + [PcdsDynamicDefault] + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0 + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0 + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0 + [PcdsFixedAtBuild] + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize|0x002000 +!include UefiHostFuzzTestPkg/UefiHostFuzzTestBuildOption.dsc + +``` + +
    + +## Building the TestHelloWorld fuzzing harness + +Now that all of the necessary files have been created or modified, we are ready to build of fuzzing test harness. To do this, there are a couple approaches: + +1. Directly using the EDK II build command +2. Using one of the HBFA helper scripts, e.g. ``RunLibFuzzer.py`` or ``RunAFL.py`` + +### Using the 'Build' command + +For the first approach the ‘build’ command for the EDK II build system can be used directly: + +```console +build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -m UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.inf -a X64 -b DEBUG -t LIBFUZZER --conf /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf +``` + +Here you must specify the platform UefiHostFuzzTestCasePkg.dsc via the `–p` flag. This must be done every time for an HBFA fuzzing harness as the is the platform that enables fuzzing. For the `–m`, module option, the TestHelloWorld.inf build description is references. For the `–a`, architecture option, we specific X64. For `–b`, DEBUG is specified so that debugging symbols are included in the build. For the build target, `-t`, we specify as LIBFUZZER. If building for AFL, this would be AFL. Last, for the `–conf`, configuration option, we specify the Configuration file included with HBFA, which if the recommended approach. + +### Using the HBFA helper scripts + +Included HBFA are several scripts that help automate building the test case and running the fuzzer. Here we are going to build and run with LibFuzzer, so we’ll use the `RunLibFuzzer.py` Python script. Several of the command-line options are the same. Here we also have a option for specifying the input seed file folder for the fuzzer, specified via the `-t` option. Likewise, we specify an output folder for any crash files, etc. from the fuzzer via the `-o` option. Behind the scenes, RunLibFuzzer.py will invoke the build system with the proper platform file. An example of the command, which will build the TestHelloWorld library and launch fuzzing is shown in the following. + +```console +RunLibFuzzer.py -a X64 -m /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.inf -i /tmp/helloseed/ -o /tmp/fuzz_RunLibFuzzer_TestHelloWorldLib +``` + +## Fuzzing HelloWorldLib for vulnerabilities with LibFuzzer + +If we run the TestHelloWorld fuzzing test case, as shown in the previous [section](#using-the-hbfa-helper-scripts), you should see output similar to the following. + +```console +[root@00c4495bd766 hbfa_workspace]# RunLibFuzzer.py -a X64 -m /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.inf -i /tmp/helloseed/ -o /tmp/fuzz_RunAFL_TestHelloWorldLib +LibFuzzer output will be generated in current directory:/tmp/fuzz_RunAFL_TestHelloWorldLib +Updating UefiHostFuzzTestBuildOption.dsc +Start build Test Module: +build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -m UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.inf -a X64 -b DEBUG -t LIBFUZZER --conf /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf -t GCC5 +Build Successful !!! + +Start run LibFuzzer test: +/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld /tmp/helloseed/ -rss_limit_mb=0 -artifact_prefix=/tmp/fuzz_RunAFL_TestHelloWorldLib/ +INFO: Running with entropic power schedule (0xFF, 100). + +INFO: Seed: 3584686423 + +INFO: Loaded 1 modules (3888 inline 8-bit counters): 3888 [0x5e03c0, 0x5e12f0), + +INFO: Loaded 1 PC tables (3888 PCs): 3888 [0x59fab8,0x5aedb8), + +INFO: 1 files found in /tmp/helloseed/ + +INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes + +INFO: seed corpus: files: 1 min: 5b max: 5b total: 5b rss: 30Mb + +#2 INITED cov: 108 ft: 109 corp: 1/5b exec/s: 0 rss: 31Mb + +#3 NEW cov: 108 ft: 111 corp: 2/9b lim: 5 exec/s: 0 rss: 31Mb L: 4/5 MS: 1 EraseBytes- +... +#2211 NEW cov: 113 ft: 133 corp: 15/73b lim: 15 exec/s: 0 rss: 37Mb L: 14/14 MS: 3 ChangeByte-InsertRepeatedBytes-CopyPart- + +================================================================= + +==13469==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffedc0c1df0 at pc 0x00000055a3b0 bp 0x7ffedc0c1950 sp 0x7ffedc0c1948 + +READ of size 1 at 0x7ffedc0c1df0 thread T0 + + #0 0x55a3af in BasePrintLibSPrintMarker /root/hbfa_workspace/edk2/MdePkg/Library/BasePrintLib/PrintLibInternal.c:1159:13 + + #1 0x5537cb in UnicodeVSPrint /root/hbfa_workspace/edk2/MdePkg/Library/BasePrintLib/PrintLib.c:73:10 + + #2 0x550b3c in InternalPrint /root/hbfa_workspace/edk2/MdePkg/Library/UefiLib/UefiLibPrint.c:70:12 + + #3 0x550d5e in Print /root/hbfa_workspace/edk2/MdePkg/Library/UefiLib/UefiLibPrint.c:119:12 + + #4 0x5508e1 in ProcessArgument /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:61:5 + + #5 0x54eb7f in RunTestHarness /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.c:49:3 +... +Address 0x7ffedc0c1df0 is located in stack of thread T0 at offset 48 in frame + + #0 0x5506bf in ProcessArgument /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:58 + + + + This frame has 1 object(s): + + [32, 48) 'MyBuffer' (line 59) <== Memory access at offset 48 overflows this variable +... +==13469==ABORTING + +MS: 1 CopyPart-; base unit: 05c470e2f391593e9aca50949f9528bff29413de + +0x0,0x30,0x0,0x4,0x0,0x55,0x0,0x55,0x4,0x0,0x55,0x55,0x55,0x55,0x4, + +\x000\x00\x04\x00U\x00U\x04\x00UUUU\x04 + +artifact_prefix='/tmp/fuzz_RunAFL_TestHelloWorldLib/'; Test unit written to /tmp/fuzz_RunAFL_TestHelloWorldLib/crash-64747b0e18749998ecf47ad41fd3b34439e8ce07 + +Base64: ADAABABVAFUEAFVVVVUE +``` + +
    + Expand here for full output from command: + +```console +[root@00c4495bd766 hbfa_workspace]# RunLibFuzzer.py -a X64 -m /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.inf -i /tmp/helloseed/ -o /tmp/fuzz_RunAFL_TestHelloWorldLib +LibFuzzer output will be generated in current directory:/tmp/fuzz_RunAFL_TestHelloWorldLib +Updating UefiHostFuzzTestBuildOption.dsc +Start build Test Module: +build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -m UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.inf -a X64 -b DEBUG -t LIBFUZZER --conf /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Conf -t GCC5 +Build Successful !!! + +Start run LibFuzzer test: +/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld /tmp/helloseed/ -rss_limit_mb=0 -artifact_prefix=/tmp/fuzz_RunAFL_TestHelloWorldLib/ +INFO: Running with entropic power schedule (0xFF, 100). + +INFO: Seed: 3584686423 + +INFO: Loaded 1 modules (3888 inline 8-bit counters): 3888 [0x5e03c0, 0x5e12f0), + +INFO: Loaded 1 PC tables (3888 PCs): 3888 [0x59fab8,0x5aedb8), + +INFO: 1 files found in /tmp/helloseed/ + +INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes + +INFO: seed corpus: files: 1 min: 5b max: 5b total: 5b rss: 30Mb + +#2 INITED cov: 108 ft: 109 corp: 1/5b exec/s: 0 rss: 31Mb + +#3 NEW cov: 108 ft: 111 corp: 2/9b lim: 5 exec/s: 0 rss: 31Mb L: 4/5 MS: 1 EraseBytes- + +#13 NEW cov: 110 ft: 113 corp: 3/13b lim: 5 exec/s: 0 rss: 31Mb L: 4/5 MS: 5 ChangeBit-ShuffleBytes-CopyPart-EraseBytes-ChangeBinInt- + +#14 NEW cov: 110 ft: 115 corp: 4/15b lim: 5 exec/s: 0 rss: 31Mb L: 2/5 MS: 1 CrossOver- + +#17 NEW cov: 110 ft: 117 corp: 5/17b lim: 5 exec/s: 0 rss: 31Mb L: 2/5 MS: 3 CopyPart-ChangeBinInt-CrossOver- + +#28 NEW cov: 113 ft: 120 corp: 6/21b lim: 5 exec/s: 0 rss: 32Mb L: 4/5 MS: 1 ChangeBinInt- + +#41 NEW cov: 113 ft: 123 corp: 7/26b lim: 5 exec/s: 0 rss: 32Mb L: 5/5 MS: 3 ChangeBit-CopyPart-InsertByte- + +#54 NEW cov: 113 ft: 124 corp: 8/30b lim: 5 exec/s: 0 rss: 32Mb L: 4/5 MS: 3 ChangeByte-ShuffleBytes-EraseBytes- + +#108 REDUCE cov: 113 ft: 124 corp: 8/29b lim: 5 exec/s: 0 rss: 32Mb L: 4/5 MS: 4 ShuffleBytes-EraseBytes-ShuffleBytes-ChangeByte- + +#156 REDUCE cov: 113 ft: 124 corp: 8/28b lim: 5 exec/s: 0 rss: 32Mb L: 3/5 MS: 3 CopyPart-ShuffleBytes-EraseBytes- + +#257 REDUCE cov: 113 ft: 124 corp: 8/27b lim: 5 exec/s: 0 rss: 32Mb L: 1/5 MS: 1 EraseBytes- + +#283 REDUCE cov: 113 ft: 124 corp: 8/26b lim: 5 exec/s: 0 rss: 32Mb L: 3/5 MS: 1 EraseBytes- + +#587 NEW cov: 113 ft: 125 corp: 9/33b lim: 7 exec/s: 0 rss: 33Mb L: 7/7 MS: 4 CMP-InsertByte-CopyPart-ChangeByte- DE: "\x00\x00"- + +#591 NEW cov: 113 ft: 126 corp: 10/40b lim: 7 exec/s: 0 rss: 33Mb L: 7/7 MS: 4 PersAutoDict-EraseBytes-ChangeByte-InsertByte- DE: "\x00\x00"- + +#607 REDUCE cov: 113 ft: 126 corp: 10/38b lim: 7 exec/s: 0 rss: 33Mb L: 5/7 MS: 1 EraseBytes- + +#748 NEW cov: 113 ft: 128 corp: 11/42b lim: 7 exec/s: 0 rss: 34Mb L: 4/7 MS: 1 ChangeBit- + +#893 REDUCE cov: 113 ft: 128 corp: 11/41b lim: 7 exec/s: 0 rss: 34Mb L: 4/7 MS: 5 InsertByte-ChangeByte-PersAutoDict-PersAutoDict-EraseBytes- DE: "\x00\x00"-"\x00\x00"- + +#1000 REDUCE cov: 113 ft: 128 corp: 11/40b lim: 7 exec/s: 0 rss: 34Mb L: 2/7 MS: 2 InsertByte-EraseBytes- + +#1089 NEW cov: 113 ft: 129 corp: 12/46b lim: 7 exec/s: 0 rss: 34Mb L: 6/7 MS: 4 PersAutoDict-ShuffleBytes-ChangeBit-ChangeBit- DE: "\x00\x00"- + +#1297 NEW cov: 113 ft: 130 corp: 13/55b lim: 9 exec/s: 0 rss: 35Mb L: 9/9 MS: 3 ChangeByte-CopyPart-InsertByte- + +#1678 NEW cov: 113 ft: 132 corp: 14/61b lim: 12 exec/s: 0 rss: 36Mb L: 6/9 MS: 1 ChangeBit- + +#1869 REDUCE cov: 113 ft: 132 corp: 14/60b lim: 12 exec/s: 0 rss: 36Mb L: 1/9 MS: 1 EraseBytes- + +#1898 REDUCE cov: 113 ft: 132 corp: 14/59b lim: 12 exec/s: 0 rss: 36Mb L: 3/9 MS: 4 ChangeASCIIInt-CopyPart-InsertRepeatedBytes-CrossOver- + +#2211 NEW cov: 113 ft: 133 corp: 15/73b lim: 15 exec/s: 0 rss: 37Mb L: 14/14 MS: 3 ChangeByte-InsertRepeatedBytes-CopyPart- + +================================================================= + +==13469==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffedc0c1df0 at pc 0x00000055a3b0 bp 0x7ffedc0c1950 sp 0x7ffedc0c1948 + +READ of size 1 at 0x7ffedc0c1df0 thread T0 + + #0 0x55a3af in BasePrintLibSPrintMarker /root/hbfa_workspace/edk2/MdePkg/Library/BasePrintLib/PrintLibInternal.c:1159:13 + + #1 0x5537cb in UnicodeVSPrint /root/hbfa_workspace/edk2/MdePkg/Library/BasePrintLib/PrintLib.c:73:10 + + #2 0x550b3c in InternalPrint /root/hbfa_workspace/edk2/MdePkg/Library/UefiLib/UefiLibPrint.c:70:12 + + #3 0x550d5e in Print /root/hbfa_workspace/edk2/MdePkg/Library/UefiLib/UefiLibPrint.c:119:12 + + #4 0x5508e1 in ProcessArgument /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:61:5 + + #5 0x54eb7f in RunTestHarness /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Application/HelloWorld/TestHelloWorld.c:49:3 + + #6 0x54e9d7 in LLVMFuzzerTestOneInput /root/hbfa_workspace/hbfa-fl/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.c:138:3 + + #7 0x44dc89 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld+0x44dc89) + + #8 0x44e7f0 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool, bool*) (/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld+0x44e7f0) + + #9 0x44fa83 in fuzzer::Fuzzer::MutateAndTestOne() (/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld+0x44fa83) + + #10 0x451577 in fuzzer::Fuzzer::Loop(std::vector >&) (/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld+0x451577) + + #11 0x43641a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld+0x43641a) + + #12 0x425a56 in main (/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld+0x425a56) + + #13 0x7f77efc2feaf in __libc_start_call_main (/lib64/libc.so.6+0x3feaf) + + #14 0x7f77efc2ff5f in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x3ff5f) + + #15 0x425aa4 in _start (/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld+0x425aa4) + + + +Address 0x7ffedc0c1df0 is located in stack of thread T0 at offset 48 in frame + + #0 0x5506bf in ProcessArgument /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:58 + + + + This frame has 1 object(s): + + [32, 48) 'MyBuffer' (line 59) <== Memory access at offset 48 overflows this variable + +HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork + + (longjmp and C++ exceptions *are* supported) + +SUMMARY: AddressSanitizer: stack-buffer-overflow /root/hbfa_workspace/edk2/MdePkg/Library/BasePrintLib/PrintLibInternal.c:1159:13 in BasePrintLibSPrintMarker + +Shadow bytes around the buggy address: + + 0x10005b810360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + 0x10005b810370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + 0x10005b810380: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00 00 00 f3 + + 0x10005b810390: f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00 + + 0x10005b8103a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +=>0x10005b8103b0: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00 00[f3]f3 + + 0x10005b8103c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + 0x10005b8103d0: 00 00 00 00 f1 f1 f1 f1 00 00 f3 f3 00 00 00 00 + + 0x10005b8103e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + 0x10005b8103f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + 0x10005b810400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + +Shadow byte legend (one shadow byte represents 8 application bytes): + + Addressable: 00 + + Partially addressable: 01 02 03 04 05 06 07 + + Heap left redzone: fa + + Freed heap region: fd + + Stack left redzone: f1 + + Stack mid redzone: f2 + + Stack right redzone: f3 + + Stack after return: f5 + + Stack use after scope: f8 + + Global redzone: f9 + + Global init order: f6 + + Poisoned by user: f7 + + Container overflow: fc + + Array cookie: ac + + Intra object redzone: bb + + ASan internal: fe + + Left alloca redzone: ca + + Right alloca redzone: cb + +==13469==ABORTING + +MS: 1 CopyPart-; base unit: 05c470e2f391593e9aca50949f9528bff29413de + +0x0,0x30,0x0,0x4,0x0,0x55,0x0,0x55,0x4,0x0,0x55,0x55,0x55,0x55,0x4, + +\x000\x00\x04\x00U\x00U\x04\x00UUUU\x04 + +artifact_prefix='/tmp/fuzz_RunAFL_TestHelloWorldLib/'; Test unit written to /tmp/fuzz_RunAFL_TestHelloWorldLib/crash-64747b0e18749998ecf47ad41fd3b34439e8ce07 + +Base64: ADAABABVAFUEAFVVVVUE + +``` + +
    + +As can be seen in the output, LibFuzzer goes through several iterations and eventually a stack overflow vulnerability is detected by AddressSantizer (ASAN). Looking the stack-trace, we can see the the detection/overflow occurred once we had called into the ``ProcessArgument``. Further, it indicates that the ``MyBuffer`` variable is overflowed. Last, noting the input file that caused this crash will be saved to the directory we specified for the output directory; from the output, the crash file was saved to /tmp/fuzz_RunLibFuzzer_TestHelloWorldLib. Before we proceed into debugging and verifying the issue identify by ASAN, we'll first verify that the crash is reproducible, using the crash file saved from the fuzzing run. + +### Reproducing the crash + +We will reproduce the crash by running the fuzzing test-case binary and providing the crash file as the input seed. For LibFuzzer, this is the first argument provided to the fuzzing binary. Further, we will run the binary for the fuzzer in GDB, can subsequently inspect and debug the crash.Note, you may need to install GDB. Your Linux distribution should have a package available, otherwise, see the GDB project [web-page](https://www.sourceware.org/gdb/) for information on obtaining and installing the debugger. + +Next, run GDB and provide the path to the TestHelloWorld fuzzing binary as the first argument. You should see something similar to the following: + +```console +[root@00c4495bd766 hbfa_workspace]# gdb /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld +GNU gdb (GDB) Fedora 12.1-1.fc35 +Copyright (C) 2022 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. +Type "show copying" and "show warranty" for details. +This GDB was configured as "x86_64-redhat-linux-gnu". +Type "show configuration" for configuration details. +For bug reporting instructions, please see: +. +Find the GDB manual and other documentation resources online at: + . + +For help, type "help". +Type "apropos word" to search for commands related to "word"... +Reading symbols from /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld... +(gdb) +``` + +Next, you can run the TestHelloWorld binary using the GDB 'run' command. The arguments provided to the 'run' command will be passed to the TestHelloWorld binary under debugging. Noting, we provide the file path to the crash file as the first argument. An additional argument is provided in the example to unlimit memory used by ASAN and may not be needed, depending on your fuzz case. + +```console +(gdb) run /tmp/fuzz_RunAFL_TestHelloWorldLib/crash-64747b0e18749998ecf47ad41fd3b34439e8ce07 -rss_limit_mb=0 +``` + +When ran, you should see the familiar output from ASAN warning/detection, as shown in the following Figure. This shows that we can at least reproduce the crash (as well as do so under a debugging environment). Next, we can take a look at debugging the crash/verifying the issue detected by ASAN. + +
    + +
    Example of output from running crash case under debugger for TestHelloWorld, with important sections highlighted.
    +
    + +### Debugging the crash + +In order to help make the debugging for the crash more easily viewable, instead of debugging using our crash file from above, we'll simply create a file containing 'A' characters, and use this as our crash file input. The same fundamentals apply for debugging the actual crash file; however, your crash file bytes may slightly differ and this will provide the best repeatable approach for this tutorial. To create the new crash file, you can simply run a Python command and redirect output to a new file: /tmp/crash, as shown in the following: + +```console +# python -c 'print("A"*46)' > /tmp/crash +``` + +Now when invoking the 'run' command in GDB, be sure to provide /tmp/crash as the argument, e.g.: + +```console +(gdb) run /tmp/crash +``` + +In order to verify the stack overflow, we’ll need to identify and set a few break points. Since we did compile with debugging information, we can leverage the ‘list’ command in GDB to look around the source code, as built for the harness. First, we'll look around the ``ProcessArgument`` fuction. + +
    + +
    Example of output from running GDB 'list ProcessArgument' for TestHelloWorld.
    +
    + +Here, as shown near the label A, we run the ‘list ProcessArgument’ to examine code near that function. As shown, we can see the ‘MyBuffer’ identified in the ASAN output. Likewise, we see a suspicious ‘MyStrCpy’ command invoked at line 60, which appears to include arguments to the function call that reference MyBuffer and the shell parameters Argv array. + +Next, we again use the 'list' command to inspect around the ``MyStrCpy`` function. + +
    + +
    Example of output from running GDB 'list MyStrCpy' for TestHelloWorld.
    +
    + +To that end, we’ll want to set break points around the ``MyStrCpy`` function and examine what happens to MyBuffer. Here, we end up needing to set break points at lines 41, 44, and 61 for the HelloWorldLib.c file. Line 61 corresponds to just after the return from MyStrCpy shown near the label A in the first Figure. Because of ASAN instrumentation catching the overflow and redirecting code output, we won't actually reach this point. Nonetheless we'll include. Often you want to pin your break points around where you expect to reach; a sanitizer may not be in use and you would want to see the state after return. The breakpoint at Line 41 is just before the actual copy takes place into the MyBuffer array; this point was selected as it gave the best viewpoint for the present tutorial. We also select Line 44 as this is in a loop where the actual write from source to destination for the copied bytes is taking place. We can step through the copy, byte for byte. + +The commands for setting these breakpoints are shown in the following. + +```console +(gdb) b /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:41 +Breakpoint 1 at 0x5505ef: /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:41. (2 locations) +(gdb) b /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:44 +Breakpoint 2 at 0x550620: /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:44. (2 locations) +(gdb) b /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:61 +Breakpoint 3 at 0x5508d6: file /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c, line 61. +(gdb) i b +Num Type Disp Enb Address What +1 breakpoint keep y +1.1 y 0x00000000005505ef in MyStrCpy at /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:41 +1.2 y 0x0000000000550833 in MyStrCpy at /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:41 +2 breakpoint keep y +2.1 y 0x0000000000550620 in MyStrCpy at /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:44 +2.2 y 0x0000000000550860 in MyStrCpy at /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:44 +3 breakpoint keep y 0x00000000005508d6 in ProcessArgument + at /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:61 +``` + +Next, we'll run the program and take a look at what is happening. + +```console +(gdb) run /tmp/crash +Starting program: /root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld /tmp/crash + +This GDB supports auto-downloading debuginfo from the following URLs: +https://debuginfod.fedoraproject.org/ +Enable debuginfod for this session? (y or [n]) y +Debuginfod has been enabled. +To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit. +[Thread debugging using libthread_db enabled] +Using host libthread_db library "/lib64/libthread_db.so.1". +INFO: Running with entropic power schedule (0xFF, 100). +INFO: Seed: 4077516461 +INFO: Loaded 1 modules (3888 inline 8-bit counters): 3888 [0x5e03c0, 0x5e12f0), +INFO: Loaded 1 PC tables (3888 PCs): 3888 [0x59fab8,0x5aedb8), +[New Thread 0x7ffff4bf9640 (LWP 532)] +/root/hbfa_workspace/Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestHelloWorld: Running 1 inputs 1 time(s) each. +Running: /tmp/crash + +Thread 1 "TestHelloWorld" hit Breakpoint 1, MyStrCpy (dst=0x7fffffffd320 "", src=0x606000000080 'A' , "\n") at /root/hbfa_workspace/edk2/MdeModulePkg/Library/HelloWorldLib/HelloWorldLib.c:41 +41 Print(L"Length of string copy: %d\n", len); +(gdb)``` + +Here, upon hitting the first breakpoint, we can see the memory addresses for the source (src) and destination (dst) arguments for the call into MyStrCpy. Taking a quick look at those, we see the following. + +```console +(gdb) x/16x 0x606000000080 +0x606000000080: 0x41414141 0x41414141 0x41414141 0x41414141 +0x606000000090: 0x41414141 0x41414141 0x41414141 0x41414141 +0x6060000000a0: 0x41414141 0x41414141 0x41414141 0x000a4141 +0x6060000000b0: 0x00000000 0x00000000 0x00000000 0x00000000 +(gdb) x/16x 0x7fffffffd320 +0x7fffffffd320: 0x00000000 0x00000000 0xf7fb7ce0 0x00007fff +0x7fffffffd330: 0x00000000 0x00000000 0x00000000 0x00000000 +0x7fffffffd340: 0x00000000 0x00000000 0x00000000 0x00000000 +0x7fffffffd350: 0x00000000 0x00000000 0xffffd320 0x00007fff +``` + +As expected, at the source location (corresponding to a heap address), we see a buffer of 0x41 bytes ('A' characters). Likewise, at destination address (a stack address), we see that none of the bytes have been copied to our destination address. Next, we run 'c' for continue, and hit are breapkpiont at Line 44 of HelloWorldLib.c. This is the location where the actual copy to the MyBuffer variable on the stack will occur. As shown in the screenshot below, when we first reach the breakpoint, there are Null bytes; nothing has been written. When we continue again, we hit the next pass in this loop and you can see one value 0x41 has been written to MyBuffer (note Endianess in the displayed bytes output from GDB). + +
    + +
    Example of output from debugging copy of bytes in MyStrCpy when running TestHelloWorld.
    +
    +``` + +Next, we can keep running the 'c' (continue) command and step through the loop a few more times. As shown in the following screenshot, more bytes are written to MyBuffer. + +
    + +
    Example of output from debugging copying of additional bytes in MyStrCpy when running TestHelloWorld.
    +
    + +If we continue stepping, we'll eventually reach a point where the bytes have written past the 16 bytes allocated on the stack for MyBuffer and the ASAN error is caught. This is shown in the following screenshot. + +
    + +
    Example of output from debugging copy of bytes in MyStrCpy and trigger an overflow detection when running TestHelloWorld.
    +
    + +Thus we have verified that a buffer overflow is happening and have reached the completion of this tutorial. Thank you for taking the time to read these materials. + +Return to [Summary](../SUMMARY.md) \ No newline at end of file From 762a061411f55e7dd76fa4ea9991aa1a0fb77209 Mon Sep 17 00:00:00 2001 From: el-tipton Date: Thu, 22 Feb 2024 11:46:23 -0600 Subject: [PATCH 3/5] Adjusting build base image. --- .github/workflows/build_testcases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_testcases.yml b/.github/workflows/build_testcases.yml index 6abbc20..b89ab8a 100644 --- a/.github/workflows/build_testcases.yml +++ b/.github/workflows/build_testcases.yml @@ -10,7 +10,7 @@ on: jobs: build_test_artifacts: name: Build Testcases - runs-on: ghcr.io/tianocore/containers/ubuntu-22-build + runs-on: ghcr.io/tianocore/containers/ubuntu-22-build:a0dd931 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Retrieve and build EDK2 From de3b79ffff3140eb24cc874f49eb7eb4d65421fc Mon Sep 17 00:00:00 2001 From: el-tipton Date: Fri, 23 Feb 2024 09:36:47 -0600 Subject: [PATCH 4/5] Adjusting build base image. --- .github/workflows/build_testcases.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_testcases.yml b/.github/workflows/build_testcases.yml index b89ab8a..295ae97 100644 --- a/.github/workflows/build_testcases.yml +++ b/.github/workflows/build_testcases.yml @@ -10,7 +10,9 @@ on: jobs: build_test_artifacts: name: Build Testcases - runs-on: ghcr.io/tianocore/containers/ubuntu-22-build:a0dd931 + runs-on: ubuntu-22-build + container: + image: ghcr.io/tianocore/containers/ubuntu-22-build:a0dd93 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Retrieve and build EDK2 From 849bf54ab80b83dd6e643d1a3d33cad28bf9369c Mon Sep 17 00:00:00 2001 From: el-tipton Date: Sun, 25 Feb 2024 13:05:53 -0600 Subject: [PATCH 5/5] Adjusting build git action --- .github/workflows/build_testcases.yml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_testcases.yml b/.github/workflows/build_testcases.yml index 295ae97..bcbb6c3 100644 --- a/.github/workflows/build_testcases.yml +++ b/.github/workflows/build_testcases.yml @@ -10,16 +10,25 @@ on: jobs: build_test_artifacts: name: Build Testcases - runs-on: ubuntu-22-build + runs-on: ubuntu-22.04 container: - image: ghcr.io/tianocore/containers/ubuntu-22-build:a0dd93 + image: ghcr.io/tianocore/containers/ubuntu-22-build + defaults: + run: + shell: bash steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Dependencies + run: | + sudo apt-get -y update && \ + sudo apt-get -y install \ + clang libclang-dev llvm - name: Retrieve and build EDK2 run: | git clone https://github.com/tianocore/edk2.git --recursive && \ - pushd edk2 && make -C BaseTools && source edksetup.sh && \ - popd && export -p > envsave + pushd edk2 && make -C BaseTools && \ + source edksetup.sh && popd && \ + export -p > envsave - name: Setting up HBFA-FL and Build Environment run: | source envsave && \ @@ -35,7 +44,7 @@ jobs: export AFL_PATH=$WORKSPACE/afl-2.52b && \ export PATH=$PATH:$AFL_PATH && \ export -p > envsave && \ - pushd afl-2.52b && make && popd + cd afl-2.52b && make && cd .. - name: Build Fuzzing Harnesses run: | source envsave && \
  • QCGh{uiO^e-pd@f4Xv+H>93;T93lP$7j?psmqp5o}Um4 zR`iZVrOF>WSXsn;Mr3?U6AJy7nS6BKYc@uj4YXpj@iMCs(P}v8dP-bglDfCt*veUN z`7$8H^℞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%0Arx$= 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 z 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�i@e=B!V&f3qdMtep$%}E0ac0(k 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 @IchQGyx+Ogj#EjtFz^i9T?1YN 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¬=?tXQ%R`4-% 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 P@MENJs#m0YBmDmWg6zF$ literal 0 HcmV?d00001 diff --git a/docs/images/hbfa_helloworld_list2.png b/docs/images/hbfa_helloworld_list2.png new file mode 100644 index 0000000000000000000000000000000000000000..f2dbdace856496394f68404618e455dde44f8d58 GIT binary patch literal 31715 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,dP_45tkD8T)g~l2*>fP> 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

    KR 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 Bf*}9^ literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_double.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/FileSystem/test_udf_m5_double.bin new file mode 100644 index 0000000000000000000000000000000000000000..0ae99dccaaea4140b6896e2687a2ea7525c6d5bb GIT binary patch literal 1048576 zcmeI*ZERiVeHid__@+xqRwyNwRj;$I2e*)@nWm{YkYLxfB3HEmL0&}3ZHgwY_!iL? zc{x$ioFOT^C0M`AX+CuQw6-6*1nW@vQ;WGTXtx3d(iHVptOMc?83HH6iomUJ-M~Y! zZrcAjFIShcNJ%Ebjq$NP$ZWG9(|2L!KfA*X0JoWq3_0!Ne zK0AN$)zi-&D_>sy|6uyCNS_@kefn)YF>(0N^vBPfS$Vyy^I5OgJF^$YPaSCvmmp23FjZ0t3;9pNk&+<;EL%PrONbQY~+?FRb#}ajP8% zv%c8Ga8ZfqQpJbDx!E)G7t)6FqJl9IX}bHwKw6d(+=jlGHnZj-%DpoRnh$iBe$BaA z@g5iGkN!Uw@BDYa)Xsb3EtSGk@yF4nNEPJ@|)VXw!?|@r}Q2mvV!(jp7g>K!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UxLRN^uKyj0>wmZY;-%ug((e1x)2(&&u(O_6W}MQF#P46m z#P!~jm+mu)n~vk(GMSo9fWR#kXym=weZ}?vzf_q3H_5YL6PyX!0BQaGDRsSy@1i7ow ze=1Yz{}-cPpWL;lczj9S|LZ!|+e_)v^H28deWXg)vn@RYp{jf~R3vPiYb{+&ccZZZd{WhMMIDBaO;3p^9C7S2yEE>2H1PtVUzwx*`9dt*1d{?!{AE+Cq7uUwp(nOW>C z?dvZmhxWd+WpI1{la1#N0G4;k>9|OhlUQm^hG@ zr3AMj7N^aud5CiFjDqF^-KAf1ZdN2ffB=DeRG>fN|Ne-4&waO@_eMxbyQf8DIdEe9 zLL&n{T)C{)qo+zd9REhs}?_*nEC|rqxxmyr()N zeV3mfD9=ySr{)Yp5x>{-H~G?^4NQM) zApYoZ{EG<#0RjXF5Fl{d1R8m7c3<)Q|8kQlcK`6Tw*K1Xdf0od#pV$pK!5-N0(X%> z#Q%R3@&Ao4w)3~#bJSBxDt)N_JufJUuClIs&Vyl$@hou?-I*R z*Xyl19zLG_)^0Nb;j!_q#MNIU?wXTjscd=F>rbMzKRL0ds8^nC%~EU?8<$XdL4W`O z0{5suivJ4{C%^RH`+Dj~U&a44ilLsHWnYUE1NEz?sxJcdxJ(=W7uOGLe_%BK)amM4 zf}x&&7}pY{`P&DJ;|fdWcUD|w;s)Y>DpQL8C!$`H-`rD_xsLyJ`RlEvbpIyOjeX*g zDqYXE^gW@fd^S`hY@BN?UN|t*x;Q@-uhTjQVx1R$ug*KZR>V5}Ri-=3b2{UrCQ`b88|ijVG^;XXTT*^os&pT%@_Xsr?EEV+oznk8r2kjnTAIH4 z!j}C|m2Y?YKaKQ%_Zyw`jgaw2oNB!sRdH}|1S|6zW0~y zPRv^={;#(GU&i^Z*}!K`e&j4p_lfbDv$q{^Vci>m&ek}Qlv7a{r^u@`~Rt4D;@v;<5;@z z_?~b`>B?jDjWVn3W5u{JnezLCSbFhC>U8BX|G_HV{bjo1n1Ay8^TB47UwJG)jy@E_ z?kZh-{9DaM}PnU0t7aQK#KqWC*uEqc=@fghg=Nn zaQuI{^Z(t~0uSg&I|F0U-hyVcs1PCl6kmCP8i}?S+uYDt{k9n`d{{I7w zhwJ1U69c$G9~Fpre!y_3?X z-^LRYhbJb-4oLRT7>%pQD!$l>6w0KjTn>{msA#ErxDi{+n?lu`n z%Tj{d&=zSkYaXK9JENfaKzHfaoLkl(?f;#q`3LW|^WMlZy*-PZ51bf3IeKvQjBC%; zQ?6@@zQ}D?6!hCE*Nxt0>ss^m&1_4w|6fFlU;gc(tS>w}{a_}~j<4^gNiRi&f9CAM^y16sTO%`*BWD*zCR=k) z7x_K3(Lb9S(f)nKCw_aqLdp_IF9;AIK!5-N0t5&UAV7cs0RjXF5FkL{&Ik;~@!zN7 z`0v>tzf_!8>^?7DoCmCmwR4r?rL-gQ`>puB-g9#4)M1=-j(;&>xFZ6Myf?eAIR0O5 zKDFHs$M1J8FFWkLBL%h5TO$zdzb)GTGygHJ|A{Sh_y6wedpaAx%g_DY;%i$58%J9U zpFcnQxwFO9CLOhUVr%2b#NvhXXC|+`I4iDQ>8(?z@oLwxbf-^~n$R6g8;Z|4MDjEv9sT9O+))_DGekXIrXdRr$C! zIt`6;t;GumW?C2Lr^?kf&Ht(We<$kyt^d*P)On@$ufG#+wEkbVQ`sza|Noh){mc54 z{r~Fr-!u)WA_NE!AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5ZL4bdDff#OqOTag?9d4jN+#l8pmhnFTQ&E*<;tP z|6m>|dt%*`KK(YHm^eH!Id*Vr<@K(e+s)72nY}Q6>PYiwYi{BE^y1?5RP*%w>||?d z`nt2e+4Zm9&~O3KoO|Ws)XdCcXK7!5IXSfVoh^eqw(hw9W7~SNDs5;V8}FpdvN~6GFtHM%WvfENYs-O+@!@S@13iQu->l+i%JX^l?c+}O>u7a%>0G4 zp}eSIOvJd`WFRd|32sAMq|K~(h;r|Yg60F=rC)PyS%0+uTT$~5-fic96IrIWXOZ)P z6XPdG53ZhZ?YVl&bxqM1x$TOAemmv5(c5fYYrejjZHe~(qiFHVzde+_AD*3lFq3D; z*LPEL+kgUn(f&Ul?f>T6?fh?}{ZqfnhSSI9@fVxV&(E~F%AEI95$P_E4`qC+Lv!=- zko^mBNBmOb2f>RkGg^io9lXU;B6FTQ-f zH8L|fa&}>4vNiW~k>5ib{j;eN?f-u9iQmqDP<-$&aqxlw0RjXF5FkK+009C72oNAZ zfB*pk1nyFSbPj)K9RGd&^>%(a9sg~{`M+wMt_Ls>AV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ zKq-)Cz1iPodA9%i?fktwi>Y#G9G{)P`0D9rk6jyTFprcyv2IGAej86r96mIC@Dr0O zuXpX-Zhr30?1k}DN18`la|`FE7Z<0eny2SyCtFj~*PZpvu7CB0h6{-1+$$HSW@Z*U zOZ)oE$)UaPY#H3%|77F219?`Z4eev&os?Ntr|p`x=E=HU*PMYB2@oJaU{eVUL=6AK zh~Rracq4B|kmyOZyUAF%%6Erb?KhY;ViUtfB_gC2Ukc96o|(UpHk=m~jEP9o9TNxA zvXtO9#NxD>H4jnlol($ypu6;I&drJh2oNA}j|%ih{C^-K-*ew>=YJC+CGDOTk>$XN z@spzmS64}~_6`hvvCUmk&~K-0Z}gab2YhUj009C72&^QqCF1|bBjW${p`q;kh^L+X z;Gf%)eRQQ2Eh9jH009C7?plGqi2pwy@&C=Y+xg!{{7?JU*>E~+e*DGe^Yb&UuA1dN z)fwr#{QN+9exg1#-+X*zbYyg5tgE6~w!2D`Ad2OWPF`AU?i(8&9eXVO9NwR04>z7V zmoAccDbDaeb9P~R@#XWak(tSnvkN1Wt+}U*{2p>_Vu`C41PBlyut5YG5&z#Wj`+9p z9~1}vH%P%0g8%^n1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+0D&78NYDQmit~S;{boG> zqxZ@^v8&v}yUg=HK7Qtm=YN!Ka9z*;80dTOkxxH(JFXFOYWIe_#yzn@y8r)B^#3n6 z;{N~W|C{3e|8x=KYWM#~n(jW)x$j}4-%A+fcK`o9(KT;NCDZ-CpNXFE?w8{J-{}80 zeE)B8!SHP<>XMD5&8GW*|0;FjjoxRMl-vsf8%H4B|92|-|JQ$cPxgNF{}cy{?*M0e zvmZ^x{Qa02KL!E>HlIMc|L3*n|Hb`3(a(!;?*1S5|7^aux*A0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5ZHJEJ#qct zSK|7=uMD>H%jsU4*W$joYW!Xr8we2Cv;wLBe=qv~-@h0AKVAR(Ox6EmoSp|@AV6UA G3jBY`(u3{* literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_1.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..166e485b44365626c86c80ddde8cfc3f20886777 GIT binary patch literal 1048576 zcmeI#Ar62r3YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK afB^#r3>YwAAhTW1g8>5u3>YwQY2X9RLjfuP literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_3.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_3.bin new file mode 100644 index 0000000000000000000000000000000000000000..7e0ee5a3c684eab07e3bbf9369947da450d8e534 GIT binary patch literal 36864 zcmeIuF%bYD3;?l8DmZ{U)(+s`3qqQA@QDxs0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 s2oNAZfB*pk1PBly5c{kg90(8~K!5;&Rs!{I&Q`}}2@oJafIxeJ55mg=e*gdg literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_linux.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/Udf_linux.bin new file mode 100644 index 0000000000000000000000000000000000000000..df6f28d25a737fcd53c5216e6c95d3ac48ae377c GIT binary patch literal 1048576 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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!Cu$5$Fot;iHg+Pi{4{PrKr< z&V`U=t@*9)eKSl0AwYlt0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1on_X7P><-WZ|PP zH?v#aA(mQGdk8xFMak{2C`VQE4EGb)1`7|;%sf=%;~ASxBKkgwtwqjcxmkF z`RaxG!qW0|qcJ^Iy|y?vS)ZETbl2N$zkWf(IYf2gwbiManMV8Gp59jRgTW8`D~}DF zJbvinH$qW2YF`>_*9@Vo+i}yDi{<0GA=!jqL}=hH!wSK=Q2x!I-Z#;eQqk(tSn*`<-m`oeR0e~;TX zxy{v;T_#Y8@&C(wi@%xuQl8&skB-$LK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAaJ`t`VRkp#LxeJa;uqrnm+$~E`I+neWxzY)A;~Q1PJV3 GfnNa~jHB29 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000001.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000001.seed new file mode 100644 index 0000000000000000000000000000000000000000..8dd9b32398037d9b41b3651c8ca362d48243bb3d GIT binary patch literal 524288 zcmeIufdBvi0K=g9Q{UhOg-~I@fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK VfB^#r3>YwAz<>b*1`HVZ0|Nkf00961 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000002.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000002.seed new file mode 100644 index 0000000000000000000000000000000000000000..0b8054b985b3744feafc3bea9c5fd63283f3c01b GIT binary patch literal 524288 zcmeIu0Sy2!2m`Q5;u0Xizojd{K`WsN1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz(8iZo(BU43>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM e7%*VKfB^#r3>YwAz<>b*1`HT5V8DQZYv2R_u>mRo literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000003.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000003.seed new file mode 100644 index 0000000000000000000000000000000000000000..b88af2f2f186c8787514ba49d60c8ae357d69e43 GIT binary patch literal 524288 zcmeIuF%bYD3;?l8DmZ{URtE6z1rdzRJNQJ1009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5Qw=(HVy;`5FkK+Kq-NJPxeyBW(g1=K!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U nAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0$&0TX;}h) literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000004.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000004.seed new file mode 100644 index 0000000000000000000000000000000000000000..06e598954752314c30ed5efb43c2cd42b2da2fda GIT binary patch literal 524288 zcmeI#F%1A95Cg!M^xyyzRtCVo7DO;|be0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAP~=c*T#VW0RjXF5J)BP^}k-J5(`U!009C72n_$f zBOpM4009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfWVGG*;%qf zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0Rrg+%9{8% z*NL700RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N I0t6BWOx(}|$^ZZW literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000007.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000007.seed new file mode 100644 index 0000000000000000000000000000000000000000..126173fce70c044b345dabbe9cbb11413c598134 GIT binary patch literal 524288 zcmeI#u?>JQ3!2&h!Kb5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N M0t5&UAn<#E57R;fzW@LL literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000009.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000009.seed new file mode 100644 index 0000000000000000000000000000000000000000..a5dd736de3893222fec4dfa2e96aa64c43e2839d GIT binary patch literal 524288 zcmeI#u?@f=3;;okiHMjWNVF+{{b$Jn6!bpVZvN!P5rzN(0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBm_KHmCpAV7cs0RjY434CkTma14R0RjXF5FoJq|BiqF z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009Cw0_A4O4gmrL z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5)86DaA51rs1Z zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+z)9c- DJg)=4 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000010.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000010.seed new file mode 100644 index 0000000000000000000000000000000000000000..bacb3b76afda91c318c88d2cd317e51230a7507c GIT binary patch literal 524288 zcmeI#u?@f=3;;oki69#giIxJg|18W9N;vl}{^Z6Hh5!Kq1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oQ+3)m%6bAV7cs0RmSE^f~f#Rk2tC1PBlyK;ZNLI|2d( z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009EK0%>>A9svRb2oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RqPfq~nSN{SjEl Chy%U= literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000011.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000011.seed new file mode 100644 index 0000000000000000000000000000000000000000..ea12a9d201608ab060a83de0800e464c5ab1c732 GIT binary patch literal 524288 zcmeI#p%K6!3v@X9NfkAV7e?KLn2J?8`q=R1hFQ zfB*pkL4n)ZzXZns literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000016.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000016.seed new file mode 100644 index 0000000000000000000000000000000000000000..b03f2bc177dca71d1828fc8b8fff2b9c551dd3a1 GIT binary patch literal 524288 zcmeI#ArgQf5Cu>ncpmfyI%74c_rHpE5{2OMXfQhq|7~KP##%YW$QvX^jA2MYfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+Kn#KX*vb+kiWCG05FkK+K%>BUUuA8q zRYrgS0RjXF#1MG=|6>eN3IYTO5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C7dJE*<7wAub009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0>2c<)vMnrRVTIt2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly ZK!5-N0t5&UAV7cs0RjXF5Fjvuzz5QQ1jqmY literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000017.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000017.seed new file mode 100644 index 0000000000000000000000000000000000000000..b1f3604f6c7701ff5c0264cf28c0eb0c002e783c GIT binary patch literal 524288 zcmeI#F%Ezr3iw^xyBmoisXR7F)AAn^eb?5?=^uGh|4okJn>M-- zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyKp?)rx-H`rKZXPZ2oNAZfIxx3 zejejoP_L8#0RjXF5Qr~u`Txg%L7f$sqW<-;5#s>y-SBee=*}k49tKlre<> z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0+9mCI@d9>fNTN;2oNAZpu50! z>~-p%Dv$sH0t5&Uh!i;e|0DTj6Cgl<009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNCf9)a?ns+tlYK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+Ku3Y{$huN~yton|K!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U cAV7cs0RjXF5FkK+009C72oNAZfWRLFZo$a})Bpeg literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000019.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000019.seed new file mode 100644 index 0000000000000000000000000000000000000000..013fe93bbcdea764035c764bd510abb731d94cd9 GIT binary patch literal 524288 zcmeI#xeb6o3$!6Q zL4W`O0t5(@5_tXprTP|@009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+0D*1- zt=lGx2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV6Rw zfi_YYSqKmyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 L2oNAZ;J3gB^6muJ literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000020.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000020.seed new file mode 100644 index 0000000000000000000000000000000000000000..53d0acd882d186370107c1f2ce68f26e8061ade7 GIT binary patch literal 524288 zcmeI#u?>JQ3!_#a2t6!D&~iLE&Z5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7csfp&k~#tR1m1PBlyKp;xs`F@SpsEsX4 zfB*pk1PFY5|N9dVAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zU<-lM77yL=GyAaPms{~_!=J((gky!ATdRQnRU>cKKd*V+SpTY#H|w9*yl$+2)ySLm z&ud;c*1u}x&HCpxuN&)MHS%Wt^P1O<^{*Ovv;KL_>&E(5jl5a^yyiA0K!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72rLQorHif+AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfIzH3pKbmHgwb4q{!0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ c009C72oNAZfB*pk1PBlyK!5-N0>>Bl0Wf|AZvX%Q literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000022.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000022.seed new file mode 100644 index 0000000000000000000000000000000000000000..fbf9ec2aa38f90d437b6530e196fe82f795f217f GIT binary patch literal 524288 zcmeI#F>=B{6huL!K<5E&09B*}!2PcR>6BuzDwuZkP2gqvMP3eFKlAh-d#7ca9e={H z4MyQ#(Z4WyOx8az3QzqDqsL_Z1EcWNzc6}C);}-`PyGv{$7KBjqwv(fFnUbZKQIbU z{R^YVWc>r9@YKIBdQ8?oFbYro3!}$m{R5-$)W0x#Ox8az3QzqDqsL_Z1EcWNzc6}C z);}-`PyGv{n@oTJ0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009Ey1+KTt@ihKf zFA^X?fB*pkI||&NkK=jA_dQL3009C72#gna`Tu`Bx)%u$AV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5coxb`4_*m?@WLI0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pkUl*8HFTBsI5By4i009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs s0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0Rj~QAL5w>7XSbN literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000023.seed b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/Partition/test000023.seed new file mode 100644 index 0000000000000000000000000000000000000000..71c565350381c53f8c7b4921e3e8455f7540a0ec GIT binary patch literal 524288 zcmeI#u@Qn$6hzT4l~4lOfzFT`sEycvpgH+6s~j>29`Bz^!Wb?B1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZVBFU0a^^sQ009C72pme_{(LN#L!H=R2@oJa zfB=D)|9>9=0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZASrN44mZ1A zK>zwg(FOI7^41U6zdliPLH(n=^~3eAPZV8H|0r+$aQ*8OMHkdR%3D8N|N2DH1@({e z)(_XeK2dZ*{iD3~!}YIE6kSmNC~y66{p%B1kN^P!1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009EK z2u!=Y#Y+efAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ z;MWAE&BC8~jQ8f5TLJ_K5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk T1PBlyK!5-N0t5&U_JQ3;CWXbtr{y!fB*pk1PE;ZzY!21 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBnQ3XEz{jsO7y1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7ekJe$!-xaC literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/readme.txt b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Raw/readme.txt new file mode 100644 index 0000000..e69de29 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/SeedGenUdf.py b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/SeedGenUdf.py new file mode 100644 index 0000000..659a3f1 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/SeedGenUdf.py @@ -0,0 +1,108 @@ +# @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +''' +SeedGenUdf +''' + +import argparse +import ctypes +import Udf + +# +# Globals for help information +# +__prog__ = 'SeedGenUdf' +__version__ = '%s Version %s' % (__prog__, '0.11 ') +__copyright__ = 'Copyright (c) 2018, Intel Corporation. All rights reserved.' +__usage__ = '%s [options] -o ' % (__prog__) + +TOTAL_SIZE = 1 * 1024 * 1024 +BLOCK_SIZE = 2048 + +if __name__ == '__main__': + # + # Create command line argument parser object + # + parser = argparse.ArgumentParser(prog=__prog__, + usage=__usage__, + description=__copyright__, + conflict_handler='resolve') + parser.add_argument('--version', action='version', version=__version__) + parser.add_argument("-v", "--verbose", dest='Verbose', action="store_true", + help="increase output messages") + parser.add_argument("-q", "--quiet", dest='Quiet', action="store_true", + help="reduce output messages") + parser.add_argument("-o", "--output", dest='OutputFileName', type=str, + metavar='filename', help="specify the output filename", + required=True) + + # + # Parse command line arguments + # + args = parser.parse_args() + + # + # Write output file + # + args.OutputFile = open(args.OutputFileName, 'wb') + + DummyBuf = ctypes.create_string_buffer(TOTAL_SIZE) + Udf.CdromDesc = Udf.CDROM_VOLUME_DESCRIPTOR.from_buffer( + DummyBuf, + Udf.UDF_VRS_START_OFFSET) + Udf.CdromDesc.Id[0] = (ord('B')) + Udf.CdromDesc.Id[1] = (ord('E')) + Udf.CdromDesc.Id[2] = (ord('A')) + Udf.CdromDesc.Id[3] = (ord('0')) + Udf.CdromDesc.Id[4] = (ord('1')) + + Udf.CdromDesc = Udf.CDROM_VOLUME_DESCRIPTOR.from_buffer( + DummyBuf, + Udf.UDF_VRS_START_OFFSET + Udf.UDF_LOGICAL_SECTOR_SIZE) + Udf.CdromDesc.Id[0] = (ord('N')) + Udf.CdromDesc.Id[1] = (ord('S')) + Udf.CdromDesc.Id[2] = (ord('R')) + Udf.CdromDesc.Id[3] = (ord('0')) + Udf.CdromDesc.Id[4] = (ord('2')) + + Udf.CdromDesc = Udf.CDROM_VOLUME_DESCRIPTOR.from_buffer( + DummyBuf, + Udf.UDF_VRS_START_OFFSET + Udf.UDF_LOGICAL_SECTOR_SIZE * 2) + Udf.CdromDesc.Id[0] = (ord('T')) + Udf.CdromDesc.Id[1] = (ord('E')) + Udf.CdromDesc.Id[2] = (ord('A')) + Udf.CdromDesc.Id[3] = (ord('0')) + Udf.CdromDesc.Id[4] = (ord('1')) + + AnchorDesc = Udf.UDF_ANCHOR_VOLUME_DESCRIPTOR_POINTER.from_buffer( + DummyBuf, + 0x100 * BLOCK_SIZE) + (AnchorDesc.DescriptorTag.TagIdentifier + ) = Udf.UDF_VOLUME_DESCRIPTOR_ID.UdfAnchorVolumeDescriptorPointer + + LastBlock = (TOTAL_SIZE + BLOCK_SIZE - 1) // BLOCK_SIZE # - 1 + Offset = (LastBlock - Udf.MAX_CORRECTION_BLOCKS_NUM) * BLOCK_SIZE + (AnchorDesc + ) = Udf.UDF_ANCHOR_VOLUME_DESCRIPTOR_POINTER.from_buffer(DummyBuf, Offset) + (AnchorDesc.DescriptorTag.TagIdentifier + ) = Udf.UDF_VOLUME_DESCRIPTOR_ID.UdfAnchorVolumeDescriptorPointer + + SeqBlocksNum = 16 + SeqStartBlock = 16 + (AnchorDesc.MainVolumeDescriptorSequenceExtent.ExtentLength + ) = SeqBlocksNum * BLOCK_SIZE + (AnchorDesc.MainVolumeDescriptorSequenceExtent.ExtentLocation + ) = SeqStartBlock + + Offset = SeqStartBlock * BLOCK_SIZE + DescTag = Udf.UDF_DESCRIPTOR_TAG.from_buffer(DummyBuf, Offset) + (DescTag.TagIdentifier + ) = Udf.UDF_VOLUME_DESCRIPTOR_ID.UdfTerminatingDescriptor + + args.OutputFile.write(DummyBuf) + + args.OutputFile.close() diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/Udf.py b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/Udf.py new file mode 100644 index 0000000..09e3a54 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/Udf.py @@ -0,0 +1,334 @@ +# @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import ctypes + +UDF_LOGICAL_SECTOR_SIZE = 0x800 +UDF_VRS_START_OFFSET = 0x8000 + +MAX_CORRECTION_BLOCKS_NUM = 512 + +UDF_BEA_IDENTIFIER = "BEA01" +UDF_NSR2_IDENTIFIER = "NSR02" +UDF_NSR3_IDENTIFIER = "NSR03" +UDF_TEA_IDENTIFIER = "TEA01" + + +class UDF_VOLUME_DESCRIPTOR_ID: + UdfPrimaryVolumeDescriptor = 1 + UdfAnchorVolumeDescriptorPointer = 2 + UdfVolumeDescriptorPointer = 3 + UdfImplemenationUseVolumeDescriptor = 4 + UdfPartitionDescriptor = 5 + UdfLogicalVolumeDescriptor = 6 + UdfUnallocatedSpaceDescriptor = 7 + UdfTerminatingDescriptor = 8 + UdfLogicalVolumeIntegrityDescriptor = 9 + UdfFileSetDescriptor = 256 + UdfFileIdentifierDescriptor = 257 + UdfAllocationExtentDescriptor = 258 + UdfFileEntry = 261 + UdfExtendedFileEntry = 266 + + TagStringTable = [ + [UdfPrimaryVolumeDescriptor, "UdfPrimaryVolumeDescriptor"], + [UdfAnchorVolumeDescriptorPointer, "UdfAnchorVolumeDescriptorPointer"], + [UdfVolumeDescriptorPointer, "UdfVolumeDescriptorPointer"], + [UdfImplemenationUseVolumeDescriptor, + "UdfImplemenationUseVolumeDescriptor"], + [UdfPartitionDescriptor, "UdfPartitionDescriptor"], + [UdfLogicalVolumeDescriptor, "UdfLogicalVolumeDescriptor"], + [UdfUnallocatedSpaceDescriptor, "UdfUnallocatedSpaceDescriptor"], + [UdfTerminatingDescriptor, "UdfTerminatingDescriptor"], + [UdfLogicalVolumeIntegrityDescriptor, + "UdfLogicalVolumeIntegrityDescriptor"], + [UdfFileSetDescriptor, "UdfFileSetDescriptor"], + [UdfFileIdentifierDescriptor, "UdfFileIdentifierDescriptor"], + [UdfAllocationExtentDescriptor, "UdfAllocationExtentDescriptor"], + [UdfFileEntry, "UdfFileEntry"], + [UdfExtendedFileEntry, "UdfExtendedFileEntry"], + ] + + +class CDROM_VOLUME_DESCRIPTOR(ctypes.Structure): + _fields_ = [ + ('Type', ctypes.c_uint8), + ('Id', ctypes.ARRAY(ctypes.c_uint8, 5)), + ('Reserved', ctypes.ARRAY(ctypes.c_uint8, 82)), + ] + + +class UDF_DESCRIPTOR_TAG(ctypes.Structure): + _fields_ = [ + ('TagIdentifier', ctypes.c_uint16), + ('DescriptorVersion', ctypes.c_uint16), + ('TagChecksum', ctypes.c_uint8), + ('Reserved', ctypes.c_uint8), + ('TagSerialNumber', ctypes.c_uint16), + ('DescriptorCRC', ctypes.c_uint16), + ('DescriptorCRCLength', ctypes.c_uint16), + ('TagLocation', ctypes.c_uint32), + ] + + +class UDF_EXTENT_AD(ctypes.Structure): + _fields_ = [ + ('ExtentLength', ctypes.c_uint32), + ('ExtentLocation', ctypes.c_uint32), + ] + + +class UDF_CHAR_SPEC(ctypes.Structure): + _fields_ = [ + ('CharacterSetType', ctypes.c_uint8), + ('CharacterSetInfo', ctypes.ARRAY(ctypes.c_uint8, 63)), + ] + + +class UDF_ENTITY_ID_DOMAIN(ctypes.Structure): + _fields_ = [ + ('Flags', ctypes.c_uint8), + ('Identifier', ctypes.ARRAY(ctypes.c_uint8, 23)), + ('UdfRevision', ctypes.c_uint16), + ('DomainFlags', ctypes.c_uint8), + ('Reserved', ctypes.ARRAY(ctypes.c_uint8, 5)), + ] + + +class UDF_ENTITY_ID_ENTITY(ctypes.Structure): + _fields_ = [ + ('Flags', ctypes.c_uint8), + ('Identifier', ctypes.ARRAY(ctypes.c_uint8, 23)), + ('UdfRevision', ctypes.c_uint16), + ('OSClass', ctypes.c_uint8), + ('OSIdentifier', ctypes.c_uint8), + ('Reserved', ctypes.ARRAY(ctypes.c_uint8, 4)), + ] + + +class UDF_ENTITY_ID_IMPLEMENTATION_ENTITY(ctypes.Structure): + _fields_ = [ + ('Flags', ctypes.c_uint8), + ('Identifier', ctypes.ARRAY(ctypes.c_uint8, 23)), + ('OSClass', ctypes.c_uint8), + ('OSIdentifier', ctypes.c_uint8), + ('ImplementationUseArea', ctypes.ARRAY(ctypes.c_uint8, 6)), + ] + + +class UDF_ENTITY_ID_APPLICATION_ENTITY(ctypes.Structure): + _fields_ = [ + ('Flags', ctypes.c_uint8), + ('Identifier', ctypes.ARRAY(ctypes.c_uint8, 23)), + ('ApplicationUseArea', ctypes.ARRAY(ctypes.c_uint8, 8)), + ] + + +class UDF_ENTITY_ID(ctypes.Structure): + _fields_ = [ + ('Flags', ctypes.c_uint8), + ('Identifier', ctypes.ARRAY(ctypes.c_uint8, 23)), + ('Data', ctypes.ARRAY(ctypes.c_uint8, 8)), + ] + + +class UDF_TIMESTAMP(ctypes.Structure): + _fields_ = [ + ('TypeAndTimezone', ctypes.c_uint16), + ('Year', ctypes.c_int16), + ('Month', ctypes.c_uint8), + ('Day', ctypes.c_uint8), + ('Hour', ctypes.c_uint8), + ('Minute', ctypes.c_uint8), + ('Second', ctypes.c_uint8), + ('Centiseconds', ctypes.c_uint8), + ('HundredsOfMicroseconds', ctypes.c_uint8), + ('Microseconds', ctypes.c_uint8), + ] + + +class UDF_LONG_ALLOCATION_DESCRIPTOR(ctypes.Structure): + _fields_ = [ + ('ExtentLength', ctypes.c_uint32), + ('ExtentLocationLogicalBlockNumber', ctypes.c_uint32), + ('ExtentLocationPartitionReferenceNumber', ctypes.c_uint16), + ('ImplementationUse', ctypes.ARRAY(ctypes.c_uint8, 6)), + ] + + +class UDF_ANCHOR_VOLUME_DESCRIPTOR_POINTER(ctypes.Structure): + _fields_ = [ + ('DescriptorTag', UDF_DESCRIPTOR_TAG), + ('MainVolumeDescriptorSequenceExtent', UDF_EXTENT_AD), + ('ReserveVolumeDescriptorSequenceExtent', UDF_EXTENT_AD), + ('Reserved', ctypes.ARRAY(ctypes.c_uint8, 480)), + ] + + +class UDF_LOGICAL_VOLUME_DESCRIPTOR(ctypes.Structure): + _fields_ = [ + ('DescriptorTag', UDF_DESCRIPTOR_TAG), + ('VolumeDescriptorSequenceNumber', ctypes.c_uint32), + ('DescriptorCharacterSet', UDF_CHAR_SPEC), + ('LogicalVolumeIdentifier', ctypes.ARRAY(ctypes.c_uint8, 128)), + ('LogicalBlockSize', ctypes.c_uint32), + ('DomainIdentifier', UDF_ENTITY_ID_DOMAIN), + ('LogicalVolumeContentsUse', UDF_LONG_ALLOCATION_DESCRIPTOR), + ('MapTableLength', ctypes.c_uint32), + ('NumberOfPartitionMaps', ctypes.c_uint32), + ('ImplementationIdentifier', UDF_ENTITY_ID_IMPLEMENTATION_ENTITY), + ('ImplementationUse', ctypes.ARRAY(ctypes.c_uint8, 128)), + ('IntegritySequenceExtent', UDF_EXTENT_AD), + ('PartitionMaps', ctypes.ARRAY(ctypes.c_uint8, 6)), + ] + + +class UDF_PARTITION_DESCRIPTOR(ctypes.Structure): + _fields_ = [ + ('DescriptorTag', UDF_DESCRIPTOR_TAG), + ('VolumeDescriptorSequenceNumber', ctypes.c_uint32), + ('PartitionFlags', ctypes.c_uint16), + ('PartitionNumber', ctypes.c_uint16), + ('PartitionContents', UDF_ENTITY_ID), + ('PartitionContentsUse', ctypes.ARRAY(ctypes.c_uint8, 128)), + ('AccessType', ctypes.c_uint32), + ('PartitionStartingLocation', ctypes.c_uint32), + ('PartitionLength', ctypes.c_uint32), + ('ImplementationIdentifier', UDF_ENTITY_ID_IMPLEMENTATION_ENTITY), + ('ImplementationUse', ctypes.ARRAY(ctypes.c_uint8, 128)), + ('Reserved', ctypes.ARRAY(ctypes.c_uint8, 128)), + ] + + +class UDF_FILE_SET_DESCRIPTOR(ctypes.Structure): + _fields_ = [ + ('DescriptorTag', UDF_DESCRIPTOR_TAG), + ('RecordingDateAndTime', UDF_TIMESTAMP), + ('InterchangeLevel', ctypes.c_uint16), + ('MaximumInterchangeLevel', ctypes.c_uint16), + ('CharacterSetList', ctypes.c_uint32), + ('MaximumCharacterSetList', ctypes.c_uint32), + ('FileSetNumber', ctypes.c_uint32), + ('FileSetDescriptorNumber', ctypes.c_uint32), + ('LogicalVolumeIdentifierCharacterSet', UDF_CHAR_SPEC), + ('LogicalVolumeIdentifier', ctypes.ARRAY(ctypes.c_uint8, 128)), + ('FileSetCharacterSet', UDF_CHAR_SPEC), + ('FileSetIdentifier', ctypes.ARRAY(ctypes.c_uint8, 32)), + ('CopyrightFileIdentifier', ctypes.ARRAY(ctypes.c_uint8, 32)), + ('AbstractFileIdentifier', ctypes.ARRAY(ctypes.c_uint8, 32)), + ('RootDirectoryIcb', UDF_LONG_ALLOCATION_DESCRIPTOR), + ('DomainIdentifier', UDF_ENTITY_ID_DOMAIN), + ('NextExtent', UDF_LONG_ALLOCATION_DESCRIPTOR), + ('SystemStreamDirectoryIcb', UDF_LONG_ALLOCATION_DESCRIPTOR), + ('Reserved', ctypes.ARRAY(ctypes.c_uint8, 32)), + ] + + +class UDF_ICB_TAG(ctypes.Structure): + _fields_ = [ + ('PriorRecordNumberOfDirectEntries', ctypes.c_uint32), + ('StrategyType', ctypes.c_uint16), + ('StrategyParameter', ctypes.c_uint16), + ('MaximumNumberOfEntries', ctypes.c_uint16), + ('Reserved', ctypes.c_uint8), + ('FileType', ctypes.c_uint8), + ('ParentIcbLocationLogicalBlockNumber', ctypes.c_uint32), + ('ParentIcbLocationPartitionReferenceNumber', ctypes.c_uint16), + ('Flags', ctypes.c_uint16), + ] + + +class UDF_EXTENDED_FILE_ENTRY(ctypes.Structure): + _fields_ = [ + ('DescriptorTag', UDF_DESCRIPTOR_TAG), + ('IcbTag', UDF_ICB_TAG), + ('Uid', ctypes.c_uint32), + ('Gid', ctypes.c_uint32), + ('Permissions', ctypes.c_uint32), + ('FileLinkCount', ctypes.c_uint16), + ('RecordFormat', ctypes.c_uint8), + ('RecordDisplayAttributes', ctypes.c_uint8), + ('RecordLength', ctypes.c_uint32), + ('InformationLength', ctypes.c_uint64), + ('ObjectSize', ctypes.c_uint64), + ('LogicalBlocksRecorded', ctypes.c_uint64), + ('AccessTime', UDF_TIMESTAMP), + ('ModificationTime', UDF_TIMESTAMP), + ('CreationTime', UDF_TIMESTAMP), + ('AttributeTime', UDF_TIMESTAMP), + ('CheckPoint', ctypes.c_uint32), + ('Reserved', ctypes.c_uint32), + ('ExtendedAttributeIcb', UDF_LONG_ALLOCATION_DESCRIPTOR), + ('StreamDirectoryIcb', UDF_LONG_ALLOCATION_DESCRIPTOR), + ('ImplementationIdentifier', UDF_ENTITY_ID_IMPLEMENTATION_ENTITY), + ('UniqueId', ctypes.c_uint64), + ('LengthOfExtendedAttributes', ctypes.c_uint32), + ('LengthOfAllocationDescriptors', ctypes.c_uint32), + ] + + +class UDF_FILE_ENTRY(ctypes.Structure): + _fields_ = [ + ('DescriptorTag', UDF_DESCRIPTOR_TAG), + ('IcbTag', UDF_ICB_TAG), + ('Uid', ctypes.c_uint32), + ('Gid', ctypes.c_uint32), + ('Permissions', ctypes.c_uint32), + ('FileLinkCount', ctypes.c_uint16), + ('RecordFormat', ctypes.c_uint8), + ('RecordDisplayAttributes', ctypes.c_uint8), + ('RecordLength', ctypes.c_uint32), + ('InformationLength', ctypes.c_uint64), + ('LogicalBlocksRecorded', ctypes.c_uint64), + ('AccessTime', UDF_TIMESTAMP), + ('ModificationTime', UDF_TIMESTAMP), + ('AttributeTime', UDF_TIMESTAMP), + ('CheckPoint', ctypes.c_uint32), + ('ExtendedAttributeIcb', UDF_LONG_ALLOCATION_DESCRIPTOR), + ('ImplementationIdentifier', UDF_ENTITY_ID_IMPLEMENTATION_ENTITY), + ('UniqueId', ctypes.c_uint64), + ('LengthOfExtendedAttributes', ctypes.c_uint32), + ('LengthOfAllocationDescriptors', ctypes.c_uint32), + ] + + +class UDF_FILE_IDENTIFIER_DESCRIPTOR(ctypes.Structure): + _fields_ = [ + ('DescriptorTag', UDF_DESCRIPTOR_TAG), + ('FileVersionNumber', ctypes.c_uint16), + ('FileCharacteristics', ctypes.c_uint8), + ('LengthOfFileIdentifier', ctypes.c_uint8), + ('Icb', UDF_LONG_ALLOCATION_DESCRIPTOR), + ('LengthOfImplementationUse', ctypes.c_uint16), + ('Pad', ctypes.c_uint16), + ] + + +class UDF_PRIMARY_VOLUME_DESCRIPTOR(ctypes.Structure): + _fields_ = [ + ('DescriptorTag', UDF_DESCRIPTOR_TAG), + ('VolumeDescriptorSequenceNumber', ctypes.c_uint32), + ('PrimaryVolumeDescriptorNumber', ctypes.c_uint32), + ('VolumeIdentifier', ctypes.ARRAY(ctypes.c_uint8, 32)), + ('VolumeSequenceNumber', ctypes.c_uint16), + ('MaximumVolumeSequenceNumber', ctypes.c_uint16), + ('InterchangeLevel', ctypes.c_uint16), + ('MaximumInterchangeLevel', ctypes.c_uint16), + ('CharacterSetList', ctypes.c_uint32), + ('MaximumCharacterSetList', ctypes.c_uint32), + ('VolumeSetIdentifier', ctypes.ARRAY(ctypes.c_uint8, 128)), + ('DescriptorCharacterSet', UDF_CHAR_SPEC), + ('ExplanatoryCharacterSet', UDF_CHAR_SPEC), + ('VolumeAbstract', UDF_EXTENT_AD), + ('VolumeCopyrightNotice', UDF_EXTENT_AD), + ('ApplicationIdentifier', UDF_ENTITY_ID_APPLICATION_ENTITY), + ('RecordingDateAndTime', UDF_TIMESTAMP), + ('ImplementationIdentifier', UDF_ENTITY_ID_IMPLEMENTATION_ENTITY), + ('ImplementationUse', ctypes.ARRAY(ctypes.c_uint8, 64)), + ('PredecessorVolumeDescriptorSequenceLocation', ctypes.c_uint32), + ('Flags', ctypes.c_uint16), + ('Reserved', ctypes.ARRAY(ctypes.c_uint8, 22)), + ] diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/__init__.py b/HBFA/UefiHostFuzzTestCasePkg/Seed/UDF/Script/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/USB/Raw/Usb.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/USB/Raw/Usb.bin new file mode 100644 index 0000000000000000000000000000000000000000..4636cd5485773a67f1014fa5f5bf810841b4f1bd GIT binary patch literal 32 hcmd;NVPIfnW@KbwXKiF=;NVi^WE5afVsK=H@&OsF0rvm^ literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/VariableSmm/Raw/VarSmm.bin b/HBFA/UefiHostFuzzTestCasePkg/Seed/VariableSmm/Raw/VarSmm.bin new file mode 100644 index 0000000000000000000000000000000000000000..af693879f365964830aa624a2a9dc0a7dd7396e7 GIT binary patch literal 72 hcmZQ%zzw9Y}km=H%ongy$FKq$t940{}t21Xut7 literal 0 HcmV?d00001 diff --git a/HBFA/UefiHostFuzzTestCasePkg/Seed/readme.txt b/HBFA/UefiHostFuzzTestCasePkg/Seed/readme.txt new file mode 100644 index 0000000..58eb527 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/Seed/readme.txt @@ -0,0 +1,38 @@ +UDF: +-- SeedGenUdf.py: Generate a simple UDF partition as seed + python SeedGenUdf.py -o Seed\Udf.bin +-- Udf.py: UDF definition + +Mutator: +-- MutatorSimple.py: Randomize UINT8, UINT16, UINT32, UINT64 in a given buffer + python MutatorSimple.py Seed\XXX.bin -e TestXXX.exe + +Include: +-- Uefi.py: UEFI definition + +TPM: +-- SeedGenTpm2Response.py + +==================================================================================== + Mapping List +==================================================================================== +Case Name: Seed Location: +TestTpm2CommandLib HBFA\UefiHostFuzzTestCasePkg\Seed\TPM\Raw +TestBmpSupportLib HBFA\UefiHostFuzzTestCasePkg\Seed\BMP\Raw +TestPartition HBFA\UefiHostFuzzTestCasePkg\Seed\UDF\Raw\Partition +TestUdf HBFA\UefiHostFuzzTestCasePkg\Seed\UDF\Raw\FileSystem +TestUsb HBFA\UefiHostFuzzTestCasePkg\Seed\USB\Raw +TestPeiUsb HBFA\UefiHostFuzzTestCasePkg\Seed\USB\Raw +TestVariableSmm HBFA\UefiHostFuzzTestCasePkg\Seed\VariableSmm\Raw +TestFmpAuthenticationLibPkcs7 HBFA\UefiHostFuzzTestCasePkg\Seed\Capsule +TestFmpAuthenticationLibRsa2048Sha256 HBFA\UefiHostFuzzTestCasePkg\Seed\Capsule +TestCapsulePei HBFA\UefiHostFuzzTestCasePkg\Seed\Capsule +TestFileName HBFA\UefiHostFuzzTestCasePkg\Seed\UDF\Raw\FileName +TestPeiGpt HBFA\UefiHostFuzzTestCasePkg\Seed\Gpt\Raw +TestValidateTdvfCfv HBFA\UefiHostFuzzTestCasePkg\Seed\Cfv +TestTcg2MeasureGptTable HBFA\UefiHostFuzzTestCasePkg\Seed\Gpt +TestTcg2MeasurePeImage # PE format image +TestVirtioPciDevice HBFA\UefiHostFuzzTestCasePkg\Seed\Blk +TestVirtioBlk10 HBFA\UefiHostFuzzTestCasePkg\Seed\Blk +TestVirtioBlk HBFA\UefiHostFuzzTestCasePkg\Seed\Blk +TestVirtioBlkReadWrite HBFA\UefiHostFuzzTestCasePkg\Seed\Blk \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.c new file mode 100644 index 0000000..2909233 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.c @@ -0,0 +1,49 @@ +/** @file + +Copyright (c) 2022, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#define TOTAL_SIZE (512 * 1024) +/* 384 kB */ +#define MAX_LEN (384 * 1024) + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ +Traverse_SignatureList(TestBuffer, TestBufferSize); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.inf new file mode 100644 index 0000000..209c285 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.inf @@ -0,0 +1,44 @@ +## @file +# SPDM library. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestSignatureList + FILE_GUID = 77D7770D-158E-4354-B813-B8792A0E982F + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 AARCH64 +# + +[Sources] + TestSignatureList.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + DeviceSecurityPkg/DeviceSecurityPkg.dec + CryptoPkg/CryptoPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + DebugLib + RngLib + MemoryAllocationLib + ToolChainHarnessLib + TestSignListLib + +[Guids] + gEdkiiDeviceSignatureDatabaseGuid ## CONSUMES + gEfiCertX509Guid ## CONSUMES diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/CreateErrorInjectionProfile.py b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/CreateErrorInjectionProfile.py new file mode 100644 index 0000000..5403f7c --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/CreateErrorInjectionProfile.py @@ -0,0 +1,77 @@ +# @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import shutil +import sys +try: + import ConfigParser as ConfigParser +except Exception as e: + print("Import for ConfigParser not found, attempting configparser: " + "%s" % e) + import configparser as ConfigParser +import argparse + +Case_Path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'Case') + + +class myconf(ConfigParser.RawConfigParser): + def __init__(self, defaults=None): + ConfigParser.RawConfigParser.__init__(self, defaults=None) + + def optionxform(self, optionstr): + return optionstr + + +class errorInjection(): + def __init__(self, Num): + self.CallErrorCountNum = int(Num) + + def run(self): + if os.path.exists(Case_Path): + shutil.rmtree(Case_Path) + os.makedirs(Case_Path) + else: + os.makedirs(Case_Path) + Case_Count_Num = 1 + for CountNum in range(1, self.CallErrorCountNum + 1): + print('#######################################') + print('Current CallErrorCountNum: {}'.format(CountNum)) + print('#######################################') + for count in range(2): + CaseName = 'test_' + str(Case_Count_Num) + '.ini' + self.create_tcs(os.path.join(Case_Path, CaseName), CountNum, + count) + Case_Count_Num = Case_Count_Num + 1 + + def create_tcs(self, tcs_file, num, count): + conf = myconf() + if count == 0: + conf.add_section('AllocatePages') + conf.set('AllocatePages', 'CallErrorCount', num) + conf.set('AllocatePages', 'ReturnValue', 0) + elif count == 1: + conf.add_section('FatReadBlock') + conf.set('FatReadBlock', 'CallErrorCount', num) + conf.set('FatReadBlock', 'ReturnValue', 'EFI_DEVICE_ERROR') + else: + pass + + with open(tcs_file, 'w') as f: + conf.write(f) + + +if __name__ == '__main__': + # # # Opt Parser + parser = argparse.ArgumentParser() + parser.add_argument("-c", dest="CallErrorCountNum", + help="CallErrorCount number,if CallErrorCount = N," + "script will try CallErrorCount = 1 ~ CallErrorCount" + " = N", default=None) + + options = parser.parse_args(sys.argv[1:]) + test = errorInjection(options.CallErrorCountNum) + test.run() diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.c new file mode 100644 index 0000000..24d4459 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.c @@ -0,0 +1,203 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include "../FatLitePeim.h" + +typedef struct _FUNC_HOOK FUNC_HOOK; + +typedef +UINTN +(EFIAPI *HOOK_FUNC_ENTER) ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +typedef +VOID +(EFIAPI *HOOK_FUNC_EXIT) ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +struct _FUNC_HOOK { + CHAR8 *Name; + UINTN Func; + UINTN HookFuncEnter; + UINTN HookFuncExit; + UINTN CallErrorCount; + UINTN ReturnValue; + UINTN CurrentCallCount; +} ; + +BOOLEAN mInitDone; + +UINTN +EFIAPI +CommonEnter ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FuncHook->CurrentCallCount++; + if (FuncHook->CurrentCallCount == FuncHook->CallErrorCount) { + //SetSkipReturnValue (EntryContext, FuncHook->ReturnValue); + if (FuncHook->Func == (UINTN)AllocatePages) { + SetParameterValue (EntryContext, 1, (UINTN)-1); + } else if (FuncHook->Func == (UINTN)FatReadBlock) { + SetParameterValue64 (EntryContext, 2, PEI_FAT_MAX_BLOCK_DEVICE); + } + return 1; + } + return 0; +} + +VOID +EFIAPI +CommonExit ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + if (FuncHook->CurrentCallCount == FuncHook->CallErrorCount) { + SetReturnValue (ExitContext, FuncHook->ReturnValue); + } + return ; +} + +GLOBAL_REMOVE_IF_UNREFERENCED FUNC_HOOK mFuncHook[] = { + {"AllocatePages", (UINTN)AllocatePages, (UINTN)CommonEnter, (UINTN)CommonExit}, + {"FatReadBlock", (UINTN)FatReadBlock, (UINTN)CommonEnter, (UINTN)CommonExit}, +}; + +FUNC_HOOK * +GetFuncHook ( + IN UINTN FuncAddr + ) +{ + UINTN Index; + for (Index = 0; Index < ARRAY_SIZE(mFuncHook); Index++) { + if (FuncAddr == mFuncHook[Index].Func) { + return &mFuncHook[Index]; + } + } + return NULL; +} + +UINTN +EFIAPI +FunctionEnter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FUNC_HOOK *FuncHook; + HOOK_FUNC_ENTER HookFunc; + + if (!mInitDone) { + return 0; + } + + FuncHook = GetFuncHook (FunctionAddress); + if (FuncHook == NULL) { + return 0; + } + if (FuncHook->HookFuncEnter == 0) { + return 0; + } + HookFunc = (HOOK_FUNC_ENTER)(FuncHook->HookFuncEnter); + return HookFunc (FuncHook, EntryContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +FunctionExit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FUNC_HOOK *FuncHook; + HOOK_FUNC_EXIT HookFunc; + + if (!mInitDone) { + return ; + } + + FuncHook = GetFuncHook (FunctionAddress); + if (FuncHook == NULL) { + return ; + } + if (FuncHook->HookFuncExit == 0) { + return ; + } + HookFunc = (HOOK_FUNC_EXIT)(FuncHook->HookFuncExit); + HookFunc (FuncHook, ExitContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +InstrumentHookLibInit ( + IN UINT8 *DataBuffer, + IN UINTN BufferSize + ) +{ + VOID *Context; + UINTN Index; + EFI_STATUS Status; + + Context = OpenIniFile (DataBuffer, BufferSize); + + for (Index = 0; Index < ARRAY_SIZE(mFuncHook); Index++) { + Status = GetDecimalUintnFromDataFile ( + Context, + mFuncHook[Index].Name, + "CallErrorCount", + &mFuncHook[Index].CallErrorCount + ); + if (EFI_ERROR(Status)) { + continue ; + } + + Status = GetEfiStatusFromDataFile ( + Context, + mFuncHook[Index].Name, + "ReturnValue", + &mFuncHook[Index].ReturnValue + ); + if (EFI_ERROR(Status)) { + Status = GetHexUintnFromDataFile ( + Context, + mFuncHook[Index].Name, + "ReturnValue", + &mFuncHook[Index].ReturnValue + ); + } + } + + CloseIniFile (Context); + + mInitDone = TRUE; +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.inf new file mode 100644 index 0000000..a98818f --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.inf @@ -0,0 +1,41 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = InstrumentHookLibTestPeiGpt + FILE_GUID = 0D208A61-B4BA-488D-85E9-4C12F533EE67 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = InstrumentHookLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + InstrumentHookLibTestPeiGpt.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + IniParsingLib + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatLiteLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatLiteLib.c new file mode 100644 index 0000000..6832569 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatLiteLib.c @@ -0,0 +1,56 @@ +/** @file + General purpose supporting routines for FAT recovery PEIM + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "FatLitePeim.h" + +EFI_STATUS +FatReadBlock ( + IN PEI_FAT_PRIVATE_DATA *PrivateData, + IN UINTN BlockDeviceNo, + IN EFI_PEI_LBA Lba, + IN UINTN BufferSize, + OUT VOID *Buffer + ) +{ + PEI_FAT_BLOCK_DEVICE *BlockDev; + + if (BlockDeviceNo > PEI_FAT_MAX_BLOCK_DEVICE - 1) { + return EFI_DEVICE_ERROR; + } + + BlockDev = &(PrivateData->BlockDevice[BlockDeviceNo]); + + if (BufferSize > MultU64x32 (BlockDev->LastBlock - Lba + 1, BlockDev->BlockSize)) { + return EFI_DEVICE_ERROR; + } + + if (Buffer == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (BufferSize == 0) { + return EFI_SUCCESS; + } + + if ((BufferSize % BlockDev->BlockSize) != 0) { + return EFI_BAD_BUFFER_SIZE; + } + + if (Lba > BlockDev->LastBlock) { + return EFI_INVALID_PARAMETER; + } + + CopyMem( + Buffer, + (VOID *)(UINTN)(BlockDev->StartingPos + MultU64x32(Lba, BlockDev->BlockSize)), + BufferSize + ); + + return EFI_SUCCESS; +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatPei.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatPei.inf new file mode 100644 index 0000000..636a267 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatPei.inf @@ -0,0 +1,70 @@ +## @file +# Lite Fat driver only used in Pei Phase. +# +# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = FatPei + MODULE_UNI_FILE = FatPei.uni + FILE_GUID = 5B60CCFD-1011-4BCF-B7D1-BB99CA96A603 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + + ENTRY_POINT = FatPeimEntry + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + FatPkg/FatPei/Gpt.c + FatLiteLib.c + FatPkg/FatPei/FatLiteApi.h + FatPkg/FatPei/FatLitePeim.h + FatPkg/FatPei/FatLiteFmt.h + + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + + +[LibraryClasses] + PcdLib + BaseMemoryLib + MemoryAllocationLib + PeimEntryPoint + BaseLib + DebugLib + PeiServicesTablePointerLib + PeiServicesLib + + +[Guids] + gRecoveryOnFatUsbDiskGuid ## SOMETIMES_CONSUMES ## UNDEFINED + gRecoveryOnFatIdeDiskGuid ## SOMETIMES_CONSUMES ## UNDEFINED + gRecoveryOnFatFloppyDiskGuid ## SOMETIMES_CONSUMES ## UNDEFINED + gRecoveryOnFatNvmeDiskGuid ## SOMETIMES_CONSUMES ## UNDEFINED + gEfiPartTypeUnusedGuid ## SOMETIMES_CONSUMES ## UNDEFINED + + +[Ppis] + gEfiPeiVirtualBlockIoPpiGuid ## SOMETIMES_CONSUMES PPI_NOTIFY + gEfiPeiVirtualBlockIo2PpiGuid ## SOMETIMES_CONSUMES PPI_NOTIFY + gEfiPeiDeviceRecoveryModulePpiGuid ## SOMETIMES_PRODUCES + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName ## CONSUMES + +[Depex] + gEfiPeiMemoryDiscoveredPpiGuid + +[UserExtensions.TianoCore."ExtraFiles"] + FatPeiExtra.uni diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.c new file mode 100644 index 0000000..c101058 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.c @@ -0,0 +1,235 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include "FatLitePeim.h" + +BOOLEAN +FatFindGptPartitions( + IN PEI_FAT_PRIVATE_DATA *PrivateData, + IN UINTN ParentBlockDevNo +); + +#define TOTAL_SIZE (512 * 1024) +#define BLOCK_SIZE (512) + +VOID +FixBuffer ( + UINT8 *TestBuffer, + UINTN BufferSize, + UINT32 BlockSize + ) +{ + EFI_PARTITION_TABLE_HEADER *PrimaryHeader; + EFI_PARTITION_TABLE_HEADER *BackupHeader; + EFI_LBA LastBlock; + UINT8 *Ptr; + + PrimaryHeader = NULL; + BackupHeader = NULL; + + LastBlock = (BufferSize + BlockSize - 1) / BlockSize - 1; + + PrimaryHeader = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(PRIMARY_PART_HEADER_LBA, BlockSize)); + if (PrimaryHeader->PartitionEntryLBA <= LastBlock -1 && MultU64x32(PrimaryHeader->PartitionEntryLBA, BlockSize) + MultU64x32(PrimaryHeader->NumberOfPartitionEntries, PrimaryHeader->SizeOfPartitionEntry) < BufferSize) { + Ptr = TestBuffer + MultU64x32(PrimaryHeader->PartitionEntryLBA, BlockSize); + PrimaryHeader->PartitionEntryArrayCRC32 = CalculateCrc32(Ptr, (UINTN)MultU64x32(PrimaryHeader->NumberOfPartitionEntries, PrimaryHeader->SizeOfPartitionEntry)); + } + + if (PrimaryHeader->Header.HeaderSize + MultU64x32(PRIMARY_PART_HEADER_LBA, BlockSize) < BufferSize) { + PrimaryHeader->Header.CRC32 = 0; + PrimaryHeader->Header.CRC32 = CalculateCrc32(PrimaryHeader, PrimaryHeader->Header.HeaderSize); + } + + + BackupHeader = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(LastBlock, BlockSize)); + if (BackupHeader->PartitionEntryLBA <= LastBlock - 1 && MultU64x32(BackupHeader->PartitionEntryLBA, BlockSize) + MultU64x32(BackupHeader->NumberOfPartitionEntries, BackupHeader->SizeOfPartitionEntry) < BufferSize) { + Ptr = TestBuffer + MultU64x32(BackupHeader->PartitionEntryLBA, BlockSize); + BackupHeader->PartitionEntryArrayCRC32 = CalculateCrc32(Ptr, (UINTN)MultU64x32(BackupHeader->NumberOfPartitionEntries, BackupHeader->SizeOfPartitionEntry)); + } + + if (BackupHeader->Header.HeaderSize + MultU64x32(LastBlock, BlockSize) < BufferSize) { + BackupHeader->Header.CRC32 = 0; + BackupHeader->Header.CRC32 = CalculateCrc32(BackupHeader, BackupHeader->Header.HeaderSize); + } +} + +VOID +FixBuffer0( + UINT8 *TestBuffer, + UINTN BufferSize, + UINT32 BlockSize +) +{ + EFI_PARTITION_TABLE_HEADER *PrimaryHeader; + EFI_PARTITION_TABLE_HEADER *BackupHeader; + EFI_LBA LastBlock; + + PrimaryHeader = NULL; + BackupHeader = NULL; + + LastBlock = (BufferSize + BlockSize - 1) / BlockSize - 1; + + PrimaryHeader = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(PRIMARY_PART_HEADER_LBA, BlockSize)); + PrimaryHeader->PartitionEntryArrayCRC32 = 0; + PrimaryHeader->Header.CRC32 = 0; + + BackupHeader = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(LastBlock, BlockSize)); + BackupHeader->PartitionEntryArrayCRC32 = 0; + BackupHeader->Header.CRC32 = 0; +} + +EFI_STATUS +CreatePrivateData( + UINT8 *TestBuffer, + UINTN BufferSize, + UINT32 BlockSize, + UINTN ParentBlockDevNo, + UINTN BlockDeviceCont, + PEI_FAT_PRIVATE_DATA **PrivateData +) +{ + PEI_FAT_PRIVATE_DATA *TestPrivateData; + TestPrivateData = malloc (sizeof(PEI_FAT_PRIVATE_DATA)); + if (TestPrivateData == NULL) { + return EFI_OUT_OF_RESOURCES; + } + memset (TestPrivateData, 0, sizeof(PEI_FAT_PRIVATE_DATA)); + + TestPrivateData->BlockDevice[ParentBlockDevNo].BlockSize = BlockSize; + TestPrivateData->BlockDevice[ParentBlockDevNo].LastBlock = (BufferSize + TestPrivateData->BlockDevice[ParentBlockDevNo].BlockSize - 1) / TestPrivateData->BlockDevice[ParentBlockDevNo].BlockSize - 1; + TestPrivateData->BlockDevice[ParentBlockDevNo].StartingPos = (UINTN)TestBuffer; + TestPrivateData->BlockDevice[ParentBlockDevNo].ParentDevNo = ParentBlockDevNo; + TestPrivateData->BlockDeviceCount = BlockDeviceCont; + + *PrivateData = TestPrivateData; + return EFI_SUCCESS; +} + +VOID +TestGpt( + UINT8 *TestBuffer, + UINTN TestBufferSize, + UINT32 BlockSize, + UINTN ParentBlockDevNo, + UINTN BlockDevCount +) +{ + PEI_FAT_PRIVATE_DATA *PrivateData; + + PrivateData = NULL; + if (EFI_ERROR(CreatePrivateData(TestBuffer, TestBufferSize, BlockSize, ParentBlockDevNo, BlockDevCount, &PrivateData))) + return; + + // fuzz function: + // buffer overflow, crash will be detected at place. + // only care about security, not for function bug. + // + // try to separate EFI lib, use stdlib function. + // no asm code. + FatFindGptPartitions( + PrivateData, + ParentBlockDevNo + ); + free(PrivateData); +} + +#ifndef TEST_WITH_KLEE +VOID +GetBlockSize( + IN UINT8 *TestBuffer, + IN UINTN TestBufferSize, + OUT UINT32 *RtnBlockSize +) +{ + UINT32 BlockSize; + EFI_PARTITION_TABLE_HEADER *PartHdr; + + BlockSize = 512; + if (MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)512) >= TestBufferSize) + goto Done; + PartHdr = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)512)); + if (PartHdr->Header.Signature == EFI_PTAB_HEADER_ID) { + BlockSize = 512; + goto Done; + } + if (MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)1024) >= TestBufferSize) + goto Done; + PartHdr = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)1024)); + if (PartHdr->Header.Signature == EFI_PTAB_HEADER_ID) { + BlockSize = 1024; + goto Done; + } + if (MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)2048) >= TestBufferSize) + goto Done; + PartHdr = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)2048)); + if (PartHdr->Header.Signature == EFI_PTAB_HEADER_ID) { + BlockSize = 2048; + goto Done; + } + if (MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)4096) >= TestBufferSize) + goto Done; + PartHdr = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)4096)); + if (PartHdr->Header.Signature == EFI_PTAB_HEADER_ID) { + BlockSize = 4096; + goto Done; + } + if (MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)8192) >= TestBufferSize) + goto Done; + PartHdr = (EFI_PARTITION_TABLE_HEADER*)(TestBuffer + MultU64x32(PRIMARY_PART_HEADER_LBA, (UINT32)8192)); + if (PartHdr->Header.Signature == EFI_PTAB_HEADER_ID) { + BlockSize = 8192; + goto Done; + } + BlockSize = 16384; + +Done: + *RtnBlockSize = BlockSize; +} +#endif + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + UINT32 BlockSize; + +#ifdef TEST_WITH_KLEE + BlockSize = BLOCK_SIZE; +#else + GetBlockSize(TestBuffer, TestBufferSize, &BlockSize); + FixBuffer (TestBuffer, TestBufferSize, BlockSize); +#endif + TestGpt(TestBuffer, TestBufferSize, BlockSize, 63, 0); + TestGpt(TestBuffer, TestBufferSize, BlockSize, 0, 64); + TestGpt(TestBuffer, TestBufferSize, BlockSize, 0, 0); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.inf new file mode 100644 index 0000000..79a6b9d --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.inf @@ -0,0 +1,42 @@ +## @file +# Component description file for TestPeiGpt module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestPeiGpt + FILE_GUID = 70823DB1-63E0-4F4F-9161-ECB21AAEF520 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestPeiGpt.c + FatPkg/FatPei/FatLiteApi.h + FatPkg/FatPei/FatLitePeim.h + FatPkg/FatPei/FatLiteFmt.h + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + ToolChainHarnessLib + +[Guids] + gEfiPartTypeUnusedGuid + diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciMode.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciMode.c new file mode 100644 index 0000000..b5e391e --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciMode.c @@ -0,0 +1,2137 @@ +/** @file + The AhciPei driver is used to manage ATA hard disk device working under AHCI + mode at PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "AhciPei.h" + +#define ATA_CMD_TRUST_NON_DATA 0x5B +#define ATA_CMD_TRUST_RECEIVE 0x5C +#define ATA_CMD_TRUST_SEND 0x5E + +// +// Look up table (IsWrite) for EFI_ATA_PASS_THRU_CMD_PROTOCOL +// +EFI_ATA_PASS_THRU_CMD_PROTOCOL mAtaPassThruCmdProtocols[2] = { + EFI_ATA_PASS_THRU_PROTOCOL_PIO_DATA_IN, + EFI_ATA_PASS_THRU_PROTOCOL_PIO_DATA_OUT +}; + +// +// Look up table (Lba48Bit, IsIsWrite) for ATA_CMD +// +UINT8 mAtaCommands[2][2] = { + { + ATA_CMD_READ_SECTORS, // 28-bit LBA; PIO read + ATA_CMD_WRITE_SECTORS // 28-bit LBA; PIO write + }, + { + ATA_CMD_READ_SECTORS_EXT, // 48-bit LBA; PIO read + ATA_CMD_WRITE_SECTORS_EXT // 48-bit LBA; PIO write + } +}; + +// +// Look up table (IsTrustSend) for ATA_CMD +// +UINT8 mAtaTrustCommands[2] = { + ATA_CMD_TRUST_RECEIVE, // PIO read + ATA_CMD_TRUST_SEND // PIO write +}; + +// +// Look up table (Lba48Bit) for maximum transfer block number +// +#define MAX_28BIT_TRANSFER_BLOCK_NUM 0x100 +// +// Due to limited resource on VTd PEI DMA buffer size, driver limits the +// maximum transfer block number for 48-bit addressing. +// Setting to 0x800 here means 1M bytes for device with 512-byte block size. +// +#define MAX_48BIT_TRANSFER_BLOCK_NUM 0x800 + +UINT32 mMaxTransferBlockNumber[2] = { + MAX_28BIT_TRANSFER_BLOCK_NUM, + MAX_48BIT_TRANSFER_BLOCK_NUM +}; + +// +// The maximum total sectors count in 28 bit addressing mode +// +#define MAX_28BIT_ADDRESSING_CAPACITY 0xfffffff + + +/** + Read AHCI Operation register. + + @param[in] AhciBar AHCI bar address. + @param[in] Offset The operation register offset. + + @return The register content read. + +**/ +UINT32 +AhciReadReg ( + IN UINTN AhciBar, + IN UINT32 Offset + ) +{ + UINT32 Data; + + Data = 0; + //Data = MmioRead32 (AhciBar + Offset); // for fuzz + + return Data; +} + +/** + Write AHCI Operation register. + + @param[in] AhciBar AHCI bar address. + @param[in] Offset The operation register offset. + @param[in] Data The Data used to write down. + +**/ +VOID +AhciWriteReg ( + IN UINTN AhciBar, + IN UINT32 Offset, + IN UINT32 Data + ) +{ + //MmioWrite32 (AhciBar + Offset, Data); // for fuzz +} + +/** + Do AND operation with the value of AHCI Operation register. + + @param[in] AhciBar AHCI bar address. + @param[in] Offset The operation register offset. + @param[in] AndData The data used to do AND operation. + +**/ +VOID +AhciAndReg ( + IN UINTN AhciBar, + IN UINT32 Offset, + IN UINT32 AndData + ) +{ + UINT32 Data; + + Data = AhciReadReg (AhciBar, Offset); + Data &= AndData; + + AhciWriteReg (AhciBar, Offset, Data); +} + +/** + Do OR operation with the Value of AHCI Operation register. + + @param[in] AhciBar AHCI bar address. + @param[in] Offset The operation register offset. + @param[in] OrData The Data used to do OR operation. + +**/ +VOID +AhciOrReg ( + IN UINTN AhciBar, + IN UINT32 Offset, + IN UINT32 OrData + ) +{ + UINT32 Data; + + Data = AhciReadReg (AhciBar, Offset); + Data |= OrData; + + AhciWriteReg (AhciBar, Offset, Data); +} + +/** + Wait for memory set to the test Value. + + @param[in] AhciBar AHCI bar address. + @param[in] Offset The memory offset to test. + @param[in] MaskValue The mask Value of memory. + @param[in] TestValue The test Value of memory. + @param[in] Timeout The timeout, in 100ns units, for wait memory set. + + @retval EFI_DEVICE_ERROR The memory is not set. + @retval EFI_TIMEOUT The memory setting is time out. + @retval EFI_SUCCESS The memory is correct set. + +**/ +EFI_STATUS +EFIAPI +AhciWaitMmioSet ( + IN UINTN AhciBar, + IN UINT32 Offset, + IN UINT32 MaskValue, + IN UINT32 TestValue, + IN UINT64 Timeout + ) +{ + UINT32 Value; + UINT32 Delay; + + Delay = (UINT32) (DivU64x32(Timeout, 1000) + 1); + + do { + Value = AhciReadReg (AhciBar, Offset) & MaskValue; + + if (Value == TestValue) { + return EFI_SUCCESS; + } + + // + // Stall for 100 microseconds. + // + MicroSecondDelay (100); + + Delay--; + + } while (Delay > 0); + + return EFI_TIMEOUT; +} + +/** + Check the memory status to the test value. + + @param[in] Address The memory address to test. + @param[in] MaskValue The mask value of memory. + @param[in] TestValue The test value of memory. + + @retval EFI_NOT_READY The memory is not set. + @retval EFI_SUCCESS The memory is correct set. + +**/ +EFI_STATUS +AhciCheckMemSet ( + IN UINTN Address, + IN UINT32 MaskValue, + IN UINT32 TestValue + ) +{ + UINT32 Value; + + Value = *(volatile UINT32 *) Address; + Value &= MaskValue; + + if (Value == TestValue) { + return EFI_SUCCESS; + } else { + return EFI_NOT_READY; + } +} + +/** + Wait for the value of the specified system memory set to the test value. + + @param[in] Address The system memory address to test. + @param[in] MaskValue The mask value of memory. + @param[in] TestValue The test value of memory. + @param[in] Timeout The timeout, in 100ns units, for wait memory set. + + @retval EFI_TIMEOUT The system memory setting is time out. + @retval EFI_SUCCESS The system memory is correct set. + +**/ +EFI_STATUS +AhciWaitMemSet ( + IN EFI_PHYSICAL_ADDRESS Address, + IN UINT32 MaskValue, + IN UINT32 TestValue, + IN UINT64 Timeout + ) +{ + UINT32 Value; + UINT64 Delay; + BOOLEAN InfiniteWait; + + if (Timeout == 0) { + InfiniteWait = TRUE; + } else { + InfiniteWait = FALSE; + } + + Delay = DivU64x32 (Timeout, 1000) + 1; + + do { + // + // Access sytem memory to see if the value is the tested one. + // + // The system memory pointed by Address will be updated by the + // SATA Host Controller, "volatile" is introduced to prevent + // compiler from optimizing the access to the memory address + // to only read once. + // + Value = *(volatile UINT32 *) (UINTN) Address; + Value &= MaskValue; + + if (Value == TestValue) { + return EFI_SUCCESS; + } + + // + // Stall for 100 microseconds. + // + MicroSecondDelay (100); + + Delay--; + + } while (InfiniteWait || (Delay > 0)); + + return EFI_TIMEOUT; +} + +/** + + Clear the port interrupt and error status. It will also clear HBA interrupt + status. + + @param[in] AhciBar AHCI bar address. + @param[in] Port The number of port. + +**/ +VOID +AhciClearPortStatus ( + IN UINTN AhciBar, + IN UINT8 Port + ) +{ + UINT32 Offset; + + // + // Clear any error status + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_SERR; + AhciWriteReg (AhciBar, Offset, AhciReadReg (AhciBar, Offset)); + + // + // Clear any port interrupt status + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_IS; + AhciWriteReg (AhciBar, Offset, AhciReadReg (AhciBar, Offset)); + + // + // Clear any HBA interrupt status + // + AhciWriteReg (AhciBar, AHCI_IS_OFFSET, AhciReadReg (AhciBar, AHCI_IS_OFFSET)); +} + +/** + Enable the FIS running for giving port. + + @param[in] AhciBar AHCI bar address. + @param[in] Port The number of port. + @param[in] Timeout The timeout, in 100ns units, to enabling FIS. + + @retval EFI_DEVICE_ERROR The FIS enable setting fails. + @retval EFI_TIMEOUT The FIS enable setting is time out. + @retval EFI_SUCCESS The FIS enable successfully. + +**/ +EFI_STATUS +AhciEnableFisReceive ( + IN UINTN AhciBar, + IN UINT8 Port, + IN UINT64 Timeout + ) +{ + UINT32 Offset; + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + AhciOrReg (AhciBar, Offset, AHCI_PORT_CMD_FRE); + + return EFI_SUCCESS; +} + +/** + Disable the FIS running for giving port. + + @param[in] AhciBar AHCI bar address. + @param[in] Port The number of port. + @param[in] Timeout The timeout value of disabling FIS, uses 100ns as a unit. + + @retval EFI_DEVICE_ERROR The FIS disable setting fails. + @retval EFI_TIMEOUT The FIS disable setting is time out. + @retval EFI_UNSUPPORTED The port is in running state. + @retval EFI_SUCCESS The FIS disable successfully. + +**/ +EFI_STATUS +AhciDisableFisReceive ( + IN UINTN AhciBar, + IN UINT8 Port, + IN UINT64 Timeout + ) +{ + UINT32 Offset; + UINT32 Data; + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + Data = AhciReadReg (AhciBar, Offset); + + // + // Before disabling Fis receive, the DMA engine of the port should NOT be in + // running status. + // + if ((Data & (AHCI_PORT_CMD_ST | AHCI_PORT_CMD_CR)) != 0) { + return EFI_UNSUPPORTED; + } + + // + // Check if the Fis receive DMA engine for the port is running. + // + if ((Data & AHCI_PORT_CMD_FR) != AHCI_PORT_CMD_FR) { + return EFI_SUCCESS; + } + + AhciAndReg (AhciBar, Offset, (UINT32)~(AHCI_PORT_CMD_FRE)); + + return AhciWaitMmioSet ( + AhciBar, + Offset, + AHCI_PORT_CMD_FR, + 0, + Timeout + ); +} + +/** + Build the command list, command table and prepare the fis receiver. + + @param[in] Private The pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA. + @param[in] Port The number of port. + @param[in] PortMultiplier The number of port multiplier. + @param[in] FisIndex The offset index of the FIS base address. + @param[in] CommandFis The control fis will be used for the transfer. + @param[in] CommandList The command list will be used for the transfer. + @param[in] CommandSlotNumber The command slot will be used for the transfer. + @param[in,out] DataPhysicalAddr The pointer to the data buffer pci bus master + address. + @param[in] DataLength The data count to be transferred. + +**/ +VOID +AhciBuildCommand ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT8 Port, + IN UINT8 PortMultiplier, + IN UINT8 FisIndex, + IN EFI_AHCI_COMMAND_FIS *CommandFis, + IN EFI_AHCI_COMMAND_LIST *CommandList, + IN UINT8 CommandSlotNumber, + IN OUT VOID *DataPhysicalAddr, + IN UINT32 DataLength + ) +{ + EFI_AHCI_REGISTERS *AhciRegisters; + UINTN AhciBar; + UINT64 BaseAddr; + UINT32 PrdtNumber; + UINT32 PrdtIndex; + UINTN RemainedData; + UINTN MemAddr; + DATA_64 Data64; + UINT32 Offset; + + AhciRegisters = &Private->AhciRegisters; + AhciBar = Private->MmioBase; + + // + // Filling the PRDT + // + PrdtNumber = (UINT32)DivU64x32 ( + (UINT64)DataLength + AHCI_MAX_DATA_PER_PRDT - 1, + AHCI_MAX_DATA_PER_PRDT + ); + + // + // According to AHCI 1.3 spec, a PRDT entry can point to a maximum 4MB data block. + // It also limits that the maximum amount of the PRDT entry in the command table + // is 65535. + // Current driver implementation supports up to a maximum of AHCI_MAX_PRDT_NUMBER + // PRDT entries. + // + ASSERT (PrdtNumber <= AHCI_MAX_PRDT_NUMBER); + if (PrdtNumber > AHCI_MAX_PRDT_NUMBER) { + return; + } + + Data64.Uint64 = (UINTN) (AhciRegisters->AhciRFis) + sizeof (EFI_AHCI_RECEIVED_FIS) * FisIndex; + + BaseAddr = Data64.Uint64; + + ZeroMem ((VOID *)((UINTN) BaseAddr), sizeof (EFI_AHCI_RECEIVED_FIS)); + + ZeroMem (AhciRegisters->AhciCmdTable, sizeof (EFI_AHCI_COMMAND_TABLE)); + + CommandFis->AhciCFisPmNum = PortMultiplier; + + CopyMem (&AhciRegisters->AhciCmdTable->CommandFis, CommandFis, sizeof (EFI_AHCI_COMMAND_FIS)); + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + AhciAndReg (AhciBar, Offset, (UINT32)~(AHCI_PORT_CMD_DLAE | AHCI_PORT_CMD_ATAPI)); + + RemainedData = (UINTN) DataLength; + MemAddr = (UINTN) DataPhysicalAddr; + CommandList->AhciCmdPrdtl = PrdtNumber; + + for (PrdtIndex = 0; PrdtIndex < PrdtNumber; PrdtIndex++) { + if (RemainedData < AHCI_MAX_DATA_PER_PRDT) { + AhciRegisters->AhciCmdTable->PrdtTable[PrdtIndex].AhciPrdtDbc = (UINT32)RemainedData - 1; + } else { + AhciRegisters->AhciCmdTable->PrdtTable[PrdtIndex].AhciPrdtDbc = AHCI_MAX_DATA_PER_PRDT - 1; + } + + Data64.Uint64 = (UINT64)MemAddr; + AhciRegisters->AhciCmdTable->PrdtTable[PrdtIndex].AhciPrdtDba = Data64.Uint32.Lower32; + AhciRegisters->AhciCmdTable->PrdtTable[PrdtIndex].AhciPrdtDbau = Data64.Uint32.Upper32; + RemainedData -= AHCI_MAX_DATA_PER_PRDT; + MemAddr += AHCI_MAX_DATA_PER_PRDT; + } + + // + // Set the last PRDT to Interrupt On Complete + // + if (PrdtNumber > 0) { + AhciRegisters->AhciCmdTable->PrdtTable[PrdtNumber - 1].AhciPrdtIoc = 1; + } + + CopyMem ( + (VOID *) ((UINTN) AhciRegisters->AhciCmdList + (UINTN) CommandSlotNumber * sizeof (EFI_AHCI_COMMAND_LIST)), + CommandList, + sizeof (EFI_AHCI_COMMAND_LIST) + ); + + Data64.Uint64 = (UINT64)(UINTN) AhciRegisters->AhciCmdTable; + AhciRegisters->AhciCmdList[CommandSlotNumber].AhciCmdCtba = Data64.Uint32.Lower32; + AhciRegisters->AhciCmdList[CommandSlotNumber].AhciCmdCtbau = Data64.Uint32.Upper32; + AhciRegisters->AhciCmdList[CommandSlotNumber].AhciCmdPmp = PortMultiplier; +} + +/** + Buid a command FIS. + + @param[in,out] CmdFis A pointer to the EFI_AHCI_COMMAND_FIS data + structure. + @param[in] AtaCommandBlock A pointer to the EFI_ATA_COMMAND_BLOCK data + structure. + +**/ +VOID +AhciBuildCommandFis ( + IN OUT EFI_AHCI_COMMAND_FIS *CmdFis, + IN EFI_ATA_COMMAND_BLOCK *AtaCommandBlock + ) +{ + ZeroMem (CmdFis, sizeof (EFI_AHCI_COMMAND_FIS)); + + CmdFis->AhciCFisType = AHCI_FIS_REGISTER_H2D; + // + // Indicator it's a command + // + CmdFis->AhciCFisCmdInd = 0x1; + CmdFis->AhciCFisCmd = AtaCommandBlock->AtaCommand; + + CmdFis->AhciCFisFeature = AtaCommandBlock->AtaFeatures; + CmdFis->AhciCFisFeatureExp = AtaCommandBlock->AtaFeaturesExp; + + CmdFis->AhciCFisSecNum = AtaCommandBlock->AtaSectorNumber; + CmdFis->AhciCFisSecNumExp = AtaCommandBlock->AtaSectorNumberExp; + + CmdFis->AhciCFisClyLow = AtaCommandBlock->AtaCylinderLow; + CmdFis->AhciCFisClyLowExp = AtaCommandBlock->AtaCylinderLowExp; + + CmdFis->AhciCFisClyHigh = AtaCommandBlock->AtaCylinderHigh; + CmdFis->AhciCFisClyHighExp = AtaCommandBlock->AtaCylinderHighExp; + + CmdFis->AhciCFisSecCount = AtaCommandBlock->AtaSectorCount; + CmdFis->AhciCFisSecCountExp = AtaCommandBlock->AtaSectorCountExp; + + CmdFis->AhciCFisDevHead = (UINT8) (AtaCommandBlock->AtaDeviceHead | 0xE0); +} + +/** + Stop command running for giving port + + @param[in] AhciBar AHCI bar address. + @param[in] Port The number of port. + @param[in] Timeout The timeout value, in 100ns units, to stop. + + @retval EFI_DEVICE_ERROR The command stop unsuccessfully. + @retval EFI_TIMEOUT The operation is time out. + @retval EFI_SUCCESS The command stop successfully. + +**/ +EFI_STATUS +AhciStopCommand ( + IN UINTN AhciBar, + IN UINT8 Port, + IN UINT64 Timeout + ) +{ + UINT32 Offset; + UINT32 Data; + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + Data = AhciReadReg (AhciBar, Offset); + + if ((Data & (AHCI_PORT_CMD_ST | AHCI_PORT_CMD_CR)) == 0) { + return EFI_SUCCESS; + } + + if ((Data & AHCI_PORT_CMD_ST) != 0) { + AhciAndReg (AhciBar, Offset, (UINT32)~(AHCI_PORT_CMD_ST)); + } + + return AhciWaitMmioSet ( + AhciBar, + Offset, + AHCI_PORT_CMD_CR, + 0, + Timeout + ); +} + +/** + Start command for give slot on specific port. + + @param[in] AhciBar AHCI bar address. + @param[in] Port The number of port. + @param[in] CommandSlot The number of Command Slot. + @param[in] Timeout The timeout value, in 100ns units, to start. + + @retval EFI_DEVICE_ERROR The command start unsuccessfully. + @retval EFI_TIMEOUT The operation is time out. + @retval EFI_SUCCESS The command start successfully. + +**/ +EFI_STATUS +AhciStartCommand ( + IN UINTN AhciBar, + IN UINT8 Port, + IN UINT8 CommandSlot, + IN UINT64 Timeout + ) +{ + UINT32 CmdSlotBit; + EFI_STATUS Status; + UINT32 PortStatus; + UINT32 StartCmd; + UINT32 PortTfd; + UINT32 Offset; + UINT32 Capability; + + // + // Collect AHCI controller information + // + Capability = AhciReadReg (AhciBar, AHCI_CAPABILITY_OFFSET); + + CmdSlotBit = (UINT32) (1 << CommandSlot); + + AhciClearPortStatus ( + AhciBar, + Port + ); + + Status = AhciEnableFisReceive ( + AhciBar, + Port, + Timeout + ); + if (EFI_ERROR (Status)) { + return Status; + } + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + PortStatus = AhciReadReg (AhciBar, Offset); + + StartCmd = 0; + if ((PortStatus & AHCI_PORT_CMD_ALPE) != 0) { + StartCmd = AhciReadReg (AhciBar, Offset); + StartCmd &= ~AHCI_PORT_CMD_ICC_MASK; + StartCmd |= AHCI_PORT_CMD_ACTIVE; + } + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_TFD; + PortTfd = AhciReadReg (AhciBar, Offset); + + if ((PortTfd & (AHCI_PORT_TFD_BSY | AHCI_PORT_TFD_DRQ)) != 0) { + if ((Capability & BIT24) != 0) { + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + AhciOrReg (AhciBar, Offset, AHCI_PORT_CMD_CLO); + + AhciWaitMmioSet ( + AhciBar, + Offset, + AHCI_PORT_CMD_CLO, + 0, + Timeout + ); + } + } + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + AhciOrReg (AhciBar, Offset, AHCI_PORT_CMD_ST | StartCmd); + + // + // Setting the command + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CI; + AhciAndReg (AhciBar, Offset, 0); + AhciOrReg (AhciBar, Offset, CmdSlotBit); + + return EFI_SUCCESS; +} + +/** + Start a PIO Data transfer on specific port. + + @param[in] Private The pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA. + @param[in] Port The number of port. + @param[in] PortMultiplier The number of port multiplier. + @param[in] FisIndex The offset index of the FIS base address. + @param[in] Read The transfer direction. + @param[in] AtaCommandBlock The EFI_ATA_COMMAND_BLOCK data. + @param[in,out] AtaStatusBlock The EFI_ATA_STATUS_BLOCK data. + @param[in,out] MemoryAddr The pointer to the data buffer. + @param[in] DataCount The data count to be transferred. + @param[in] Timeout The timeout value of PIO data transfer, uses + 100ns as a unit. + + @retval EFI_DEVICE_ERROR The PIO data transfer abort with error occurs. + @retval EFI_TIMEOUT The operation is time out. + @retval EFI_UNSUPPORTED The device is not ready for transfer. + @retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources. + @retval EFI_SUCCESS The PIO data transfer executes successfully. + +**/ +EFI_STATUS +AhciPioTransfer ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT8 Port, + IN UINT8 PortMultiplier, + IN UINT8 FisIndex, + IN BOOLEAN Read, + IN EFI_ATA_COMMAND_BLOCK *AtaCommandBlock, + IN OUT EFI_ATA_STATUS_BLOCK *AtaStatusBlock, + IN OUT VOID *MemoryAddr, + IN UINT32 DataCount, + IN UINT64 Timeout + ) +{ + EFI_STATUS Status; + EDKII_IOMMU_OPERATION MapOp; + UINTN MapLength; + EFI_PHYSICAL_ADDRESS PhyAddr; + VOID *MapData; + EFI_AHCI_REGISTERS *AhciRegisters; + UINTN AhciBar; + BOOLEAN InfiniteWait; + UINT32 Offset; + UINT32 OldRfisLo; + UINT32 OldRfisHi; + UINT32 OldCmdListLo; + UINT32 OldCmdListHi; + DATA_64 Data64; + UINT32 FisBaseAddr; + UINT32 Delay; + EFI_AHCI_COMMAND_FIS CFis; + EFI_AHCI_COMMAND_LIST CmdList; + UINT32 PortTfd; + UINT32 PrdCount; + BOOLEAN PioFisReceived; + BOOLEAN D2hFisReceived; + + // + // Current driver implementation supports up to a maximum of AHCI_MAX_PRDT_NUMBER + // PRDT entries. + // + if (DataCount / (UINT32)AHCI_MAX_PRDT_NUMBER > AHCI_MAX_DATA_PER_PRDT) { + DEBUG (( + DEBUG_ERROR, + "%a: Driver only support a maximum of 0x%x PRDT entries, " + "current number of data byte 0x%x is too large, maximum allowed is 0x%x.\n", + __FUNCTION__, AHCI_MAX_PRDT_NUMBER, DataCount, + AHCI_MAX_PRDT_NUMBER * AHCI_MAX_DATA_PER_PRDT + )); + return EFI_UNSUPPORTED; + } + + MapOp = Read ? EdkiiIoMmuOperationBusMasterWrite : + EdkiiIoMmuOperationBusMasterRead; + MapLength = DataCount; + Status = IoMmuMap ( + MapOp, + MemoryAddr, + &MapLength, + &PhyAddr, + &MapData + ); + if (EFI_ERROR (Status) || (MapLength != DataCount)) { + DEBUG ((DEBUG_ERROR, "%a: Fail to map data buffer.\n", __FUNCTION__)); + return EFI_OUT_OF_RESOURCES; + } + + AhciRegisters = &Private->AhciRegisters; + AhciBar = Private->MmioBase; + InfiniteWait = (Timeout == 0) ? TRUE : FALSE; + + // + // Fill FIS base address register + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_FB; + OldRfisLo = AhciReadReg (AhciBar, Offset); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_FBU; + OldRfisHi = AhciReadReg (AhciBar, Offset); + Data64.Uint64 = (UINTN) (AhciRegisters->AhciRFis) + sizeof (EFI_AHCI_RECEIVED_FIS) * FisIndex; + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_FB; + AhciWriteReg (AhciBar, Offset, Data64.Uint32.Lower32); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_FBU; + AhciWriteReg (AhciBar, Offset, Data64.Uint32.Upper32); + + // + // Single task envrionment, we only use one command table for all port + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CLB; + OldCmdListLo = AhciReadReg (AhciBar, Offset); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CLBU; + OldCmdListHi = AhciReadReg (AhciBar, Offset); + Data64.Uint64 = (UINTN) (AhciRegisters->AhciCmdList); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CLB; + AhciWriteReg (AhciBar, Offset, Data64.Uint32.Lower32); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CLBU; + AhciWriteReg (AhciBar, Offset, Data64.Uint32.Upper32); + + // + // Package read needed + // + AhciBuildCommandFis (&CFis, AtaCommandBlock); + + ZeroMem (&CmdList, sizeof (EFI_AHCI_COMMAND_LIST)); + + CmdList.AhciCmdCfl = AHCI_FIS_REGISTER_H2D_LENGTH / 4; + CmdList.AhciCmdW = Read ? 0 : 1; + + AhciBuildCommand ( + Private, + Port, + PortMultiplier, + FisIndex, + &CFis, + &CmdList, + 0, + (VOID *)(UINTN)PhyAddr, + DataCount + ); + + Status = AhciStartCommand ( + AhciBar, + Port, + 0, + Timeout + ); + if (EFI_ERROR (Status)) { + goto Exit; + } + + // + // Checking the status and wait the driver sending Data + // + FisBaseAddr = (UINT32)(UINTN)AhciRegisters->AhciRFis + sizeof (EFI_AHCI_RECEIVED_FIS) * FisIndex; + if (Read) { + // + // Wait device sends the PIO setup fis before data transfer + // + Status = EFI_TIMEOUT; + Delay = (UINT32) DivU64x32 (Timeout, 1000) + 1; + do { + PioFisReceived = FALSE; + D2hFisReceived = FALSE; + Offset = FisBaseAddr + AHCI_PIO_FIS_OFFSET; + //Status = AhciCheckMemSet (Offset, AHCI_FIS_TYPE_MASK, AHCI_FIS_PIO_SETUP); + Status = EFI_SUCCESS; // for fuzz + if (!EFI_ERROR (Status)) { + DEBUG ((DEBUG_INFO, "%a: PioFisReceived.\n", __FUNCTION__)); + PioFisReceived = TRUE; + } + // + // According to SATA 2.6 spec section 11.7, D2h FIS means an error encountered. + // But Qemu and Marvel 9230 sata controller may just receive a D2h FIS from + // device after the transaction is finished successfully. + // To get better device compatibilities, we further check if the PxTFD's + // ERR bit is set. By this way, we can know if there is a real error happened. + // + Offset = FisBaseAddr + AHCI_D2H_FIS_OFFSET; + Status = AhciCheckMemSet (Offset, AHCI_FIS_TYPE_MASK, AHCI_FIS_REGISTER_D2H); + if (!EFI_ERROR (Status)) { + DEBUG ((DEBUG_INFO, "%a: D2hFisReceived.\n", __FUNCTION__)); + D2hFisReceived = TRUE; + } + + if (PioFisReceived || D2hFisReceived) { + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_TFD; + PortTfd = AhciReadReg (AhciBar, (UINT32) Offset); + // + // PxTFD will be updated if there is a D2H or SetupFIS received. + // + if ((PortTfd & AHCI_PORT_TFD_ERR) != 0) { + Status = EFI_DEVICE_ERROR; + break; + } + + //PrdCount = *(volatile UINT32 *) (&(AhciRegisters->AhciCmdList[0].AhciCmdPrdbc)); + PrdCount = DataCount; // for fuzz + if (PrdCount == DataCount) { + Status = EFI_SUCCESS; + break; + } + } + + // + // Stall for 100 microseconds. + // + MicroSecondDelay(100); + + Delay--; + if (Delay == 0) { + Status = EFI_TIMEOUT; + } + } while (InfiniteWait || (Delay > 0)); + } else { + // + // Wait for D2H Fis is received + // + Offset = FisBaseAddr + AHCI_D2H_FIS_OFFSET; + Status = AhciWaitMemSet ( + Offset, + AHCI_FIS_TYPE_MASK, + AHCI_FIS_REGISTER_D2H, + Timeout + ); + Status = EFI_SUCCESS; // for fuzz + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: AhciWaitMemSet (%r)\n", __FUNCTION__, Status)); + goto Exit; + } + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_TFD; + PortTfd = AhciReadReg (AhciBar, (UINT32) Offset); + if ((PortTfd & AHCI_PORT_TFD_ERR) != 0) { + Status = EFI_DEVICE_ERROR; + } + } + +Exit: + AhciStopCommand ( + AhciBar, + Port, + Timeout + ); + + AhciDisableFisReceive ( + AhciBar, + Port, + Timeout + ); + + if (MapData != NULL) { + IoMmuUnmap (MapData); + } + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_FB; + AhciWriteReg (AhciBar, Offset, OldRfisLo); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_FBU; + AhciWriteReg (AhciBar, Offset, OldRfisHi); + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CLB; + AhciWriteReg (AhciBar, Offset, OldCmdListLo); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CLBU; + AhciWriteReg (AhciBar, Offset, OldCmdListHi); + + return Status; +} + +/** + Start a non data transfer on specific port. + + @param[in] Private The pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA. + @param[in] Port The number of port. + @param[in] PortMultiplier The number of port multiplier. + @param[in] FisIndex The offset index of the FIS base address. + @param[in] AtaCommandBlock The EFI_ATA_COMMAND_BLOCK data. + @param[in,out] AtaStatusBlock The EFI_ATA_STATUS_BLOCK data. + @param[in] Timeout The timeout value of non data transfer, uses + 100ns as a unit. + + @retval EFI_DEVICE_ERROR The non data transfer abort with error occurs. + @retval EFI_TIMEOUT The operation is time out. + @retval EFI_UNSUPPORTED The device is not ready for transfer. + @retval EFI_SUCCESS The non data transfer executes successfully. + +**/ +EFI_STATUS +AhciNonDataTransfer ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT8 Port, + IN UINT8 PortMultiplier, + IN UINT8 FisIndex, + IN EFI_ATA_COMMAND_BLOCK *AtaCommandBlock, + IN OUT EFI_ATA_STATUS_BLOCK *AtaStatusBlock, + IN UINT64 Timeout + ) +{ + EFI_STATUS Status; + UINTN AhciBar; + EFI_AHCI_REGISTERS *AhciRegisters; + UINTN FisBaseAddr; + UINTN Offset; + UINT32 PortTfd; + EFI_AHCI_COMMAND_FIS CFis; + EFI_AHCI_COMMAND_LIST CmdList; + + AhciBar = Private->MmioBase; + AhciRegisters = &Private->AhciRegisters; + + // + // Package read needed + // + AhciBuildCommandFis (&CFis, AtaCommandBlock); + + ZeroMem (&CmdList, sizeof (EFI_AHCI_COMMAND_LIST)); + + CmdList.AhciCmdCfl = AHCI_FIS_REGISTER_H2D_LENGTH / 4; + + AhciBuildCommand ( + Private, + Port, + PortMultiplier, + FisIndex, + &CFis, + &CmdList, + 0, + NULL, + 0 + ); + + Status = AhciStartCommand ( + AhciBar, + Port, + 0, + Timeout + ); + if (EFI_ERROR (Status)) { + goto Exit; + } + + // + // Wait device sends the Response Fis + // + FisBaseAddr = (UINTN)AhciRegisters->AhciRFis + sizeof (EFI_AHCI_RECEIVED_FIS) * FisIndex; + Offset = FisBaseAddr + AHCI_D2H_FIS_OFFSET; + Status = AhciWaitMemSet ( + Offset, + AHCI_FIS_TYPE_MASK, + AHCI_FIS_REGISTER_D2H, + Timeout + ); + + if (EFI_ERROR (Status)) { + goto Exit; + } + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_TFD; + PortTfd = AhciReadReg (AhciBar, (UINT32) Offset); + if ((PortTfd & AHCI_PORT_TFD_ERR) != 0) { + Status = EFI_DEVICE_ERROR; + } + +Exit: + AhciStopCommand ( + AhciBar, + Port, + Timeout + ); + + AhciDisableFisReceive ( + AhciBar, + Port, + Timeout + ); + + return Status; +} + +/** + Do AHCI HBA reset. + + @param[in] AhciBar AHCI bar address. + @param[in] Timeout The timeout, in 100ns units, to reset. + + @retval EFI_DEVICE_ERROR AHCI controller is failed to complete hardware reset. + @retval EFI_TIMEOUT The reset operation is time out. + @retval EFI_SUCCESS AHCI controller is reset successfully. + +**/ +EFI_STATUS +AhciReset ( + IN UINTN AhciBar, + IN UINT64 Timeout + ) +{ + UINT32 Delay; + UINT32 Value; + UINT32 Capability; + + // + // Collect AHCI controller information + // + Capability = AhciReadReg (AhciBar, AHCI_CAPABILITY_OFFSET); + + // + // Enable AE before accessing any AHCI registers if Supports AHCI Mode Only is not set + // + if ((Capability & AHCI_CAP_SAM) == 0) { + AhciOrReg (AhciBar, AHCI_GHC_OFFSET, AHCI_GHC_ENABLE); + } + + AhciOrReg (AhciBar, AHCI_GHC_OFFSET, AHCI_GHC_RESET); + + Delay = (UINT32) (DivU64x32(Timeout, 1000) + 1); + + do { + Value = AhciReadReg(AhciBar, AHCI_GHC_OFFSET); + if ((Value & AHCI_GHC_RESET) == 0) { + return EFI_SUCCESS; + } + + // + // Stall for 100 microseconds. + // + MicroSecondDelay(100); + + Delay--; + } while (Delay > 0); + + return EFI_TIMEOUT; +} + +/** + Send Identify Drive command to a specific device. + + @param[in] Private The pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA. + @param[in] Port The number of port. + @param[in] PortMultiplier The port multiplier port number. + @param[in] FisIndex The offset index of the FIS base address. + @param[in] Buffer The data buffer to store IDENTIFY PACKET data. + + @retval EFI_SUCCESS The cmd executes successfully. + @retval EFI_INVALID_PARAMETER Buffer is NULL. + @retval EFI_DEVICE_ERROR The cmd abort with error occurs. + @retval EFI_TIMEOUT The operation is time out. + @retval EFI_UNSUPPORTED The device is not ready for executing. + +**/ +EFI_STATUS +AhciIdentify ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT8 Port, + IN UINT8 PortMultiplier, + IN UINT8 FisIndex, + IN ATA_IDENTIFY_DATA *Buffer + ) +{ + EFI_STATUS Status; + EFI_ATA_COMMAND_BLOCK Acb; + EFI_ATA_STATUS_BLOCK Asb; + + if (Buffer == NULL) { + return EFI_INVALID_PARAMETER; + } + + ZeroMem (&Acb, sizeof (EFI_ATA_COMMAND_BLOCK)); + ZeroMem (&Asb, sizeof (EFI_ATA_STATUS_BLOCK)); + + Acb.AtaCommand = ATA_CMD_IDENTIFY_DRIVE; + Acb.AtaSectorCount = 1; + + Status = AhciPioTransfer ( + Private, + Port, + PortMultiplier, + FisIndex, + TRUE, + &Acb, + &Asb, + Buffer, + sizeof (ATA_IDENTIFY_DATA), + ATA_TIMEOUT + ); + + return Status; +} + + +/** + Collect the number of bits set within a port bitmap. + + @param[in] PortBitMap A 32-bit wide bit map of ATA AHCI ports. + + @retval The number of bits set in the bitmap. + +**/ +UINT8 +AhciGetNumberOfPortsFromMap ( + IN UINT32 PortBitMap + ) +{ + UINT8 NumberOfPorts; + + NumberOfPorts = 0; + + while (PortBitMap != 0) { + if ((PortBitMap & ((UINT32)BIT0)) != 0) { + NumberOfPorts++; + } + PortBitMap = PortBitMap >> 1; + } + + return NumberOfPorts; +} + +/** + Get the specified port number from a port bitmap. + + @param[in] PortBitMap A 32-bit wide bit map of ATA AHCI ports. + @param[in] PortIndex The specified port index. + @param[out] Port The port number of the port specified by PortIndex. + + @retval EFI_SUCCESS The specified port is found and its port number is + in Port. + @retval EFI_NOT_FOUND Cannot find the specified port within the port bitmap. + +**/ +EFI_STATUS +AhciGetPortFromMap ( + IN UINT32 PortBitMap, + IN UINT8 PortIndex, + OUT UINT8 *Port + ) +{ + if (PortIndex == 0) { + return EFI_NOT_FOUND; + } + + *Port = 0; + + while (PortBitMap != 0) { + if ((PortBitMap & ((UINT32)BIT0)) != 0) { + PortIndex--; + + // + // Found the port specified by PortIndex. + // + if (PortIndex == 0) { + return EFI_SUCCESS; + } + } + PortBitMap = PortBitMap >> 1; + *Port = *Port + 1; + } + + return EFI_NOT_FOUND; +} + +/** + Allocate transfer-related data struct which is used at AHCI mode. + + @param[in,out] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA instance. + + @retval EFI_SUCCESS Data structures are allocated successfully. + @retval Others Data structures are not allocated successfully. + +**/ +EFI_STATUS +AhciCreateTransferDescriptor ( + IN OUT PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private + ) +{ + EFI_STATUS Status; + UINTN AhciBar; + EFI_AHCI_REGISTERS *AhciRegisters; + EFI_PHYSICAL_ADDRESS DeviceAddress; + VOID *Base; + VOID *Mapping; + UINT32 Capability; + UINT32 PortImplementBitMap; + UINT8 MaxPortNumber; + UINT8 MaxCommandSlotNumber; + UINTN MaxRFisSize; + UINTN MaxCmdListSize; + UINTN MaxCmdTableSize; + + AhciBar = Private->MmioBase; + AhciRegisters = &Private->AhciRegisters; + + // + // Collect AHCI controller information + // + Capability = AhciReadReg (AhciBar, AHCI_CAPABILITY_OFFSET); + + // + // Get the number of command slots per port supported by this HBA. + // + MaxCommandSlotNumber = (UINT8) (((Capability & 0x1F00) >> 8) + 1); + ASSERT (MaxCommandSlotNumber > 0); + //if (MaxCommandSlotNumber == 0) { + // return EFI_DEVICE_ERROR; + //} + + // + // Get the highest bit of implemented ports which decides how many bytes are + // allocated for recived FIS. + // + PortImplementBitMap = AhciReadReg (AhciBar, AHCI_PI_OFFSET); + //MaxPortNumber = (UINT8)(UINTN)(HighBitSet32(PortImplementBitMap) + 1); + MaxPortNumber = 1; // for fuzz + //if (MaxPortNumber == 0) { + // return EFI_DEVICE_ERROR; + //} + // + // Get the number of ports that actually needed to be initialized. + // + MaxPortNumber = MIN (MaxPortNumber, AhciGetNumberOfPortsFromMap (Private->PortBitMap)); + + // + // Allocate memory for received FIS. + // + MaxRFisSize = MaxPortNumber * sizeof (EFI_AHCI_RECEIVED_FIS); + Status = IoMmuAllocateBuffer ( + EFI_SIZE_TO_PAGES (MaxRFisSize), + &Base, + &DeviceAddress, + &Mapping + ); + if (EFI_ERROR (Status)) { + return EFI_OUT_OF_RESOURCES; + } + ASSERT (DeviceAddress == ((EFI_PHYSICAL_ADDRESS) (UINTN) Base)); + AhciRegisters->AhciRFis = Base; + AhciRegisters->AhciRFisMap = Mapping; + AhciRegisters->MaxRFisSize = MaxRFisSize; + ZeroMem (AhciRegisters->AhciRFis, EFI_PAGE_SIZE * EFI_SIZE_TO_PAGES (MaxRFisSize)); + + // + // Allocate memory for command list. + // Note that the implemenation is a single task model which only use a command + // list for each port. + // + MaxCmdListSize = 1 * sizeof (EFI_AHCI_COMMAND_LIST); + Status = IoMmuAllocateBuffer ( + EFI_SIZE_TO_PAGES (MaxCmdListSize), + &Base, + &DeviceAddress, + &Mapping + ); + if (EFI_ERROR (Status)) { + Status = EFI_OUT_OF_RESOURCES; + goto ErrorExit; + } + ASSERT (DeviceAddress == ((EFI_PHYSICAL_ADDRESS) (UINTN) Base)); + AhciRegisters->AhciCmdList = Base; + AhciRegisters->AhciCmdListMap = Mapping; + AhciRegisters->MaxCmdListSize = MaxCmdListSize; + ZeroMem (AhciRegisters->AhciCmdList, EFI_PAGE_SIZE * EFI_SIZE_TO_PAGES (MaxCmdListSize)); + + // + // Allocate memory for command table + // According to AHCI 1.3 spec, a PRD table can contain maximum 65535 entries. + // + MaxCmdTableSize = sizeof (EFI_AHCI_COMMAND_TABLE); + Status = IoMmuAllocateBuffer ( + EFI_SIZE_TO_PAGES (MaxCmdTableSize), + &Base, + &DeviceAddress, + &Mapping + ); + if (EFI_ERROR (Status)) { + Status = EFI_OUT_OF_RESOURCES; + goto ErrorExit; + } + ASSERT (DeviceAddress == ((EFI_PHYSICAL_ADDRESS) (UINTN) Base)); + AhciRegisters->AhciCmdTable = Base; + AhciRegisters->AhciCmdTableMap = Mapping; + AhciRegisters->MaxCmdTableSize = MaxCmdTableSize; + ZeroMem (AhciRegisters->AhciCmdTable, EFI_PAGE_SIZE * EFI_SIZE_TO_PAGES (MaxCmdTableSize)); + + return EFI_SUCCESS; + +ErrorExit: + if (AhciRegisters->AhciRFisMap != NULL) { + IoMmuFreeBuffer ( + EFI_SIZE_TO_PAGES (AhciRegisters->MaxRFisSize), + AhciRegisters->AhciRFis, + AhciRegisters->AhciRFisMap + ); + AhciRegisters->AhciRFis = NULL; + } + + if (AhciRegisters->AhciCmdListMap != NULL) { + IoMmuFreeBuffer ( + EFI_SIZE_TO_PAGES (AhciRegisters->MaxCmdListSize), + AhciRegisters->AhciCmdList, + AhciRegisters->AhciCmdListMap + ); + AhciRegisters->AhciCmdList = NULL; + } + + return Status; +} + +/** + Gets ATA device Capacity according to ATA 6. + + This function returns the capacity of the ATA device if it follows + ATA 6 to support 48 bit addressing. + + @param[in] IdentifyData A pointer to ATA_IDENTIFY_DATA structure. + + @return The capacity of the ATA device or 0 if the device does not support + 48-bit addressing defined in ATA 6. + +**/ +EFI_LBA +GetAtapi6Capacity ( + IN ATA_IDENTIFY_DATA *IdentifyData + ) +{ + EFI_LBA Capacity; + EFI_LBA TmpLba; + UINTN Index; + + if ((IdentifyData->command_set_supported_83 & BIT10) == 0) { + // + // The device doesn't support 48 bit addressing + // + return 0; + } + + // + // 48 bit address feature set is supported, get maximum capacity + // + Capacity = 0; + for (Index = 0; Index < 4; Index++) { + // + // Lower byte goes first: word[100] is the lowest word, word[103] is highest + // + TmpLba = IdentifyData->maximum_lba_for_48bit_addressing[Index]; + Capacity |= LShiftU64 (TmpLba, 16 * Index); + } + + return Capacity; +} + +/** + Identifies ATA device via the Identify data. + + This function identifies the ATA device and initializes the media information. + + @attention This is boundary function that may receive untrusted input. + @attention The input is from peripheral hardware device. + + The Identify Drive command response data from an ATA device is the peripheral + hardware input, so this routine will do basic validation for the Identify Drive + command response data. + + @param[in,out] DeviceData A pointer to PEI_AHCI_ATA_DEVICE_DATA structure. + + @retval EFI_SUCCESS The device is successfully identified and media + information is correctly initialized. + @retval EFI_UNSUPPORTED The device is not a valid ATA device (hard disk). + +**/ +EFI_STATUS +IdentifyAtaDevice ( + IN OUT PEI_AHCI_ATA_DEVICE_DATA *DeviceData + ) +{ + ATA_IDENTIFY_DATA *IdentifyData; + EFI_PEI_BLOCK_IO2_MEDIA *Media; + EFI_LBA Capacity; + UINT32 MaxSectorCount; + UINT16 PhyLogicSectorSupport; + + IdentifyData = DeviceData->IdentifyData; + Media = &DeviceData->Media; + + if ((IdentifyData->config & BIT15) != 0) { + DEBUG (( + DEBUG_ERROR, "%a: Not a hard disk device on Port 0x%x PortMultiplierPort 0x%x\n", + __FUNCTION__, DeviceData->Port, DeviceData->PortMultiplier + )); + return EFI_UNSUPPORTED; + } + + DEBUG (( + DEBUG_INFO, "%a: Identify Device: Port 0x%x PortMultiplierPort 0x%x\n", + __FUNCTION__, DeviceData->Port, DeviceData->PortMultiplier + )); + + // + // Skip checking whether the WORD 88 (supported UltraDMA by drive), since the + // driver only support PIO data transfer for now. + // + + // + // Get the capacity information of the device. + // + Capacity = GetAtapi6Capacity (IdentifyData); + if (Capacity > MAX_28BIT_ADDRESSING_CAPACITY) { + // + // Capacity exceeds 120GB. 48-bit addressing is really needed + // + DeviceData->Lba48Bit = TRUE; + } else { + // + // This is a hard disk <= 120GB capacity, treat it as normal hard disk + // + Capacity = ((UINT32)IdentifyData->user_addressable_sectors_hi << 16) | + IdentifyData->user_addressable_sectors_lo; + DeviceData->Lba48Bit = FALSE; + } + + if (Capacity == 0) { + DEBUG ((DEBUG_ERROR, "%a: Invalid Capacity (0) for ATA device.\n", __FUNCTION__)); + return EFI_UNSUPPORTED; + } + Media->LastBlock = (EFI_PEI_LBA) (Capacity - 1); + + Media->BlockSize = 0x200; + // + // Check whether Long Physical Sector Feature is supported + // + PhyLogicSectorSupport = IdentifyData->phy_logic_sector_support; + DEBUG (( + DEBUG_INFO, "%a: PhyLogicSectorSupport = 0x%x\n", + __FUNCTION__, PhyLogicSectorSupport + )); + if ((PhyLogicSectorSupport & (BIT14 | BIT15)) == BIT14) { + // + // Check logical block size + // + if ((PhyLogicSectorSupport & BIT12) != 0) { + Media->BlockSize = (UINT32) (((IdentifyData->logic_sector_size_hi << 16) | + IdentifyData->logic_sector_size_lo) * sizeof (UINT16)); + } + } + + // + // Check BlockSize validity + // + MaxSectorCount = mMaxTransferBlockNumber[DeviceData->Lba48Bit]; + if ((Media->BlockSize == 0) || (Media->BlockSize > MAX_UINT32 / MaxSectorCount)) { + DEBUG ((DEBUG_ERROR, "%a: Invalid BlockSize (0x%x).\n", __FUNCTION__, Media->BlockSize)); + return EFI_UNSUPPORTED; + } + + DEBUG (( + DEBUG_INFO, "%a: BlockSize = 0x%x, LastBlock = 0x%lx\n", + __FUNCTION__, Media->BlockSize, Media->LastBlock + )); + + if ((IdentifyData->trusted_computing_support & BIT0) != 0) { + DEBUG ((DEBUG_INFO, "%a: Found Trust Computing feature support.\n", __FUNCTION__)); + DeviceData->TrustComputing = TRUE; + } + + Media->InterfaceType = MSG_SATA_DP; + Media->RemovableMedia = FALSE; + Media->MediaPresent = TRUE; + Media->ReadOnly = FALSE; + + return EFI_SUCCESS; +} + +/** + Allocate device information data structure to contain device information. + And insert the data structure to the tail of device list for tracing. + + @param[in,out] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA + instance. + @param[in] DeviceIndex The device index. + @param[in] Port The port number of the ATA device to send + the command. + @param[in] PortMultiplierPort The port multiplier port number of the ATA + device to send the command. + If there is no port multiplier, then specify + 0xFFFF. + @param[in] FisIndex The index of the FIS of the ATA device to + send the command. + @param[in] IdentifyData The data buffer to store the output of the + IDENTIFY command. + + @retval EFI_SUCCESS Successfully insert the ATA device to the + tail of device list. + @retval EFI_OUT_OF_RESOURCES Not enough resource. + +**/ +EFI_STATUS +CreateNewDevice ( + IN OUT PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINTN DeviceIndex, + IN UINT16 Port, + IN UINT16 PortMultiplier, + IN UINT8 FisIndex, + IN ATA_IDENTIFY_DATA *IdentifyData + ) +{ + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + EFI_STATUS Status; + + DeviceData = AllocateZeroPool (sizeof (PEI_AHCI_ATA_DEVICE_DATA)); + if (DeviceData == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + if (IdentifyData != NULL) { + DeviceData->IdentifyData = AllocateCopyPool (sizeof (ATA_IDENTIFY_DATA), IdentifyData); + if (DeviceData->IdentifyData == NULL) { + free(DeviceData); + return EFI_OUT_OF_RESOURCES; + } + } + + DeviceData->Signature = AHCI_PEI_ATA_DEVICE_DATA_SIGNATURE; + DeviceData->Port = Port; + DeviceData->PortMultiplier = PortMultiplier; + DeviceData->FisIndex = FisIndex; + DeviceData->DeviceIndex = DeviceIndex; + DeviceData->Private = Private; + + Status = IdentifyAtaDevice (DeviceData); + if (EFI_ERROR (Status)) { + free(DeviceData); + return Status; + } + + if (DeviceData->TrustComputing) { + Private->TrustComputingDevices++; + DeviceData->TrustComputingDeviceIndex = Private->TrustComputingDevices; + } + Private->ActiveDevices++; + InsertTailList (&Private->DeviceList, &DeviceData->Link); + + return EFI_SUCCESS; +} + +/** + Initialize ATA host controller at AHCI mode. + + The function is designed to initialize ATA host controller. + + @param[in,out] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA instance. + + @retval EFI_SUCCESS The ATA AHCI controller is initialized successfully. + @retval EFI_OUT_OF_RESOURCES Not enough resource to complete while initializing + the controller. + @retval Others A device error occurred while initializing the + controller. + +**/ +EFI_STATUS +AhciModeInitialization ( + IN OUT PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private + ) +{ + EFI_STATUS Status; + UINTN AhciBar; + UINT32 Capability; + UINT32 Value; + UINT8 MaxPortNumber; + UINT32 PortImplementBitMap; + UINT32 PortInitializeBitMap; + EFI_AHCI_REGISTERS *AhciRegisters; + UINT8 PortIndex; + UINT8 Port; + DATA_64 Data64; + UINT32 Data; + UINT32 Offset; + UINT32 PhyDetectDelay; + UINTN DeviceIndex; + ATA_IDENTIFY_DATA IdentifyData; + + AhciBar = Private->MmioBase; + + Status = AhciReset (AhciBar, AHCI_PEI_RESET_TIMEOUT); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: AHCI HBA reset failed with %r.\n", __FUNCTION__, Status)); + return EFI_DEVICE_ERROR; + } + + // + // Collect AHCI controller information + // + Capability = AhciReadReg (AhciBar, AHCI_CAPABILITY_OFFSET); + + // + // Make sure that GHC.AE bit is set before accessing any AHCI registers. + // + Value = AhciReadReg (AhciBar, AHCI_GHC_OFFSET); + if ((Value & AHCI_GHC_ENABLE) == 0) { + AhciOrReg (AhciBar, AHCI_GHC_OFFSET, AHCI_GHC_ENABLE); + } + + Status = AhciCreateTransferDescriptor (Private); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "%a: Transfer-related data allocation failed with %r.\n", + __FUNCTION__, Status + )); + return EFI_OUT_OF_RESOURCES; + } + + // + // Get the number of command slots per port supported by this HBA. + // + MaxPortNumber = (UINT8) ((Capability & 0x1F) + 1); + + // + // Get the bit map of those ports exposed by this HBA. + // It indicates which ports that the HBA supports are available for software + // to use. + // + PortImplementBitMap = AhciReadReg (AhciBar, AHCI_PI_OFFSET); + + // + // Get the number of ports that actually needed to be initialized. + // + MaxPortNumber = MIN (MaxPortNumber, (UINT8)(UINTN)(HighBitSet32(PortImplementBitMap) + 1)); + MaxPortNumber = MIN (MaxPortNumber, AhciGetNumberOfPortsFromMap (Private->PortBitMap)); + + PortInitializeBitMap = Private->PortBitMap; + AhciRegisters = &Private->AhciRegisters; + DeviceIndex = 0; + // + // Enumerate ATA ports + // + for (PortIndex = 1; PortIndex <= MaxPortNumber; PortIndex ++) { + Status = AhciGetPortFromMap (PortInitializeBitMap, PortIndex, &Port); + if ((PortImplementBitMap & (BIT0 << Port)) != 0) { + // + // Initialize FIS Base Address Register and Command List Base Address + // Register for use. + // + Data64.Uint64 = (UINTN) (AhciRegisters->AhciRFis) + + sizeof (EFI_AHCI_RECEIVED_FIS) * (PortIndex - 1); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_FB; + AhciWriteReg (AhciBar, Offset, Data64.Uint32.Lower32); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_FBU; + AhciWriteReg (AhciBar, Offset, Data64.Uint32.Upper32); + + Data64.Uint64 = (UINTN) (AhciRegisters->AhciCmdList); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CLB; + AhciWriteReg (AhciBar, Offset, Data64.Uint32.Lower32); + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CLBU; + AhciWriteReg (AhciBar, Offset, Data64.Uint32.Upper32); + + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + Data = AhciReadReg (AhciBar, Offset); + if ((Data & AHCI_PORT_CMD_CPD) != 0) { + AhciOrReg (AhciBar, Offset, AHCI_PORT_CMD_POD); + } + + if ((Capability & AHCI_CAP_SSS) != 0) { + AhciOrReg (AhciBar, Offset, AHCI_PORT_CMD_SUD); + } + + // + // Disable aggressive power management. + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_SCTL; + AhciOrReg (AhciBar, Offset, AHCI_PORT_SCTL_IPM_INIT); + // + // Disable the reporting of the corresponding interrupt to system software. + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_IE; + AhciAndReg (AhciBar, Offset, 0); + + // + // Enable FIS Receive DMA engine for the first D2H FIS. + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + AhciOrReg (AhciBar, Offset, AHCI_PORT_CMD_FRE); + + // + // Wait no longer than 15 ms to wait the Phy to detect the presence of a device. + // + PhyDetectDelay = AHCI_BUS_PHY_DETECT_TIMEOUT; + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_SSTS; + do { + Data = AhciReadReg (AhciBar, Offset) & AHCI_PORT_SSTS_DET_MASK; + if ((Data == AHCI_PORT_SSTS_DET_PCE) || (Data == AHCI_PORT_SSTS_DET)) { + break; + } + + MicroSecondDelay (1000); + PhyDetectDelay--; + } while (PhyDetectDelay > 0); + + if (PhyDetectDelay == 0) { + // + // No device detected at this port. + // Clear PxCMD.SUD for those ports at which there are no device present. + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_CMD; + AhciAndReg (AhciBar, Offset, (UINT32) ~(AHCI_PORT_CMD_SUD)); + DEBUG ((DEBUG_ERROR, "%a: No device detected at Port %d.\n", __FUNCTION__, Port)); + continue; + } + + // + // According to SATA1.0a spec section 5.2, we need to wait for PxTFD.BSY and PxTFD.DRQ + // and PxTFD.ERR to be zero. The maximum wait time is 16s which is defined at ATA spec. + // + PhyDetectDelay = 16 * 1000; + do { + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_SERR; + if (AhciReadReg(AhciBar, Offset) != 0) { + AhciWriteReg (AhciBar, Offset, AhciReadReg (AhciBar, Offset)); + } + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_TFD; + + Data = AhciReadReg (AhciBar, Offset) & AHCI_PORT_TFD_MASK; + if (Data == 0) { + break; + } + + MicroSecondDelay (1000); + PhyDetectDelay--; + } while (PhyDetectDelay > 0); + + if (PhyDetectDelay == 0) { + DEBUG (( + DEBUG_ERROR, + "%a: Port %d device presence detected but phy not ready (TFD=0x%x).\n", + __FUNCTION__, Port, Data + )); + continue; + } + + // + // When the first D2H register FIS is received, the content of PxSIG register is updated. + // + Offset = AHCI_PORT_START + Port * AHCI_PORT_REG_WIDTH + AHCI_PORT_SIG; + Status = AhciWaitMmioSet ( + AhciBar, + Offset, + 0x0000FFFF, + 0x00000101, + 160000000 + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "%a: Error occured when waiting for the first D2H register FIS - %r\n", + __FUNCTION__, Status + )); + continue; + } + + Data = AhciReadReg (AhciBar, Offset); + if ((Data & AHCI_ATAPI_SIG_MASK) == AHCI_ATA_DEVICE_SIG) { + Status = AhciIdentify (Private, Port, 0, PortIndex - 1, &IdentifyData); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: AhciIdentify() failed with %r\n", __FUNCTION__, Status)); + continue; + } + DEBUG ((DEBUG_INFO, "%a: ATA hard disk found on Port %d.\n", __FUNCTION__, Port)); + } else { + continue; + } + + // + // Found an ATA hard disk device, add it into the device list. + // + DeviceIndex++; + CreateNewDevice ( + Private, + DeviceIndex, + Port, + 0xFFFF, + PortIndex - 1, + &IdentifyData + ); + } + } + + return EFI_SUCCESS; +} + +/** + Transfer data from ATA device. + + This function performs one ATA pass through transaction to transfer data from/to + ATA device. It chooses the appropriate ATA command and protocol to invoke PassThru + interface of ATA pass through. + + @param[in] DeviceData A pointer to PEI_AHCI_ATA_DEVICE_DATA structure. + @param[in,out] Buffer The pointer to the current transaction buffer. + @param[in] StartLba The starting logical block address to be accessed. + @param[in] TransferLength The block number or sector count of the transfer. + @param[in] IsWrite Indicates whether it is a write operation. + + @retval EFI_SUCCESS The data transfer is complete successfully. + @return others Some error occurs when transferring data. + +**/ +EFI_STATUS +TransferAtaDevice ( + IN PEI_AHCI_ATA_DEVICE_DATA *DeviceData, + IN OUT VOID *Buffer, + IN EFI_LBA StartLba, + IN UINT32 TransferLength, + IN BOOLEAN IsWrite + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + EDKII_PEI_ATA_PASS_THRU_PPI *AtaPassThru; + EFI_ATA_COMMAND_BLOCK Acb; + EFI_ATA_PASS_THRU_COMMAND_PACKET Packet; + + Private = DeviceData->Private; + AtaPassThru = &Private->AtaPassThruPpi; + + // + // Ensure Lba48Bit and IsWrite are valid boolean values + // + ASSERT ((UINTN) DeviceData->Lba48Bit < 2); + ASSERT ((UINTN) IsWrite < 2); + if (((UINTN) DeviceData->Lba48Bit >= 2) || + ((UINTN) IsWrite >= 2)) { + return EFI_INVALID_PARAMETER; + } + + // + // Prepare for ATA command block. + // + ZeroMem (&Acb, sizeof (EFI_ATA_COMMAND_BLOCK)); + Acb.AtaCommand = mAtaCommands[DeviceData->Lba48Bit][IsWrite]; + Acb.AtaSectorNumber = (UINT8) StartLba; + Acb.AtaCylinderLow = (UINT8) RShiftU64 (StartLba, 8); + Acb.AtaCylinderHigh = (UINT8) RShiftU64 (StartLba, 16); + Acb.AtaDeviceHead = (UINT8) (BIT7 | BIT6 | BIT5 | + (DeviceData->PortMultiplier == 0xFFFF ? + 0 : (DeviceData->PortMultiplier << 4))); + Acb.AtaSectorCount = (UINT8) TransferLength; + if (DeviceData->Lba48Bit) { + Acb.AtaSectorNumberExp = (UINT8) RShiftU64 (StartLba, 24); + Acb.AtaCylinderLowExp = (UINT8) RShiftU64 (StartLba, 32); + Acb.AtaCylinderHighExp = (UINT8) RShiftU64 (StartLba, 40); + Acb.AtaSectorCountExp = (UINT8) (TransferLength >> 8); + } else { + Acb.AtaDeviceHead = (UINT8) (Acb.AtaDeviceHead | RShiftU64 (StartLba, 24)); + } + + // + // Prepare for ATA pass through packet. + // + ZeroMem (&Packet, sizeof (EFI_ATA_PASS_THRU_COMMAND_PACKET)); + if (IsWrite) { + Packet.OutDataBuffer = Buffer; + Packet.OutTransferLength = TransferLength; + } else { + Packet.InDataBuffer = Buffer; + Packet.InTransferLength = TransferLength; + } + Packet.Asb = NULL; + Packet.Acb = &Acb; + Packet.Protocol = mAtaPassThruCmdProtocols[IsWrite]; + Packet.Length = EFI_ATA_PASS_THRU_LENGTH_SECTOR_COUNT; + // + // |------------------------|-----------------| + // | ATA PIO Transfer Mode | Transfer Rate | + // |------------------------|-----------------| + // | PIO Mode 0 | 3.3Mbytes/sec | + // |------------------------|-----------------| + // | PIO Mode 1 | 5.2Mbytes/sec | + // |------------------------|-----------------| + // | PIO Mode 2 | 8.3Mbytes/sec | + // |------------------------|-----------------| + // | PIO Mode 3 | 11.1Mbytes/sec | + // |------------------------|-----------------| + // | PIO Mode 4 | 16.6Mbytes/sec | + // |------------------------|-----------------| + // + // As AtaBus is used to manage ATA devices, we have to use the lowest transfer + // rate to calculate the possible maximum timeout value for each read/write + // operation. The timout value is rounded up to nearest integar and here an + // additional 30s is added to follow ATA spec in which it mentioned that the + // device may take up to 30s to respond commands in the Standby/Idle mode. + // + // Calculate the maximum timeout value for PIO read/write operation. + // + Packet.Timeout = TIMER_PERIOD_SECONDS ( + DivU64x32 ( + MultU64x32 (TransferLength, DeviceData->Media.BlockSize), + 3300000 + ) + 31 + ); + + return AtaPassThru->PassThru ( + AtaPassThru, + DeviceData->Port, + DeviceData->PortMultiplier, + &Packet + ); +} + +/** + Trust transfer data from/to ATA device. + + This function performs one ATA pass through transaction to do a trust transfer + from/to ATA device. It chooses the appropriate ATA command and protocol to invoke + PassThru interface of ATA pass through. + + @param[in] DeviceData Pointer to PEI_AHCI_ATA_DEVICE_DATA structure. + @param[in,out] Buffer The pointer to the current transaction buffer. + @param[in] SecurityProtocolId + The value of the "Security Protocol" parameter + of the security protocol command to be sent. + @param[in] SecurityProtocolSpecificData + The value of the "Security Protocol Specific" + parameter of the security protocol command to + be sent. + @param[in] TransferLength The block number or sector count of the transfer. + @param[in] IsTrustSend Indicates whether it is a trust send operation + or not. + @param[in] Timeout The timeout, in 100ns units, to use for the execution + of the security protocol command. A Timeout value + of 0 means that this function will wait indefinitely + for the security protocol command to execute. If + Timeout is greater than zero, then this function + will return EFI_TIMEOUT if the time required to + execute the receive data command is greater than + Timeout. + @param[out] TransferLengthOut + A pointer to a buffer to store the size in bytes + of the data written to the buffer. Ignore it when + IsTrustSend is TRUE. + + @retval EFI_SUCCESS The data transfer is complete successfully. + @return others Some error occurs when transferring data. + +**/ +EFI_STATUS +TrustTransferAtaDevice ( + IN PEI_AHCI_ATA_DEVICE_DATA *DeviceData, + IN OUT VOID *Buffer, + IN UINT8 SecurityProtocolId, + IN UINT16 SecurityProtocolSpecificData, + IN UINTN TransferLength, + IN BOOLEAN IsTrustSend, + IN UINT64 Timeout, + OUT UINTN *TransferLengthOut + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + EDKII_PEI_ATA_PASS_THRU_PPI *AtaPassThru; + EFI_ATA_COMMAND_BLOCK Acb; + EFI_ATA_PASS_THRU_COMMAND_PACKET Packet; + EFI_STATUS Status; + VOID *NewBuffer; + + Private = DeviceData->Private; + AtaPassThru = &Private->AtaPassThruPpi; + + // + // Ensure IsTrustSend are valid boolean values + // + ASSERT ((UINTN) IsTrustSend < 2); + if ((UINTN) IsTrustSend >= 2) { + return EFI_INVALID_PARAMETER; + } + + // + // Prepare for ATA command block. + // + ZeroMem (&Acb, sizeof (EFI_ATA_COMMAND_BLOCK)); + if (TransferLength == 0) { + Acb.AtaCommand = ATA_CMD_TRUST_NON_DATA; + } else { + Acb.AtaCommand = mAtaTrustCommands[IsTrustSend]; + } + Acb.AtaFeatures = SecurityProtocolId; + Acb.AtaSectorCount = (UINT8) (TransferLength / 512); + Acb.AtaSectorNumber = (UINT8) ((TransferLength / 512) >> 8); + // + // NOTE: ATA Spec has no explicitly definition for Security Protocol Specific layout. + // Here use big endian for Cylinder register. + // + Acb.AtaCylinderHigh = (UINT8) SecurityProtocolSpecificData; + Acb.AtaCylinderLow = (UINT8) (SecurityProtocolSpecificData >> 8); + Acb.AtaDeviceHead = (UINT8) (BIT7 | BIT6 | BIT5 | + (DeviceData->PortMultiplier == 0xFFFF ? + 0 : (DeviceData->PortMultiplier << 4))); + + // + // Prepare for ATA pass through packet. + // + ZeroMem (&Packet, sizeof (EFI_ATA_PASS_THRU_COMMAND_PACKET)); + if (TransferLength == 0) { + Packet.InTransferLength = 0; + Packet.OutTransferLength = 0; + Packet.Protocol = EFI_ATA_PASS_THRU_PROTOCOL_ATA_NON_DATA; + } else if (IsTrustSend) { + // + // Check the alignment of the incoming buffer prior to invoking underlying + // ATA PassThru PPI. + // + if ((AtaPassThru->Mode->IoAlign > 1) && + !IS_ALIGNED (Buffer, AtaPassThru->Mode->IoAlign)) { + NewBuffer = AllocateAlignedPages ( + EFI_SIZE_TO_PAGES (TransferLength), + AtaPassThru->Mode->IoAlign + ); + if (NewBuffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + CopyMem (NewBuffer, Buffer, TransferLength); + Buffer = NewBuffer; + } + Packet.OutDataBuffer = Buffer; + Packet.OutTransferLength = (UINT32) TransferLength; + Packet.Protocol = mAtaPassThruCmdProtocols[IsTrustSend]; + } else { + Packet.InDataBuffer = Buffer; + Packet.InTransferLength = (UINT32) TransferLength; + Packet.Protocol = mAtaPassThruCmdProtocols[IsTrustSend]; + } + Packet.Asb = NULL; + Packet.Acb = &Acb; + Packet.Timeout = Timeout; + Packet.Length = EFI_ATA_PASS_THRU_LENGTH_BYTES; + + Status = AtaPassThru->PassThru ( + AtaPassThru, + DeviceData->Port, + DeviceData->PortMultiplier, + &Packet + ); + if (TransferLengthOut != NULL) { + if (!IsTrustSend) { + *TransferLengthOut = Packet.InTransferLength; + } + } + return Status; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.h b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.h new file mode 100644 index 0000000..3b13c9b --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.h @@ -0,0 +1,746 @@ +/** @file + The AhciPei driver is used to manage ATA hard disk device working under AHCI + mode at PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _AHCI_PEI_H_ +#define _AHCI_PEI_H_ + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +// +// Structure forward declarations +// +typedef struct _PEI_AHCI_CONTROLLER_PRIVATE_DATA PEI_AHCI_CONTROLLER_PRIVATE_DATA; + +#include "AhciPeiPassThru.h" +#include "AhciPeiBlockIo.h" +#include "AhciPeiStorageSecurity.h" + +// +// ATA AHCI driver implementation related definitions +// +// +// Refer SATA1.0a spec section 5.2, the Phy detection time should be less than 10ms. +// The value is in millisecond units. Add a bit of margin for robustness. +// +#define AHCI_BUS_PHY_DETECT_TIMEOUT 15 +// +// Refer SATA1.0a spec, the bus reset time should be less than 1s. +// The value is in 100ns units. +// +#define AHCI_PEI_RESET_TIMEOUT 10000000 +// +// Time out Value for ATA pass through protocol, in 100ns units. +// +#define ATA_TIMEOUT 30000000 +// +// Maximal number of Physical Region Descriptor Table entries supported. +// +#define AHCI_MAX_PRDT_NUMBER 8 + +#define AHCI_CAPABILITY_OFFSET 0x0000 +#define AHCI_CAP_SAM BIT18 +#define AHCI_CAP_SSS BIT27 + +#define AHCI_GHC_OFFSET 0x0004 +#define AHCI_GHC_RESET BIT0 +#define AHCI_GHC_ENABLE BIT31 + +#define AHCI_IS_OFFSET 0x0008 +#define AHCI_PI_OFFSET 0x000C + +#define AHCI_MAX_PORTS 32 + +typedef struct { + UINT32 Lower32; + UINT32 Upper32; +} DATA_32; + +typedef union { + DATA_32 Uint32; + UINT64 Uint64; +} DATA_64; + +#define AHCI_ATAPI_SIG_MASK 0xFFFF0000 +#define AHCI_ATA_DEVICE_SIG 0x00000000 + +// +// Each PRDT entry can point to a memory block up to 4M byte +// +#define AHCI_MAX_DATA_PER_PRDT 0x400000 + +#define AHCI_FIS_REGISTER_H2D 0x27 //Register FIS - Host to Device +#define AHCI_FIS_REGISTER_H2D_LENGTH 20 +#define AHCI_FIS_REGISTER_D2H 0x34 //Register FIS - Device to Host +#define AHCI_FIS_PIO_SETUP 0x5F //PIO Setup FIS - Device to Host + +#define AHCI_D2H_FIS_OFFSET 0x40 +#define AHCI_PIO_FIS_OFFSET 0x20 +#define AHCI_FIS_TYPE_MASK 0xFF + +// +// Port register +// +#define AHCI_PORT_START 0x0100 +#define AHCI_PORT_REG_WIDTH 0x0080 +#define AHCI_PORT_CLB 0x0000 +#define AHCI_PORT_CLBU 0x0004 +#define AHCI_PORT_FB 0x0008 +#define AHCI_PORT_FBU 0x000C +#define AHCI_PORT_IS 0x0010 +#define AHCI_PORT_IE 0x0014 +#define AHCI_PORT_CMD 0x0018 +#define AHCI_PORT_CMD_ST BIT0 +#define AHCI_PORT_CMD_SUD BIT1 +#define AHCI_PORT_CMD_POD BIT2 +#define AHCI_PORT_CMD_CLO BIT3 +#define AHCI_PORT_CMD_FRE BIT4 +#define AHCI_PORT_CMD_FR BIT14 +#define AHCI_PORT_CMD_CR BIT15 +#define AHCI_PORT_CMD_CPD BIT20 +#define AHCI_PORT_CMD_ATAPI BIT24 +#define AHCI_PORT_CMD_DLAE BIT25 +#define AHCI_PORT_CMD_ALPE BIT26 +#define AHCI_PORT_CMD_ACTIVE (1 << 28) +#define AHCI_PORT_CMD_ICC_MASK (BIT28 | BIT29 | BIT30 | BIT31) + +#define AHCI_PORT_TFD 0x0020 +#define AHCI_PORT_TFD_ERR BIT0 +#define AHCI_PORT_TFD_DRQ BIT3 +#define AHCI_PORT_TFD_BSY BIT7 +#define AHCI_PORT_TFD_MASK (BIT7 | BIT3 | BIT0) + +#define AHCI_PORT_SIG 0x0024 +#define AHCI_PORT_SSTS 0x0028 +#define AHCI_PORT_SSTS_DET_MASK 0x000F +#define AHCI_PORT_SSTS_DET 0x0001 +#define AHCI_PORT_SSTS_DET_PCE 0x0003 + +#define AHCI_PORT_SCTL 0x002C +#define AHCI_PORT_SCTL_IPM_INIT 0x0300 + +#define AHCI_PORT_SERR 0x0030 +#define AHCI_PORT_CI 0x0038 + +#define IS_ALIGNED(addr, size) (((UINTN) (addr) & (size - 1)) == 0) +#define TIMER_PERIOD_SECONDS(Seconds) MultU64x32((UINT64)(Seconds), 10000000) + +#pragma pack(1) + +// +// Received FIS structure +// +typedef struct { + UINT8 AhciDmaSetupFis[0x1C]; // Dma Setup Fis: offset 0x00 + UINT8 AhciDmaSetupFisRsvd[0x04]; + UINT8 AhciPioSetupFis[0x14]; // Pio Setup Fis: offset 0x20 + UINT8 AhciPioSetupFisRsvd[0x0C]; + UINT8 AhciD2HRegisterFis[0x14]; // D2H Register Fis: offset 0x40 + UINT8 AhciD2HRegisterFisRsvd[0x04]; + UINT64 AhciSetDeviceBitsFis; // Set Device Bits Fix: offset 0x58 + UINT8 AhciUnknownFis[0x40]; // Unkonwn Fis: offset 0x60 + UINT8 AhciUnknownFisRsvd[0x60]; +} EFI_AHCI_RECEIVED_FIS; + +// +// Command List structure includes total 32 entries. +// The entry Data structure is listed at the following. +// +typedef struct { + UINT32 AhciCmdCfl:5; //Command FIS Length + UINT32 AhciCmdA:1; //ATAPI + UINT32 AhciCmdW:1; //Write + UINT32 AhciCmdP:1; //Prefetchable + UINT32 AhciCmdR:1; //Reset + UINT32 AhciCmdB:1; //BIST + UINT32 AhciCmdC:1; //Clear Busy upon R_OK + UINT32 AhciCmdRsvd:1; + UINT32 AhciCmdPmp:4; //Port Multiplier Port + UINT32 AhciCmdPrdtl:16; //Physical Region Descriptor Table Length + UINT32 AhciCmdPrdbc; //Physical Region Descriptor Byte Count + UINT32 AhciCmdCtba; //Command Table Descriptor Base Address + UINT32 AhciCmdCtbau; //Command Table Descriptor Base Address Upper 32-BITs + UINT32 AhciCmdRsvd1[4]; +} EFI_AHCI_COMMAND_LIST; + +// +// This is a software constructed FIS. +// For Data transfer operations, this is the H2D Register FIS format as +// specified in the Serial ATA Revision 2.6 specification. +// +typedef struct { + UINT8 AhciCFisType; + UINT8 AhciCFisPmNum:4; + UINT8 AhciCFisRsvd:1; + UINT8 AhciCFisRsvd1:1; + UINT8 AhciCFisRsvd2:1; + UINT8 AhciCFisCmdInd:1; + UINT8 AhciCFisCmd; + UINT8 AhciCFisFeature; + UINT8 AhciCFisSecNum; + UINT8 AhciCFisClyLow; + UINT8 AhciCFisClyHigh; + UINT8 AhciCFisDevHead; + UINT8 AhciCFisSecNumExp; + UINT8 AhciCFisClyLowExp; + UINT8 AhciCFisClyHighExp; + UINT8 AhciCFisFeatureExp; + UINT8 AhciCFisSecCount; + UINT8 AhciCFisSecCountExp; + UINT8 AhciCFisRsvd3; + UINT8 AhciCFisControl; + UINT8 AhciCFisRsvd4[4]; + UINT8 AhciCFisRsvd5[44]; +} EFI_AHCI_COMMAND_FIS; + +// +// ACMD: ATAPI command (12 or 16 bytes) +// +typedef struct { + UINT8 AtapiCmd[0x10]; +} EFI_AHCI_ATAPI_COMMAND; + +// +// Physical Region Descriptor Table includes up to 65535 entries +// The entry data structure is listed at the following. +// the actual entry number comes from the PRDTL field in the command +// list entry for this command slot. +// +typedef struct { + UINT32 AhciPrdtDba; //Data Base Address + UINT32 AhciPrdtDbau; //Data Base Address Upper 32-BITs + UINT32 AhciPrdtRsvd; + UINT32 AhciPrdtDbc:22; //Data Byte Count + UINT32 AhciPrdtRsvd1:9; + UINT32 AhciPrdtIoc:1; //Interrupt on Completion +} EFI_AHCI_COMMAND_PRDT; + +// +// Command table Data strucute which is pointed to by the entry in the command list +// +typedef struct { + EFI_AHCI_COMMAND_FIS CommandFis; // A software constructed FIS. + EFI_AHCI_ATAPI_COMMAND AtapiCmd; // 12 or 16 bytes ATAPI cmd. + UINT8 Reserved[0x30]; + // + // The scatter/gather list for Data transfer. + // + EFI_AHCI_COMMAND_PRDT PrdtTable[AHCI_MAX_PRDT_NUMBER]; +} EFI_AHCI_COMMAND_TABLE; + +#pragma pack() + +typedef struct { + EFI_AHCI_RECEIVED_FIS *AhciRFis; + EFI_AHCI_COMMAND_LIST *AhciCmdList; + EFI_AHCI_COMMAND_TABLE *AhciCmdTable; + UINTN MaxRFisSize; + UINTN MaxCmdListSize; + UINTN MaxCmdTableSize; + VOID *AhciRFisMap; + VOID *AhciCmdListMap; + VOID *AhciCmdTableMap; +} EFI_AHCI_REGISTERS; + +// +// Unique signature for AHCI ATA device information structure. +// +#define AHCI_PEI_ATA_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('A', 'P', 'A', 'D') + +// +// AHCI mode device information structure. +// +typedef struct { + UINT32 Signature; + LIST_ENTRY Link; + + UINT16 Port; + UINT16 PortMultiplier; + UINT8 FisIndex; + UINTN DeviceIndex; + ATA_IDENTIFY_DATA *IdentifyData; + + BOOLEAN Lba48Bit; + BOOLEAN TrustComputing; + UINTN TrustComputingDeviceIndex; + EFI_PEI_BLOCK_IO2_MEDIA Media; + + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; +} PEI_AHCI_ATA_DEVICE_DATA; + +#define AHCI_PEI_ATA_DEVICE_INFO_FROM_THIS(a) \ + CR (a, \ + PEI_AHCI_ATA_DEVICE_DATA, \ + Link, \ + AHCI_PEI_ATA_DEVICE_DATA_SIGNATURE \ + ); + +// +// Unique signature for private data structure. +// +#define AHCI_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('A','P','C','P') + +// +// ATA AHCI controller private data structure. +// +struct _PEI_AHCI_CONTROLLER_PRIVATE_DATA { + UINT32 Signature; + UINTN MmioBase; + UINTN DevicePathLength; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + + EFI_ATA_PASS_THRU_MODE AtaPassThruMode; + EDKII_PEI_ATA_PASS_THRU_PPI AtaPassThruPpi; + EFI_PEI_RECOVERY_BLOCK_IO_PPI BlkIoPpi; + EFI_PEI_RECOVERY_BLOCK_IO2_PPI BlkIo2Ppi; + EDKII_PEI_STORAGE_SECURITY_CMD_PPI StorageSecurityPpi; + EFI_PEI_PPI_DESCRIPTOR AtaPassThruPpiList; + EFI_PEI_PPI_DESCRIPTOR BlkIoPpiList; + EFI_PEI_PPI_DESCRIPTOR BlkIo2PpiList; + EFI_PEI_PPI_DESCRIPTOR StorageSecurityPpiList; + EFI_PEI_NOTIFY_DESCRIPTOR EndOfPeiNotifyList; + + EFI_AHCI_REGISTERS AhciRegisters; + + UINT32 PortBitMap; + UINT32 ActiveDevices; + UINT32 TrustComputingDevices; + LIST_ENTRY DeviceList; + + UINT16 PreviousPort; + UINT16 PreviousPortMultiplier; +}; + +#define GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_PASS_THRU(a) \ + CR (a, PEI_AHCI_CONTROLLER_PRIVATE_DATA, AtaPassThruPpi, AHCI_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE) +#define GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO(a) \ + CR (a, PEI_AHCI_CONTROLLER_PRIVATE_DATA, BlkIoPpi, AHCI_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE) +#define GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO2(a) \ + CR (a, PEI_AHCI_CONTROLLER_PRIVATE_DATA, BlkIo2Ppi, AHCI_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE) +#define GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_STROAGE_SECURITY(a) \ + CR (a, PEI_AHCI_CONTROLLER_PRIVATE_DATA, StorageSecurityPpi, AHCI_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE) +#define GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_NOTIFY(a) \ + CR (a, PEI_AHCI_CONTROLLER_PRIVATE_DATA, EndOfPeiNotifyList, AHCI_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE) + +// +// Global variables +// +extern UINT32 mMaxTransferBlockNumber[2]; + +// +// Internal functions +// + +/** + Allocates pages that are suitable for an OperationBusMasterCommonBuffer or + OperationBusMasterCommonBuffer64 mapping. + + @param Pages The number of pages to allocate. + @param HostAddress A pointer to store the base system memory address of the + allocated range. + @param DeviceAddress The resulting map address for the bus master PCI controller to use to + access the hosts HostAddress. + @param Mapping A resulting value to pass to Unmap(). + + @retval EFI_SUCCESS The requested memory pages were allocated. + @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are + MEMORY_WRITE_COMBINE and MEMORY_CACHED. + @retval EFI_INVALID_PARAMETER One or more parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. + +**/ +EFI_STATUS +IoMmuAllocateBuffer ( + IN UINTN Pages, + OUT VOID **HostAddress, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ); + +/** + Frees memory that was allocated with AllocateBuffer(). + + @param Pages The number of pages to free. + @param HostAddress The base system memory address of the allocated range. + @param Mapping The mapping value returned from Map(). + + @retval EFI_SUCCESS The requested memory pages were freed. + @retval EFI_INVALID_PARAMETER The memory range specified by HostAddress and Pages + was not allocated with AllocateBuffer(). + +**/ +EFI_STATUS +IoMmuFreeBuffer ( + IN UINTN Pages, + IN VOID *HostAddress, + IN VOID *Mapping + ); + +/** + Provides the controller-specific addresses required to access system memory from a + DMA bus master. + + @param Operation Indicates if the bus master is going to read or write to system memory. + @param HostAddress The system memory address to map to the PCI controller. + @param NumberOfBytes On input the number of bytes to map. On output the number of bytes + that were mapped. + @param DeviceAddress The resulting map address for the bus master PCI controller to use to + access the hosts HostAddress. + @param Mapping A resulting value to pass to Unmap(). + + @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes. + @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer. + @retval EFI_INVALID_PARAMETER One or more parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @retval EFI_DEVICE_ERROR The system hardware could not map the requested address. + +**/ +EFI_STATUS +IoMmuMap ( + IN EDKII_IOMMU_OPERATION Operation, + IN VOID *HostAddress, + IN OUT UINTN *NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ); + +/** + Completes the Map() operation and releases any corresponding resources. + + @param Mapping The mapping value returned from Map(). + + @retval EFI_SUCCESS The range was unmapped. + @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by Map(). + @retval EFI_DEVICE_ERROR The data was not committed to the target system memory. +**/ +EFI_STATUS +IoMmuUnmap ( + IN VOID *Mapping + ); + +/** + One notified function to cleanup the allocated DMA buffers at EndOfPei. + + @param[in] PeiServices Pointer to PEI Services Table. + @param[in] NotifyDescriptor Pointer to the descriptor for the Notification + event that caused this function to execute. + @param[in] Ppi Pointer to the PPI data associated with this function. + + @retval EFI_SUCCESS The function completes successfully + +**/ +EFI_STATUS +EFIAPI +AhciPeimEndOfPei ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ); + +/** + Collect the number of bits set within a port bitmap. + + @param[in] PortBitMap A 32-bit wide bit map of ATA AHCI ports. + + @retval The number of bits set in the bitmap. + +**/ +UINT8 +AhciGetNumberOfPortsFromMap ( + IN UINT32 PortBitMap + ); + +/** + Start a PIO Data transfer on specific port. + + @param[in] Private The pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA. + @param[in] Port The number of port. + @param[in] PortMultiplier The number of port multiplier. + @param[in] FisIndex The offset index of the FIS base address. + @param[in] Read The transfer direction. + @param[in] AtaCommandBlock The EFI_ATA_COMMAND_BLOCK data. + @param[in,out] AtaStatusBlock The EFI_ATA_STATUS_BLOCK data. + @param[in,out] MemoryAddr The pointer to the data buffer. + @param[in] DataCount The data count to be transferred. + @param[in] Timeout The timeout value of PIO data transfer, uses + 100ns as a unit. + + @retval EFI_DEVICE_ERROR The PIO data transfer abort with error occurs. + @retval EFI_TIMEOUT The operation is time out. + @retval EFI_UNSUPPORTED The device is not ready for transfer. + @retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources. + @retval EFI_SUCCESS The PIO data transfer executes successfully. + +**/ +EFI_STATUS +AhciPioTransfer ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT8 Port, + IN UINT8 PortMultiplier, + IN UINT8 FisIndex, + IN BOOLEAN Read, + IN EFI_ATA_COMMAND_BLOCK *AtaCommandBlock, + IN OUT EFI_ATA_STATUS_BLOCK *AtaStatusBlock, + IN OUT VOID *MemoryAddr, + IN UINT32 DataCount, + IN UINT64 Timeout + ); + +/** + Start a non data transfer on specific port. + + @param[in] Private The pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA. + @param[in] Port The number of port. + @param[in] PortMultiplier The number of port multiplier. + @param[in] FisIndex The offset index of the FIS base address. + @param[in] AtaCommandBlock The EFI_ATA_COMMAND_BLOCK data. + @param[in,out] AtaStatusBlock The EFI_ATA_STATUS_BLOCK data. + @param[in] Timeout The timeout value of non data transfer, uses + 100ns as a unit. + + @retval EFI_DEVICE_ERROR The non data transfer abort with error occurs. + @retval EFI_TIMEOUT The operation is time out. + @retval EFI_UNSUPPORTED The device is not ready for transfer. + @retval EFI_SUCCESS The non data transfer executes successfully. + +**/ +EFI_STATUS +AhciNonDataTransfer ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT8 Port, + IN UINT8 PortMultiplier, + IN UINT8 FisIndex, + IN EFI_ATA_COMMAND_BLOCK *AtaCommandBlock, + IN OUT EFI_ATA_STATUS_BLOCK *AtaStatusBlock, + IN UINT64 Timeout + ); + +/** + Initialize ATA host controller at AHCI mode. + + The function is designed to initialize ATA host controller. + + @param[in,out] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA instance. + + @retval EFI_SUCCESS The ATA AHCI controller is initialized successfully. + @retval EFI_OUT_OF_RESOURCES Not enough resource to complete while initializing + the controller. + @retval Others A device error occurred while initializing the + controller. + +**/ +EFI_STATUS +AhciModeInitialization ( + IN OUT PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private + ); + +/** + Transfer data from ATA device. + + This function performs one ATA pass through transaction to transfer data from/to + ATA device. It chooses the appropriate ATA command and protocol to invoke PassThru + interface of ATA pass through. + + @param[in] DeviceData A pointer to PEI_AHCI_ATA_DEVICE_DATA structure. + @param[in,out] Buffer The pointer to the current transaction buffer. + @param[in] StartLba The starting logical block address to be accessed. + @param[in] TransferLength The block number or sector count of the transfer. + @param[in] IsWrite Indicates whether it is a write operation. + + @retval EFI_SUCCESS The data transfer is complete successfully. + @return others Some error occurs when transferring data. + +**/ +EFI_STATUS +TransferAtaDevice ( + IN PEI_AHCI_ATA_DEVICE_DATA *DeviceData, + IN OUT VOID *Buffer, + IN EFI_LBA StartLba, + IN UINT32 TransferLength, + IN BOOLEAN IsWrite + ); + +/** + Trust transfer data from/to ATA device. + + This function performs one ATA pass through transaction to do a trust transfer + from/to ATA device. It chooses the appropriate ATA command and protocol to invoke + PassThru interface of ATA pass through. + + @param[in] DeviceData Pointer to PEI_AHCI_ATA_DEVICE_DATA structure. + @param[in,out] Buffer The pointer to the current transaction buffer. + @param[in] SecurityProtocolId + The value of the "Security Protocol" parameter + of the security protocol command to be sent. + @param[in] SecurityProtocolSpecificData + The value of the "Security Protocol Specific" + parameter of the security protocol command to + be sent. + @param[in] TransferLength The block number or sector count of the transfer. + @param[in] IsTrustSend Indicates whether it is a trust send operation + or not. + @param[in] Timeout The timeout, in 100ns units, to use for the execution + of the security protocol command. A Timeout value + of 0 means that this function will wait indefinitely + for the security protocol command to execute. If + Timeout is greater than zero, then this function + will return EFI_TIMEOUT if the time required to + execute the receive data command is greater than + Timeout. + @param[out] TransferLengthOut + A pointer to a buffer to store the size in bytes + of the data written to the buffer. Ignore it when + IsTrustSend is TRUE. + + @retval EFI_SUCCESS The data transfer is complete successfully. + @return others Some error occurs when transferring data. + +**/ +EFI_STATUS +TrustTransferAtaDevice ( + IN PEI_AHCI_ATA_DEVICE_DATA *DeviceData, + IN OUT VOID *Buffer, + IN UINT8 SecurityProtocolId, + IN UINT16 SecurityProtocolSpecificData, + IN UINTN TransferLength, + IN BOOLEAN IsTrustSend, + IN UINT64 Timeout, + OUT UINTN *TransferLengthOut + ); + +/** + Returns a pointer to the next node in a device path. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @return a pointer to the device path node that follows the device path node + specified by Node. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +NextDevicePathNode ( + IN CONST VOID *Node + ); + +/** + Get the size of the current device path instance. + + @param[in] DevicePath A pointer to the EFI_DEVICE_PATH_PROTOCOL + structure. + @param[out] InstanceSize The size of the current device path instance. + @param[out] EntireDevicePathEnd Indicate whether the instance is the last + one in the device path strucure. + + @retval EFI_SUCCESS The size of the current device path instance is fetched. + @retval Others Fails to get the size of the current device path instance. + +**/ +EFI_STATUS +GetDevicePathInstanceSize ( + IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, + OUT UINTN *InstanceSize, + OUT BOOLEAN *EntireDevicePathEnd + ); + +/** + Check the validity of the device path of a ATA AHCI host controller. + + @param[in] DevicePath A pointer to the EFI_DEVICE_PATH_PROTOCOL + structure. + @param[in] DevicePathLength The length of the device path. + + @retval EFI_SUCCESS The device path is valid. + @retval EFI_INVALID_PARAMETER The device path is invalid. + +**/ +EFI_STATUS +AhciIsHcDevicePathValid ( + IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN UINTN DevicePathLength + ); + +/** + Build the device path for an ATA device with given port and port multiplier number. + + @param[in] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA + data structure. + @param[in] Port The given port number. + @param[in] PortMultiplierPort The given port multiplier number. + @param[out] DevicePathLength The length of the device path in bytes specified + by DevicePath. + @param[out] DevicePath The device path of ATA device. + + @retval EFI_SUCCESS The operation succeeds. + @retval EFI_INVALID_PARAMETER The parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources. + +**/ +EFI_STATUS +AhciBuildDevicePath ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT16 Port, + IN UINT16 PortMultiplierPort, + OUT UINTN *DevicePathLength, + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath + ); + +/** + Collect the ports that need to be enumerated on a controller for S3 phase. + + @param[in] HcDevicePath Device path of the controller. + @param[in] HcDevicePathLength Length of the device path specified by + HcDevicePath. + @param[out] PortBitMap Bitmap that indicates the ports that need + to be enumerated on the controller. + + @retval The number of ports that need to be enumerated. + +**/ +UINT8 +AhciS3GetEumeratePorts ( + IN EFI_DEVICE_PATH_PROTOCOL *HcDevicePath, + IN UINTN HcDevicePathLength, + OUT UINT32 *PortBitMap + ); + +EFI_STATUS +CreateNewDevice ( + IN OUT PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINTN DeviceIndex, + IN UINT16 Port, + IN UINT16 PortMultiplier, + IN UINT8 FisIndex, + IN ATA_IDENTIFY_DATA *IdentifyData + ); + +EFI_STATUS +AhciCreateTransferDescriptor ( + IN OUT PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.inf new file mode 100644 index 0000000..83b2c17 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.inf @@ -0,0 +1,67 @@ +## @file +# The AhciPei driver is used to manage ATA hard disk device working under AHCI +# mode at PEI phase. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = AhciPei + MODULE_UNI_FILE = AhciPei.uni + FILE_GUID = 79E5CA15-7A2D-4F37-A63B-D1C7BBCA47AD + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + ENTRY_POINT = AtaAhciPeimEntry + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + AhciPei.h + AhciPeiPassThru.c + AhciPeiPassThru.h + AhciPeiStorageSecurity.c + AhciPeiStorageSecurity.h + AhciMode.c + DevicePath.c + DmaMem.c + AhciPeiBlockIo.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + DebugLib + PeiServicesLib + MemoryAllocationLib + BaseMemoryLib + IoLib + TimerLib + LockBoxLib + PeimEntryPoint + +[Ppis] + gEdkiiPeiAtaAhciHostControllerPpiGuid ## CONSUMES + gEdkiiIoMmuPpiGuid ## CONSUMES + gEfiEndOfPeiSignalPpiGuid ## CONSUMES + gEdkiiPeiAtaPassThruPpiGuid ## SOMETIMES_PRODUCES + gEdkiiPeiStorageSecurityCommandPpiGuid ## SOMETIMES_PRODUCES + +[Guids] + gS3StorageDeviceInitListGuid ## SOMETIMES_CONSUMES ## UNDEFINED + +[Depex] + gEfiPeiMemoryDiscoveredPpiGuid AND + gEfiPeiMasterBootModePpiGuid AND + gEdkiiPeiAtaAhciHostControllerPpiGuid + +[UserExtensions.TianoCore."ExtraFiles"] + AhciPeiExtra.uni diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiBlockIo.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiBlockIo.c new file mode 100644 index 0000000..65ccf09 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiBlockIo.c @@ -0,0 +1,526 @@ +/** @file + The AhciPei driver is used to manage ATA hard disk device working under AHCI + mode at PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "AhciPei.h" + +/** + Traverse the attached ATA devices list to find out the device with given index. + + @param[in] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA + instance. + @param[in] DeviceIndex The device index. + + @retval The pointer to the PEI_AHCI_ATA_DEVICE_DATA structure of the device + info to access. + +**/ +PEI_AHCI_ATA_DEVICE_DATA * +SearchDeviceByIndex ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINTN DeviceIndex + ) +{ + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + LIST_ENTRY *Node; + + Node = GetFirstNode (&Private->DeviceList); + while (!IsNull (&Private->DeviceList, Node)) { + DeviceData = AHCI_PEI_ATA_DEVICE_INFO_FROM_THIS (Node); + + if (DeviceData->DeviceIndex == DeviceIndex) { + return DeviceData; + } + + Node = GetNextNode (&Private->DeviceList, Node); + } + + return NULL; +} + +/** + Read a number of blocks from ATA device. + + This function performs ATA pass through transactions to read data from ATA device. + It may separate the read request into several ATA pass through transactions. + + @param[in] DeviceData The pointer to the PEI_AHCI_ATA_DEVICE_DATA + data structure. + @param[in,out] Buffer The pointer to the current transaction buffer. + @param[in] StartLba The starting logical block address to be accessed. + @param[in] NumberOfBlocks The block number or sector count of the transfer. + + @retval EFI_SUCCESS The data transfer is complete successfully. + @return Others Some error occurs when transferring data. + +**/ +EFI_STATUS +AccessAtaDevice ( + IN PEI_AHCI_ATA_DEVICE_DATA *DeviceData, + IN OUT UINT8 *Buffer, + IN EFI_LBA StartLba, + IN UINTN NumberOfBlocks + ) +{ + EFI_STATUS Status; + UINTN MaxTransferBlockNumber; + UINTN TransferBlockNumber; + UINTN BlockSize; + + // + // Ensure Lba48Bit is a valid boolean value + // + ASSERT ((UINTN) DeviceData->Lba48Bit < 2); + if ((UINTN) DeviceData->Lba48Bit >= 2) { + return EFI_INVALID_PARAMETER; + } + + Status = EFI_SUCCESS; + MaxTransferBlockNumber = mMaxTransferBlockNumber[DeviceData->Lba48Bit]; + BlockSize = DeviceData->Media.BlockSize; + + do { + if (NumberOfBlocks > MaxTransferBlockNumber) { + TransferBlockNumber = MaxTransferBlockNumber; + NumberOfBlocks -= MaxTransferBlockNumber; + } else { + TransferBlockNumber = NumberOfBlocks; + NumberOfBlocks = 0; + } + DEBUG (( + DEBUG_BLKIO, "%a: Blocking AccessAtaDevice, TransferBlockNumber = %x; StartLba = %x\n", + __FUNCTION__, TransferBlockNumber, StartLba + )); + + Status = TransferAtaDevice ( + DeviceData, + Buffer, + StartLba, + (UINT32) TransferBlockNumber, + FALSE // Read + ); + if (EFI_ERROR (Status)) { + return Status; + } + + StartLba += TransferBlockNumber; + Buffer += TransferBlockNumber * BlockSize; + } while (NumberOfBlocks > 0); + + return Status; +} + +/** + Read specified bytes from Lba from the device. + + @param[in] DeviceData The pointer to the PEI_AHCI_ATA_DEVICE_DATA data structure. + @param[out] Buffer The Buffer used to store the Data read from the device. + @param[in] StartLba The start block number. + @param[in] BufferSize Total bytes to be read. + + @retval EFI_SUCCESS Data are read from the device. + @retval Others Fail to read all the data. + +**/ +EFI_STATUS +AhciRead ( + IN PEI_AHCI_ATA_DEVICE_DATA *DeviceData, + OUT VOID *Buffer, + IN EFI_LBA StartLba, + IN UINTN BufferSize + ) +{ + EFI_STATUS Status; + UINTN BlockSize; + UINTN NumberOfBlocks; + + // + // Check parameters. + // + if (Buffer == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (BufferSize == 0) { + return EFI_SUCCESS; + } + + BlockSize = DeviceData->Media.BlockSize; + if ((BufferSize % BlockSize) != 0) { + return EFI_BAD_BUFFER_SIZE; + } + + if (StartLba > DeviceData->Media.LastBlock) { + return EFI_INVALID_PARAMETER; + } + NumberOfBlocks = BufferSize / BlockSize; + if (NumberOfBlocks - 1 > DeviceData->Media.LastBlock - StartLba) { + return EFI_INVALID_PARAMETER; + } + + // + // Invoke low level AtaDevice Access Routine. + // + Status = AccessAtaDevice (DeviceData, Buffer, StartLba, NumberOfBlocks); + + return Status; +} + + +/** + Gets the count of block I/O devices that one specific block driver detects. + + This function is used for getting the count of block I/O devices that one + specific block driver detects. If no device is detected, then the function + will return zero. + + @param[in] PeiServices General-purpose services that are available + to every PEIM. + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI + instance. + @param[out] NumberBlockDevices The number of block I/O devices discovered. + + @retval EFI_SUCCESS The operation performed successfully. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoGetDeviceNo ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, + OUT UINTN *NumberBlockDevices + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + + if (This == NULL || NumberBlockDevices == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO (This); + *NumberBlockDevices = Private->ActiveDevices; + + return EFI_SUCCESS; +} + +/** + Gets a block device's media information. + + This function will provide the caller with the specified block device's media + information. If the media changes, calling this function will update the media + information accordingly. + + @param[in] PeiServices General-purpose services that are available to every + PEIM + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance. + @param[in] DeviceIndex Specifies the block device to which the function wants + to talk. Because the driver that implements Block I/O + PPIs will manage multiple block devices, the PPIs that + want to talk to a single device must specify the + device index that was assigned during the enumeration + process. This index is a number from one to + NumberBlockDevices. + @param[out] MediaInfo The media information of the specified block media. + The caller is responsible for the ownership of this + data structure. + + @par Note: + The MediaInfo structure describes an enumeration of possible block device + types. This enumeration exists because no device paths are actually passed + across interfaces that describe the type or class of hardware that is publishing + the block I/O interface. This enumeration will allow for policy decisions + in the Recovery PEIM, such as "Try to recover from legacy floppy first, + LS-120 second, CD-ROM third." If there are multiple partitions abstracted + by a given device type, they should be reported in ascending order; this + order also applies to nested partitions, such as legacy MBR, where the + outermost partitions would have precedence in the reporting order. The + same logic applies to systems such as IDE that have precedence relationships + like "Master/Slave" or "Primary/Secondary". The master device should be + reported first, the slave second. + + @retval EFI_SUCCESS Media information about the specified block device + was obtained successfully. + @retval EFI_DEVICE_ERROR Cannot get the media information due to a hardware + error. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoGetMediaInfo ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, + IN UINTN DeviceIndex, + OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + + if (This == NULL || MediaInfo == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO (This); + if ((DeviceIndex == 0) || (DeviceIndex > Private->ActiveDevices)) { + return EFI_INVALID_PARAMETER; + } + + DeviceData = SearchDeviceByIndex (Private, DeviceIndex); + if (DeviceData == NULL) { + return EFI_NOT_FOUND; + } + + MediaInfo->DeviceType = (EFI_PEI_BLOCK_DEVICE_TYPE) EDKII_PEI_BLOCK_DEVICE_TYPE_ATA_HARD_DISK; + MediaInfo->MediaPresent = TRUE; + MediaInfo->LastBlock = (UINTN) DeviceData->Media.LastBlock; + MediaInfo->BlockSize = DeviceData->Media.BlockSize; + + return EFI_SUCCESS; +} + +/** + Reads the requested number of blocks from the specified block device. + + The function reads the requested number of blocks from the device. All the + blocks are read, or an error is returned. If there is no media in the device, + the function returns EFI_NO_MEDIA. + + @param[in] PeiServices General-purpose services that are available to + every PEIM. + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance. + @param[in] DeviceIndex Specifies the block device to which the function wants + to talk. Because the driver that implements Block I/O + PPIs will manage multiple block devices, PPIs that + want to talk to a single device must specify the device + index that was assigned during the enumeration process. + This index is a number from one to NumberBlockDevices. + @param[in] StartLBA The starting logical block address (LBA) to read from + on the device + @param[in] BufferSize The size of the Buffer in bytes. This number must be + a multiple of the intrinsic block size of the device. + @param[out] Buffer A pointer to the destination buffer for the data. + The caller is responsible for the ownership of the + buffer. + + @retval EFI_SUCCESS The data was read correctly from the device. + @retval EFI_DEVICE_ERROR The device reported an error while attempting + to perform the read operation. + @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not + valid, or the buffer is not properly aligned. + @retval EFI_NO_MEDIA There is no media in the device. + @retval EFI_BAD_BUFFER_SIZE The BufferSize parameter is not a multiple of + the intrinsic block size of the device. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoReadBlocks ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, + IN UINTN DeviceIndex, + IN EFI_PEI_LBA StartLBA, + IN UINTN BufferSize, + OUT VOID *Buffer + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO (This); + + // + // Check parameters + // + if ((This == NULL) || + (DeviceIndex == 0) || + (DeviceIndex > Private->ActiveDevices)) { + return EFI_INVALID_PARAMETER; + } + + DeviceData = SearchDeviceByIndex (Private, DeviceIndex); + if (DeviceData == NULL) { + return EFI_NOT_FOUND; + } + + return AhciRead (DeviceData, Buffer, StartLBA, BufferSize); +} + +/** + Gets the count of block I/O devices that one specific block driver detects. + + This function is used for getting the count of block I/O devices that one + specific block driver detects. If no device is detected, then the function + will return zero. + + @param[in] PeiServices General-purpose services that are available + to every PEIM. + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO2_PPI + instance. + @param[out] NumberBlockDevices The number of block I/O devices discovered. + + @retval EFI_SUCCESS The operation performed successfully. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoGetDeviceNo2 ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, + OUT UINTN *NumberBlockDevices + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + + if (This == NULL || NumberBlockDevices == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO2 (This); + *NumberBlockDevices = Private->ActiveDevices; + + return EFI_SUCCESS; +} + +/** + Gets a block device's media information. + + This function will provide the caller with the specified block device's media + information. If the media changes, calling this function will update the media + information accordingly. + + @param[in] PeiServices General-purpose services that are available to every + PEIM + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO2_PPI instance. + @param[in] DeviceIndex Specifies the block device to which the function wants + to talk. Because the driver that implements Block I/O + PPIs will manage multiple block devices, the PPIs that + want to talk to a single device must specify the + device index that was assigned during the enumeration + process. This index is a number from one to + NumberBlockDevices. + @param[out] MediaInfo The media information of the specified block media. + The caller is responsible for the ownership of this + data structure. + + @par Note: + The MediaInfo structure describes an enumeration of possible block device + types. This enumeration exists because no device paths are actually passed + across interfaces that describe the type or class of hardware that is publishing + the block I/O interface. This enumeration will allow for policy decisions + in the Recovery PEIM, such as "Try to recover from legacy floppy first, + LS-120 second, CD-ROM third." If there are multiple partitions abstracted + by a given device type, they should be reported in ascending order; this + order also applies to nested partitions, such as legacy MBR, where the + outermost partitions would have precedence in the reporting order. The + same logic applies to systems such as IDE that have precedence relationships + like "Master/Slave" or "Primary/Secondary". The master device should be + reported first, the slave second. + + @retval EFI_SUCCESS Media information about the specified block device + was obtained successfully. + @retval EFI_DEVICE_ERROR Cannot get the media information due to a hardware + error. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoGetMediaInfo2 ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, + IN UINTN DeviceIndex, + OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + + if (This == NULL || MediaInfo == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO2 (This); + if ((DeviceIndex == 0) || (DeviceIndex > Private->ActiveDevices)) { + return EFI_INVALID_PARAMETER; + } + + DeviceData = SearchDeviceByIndex (Private, DeviceIndex); + if (DeviceData == NULL) { + return EFI_NOT_FOUND; + } + + CopyMem ( + MediaInfo, + &DeviceData->Media, + sizeof (EFI_PEI_BLOCK_IO2_MEDIA) + ); + + return EFI_SUCCESS; +} + +/** + Reads the requested number of blocks from the specified block device. + + The function reads the requested number of blocks from the device. All the + blocks are read, or an error is returned. If there is no media in the device, + the function returns EFI_NO_MEDIA. + + @param[in] PeiServices General-purpose services that are available to + every PEIM. + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO2_PPI instance. + @param[in] DeviceIndex Specifies the block device to which the function wants + to talk. Because the driver that implements Block I/O + PPIs will manage multiple block devices, PPIs that + want to talk to a single device must specify the device + index that was assigned during the enumeration process. + This index is a number from one to NumberBlockDevices. + @param[in] StartLBA The starting logical block address (LBA) to read from + on the device + @param[in] BufferSize The size of the Buffer in bytes. This number must be + a multiple of the intrinsic block size of the device. + @param[out] Buffer A pointer to the destination buffer for the data. + The caller is responsible for the ownership of the + buffer. + + @retval EFI_SUCCESS The data was read correctly from the device. + @retval EFI_DEVICE_ERROR The device reported an error while attempting + to perform the read operation. + @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not + valid, or the buffer is not properly aligned. + @retval EFI_NO_MEDIA There is no media in the device. + @retval EFI_BAD_BUFFER_SIZE The BufferSize parameter is not a multiple of + the intrinsic block size of the device. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoReadBlocks2 ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, + IN UINTN DeviceIndex, + IN EFI_PEI_LBA StartLBA, + IN UINTN BufferSize, + OUT VOID *Buffer + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + + if (This == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO2 (This); + return AhciBlockIoReadBlocks ( + PeiServices, + &Private->BlkIoPpi, + DeviceIndex, + StartLBA, + BufferSize, + Buffer + ); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiBlockIo.h b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiBlockIo.h new file mode 100644 index 0000000..5896ae5 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiBlockIo.h @@ -0,0 +1,257 @@ +/** @file + The AhciPei driver is used to manage ATA hard disk device working under AHCI + mode at PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _AHCI_PEI_BLOCKIO_H_ +#define _AHCI_PEI_BLOCKIO_H_ + +// +// ATA hard disk device for EFI_PEI_BLOCK_DEVICE_TYPE +// +#define EDKII_PEI_BLOCK_DEVICE_TYPE_ATA_HARD_DISK 8 + +/** + Gets the count of block I/O devices that one specific block driver detects. + + This function is used for getting the count of block I/O devices that one + specific block driver detects. If no device is detected, then the function + will return zero. + + @param[in] PeiServices General-purpose services that are available + to every PEIM. + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI + instance. + @param[out] NumberBlockDevices The number of block I/O devices discovered. + + @retval EFI_SUCCESS The operation performed successfully. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoGetDeviceNo ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, + OUT UINTN *NumberBlockDevices + ); + +/** + Gets a block device's media information. + + This function will provide the caller with the specified block device's media + information. If the media changes, calling this function will update the media + information accordingly. + + @param[in] PeiServices General-purpose services that are available to every + PEIM + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance. + @param[in] DeviceIndex Specifies the block device to which the function wants + to talk. Because the driver that implements Block I/O + PPIs will manage multiple block devices, the PPIs that + want to talk to a single device must specify the + device index that was assigned during the enumeration + process. This index is a number from one to + NumberBlockDevices. + @param[out] MediaInfo The media information of the specified block media. + The caller is responsible for the ownership of this + data structure. + + @par Note: + The MediaInfo structure describes an enumeration of possible block device + types. This enumeration exists because no device paths are actually passed + across interfaces that describe the type or class of hardware that is publishing + the block I/O interface. This enumeration will allow for policy decisions + in the Recovery PEIM, such as "Try to recover from legacy floppy first, + LS-120 second, CD-ROM third." If there are multiple partitions abstracted + by a given device type, they should be reported in ascending order; this + order also applies to nested partitions, such as legacy MBR, where the + outermost partitions would have precedence in the reporting order. The + same logic applies to systems such as IDE that have precedence relationships + like "Master/Slave" or "Primary/Secondary". The master device should be + reported first, the slave second. + + @retval EFI_SUCCESS Media information about the specified block device + was obtained successfully. + @retval EFI_DEVICE_ERROR Cannot get the media information due to a hardware + error. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoGetMediaInfo ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, + IN UINTN DeviceIndex, + OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo + ); + +/** + Reads the requested number of blocks from the specified block device. + + The function reads the requested number of blocks from the device. All the + blocks are read, or an error is returned. If there is no media in the device, + the function returns EFI_NO_MEDIA. + + @param[in] PeiServices General-purpose services that are available to + every PEIM. + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance. + @param[in] DeviceIndex Specifies the block device to which the function wants + to talk. Because the driver that implements Block I/O + PPIs will manage multiple block devices, PPIs that + want to talk to a single device must specify the device + index that was assigned during the enumeration process. + This index is a number from one to NumberBlockDevices. + @param[in] StartLBA The starting logical block address (LBA) to read from + on the device + @param[in] BufferSize The size of the Buffer in bytes. This number must be + a multiple of the intrinsic block size of the device. + @param[out] Buffer A pointer to the destination buffer for the data. + The caller is responsible for the ownership of the + buffer. + + @retval EFI_SUCCESS The data was read correctly from the device. + @retval EFI_DEVICE_ERROR The device reported an error while attempting + to perform the read operation. + @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not + valid, or the buffer is not properly aligned. + @retval EFI_NO_MEDIA There is no media in the device. + @retval EFI_BAD_BUFFER_SIZE The BufferSize parameter is not a multiple of + the intrinsic block size of the device. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoReadBlocks ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, + IN UINTN DeviceIndex, + IN EFI_PEI_LBA StartLBA, + IN UINTN BufferSize, + OUT VOID *Buffer + ); + +/** + Gets the count of block I/O devices that one specific block driver detects. + + This function is used for getting the count of block I/O devices that one + specific block driver detects. If no device is detected, then the function + will return zero. + + @param[in] PeiServices General-purpose services that are available + to every PEIM. + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO2_PPI + instance. + @param[out] NumberBlockDevices The number of block I/O devices discovered. + + @retval EFI_SUCCESS The operation performed successfully. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoGetDeviceNo2 ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, + OUT UINTN *NumberBlockDevices + ); + +/** + Gets a block device's media information. + + This function will provide the caller with the specified block device's media + information. If the media changes, calling this function will update the media + information accordingly. + + @param[in] PeiServices General-purpose services that are available to every + PEIM + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO2_PPI instance. + @param[in] DeviceIndex Specifies the block device to which the function wants + to talk. Because the driver that implements Block I/O + PPIs will manage multiple block devices, the PPIs that + want to talk to a single device must specify the + device index that was assigned during the enumeration + process. This index is a number from one to + NumberBlockDevices. + @param[out] MediaInfo The media information of the specified block media. + The caller is responsible for the ownership of this + data structure. + + @par Note: + The MediaInfo structure describes an enumeration of possible block device + types. This enumeration exists because no device paths are actually passed + across interfaces that describe the type or class of hardware that is publishing + the block I/O interface. This enumeration will allow for policy decisions + in the Recovery PEIM, such as "Try to recover from legacy floppy first, + LS-120 second, CD-ROM third." If there are multiple partitions abstracted + by a given device type, they should be reported in ascending order; this + order also applies to nested partitions, such as legacy MBR, where the + outermost partitions would have precedence in the reporting order. The + same logic applies to systems such as IDE that have precedence relationships + like "Master/Slave" or "Primary/Secondary". The master device should be + reported first, the slave second. + + @retval EFI_SUCCESS Media information about the specified block device + was obtained successfully. + @retval EFI_DEVICE_ERROR Cannot get the media information due to a hardware + error. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoGetMediaInfo2 ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, + IN UINTN DeviceIndex, + OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo + ); + +/** + Reads the requested number of blocks from the specified block device. + + The function reads the requested number of blocks from the device. All the + blocks are read, or an error is returned. If there is no media in the device, + the function returns EFI_NO_MEDIA. + + @param[in] PeiServices General-purpose services that are available to + every PEIM. + @param[in] This Indicates the EFI_PEI_RECOVERY_BLOCK_IO2_PPI instance. + @param[in] DeviceIndex Specifies the block device to which the function wants + to talk. Because the driver that implements Block I/O + PPIs will manage multiple block devices, PPIs that + want to talk to a single device must specify the device + index that was assigned during the enumeration process. + This index is a number from one to NumberBlockDevices. + @param[in] StartLBA The starting logical block address (LBA) to read from + on the device + @param[in] BufferSize The size of the Buffer in bytes. This number must be + a multiple of the intrinsic block size of the device. + @param[out] Buffer A pointer to the destination buffer for the data. + The caller is responsible for the ownership of the + buffer. + + @retval EFI_SUCCESS The data was read correctly from the device. + @retval EFI_DEVICE_ERROR The device reported an error while attempting + to perform the read operation. + @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not + valid, or the buffer is not properly aligned. + @retval EFI_NO_MEDIA There is no media in the device. + @retval EFI_BAD_BUFFER_SIZE The BufferSize parameter is not a multiple of + the intrinsic block size of the device. + +**/ +EFI_STATUS +EFIAPI +AhciBlockIoReadBlocks2 ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, + IN UINTN DeviceIndex, + IN EFI_PEI_LBA StartLBA, + IN UINTN BufferSize, + OUT VOID *Buffer + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiPassThru.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiPassThru.c new file mode 100644 index 0000000..191b78c --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiPassThru.c @@ -0,0 +1,514 @@ +/** @file + The AhciPei driver is used to manage ATA hard disk device working under AHCI + mode at PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "AhciPei.h" + +/** + Traverse the attached ATA devices list to find out the device with given Port + and PortMultiplierPort. + + @param[in] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA + instance. + @param[in] Port The port number of the ATA device. + @param[in] PortMultiplierPort The port multiplier port number of the ATA device. + + @retval The pointer to the PEI_AHCI_ATA_DEVICE_DATA structure of the device + info to access. + +**/ +PEI_AHCI_ATA_DEVICE_DATA * +SearchDeviceByPort ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT16 Port, + IN UINT16 PortMultiplierPort + ) +{ + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + LIST_ENTRY *Node; + + Node = GetFirstNode (&Private->DeviceList); + while (!IsNull (&Private->DeviceList, Node)) { + DeviceData = AHCI_PEI_ATA_DEVICE_INFO_FROM_THIS (Node); + + if ((DeviceData->Port == Port) && + (DeviceData->PortMultiplier == PortMultiplierPort)) { + return DeviceData; + } + + Node = GetNextNode (&Private->DeviceList, Node); + } + + return NULL; +} + +/** + Sends an ATA command to an ATA device that is attached to the ATA controller. + + @param[in] Private Pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA. + @param[in] Port The port number of the ATA device. + @param[in] PortMultiplierPort The port multiplier port number of the ATA + device. + @param[in] FisIndex The index of the FIS. + @param[in,out] Packet A pointer to the ATA command to send to + the ATA device specified by Port and + PortMultiplierPort. + + @retval EFI_SUCCESS The ATA command was sent by the host. For + bi-directional commands, InTransferLength bytes + were transferred from InDataBuffer. For write + and bi-directional commands, OutTransferLength + bytes were transferred by OutDataBuffer. + @retval EFI_BAD_BUFFER_SIZE The ATA command was not executed. The number + of bytes that could be transferred is returned + in InTransferLength. For write and bi-directional + commands, OutTransferLength bytes were transferred + by OutDataBuffer. + @retval EFI_NOT_READY The ATA command could not be sent because there + are too many ATA commands already queued. The + caller may retry again later. + @retval EFI_DEVICE_ERROR A device error occurred while attempting to + send the ATA command. + @retval EFI_INVALID_PARAMETER Port, PortMultiplierPort, or the contents of + Acb are invalid. The ATA command was not sent, + so no additional status information is available. + +**/ +EFI_STATUS +AhciPassThruExecute ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT16 Port, + IN UINT16 PortMultiplierPort, + IN UINT8 FisIndex, + IN OUT EFI_ATA_PASS_THRU_COMMAND_PACKET *Packet + ) +{ + EFI_STATUS Status; + + switch (Packet->Protocol) { + case EFI_ATA_PASS_THRU_PROTOCOL_ATA_NON_DATA: + Status = AhciNonDataTransfer ( + Private, + (UINT8) Port, + (UINT8) PortMultiplierPort, + FisIndex, + Packet->Acb, + Packet->Asb, + Packet->Timeout + ); + break; + case EFI_ATA_PASS_THRU_PROTOCOL_PIO_DATA_IN: + Status = AhciPioTransfer ( + Private, + (UINT8) Port, + (UINT8) PortMultiplierPort, + FisIndex, + TRUE, + Packet->Acb, + Packet->Asb, + Packet->InDataBuffer, + Packet->InTransferLength, + Packet->Timeout + ); + break; + case EFI_ATA_PASS_THRU_PROTOCOL_PIO_DATA_OUT: + Status = AhciPioTransfer ( + Private, + (UINT8) Port, + (UINT8) PortMultiplierPort, + FisIndex, + FALSE, + Packet->Acb, + Packet->Asb, + Packet->OutDataBuffer, + Packet->OutTransferLength, + Packet->Timeout + ); + break; + default: + return EFI_UNSUPPORTED; + } + + return Status; +} + +/** + Sends an ATA command to an ATA device that is attached to the ATA controller. + + @param[in] This The PPI instance pointer. + @param[in] Port The port number of the ATA device to send + the command. + @param[in] PortMultiplierPort The port multiplier port number of the ATA + device to send the command. + If there is no port multiplier, then specify + 0xFFFF. + @param[in,out] Packet A pointer to the ATA command to send to + the ATA device specified by Port and + PortMultiplierPort. + + @retval EFI_SUCCESS The ATA command was sent by the host. For + bi-directional commands, InTransferLength bytes + were transferred from InDataBuffer. For write + and bi-directional commands, OutTransferLength + bytes were transferred by OutDataBuffer. + @retval EFI_NOT_FOUND The specified ATA device is not found. + @retval EFI_INVALID_PARAMETER The contents of Acb are invalid. The ATA command + was not sent, so no additional status information + is available. + @retval EFI_BAD_BUFFER_SIZE The ATA command was not executed. The number + of bytes that could be transferred is returned + in InTransferLength. For write and bi-directional + commands, OutTransferLength bytes were transferred + by OutDataBuffer. + @retval EFI_NOT_READY The ATA command could not be sent because there + are too many ATA commands already queued. The + caller may retry again later. + @retval EFI_DEVICE_ERROR A device error occurred while attempting to + send the ATA command. + +**/ +EFI_STATUS +EFIAPI +AhciAtaPassThruPassThru ( + IN EDKII_PEI_ATA_PASS_THRU_PPI *This, + IN UINT16 Port, + IN UINT16 PortMultiplierPort, + IN OUT EFI_ATA_PASS_THRU_COMMAND_PACKET *Packet + ) +{ + UINT32 IoAlign; + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + UINT32 MaxSectorCount; + UINT32 BlockSize; + + if (This == NULL || Packet == NULL) { + return EFI_INVALID_PARAMETER; + } + + IoAlign = This->Mode->IoAlign; + if ((IoAlign > 1) && !IS_ALIGNED (Packet->InDataBuffer, IoAlign)) { + return EFI_INVALID_PARAMETER; + } + + if ((IoAlign > 1) && !IS_ALIGNED (Packet->OutDataBuffer, IoAlign)) { + return EFI_INVALID_PARAMETER; + } + + if ((IoAlign > 1) && !IS_ALIGNED (Packet->Asb, IoAlign)) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_PASS_THRU (This); + DeviceData = SearchDeviceByPort (Private, Port, PortMultiplierPort); + if (DeviceData == NULL) { + return EFI_NOT_FOUND; + } + + MaxSectorCount = mMaxTransferBlockNumber[DeviceData->Lba48Bit]; + BlockSize = DeviceData->Media.BlockSize; + + // + // Convert the transfer length from sector count to byte. + // + if (((Packet->Length & EFI_ATA_PASS_THRU_LENGTH_BYTES) == 0) && + (Packet->InTransferLength != 0)) { + Packet->InTransferLength = Packet->InTransferLength * BlockSize; + } + + // + // Convert the transfer length from sector count to byte. + // + if (((Packet->Length & EFI_ATA_PASS_THRU_LENGTH_BYTES) == 0) && + (Packet->OutTransferLength != 0)) { + Packet->OutTransferLength = Packet->OutTransferLength * BlockSize; + } + + // + // If the data buffer described by InDataBuffer/OutDataBuffer and + // InTransferLength/OutTransferLength is too big to be transferred in a single + // command, then no data is transferred and EFI_BAD_BUFFER_SIZE is returned. + // + if (((Packet->InTransferLength != 0) && (Packet->InTransferLength > MaxSectorCount * BlockSize)) || + ((Packet->OutTransferLength != 0) && (Packet->OutTransferLength > MaxSectorCount * BlockSize))) { + return EFI_BAD_BUFFER_SIZE; + } + + return AhciPassThruExecute ( + Private, + DeviceData->Port, + DeviceData->PortMultiplier, + DeviceData->FisIndex, + Packet + ); +} + +/** + Used to retrieve the list of legal port numbers for ATA devices on an ATA controller. + These can either be the list of ports where ATA devices are actually present or the + list of legal port numbers for the ATA controller. Regardless, the caller of this + function must probe the port number returned to see if an ATA device is actually + present at that location on the ATA controller. + + The GetNextPort() function retrieves the port number on an ATA controller. If on + input Port is 0xFFFF, then the port number of the first port on the ATA controller + is returned in Port and EFI_SUCCESS is returned. + + If Port is a port number that was returned on a previous call to GetNextPort(), + then the port number of the next port on the ATA controller is returned in Port, + and EFI_SUCCESS is returned. If Port is not 0xFFFF and Port was not returned on + a previous call to GetNextPort(), then EFI_INVALID_PARAMETER is returned. + + If Port is the port number of the last port on the ATA controller, then EFI_NOT_FOUND + is returned. + + @param[in] This The PPI instance pointer. + @param[in,out] Port On input, a pointer to the port number on the ATA controller. + On output, a pointer to the next port number on the ATA + controller. An input value of 0xFFFF retrieves the first + port number on the ATA controller. + + @retval EFI_SUCCESS The next port number on the ATA controller was + returned in Port. + @retval EFI_NOT_FOUND There are no more ports on this ATA controller. + @retval EFI_INVALID_PARAMETER Port is not 0xFFFF and Port was not returned + on a previous call to GetNextPort(). + +**/ +EFI_STATUS +EFIAPI +AhciAtaPassThruGetNextPort ( + IN EDKII_PEI_ATA_PASS_THRU_PPI *This, + IN OUT UINT16 *Port + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + LIST_ENTRY *Node; + + if (This == NULL || Port == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_PASS_THRU (This); + + if (*Port == 0xFFFF) { + // + // If the Port is all 0xFF's, start to traverse the device list from the + // beginning. + // + Node = GetFirstNode (&Private->DeviceList); + if (!IsNull (&Private->DeviceList, Node)) { + DeviceData = AHCI_PEI_ATA_DEVICE_INFO_FROM_THIS (Node); + + *Port = DeviceData->Port; + goto Exit; + } + + return EFI_NOT_FOUND; + } else if (*Port == Private->PreviousPort) { + Node = GetFirstNode (&Private->DeviceList); + + while (!IsNull (&Private->DeviceList, Node)) { + DeviceData = AHCI_PEI_ATA_DEVICE_INFO_FROM_THIS (Node); + + if (DeviceData->Port > *Port){ + *Port = DeviceData->Port; + goto Exit; + } + + Node = GetNextNode (&Private->DeviceList, Node); + } + + return EFI_NOT_FOUND; + } else { + // + // Port is not equal to all 0xFF's and not equal to previous return value. + // + return EFI_INVALID_PARAMETER; + } + +Exit: + // + // Update the PreviousPort. + // + Private->PreviousPort = *Port; + + return EFI_SUCCESS; +} + +/** + Used to retrieve the list of legal port multiplier port numbers for ATA devices + on a port of an ATA controller. These can either be the list of port multiplier + ports where ATA devices are actually present on port or the list of legal port + multiplier ports on that port. Regardless, the caller of this function must probe + the port number and port multiplier port number returned to see if an ATA device + is actually present. + + The GetNextDevice() function retrieves the port multiplier port number of an ATA + device present on a port of an ATA controller. + + If PortMultiplierPort points to a port multiplier port number value that was + returned on a previous call to GetNextDevice(), then the port multiplier port + number of the next ATA device on the port of the ATA controller is returned in + PortMultiplierPort, and EFI_SUCCESS is returned. + + If PortMultiplierPort points to 0xFFFF, then the port multiplier port number + of the first ATA device on port of the ATA controller is returned in PortMultiplierPort + and EFI_SUCCESS is returned. + + If PortMultiplierPort is not 0xFFFF and the value pointed to by PortMultiplierPort + was not returned on a previous call to GetNextDevice(), then EFI_INVALID_PARAMETER + is returned. + + If PortMultiplierPort is the port multiplier port number of the last ATA device + on the port of the ATA controller, then EFI_NOT_FOUND is returned. + + @param[in] This The PPI instance pointer. + @param[in] Port The port number present on the ATA controller. + @param[in,out] PortMultiplierPort On input, a pointer to the port multiplier + port number of an ATA device present on the + ATA controller. If on input a PortMultiplierPort + of 0xFFFF is specified, then the port multiplier + port number of the first ATA device is returned. + On output, a pointer to the port multiplier port + number of the next ATA device present on an ATA + controller. + + @retval EFI_SUCCESS The port multiplier port number of the next ATA + device on the port of the ATA controller was + returned in PortMultiplierPort. + @retval EFI_NOT_FOUND There are no more ATA devices on this port of + the ATA controller. + @retval EFI_INVALID_PARAMETER PortMultiplierPort is not 0xFFFF, and PortMultiplierPort + was not returned on a previous call to GetNextDevice(). + +**/ +EFI_STATUS +EFIAPI +AhciAtaPassThruGetNextDevice ( + IN EDKII_PEI_ATA_PASS_THRU_PPI *This, + IN UINT16 Port, + IN OUT UINT16 *PortMultiplierPort + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + LIST_ENTRY *Node; + + if (This == NULL || PortMultiplierPort == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_PASS_THRU (This); + + if (Private->PreviousPortMultiplier == 0xFFFF) { + // + // If a device is directly attached on a port, previous call to this + // function will return the value 0xFFFF for PortMultiplierPort. In + // this case, there should be no more device on the port multiplier. + // + Private->PreviousPortMultiplier = 0; + return EFI_NOT_FOUND; + } + + if (*PortMultiplierPort == Private->PreviousPortMultiplier) { + Node = GetFirstNode (&Private->DeviceList); + + while (!IsNull (&Private->DeviceList, Node)) { + DeviceData = AHCI_PEI_ATA_DEVICE_INFO_FROM_THIS (Node); + + if ((DeviceData->Port == Port) && + (DeviceData->PortMultiplier > *PortMultiplierPort)){ + *PortMultiplierPort = DeviceData->PortMultiplier; + goto Exit; + } + + Node = GetNextNode (&Private->DeviceList, Node); + } + + return EFI_NOT_FOUND; + } else if (*PortMultiplierPort == 0xFFFF) { + // + // If the PortMultiplierPort is all 0xFF's, start to traverse the device list + // from the beginning. + // + Node = GetFirstNode (&Private->DeviceList); + + while (!IsNull (&Private->DeviceList, Node)) { + DeviceData = AHCI_PEI_ATA_DEVICE_INFO_FROM_THIS (Node); + + if (DeviceData->Port == Port){ + *PortMultiplierPort = DeviceData->PortMultiplier; + goto Exit; + } + + Node = GetNextNode (&Private->DeviceList, Node); + } + + return EFI_NOT_FOUND; + } else { + // + // PortMultiplierPort is not equal to all 0xFF's and not equal to previous + // return value. + // + return EFI_INVALID_PARAMETER; + } + +Exit: + // + // Update the PreviousPortMultiplier. + // + Private->PreviousPortMultiplier = *PortMultiplierPort; + + return EFI_SUCCESS; +} + +/** + Gets the device path information of the underlying ATA host controller. + + @param[in] This The PPI instance pointer. + @param[out] DevicePathLength The length of the device path in bytes specified + by DevicePath. + @param[out] DevicePath The device path of the underlying ATA host controller. + This field re-uses EFI Device Path Protocol as + defined by Section 10.2 EFI Device Path Protocol + of UEFI 2.7 Specification. + + @retval EFI_SUCCESS The device path of the ATA host controller has + been successfully returned. + @retval EFI_INVALID_PARAMETER DevicePathLength or DevicePath is NULL. + @retval EFI_OUT_OF_RESOURCES Not enough resource to return the device path. + +**/ +EFI_STATUS +EFIAPI +AhciAtaPassThruGetDevicePath ( + IN EDKII_PEI_ATA_PASS_THRU_PPI *This, + OUT UINTN *DevicePathLength, + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + + if (This == NULL || DevicePathLength == NULL || DevicePath == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_PASS_THRU (This); + + *DevicePathLength = Private->DevicePathLength; + *DevicePath = AllocateCopyPool (Private->DevicePathLength, Private->DevicePath); + if (*DevicePath == NULL) { + *DevicePathLength = 0; + return EFI_OUT_OF_RESOURCES; + } + + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiPassThru.h b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiPassThru.h new file mode 100644 index 0000000..94395aa --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiPassThru.h @@ -0,0 +1,177 @@ +/** @file + The AhciPei driver is used to manage ATA hard disk device working under AHCI + mode at PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _AHCI_PEI_PASSTHRU_H_ +#define _AHCI_PEI_PASSTHRU_H_ + +/** + Sends an ATA command to an ATA device that is attached to the ATA controller. + + @param[in] This The PPI instance pointer. + @param[in] Port The port number of the ATA device to send + the command. + @param[in] PortMultiplierPort The port multiplier port number of the ATA + device to send the command. + If there is no port multiplier, then specify + 0xFFFF. + @param[in,out] Packet A pointer to the ATA command to send to + the ATA device specified by Port and + PortMultiplierPort. + + @retval EFI_SUCCESS The ATA command was sent by the host. For + bi-directional commands, InTransferLength bytes + were transferred from InDataBuffer. For write + and bi-directional commands, OutTransferLength + bytes were transferred by OutDataBuffer. + @retval EFI_NOT_FOUND The specified ATA device is not found. + @retval EFI_INVALID_PARAMETER The contents of Acb are invalid. The ATA command + was not sent, so no additional status information + is available. + @retval EFI_BAD_BUFFER_SIZE The ATA command was not executed. The number + of bytes that could be transferred is returned + in InTransferLength. For write and bi-directional + commands, OutTransferLength bytes were transferred + by OutDataBuffer. + @retval EFI_NOT_READY The ATA command could not be sent because there + are too many ATA commands already queued. The + caller may retry again later. + @retval EFI_DEVICE_ERROR A device error occurred while attempting to + send the ATA command. + +**/ +EFI_STATUS +EFIAPI +AhciAtaPassThruPassThru ( + IN EDKII_PEI_ATA_PASS_THRU_PPI *This, + IN UINT16 Port, + IN UINT16 PortMultiplierPort, + IN OUT EFI_ATA_PASS_THRU_COMMAND_PACKET *Packet + ); + +/** + Used to retrieve the list of legal port numbers for ATA devices on an ATA controller. + These can either be the list of ports where ATA devices are actually present or the + list of legal port numbers for the ATA controller. Regardless, the caller of this + function must probe the port number returned to see if an ATA device is actually + present at that location on the ATA controller. + + The GetNextPort() function retrieves the port number on an ATA controller. If on + input Port is 0xFFFF, then the port number of the first port on the ATA controller + is returned in Port and EFI_SUCCESS is returned. + + If Port is a port number that was returned on a previous call to GetNextPort(), + then the port number of the next port on the ATA controller is returned in Port, + and EFI_SUCCESS is returned. If Port is not 0xFFFF and Port was not returned on + a previous call to GetNextPort(), then EFI_INVALID_PARAMETER is returned. + + If Port is the port number of the last port on the ATA controller, then EFI_NOT_FOUND + is returned. + + @param[in] This The PPI instance pointer. + @param[in,out] Port On input, a pointer to the port number on the ATA controller. + On output, a pointer to the next port number on the ATA + controller. An input value of 0xFFFF retrieves the first + port number on the ATA controller. + + @retval EFI_SUCCESS The next port number on the ATA controller was + returned in Port. + @retval EFI_NOT_FOUND There are no more ports on this ATA controller. + @retval EFI_INVALID_PARAMETER Port is not 0xFFFF and Port was not returned + on a previous call to GetNextPort(). + +**/ +EFI_STATUS +EFIAPI +AhciAtaPassThruGetNextPort ( + IN EDKII_PEI_ATA_PASS_THRU_PPI *This, + IN OUT UINT16 *Port + ); + +/** + Used to retrieve the list of legal port multiplier port numbers for ATA devices + on a port of an ATA controller. These can either be the list of port multiplier + ports where ATA devices are actually present on port or the list of legal port + multiplier ports on that port. Regardless, the caller of this function must probe + the port number and port multiplier port number returned to see if an ATA device + is actually present. + + The GetNextDevice() function retrieves the port multiplier port number of an ATA + device present on a port of an ATA controller. + + If PortMultiplierPort points to a port multiplier port number value that was + returned on a previous call to GetNextDevice(), then the port multiplier port + number of the next ATA device on the port of the ATA controller is returned in + PortMultiplierPort, and EFI_SUCCESS is returned. + + If PortMultiplierPort points to 0xFFFF, then the port multiplier port number + of the first ATA device on port of the ATA controller is returned in PortMultiplierPort + and EFI_SUCCESS is returned. + + If PortMultiplierPort is not 0xFFFF and the value pointed to by PortMultiplierPort + was not returned on a previous call to GetNextDevice(), then EFI_INVALID_PARAMETER + is returned. + + If PortMultiplierPort is the port multiplier port number of the last ATA device + on the port of the ATA controller, then EFI_NOT_FOUND is returned. + + @param[in] This The PPI instance pointer. + @param[in] Port The port number present on the ATA controller. + @param[in,out] PortMultiplierPort On input, a pointer to the port multiplier + port number of an ATA device present on the + ATA controller. If on input a PortMultiplierPort + of 0xFFFF is specified, then the port multiplier + port number of the first ATA device is returned. + On output, a pointer to the port multiplier port + number of the next ATA device present on an ATA + controller. + + @retval EFI_SUCCESS The port multiplier port number of the next ATA + device on the port of the ATA controller was + returned in PortMultiplierPort. + @retval EFI_NOT_FOUND There are no more ATA devices on this port of + the ATA controller. + @retval EFI_INVALID_PARAMETER PortMultiplierPort is not 0xFFFF, and PortMultiplierPort + was not returned on a previous call to GetNextDevice(). + +**/ +EFI_STATUS +EFIAPI +AhciAtaPassThruGetNextDevice ( + IN EDKII_PEI_ATA_PASS_THRU_PPI *This, + IN UINT16 Port, + IN OUT UINT16 *PortMultiplierPort + ); + +/** + Gets the device path information of the underlying ATA host controller. + + @param[in] This The PPI instance pointer. + @param[out] DevicePathLength The length of the device path in bytes specified + by DevicePath. + @param[out] DevicePath The device path of the underlying ATA host controller. + This field re-uses EFI Device Path Protocol as + defined by Section 10.2 EFI Device Path Protocol + of UEFI 2.7 Specification. + + @retval EFI_SUCCESS The device path of the ATA host controller has + been successfully returned. + @retval EFI_INVALID_PARAMETER DevicePathLength or DevicePath is NULL. + @retval EFI_OUT_OF_RESOURCES Not enough resource to return the device path. + +**/ +EFI_STATUS +EFIAPI +AhciAtaPassThruGetDevicePath ( + IN EDKII_PEI_ATA_PASS_THRU_PPI *This, + OUT UINTN *DevicePathLength, + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiStorageSecurity.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiStorageSecurity.c new file mode 100644 index 0000000..1bc25a7 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiStorageSecurity.c @@ -0,0 +1,384 @@ +/** @file + The AhciPei driver is used to manage ATA hard disk device working under AHCI + mode at PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "AhciPei.h" + +/** + Traverse the attached ATA devices list to find out the device with given trust + computing device index. + + @param[in] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA + instance. + @param[in] TrustComputingDeviceIndex The trust computing device index. + + @retval The pointer to the PEI_AHCI_ATA_DEVICE_DATA structure of the device + info to access. + +**/ +PEI_AHCI_ATA_DEVICE_DATA * +SearchTrustComputingDeviceByIndex ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINTN TrustComputingDeviceIndex + ) +{ + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + LIST_ENTRY *Node; + + Node = GetFirstNode (&Private->DeviceList); + while (!IsNull (&Private->DeviceList, Node)) { + DeviceData = AHCI_PEI_ATA_DEVICE_INFO_FROM_THIS (Node); + + if (DeviceData->TrustComputingDeviceIndex == TrustComputingDeviceIndex) { + return DeviceData; + } + + Node = GetNextNode (&Private->DeviceList, Node); + } + + return NULL; +} + +/** + Gets the count of storage security devices that one specific driver detects. + + @param[in] This The PPI instance pointer. + @param[out] NumberofDevices The number of storage security devices discovered. + + @retval EFI_SUCCESS The operation performed successfully. + @retval EFI_INVALID_PARAMETER The parameters are invalid. + +**/ +EFI_STATUS +EFIAPI +AhciStorageSecurityGetDeviceNo ( + IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, + OUT UINTN *NumberofDevices + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + + if (This == NULL || NumberofDevices == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_STROAGE_SECURITY (This); + *NumberofDevices = Private->TrustComputingDevices; + + return EFI_SUCCESS; +} + +/** + Gets the device path of a specific storage security device. + + @param[in] This The PPI instance pointer. + @param[in] DeviceIndex Specifies the storage security device to which + the function wants to talk. Because the driver + that implements Storage Security Command PPIs + will manage multiple storage devices, the PPIs + that want to talk to a single device must specify + the device index that was assigned during the + enumeration process. This index is a number from + one to NumberofDevices. + @param[out] DevicePathLength The length of the device path in bytes specified + by DevicePath. + @param[out] DevicePath The device path of storage security device. + This field re-uses EFI Device Path Protocol as + defined by Section 10.2 EFI Device Path Protocol + of UEFI 2.7 Specification. + + @retval EFI_SUCCESS The operation succeeds. + @retval EFI_INVALID_PARAMETER DevicePathLength or DevicePath is NULL. + @retval EFI_NOT_FOUND The specified storage security device not found. + @retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources. + +**/ +EFI_STATUS +EFIAPI +AhciStorageSecurityGetDevicePath ( + IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, + IN UINTN DeviceIndex, + OUT UINTN *DevicePathLength, + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + EFI_STATUS Status; + + if (This == NULL || DevicePathLength == NULL || DevicePath == NULL) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_STROAGE_SECURITY (This); + if ((DeviceIndex == 0) || (DeviceIndex > Private->TrustComputingDevices)) { + return EFI_INVALID_PARAMETER; + } + + DeviceData = SearchTrustComputingDeviceByIndex (Private, DeviceIndex); + if (DeviceData == NULL) { + return EFI_NOT_FOUND; + } + + Status = AhciBuildDevicePath ( + Private, + DeviceData->Port, + DeviceData->PortMultiplier, + DevicePathLength, + DevicePath + ); + if (EFI_ERROR (Status)) { + return Status; + } + + return EFI_SUCCESS; +} + +/** + Send a security protocol command to a device that receives data and/or the result + of one or more commands sent by SendData. + + The ReceiveData function sends a security protocol command to the given DeviceIndex. + The security protocol command sent is defined by SecurityProtocolId and contains + the security protocol specific data SecurityProtocolSpecificData. The function + returns the data from the security protocol command in PayloadBuffer. + + For devices supporting the SCSI command set, the security protocol command is sent + using the SECURITY PROTOCOL IN command defined in SPC-4. + + For devices supporting the ATA command set, the security protocol command is sent + using one of the TRUSTED RECEIVE commands defined in ATA8-ACS if PayloadBufferSize + is non-zero. + + If the PayloadBufferSize is zero, the security protocol command is sent using the + Trusted Non-Data command defined in ATA8-ACS. + + If PayloadBufferSize is too small to store the available data from the security + protocol command, the function shall copy PayloadBufferSize bytes into the + PayloadBuffer and return EFI_WARN_BUFFER_TOO_SMALL. + + If PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero, + the function shall return EFI_INVALID_PARAMETER. + + If the given DeviceIndex does not support security protocol commands, the function + shall return EFI_UNSUPPORTED. + + If the security protocol fails to complete within the Timeout period, the function + shall return EFI_TIMEOUT. + + If the security protocol command completes without an error, the function shall + return EFI_SUCCESS. If the security protocol command completes with an error, the + function shall return EFI_DEVICE_ERROR. + + @param[in] This The PPI instance pointer. + @param[in] DeviceIndex Specifies the storage security device to which the + function wants to talk. Because the driver that + implements Storage Security Command PPIs will manage + multiple storage devices, the PPIs that want to talk + to a single device must specify the device index + that was assigned during the enumeration process. + This index is a number from one to NumberofDevices. + @param[in] Timeout The timeout, in 100ns units, to use for the execution + of the security protocol command. A Timeout value + of 0 means that this function will wait indefinitely + for the security protocol command to execute. If + Timeout is greater than zero, then this function + will return EFI_TIMEOUT if the time required to + execute the receive data command is greater than + Timeout. + @param[in] SecurityProtocolId + The value of the "Security Protocol" parameter of + the security protocol command to be sent. + @param[in] SecurityProtocolSpecificData + The value of the "Security Protocol Specific" + parameter of the security protocol command to be + sent. + @param[in] PayloadBufferSize + Size in bytes of the payload data buffer. + @param[out] PayloadBuffer A pointer to a destination buffer to store the + security protocol command specific payload data + for the security protocol command. The caller is + responsible for having either implicit or explicit + ownership of the buffer. + @param[out] PayloadTransferSize + A pointer to a buffer to store the size in bytes + of the data written to the payload data buffer. + + @retval EFI_SUCCESS The security protocol command completed + successfully. + @retval EFI_WARN_BUFFER_TOO_SMALL The PayloadBufferSize was too small to + store the available data from the device. + The PayloadBuffer contains the truncated + data. + @retval EFI_UNSUPPORTED The given DeviceIndex does not support + security protocol commands. + @retval EFI_DEVICE_ERROR The security protocol command completed + with an error. + @retval EFI_INVALID_PARAMETER The PayloadBuffer or PayloadTransferSize + is NULL and PayloadBufferSize is non-zero. + @retval EFI_TIMEOUT A timeout occurred while waiting for the + security protocol command to execute. + +**/ +EFI_STATUS +EFIAPI +AhciStorageSecurityReceiveData ( + IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, + IN UINTN DeviceIndex, + IN UINT64 Timeout, + IN UINT8 SecurityProtocolId, + IN UINT16 SecurityProtocolSpecificData, + IN UINTN PayloadBufferSize, + OUT VOID *PayloadBuffer, + OUT UINTN *PayloadTransferSize + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + + if ((PayloadBuffer == NULL) || (PayloadTransferSize == NULL) || (PayloadBufferSize == 0)) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_STROAGE_SECURITY (This); + if ((DeviceIndex == 0) || (DeviceIndex > Private->TrustComputingDevices)) { + return EFI_INVALID_PARAMETER; + } + + DeviceData = SearchTrustComputingDeviceByIndex (Private, DeviceIndex); + if (DeviceData == NULL) { + return EFI_NOT_FOUND; + } + + ASSERT ((DeviceData->IdentifyData->trusted_computing_support & BIT0) != 0); + if ((DeviceData->IdentifyData->trusted_computing_support & BIT0) == 0) { + return EFI_UNSUPPORTED; + } + + return TrustTransferAtaDevice ( + DeviceData, + PayloadBuffer, + SecurityProtocolId, + SecurityProtocolSpecificData, + PayloadBufferSize, + FALSE, + Timeout, + PayloadTransferSize + ); +} + +/** + Send a security protocol command to a device. + + The SendData function sends a security protocol command containing the payload + PayloadBuffer to the given DeviceIndex. The security protocol command sent is + defined by SecurityProtocolId and contains the security protocol specific data + SecurityProtocolSpecificData. If the underlying protocol command requires a + specific padding for the command payload, the SendData function shall add padding + bytes to the command payload to satisfy the padding requirements. + + For devices supporting the SCSI command set, the security protocol command is + sent using the SECURITY PROTOCOL OUT command defined in SPC-4. + + For devices supporting the ATA command set, the security protocol command is + sent using one of the TRUSTED SEND commands defined in ATA8-ACS if PayloadBufferSize + is non-zero. If the PayloadBufferSize is zero, the security protocol command + is sent using the Trusted Non-Data command defined in ATA8-ACS. + + If PayloadBuffer is NULL and PayloadBufferSize is non-zero, the function shall + return EFI_INVALID_PARAMETER. + + If the given DeviceIndex does not support security protocol commands, the function + shall return EFI_UNSUPPORTED. + + If the security protocol fails to complete within the Timeout period, the function + shall return EFI_TIMEOUT. + + If the security protocol command completes without an error, the function shall + return EFI_SUCCESS. If the security protocol command completes with an error, + the functio shall return EFI_DEVICE_ERROR. + + @param[in] This The PPI instance pointer. + @param[in] DeviceIndex The ID of the device. + @param[in] Timeout The timeout, in 100ns units, to use for the execution + of the security protocol command. A Timeout value + of 0 means that this function will wait indefinitely + for the security protocol command to execute. If + Timeout is greater than zero, then this function + will return EFI_TIMEOUT if the time required to + execute the receive data command is greater than + Timeout. + @param[in] SecurityProtocolId + The value of the "Security Protocol" parameter of + the security protocol command to be sent. + @param[in] SecurityProtocolSpecificData + The value of the "Security Protocol Specific" + parameter of the security protocol command to be + sent. + @param[in] PayloadBufferSize Size in bytes of the payload data buffer. + @param[in] PayloadBuffer A pointer to a destination buffer to store the + security protocol command specific payload data + for the security protocol command. + + @retval EFI_SUCCESS The security protocol command completed successfully. + @retval EFI_UNSUPPORTED The given DeviceIndex does not support security + protocol commands. + @retval EFI_DEVICE_ERROR The security protocol command completed with + an error. + @retval EFI_INVALID_PARAMETER The PayloadBuffer is NULL and PayloadBufferSize + is non-zero. + @retval EFI_TIMEOUT A timeout occurred while waiting for the security + protocol command to execute. + +**/ +EFI_STATUS +EFIAPI +AhciStorageSecuritySendData ( + IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, + IN UINTN DeviceIndex, + IN UINT64 Timeout, + IN UINT8 SecurityProtocolId, + IN UINT16 SecurityProtocolSpecificData, + IN UINTN PayloadBufferSize, + IN VOID *PayloadBuffer + ) +{ + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + PEI_AHCI_ATA_DEVICE_DATA *DeviceData; + + if ((PayloadBuffer == NULL) && (PayloadBufferSize != 0)) { + return EFI_INVALID_PARAMETER; + } + + Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_STROAGE_SECURITY (This); + if ((DeviceIndex == 0) || (DeviceIndex > Private->TrustComputingDevices)) { + return EFI_INVALID_PARAMETER; + } + + DeviceData = SearchTrustComputingDeviceByIndex (Private, DeviceIndex); + if (DeviceData == NULL) { + return EFI_NOT_FOUND; + } + + ASSERT ((DeviceData->IdentifyData->trusted_computing_support & BIT0) != 0); + if ((DeviceData->IdentifyData->trusted_computing_support & BIT0) == 0) { + return EFI_UNSUPPORTED; + } + + return TrustTransferAtaDevice ( + DeviceData, + PayloadBuffer, + SecurityProtocolId, + SecurityProtocolSpecificData, + PayloadBufferSize, + TRUE, + Timeout, + NULL + ); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiStorageSecurity.h b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiStorageSecurity.h new file mode 100644 index 0000000..905cdb8 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPeiStorageSecurity.h @@ -0,0 +1,240 @@ +/** @file + The AhciPei driver is used to manage ATA hard disk device working under AHCI + mode at PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _AHCI_PEI_STORAGE_SECURITY_H_ +#define _AHCI_PEI_STORAGE_SECURITY_H_ + +/** + Gets the count of storage security devices that one specific driver detects. + + @param[in] This The PPI instance pointer. + @param[out] NumberofDevices The number of storage security devices discovered. + + @retval EFI_SUCCESS The operation performed successfully. + @retval EFI_INVALID_PARAMETER The parameters are invalid. + +**/ +EFI_STATUS +EFIAPI +AhciStorageSecurityGetDeviceNo ( + IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, + OUT UINTN *NumberofDevices + ); + +/** + Gets the device path of a specific storage security device. + + @param[in] This The PPI instance pointer. + @param[in] DeviceIndex Specifies the storage security device to which + the function wants to talk. Because the driver + that implements Storage Security Command PPIs + will manage multiple storage devices, the PPIs + that want to talk to a single device must specify + the device index that was assigned during the + enumeration process. This index is a number from + one to NumberofDevices. + @param[out] DevicePathLength The length of the device path in bytes specified + by DevicePath. + @param[out] DevicePath The device path of storage security device. + This field re-uses EFI Device Path Protocol as + defined by Section 10.2 EFI Device Path Protocol + of UEFI 2.7 Specification. + + @retval EFI_SUCCESS The operation succeeds. + @retval EFI_INVALID_PARAMETER DevicePathLength or DevicePath is NULL. + @retval EFI_NOT_FOUND The specified storage security device not found. + @retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources. + +**/ +EFI_STATUS +EFIAPI +AhciStorageSecurityGetDevicePath ( + IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, + IN UINTN DeviceIndex, + OUT UINTN *DevicePathLength, + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath + ); + +/** + Send a security protocol command to a device that receives data and/or the result + of one or more commands sent by SendData. + + The ReceiveData function sends a security protocol command to the given DeviceIndex. + The security protocol command sent is defined by SecurityProtocolId and contains + the security protocol specific data SecurityProtocolSpecificData. The function + returns the data from the security protocol command in PayloadBuffer. + + For devices supporting the SCSI command set, the security protocol command is sent + using the SECURITY PROTOCOL IN command defined in SPC-4. + + For devices supporting the ATA command set, the security protocol command is sent + using one of the TRUSTED RECEIVE commands defined in ATA8-ACS if PayloadBufferSize + is non-zero. + + If the PayloadBufferSize is zero, the security protocol command is sent using the + Trusted Non-Data command defined in ATA8-ACS. + + If PayloadBufferSize is too small to store the available data from the security + protocol command, the function shall copy PayloadBufferSize bytes into the + PayloadBuffer and return EFI_WARN_BUFFER_TOO_SMALL. + + If PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero, + the function shall return EFI_INVALID_PARAMETER. + + If the given DeviceIndex does not support security protocol commands, the function + shall return EFI_UNSUPPORTED. + + If the security protocol fails to complete within the Timeout period, the function + shall return EFI_TIMEOUT. + + If the security protocol command completes without an error, the function shall + return EFI_SUCCESS. If the security protocol command completes with an error, the + function shall return EFI_DEVICE_ERROR. + + @param[in] This The PPI instance pointer. + @param[in] DeviceIndex Specifies the storage security device to which the + function wants to talk. Because the driver that + implements Storage Security Command PPIs will manage + multiple storage devices, the PPIs that want to talk + to a single device must specify the device index + that was assigned during the enumeration process. + This index is a number from one to NumberofDevices. + @param[in] Timeout The timeout, in 100ns units, to use for the execution + of the security protocol command. A Timeout value + of 0 means that this function will wait indefinitely + for the security protocol command to execute. If + Timeout is greater than zero, then this function + will return EFI_TIMEOUT if the time required to + execute the receive data command is greater than + Timeout. + @param[in] SecurityProtocolId + The value of the "Security Protocol" parameter of + the security protocol command to be sent. + @param[in] SecurityProtocolSpecificData + The value of the "Security Protocol Specific" + parameter of the security protocol command to be + sent. + @param[in] PayloadBufferSize + Size in bytes of the payload data buffer. + @param[out] PayloadBuffer A pointer to a destination buffer to store the + security protocol command specific payload data + for the security protocol command. The caller is + responsible for having either implicit or explicit + ownership of the buffer. + @param[out] PayloadTransferSize + A pointer to a buffer to store the size in bytes + of the data written to the payload data buffer. + + @retval EFI_SUCCESS The security protocol command completed + successfully. + @retval EFI_WARN_BUFFER_TOO_SMALL The PayloadBufferSize was too small to + store the available data from the device. + The PayloadBuffer contains the truncated + data. + @retval EFI_UNSUPPORTED The given DeviceIndex does not support + security protocol commands. + @retval EFI_DEVICE_ERROR The security protocol command completed + with an error. + @retval EFI_INVALID_PARAMETER The PayloadBuffer or PayloadTransferSize + is NULL and PayloadBufferSize is non-zero. + @retval EFI_TIMEOUT A timeout occurred while waiting for the + security protocol command to execute. + +**/ +EFI_STATUS +EFIAPI +AhciStorageSecurityReceiveData ( + IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, + IN UINTN DeviceIndex, + IN UINT64 Timeout, + IN UINT8 SecurityProtocolId, + IN UINT16 SecurityProtocolSpecificData, + IN UINTN PayloadBufferSize, + OUT VOID *PayloadBuffer, + OUT UINTN *PayloadTransferSize + ); + +/** + Send a security protocol command to a device. + + The SendData function sends a security protocol command containing the payload + PayloadBuffer to the given DeviceIndex. The security protocol command sent is + defined by SecurityProtocolId and contains the security protocol specific data + SecurityProtocolSpecificData. If the underlying protocol command requires a + specific padding for the command payload, the SendData function shall add padding + bytes to the command payload to satisfy the padding requirements. + + For devices supporting the SCSI command set, the security protocol command is + sent using the SECURITY PROTOCOL OUT command defined in SPC-4. + + For devices supporting the ATA command set, the security protocol command is + sent using one of the TRUSTED SEND commands defined in ATA8-ACS if PayloadBufferSize + is non-zero. If the PayloadBufferSize is zero, the security protocol command + is sent using the Trusted Non-Data command defined in ATA8-ACS. + + If PayloadBuffer is NULL and PayloadBufferSize is non-zero, the function shall + return EFI_INVALID_PARAMETER. + + If the given DeviceIndex does not support security protocol commands, the function + shall return EFI_UNSUPPORTED. + + If the security protocol fails to complete within the Timeout period, the function + shall return EFI_TIMEOUT. + + If the security protocol command completes without an error, the function shall + return EFI_SUCCESS. If the security protocol command completes with an error, + the functio shall return EFI_DEVICE_ERROR. + + @param[in] This The PPI instance pointer. + @param[in] DeviceIndex The ID of the device. + @param[in] Timeout The timeout, in 100ns units, to use for the execution + of the security protocol command. A Timeout value + of 0 means that this function will wait indefinitely + for the security protocol command to execute. If + Timeout is greater than zero, then this function + will return EFI_TIMEOUT if the time required to + execute the receive data command is greater than + Timeout. + @param[in] SecurityProtocolId + The value of the "Security Protocol" parameter of + the security protocol command to be sent. + @param[in] SecurityProtocolSpecificData + The value of the "Security Protocol Specific" + parameter of the security protocol command to be + sent. + @param[in] PayloadBufferSize Size in bytes of the payload data buffer. + @param[in] PayloadBuffer A pointer to a destination buffer to store the + security protocol command specific payload data + for the security protocol command. + + @retval EFI_SUCCESS The security protocol command completed successfully. + @retval EFI_UNSUPPORTED The given DeviceIndex does not support security + protocol commands. + @retval EFI_DEVICE_ERROR The security protocol command completed with + an error. + @retval EFI_INVALID_PARAMETER The PayloadBuffer is NULL and PayloadBufferSize + is non-zero. + @retval EFI_TIMEOUT A timeout occurred while waiting for the security + protocol command to execute. + +**/ +EFI_STATUS +EFIAPI +AhciStorageSecuritySendData ( + IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, + IN UINTN DeviceIndex, + IN UINT64 Timeout, + IN UINT8 SecurityProtocolId, + IN UINT16 SecurityProtocolSpecificData, + IN UINTN PayloadBufferSize, + IN VOID *PayloadBuffer + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/DevicePath.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/DevicePath.c new file mode 100644 index 0000000..65d6fcb --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/DevicePath.c @@ -0,0 +1,277 @@ +/** @file + The device path help function. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "AhciPei.h" + +// +// Template for a SATA Device Path node +// +SATA_DEVICE_PATH mAhciSataDevicePathNodeTemplate = { + { // Header + MESSAGING_DEVICE_PATH, + MSG_SATA_DP, + { + (UINT8) (sizeof (SATA_DEVICE_PATH)), + (UINT8) ((sizeof (SATA_DEVICE_PATH)) >> 8) + } + }, + 0x0, // HBAPortNumber + 0xFFFF, // PortMultiplierPortNumber + 0x0 // Lun +}; + +// +// Template for an End of entire Device Path node +// +EFI_DEVICE_PATH_PROTOCOL mAhciEndDevicePathNodeTemplate = { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (sizeof (EFI_DEVICE_PATH_PROTOCOL)), + (UINT8) ((sizeof (EFI_DEVICE_PATH_PROTOCOL)) >> 8) + } +}; + +/** + Returns the 16-bit Length field of a device path node. + + Returns the 16-bit Length field of the device path node specified by Node. + Node is not required to be aligned on a 16-bit boundary, so it is recommended + that a function such as ReadUnaligned16() be used to extract the contents of + the Length field. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @return The 16-bit Length field of the device path node specified by Node. + +**/ +UINTN +DevicePathNodeLength ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]); +} + +/** + Returns a pointer to the next node in a device path. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @return a pointer to the device path node that follows the device path node + specified by Node. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +NextDevicePathNode ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return (EFI_DEVICE_PATH_PROTOCOL *)((UINT8 *)(Node) + DevicePathNodeLength(Node)); +} + +/** + Get the size of the current device path instance. + + @param[in] DevicePath A pointer to the EFI_DEVICE_PATH_PROTOCOL + structure. + @param[out] InstanceSize The size of the current device path instance. + @param[out] EntireDevicePathEnd Indicate whether the instance is the last + one in the device path strucure. + + @retval EFI_SUCCESS The size of the current device path instance is fetched. + @retval Others Fails to get the size of the current device path instance. + +**/ +EFI_STATUS +GetDevicePathInstanceSize ( + IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, + OUT UINTN *InstanceSize, + OUT BOOLEAN *EntireDevicePathEnd + ) +{ + EFI_DEVICE_PATH_PROTOCOL *Walker; + + if (DevicePath == NULL || InstanceSize == NULL || EntireDevicePathEnd == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // Find the end of the device path instance + // + Walker = DevicePath; + while (Walker->Type != END_DEVICE_PATH_TYPE) { + Walker = NextDevicePathNode (Walker); + } + + // + // Check if 'Walker' points to the end of an entire device path + // + if (Walker->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE) { + *EntireDevicePathEnd = TRUE; + } else if (Walker->SubType == END_INSTANCE_DEVICE_PATH_SUBTYPE) { + *EntireDevicePathEnd = FALSE; + } else { + return EFI_INVALID_PARAMETER; + } + + // + // Compute the size of the device path instance + // + *InstanceSize = ((UINTN) Walker - (UINTN) (DevicePath)) + sizeof (EFI_DEVICE_PATH_PROTOCOL); + + return EFI_SUCCESS; +} + +/** + Check the validity of the device path of a ATA AHCI host controller. + + @param[in] DevicePath A pointer to the EFI_DEVICE_PATH_PROTOCOL + structure. + @param[in] DevicePathLength The length of the device path. + + @retval EFI_SUCCESS The device path is valid. + @retval EFI_INVALID_PARAMETER The device path is invalid. + +**/ +EFI_STATUS +AhciIsHcDevicePathValid ( + IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN UINTN DevicePathLength + ) +{ + EFI_DEVICE_PATH_PROTOCOL *Start; + UINTN Size; + + if (DevicePath == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // Validate the DevicePathLength is big enough to touch the first node. + // + if (DevicePathLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) { + return EFI_INVALID_PARAMETER; + } + + Start = DevicePath; + while (!(DevicePath->Type == END_DEVICE_PATH_TYPE && + DevicePath->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE)) { + DevicePath = NextDevicePathNode (DevicePath); + + // + // Prevent overflow and invalid zero in the 'Length' field of a device path + // node. + // + if ((UINTN) DevicePath <= (UINTN) Start) { + return EFI_INVALID_PARAMETER; + } + + // + // Prevent touching memory beyond given DevicePathLength. + // + if ((UINTN) DevicePath - (UINTN) Start > + DevicePathLength - sizeof (EFI_DEVICE_PATH_PROTOCOL)) { + return EFI_INVALID_PARAMETER; + } + } + + // + // Check if the device path and its size match each other. + // + Size = ((UINTN) DevicePath - (UINTN) Start) + sizeof (EFI_DEVICE_PATH_PROTOCOL); + if (Size != DevicePathLength) { + return EFI_INVALID_PARAMETER; + } + + return EFI_SUCCESS; +} + +/** + Build the device path for an ATA device with given port and port multiplier number. + + @param[in] Private A pointer to the PEI_AHCI_CONTROLLER_PRIVATE_DATA + data structure. + @param[in] Port The given port number. + @param[in] PortMultiplierPort The given port multiplier number. + @param[out] DevicePathLength The length of the device path in bytes specified + by DevicePath. + @param[out] DevicePath The device path of ATA device. + + @retval EFI_SUCCESS The operation succeeds. + @retval EFI_INVALID_PARAMETER The parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources. + +**/ +EFI_STATUS +AhciBuildDevicePath ( + IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private, + IN UINT16 Port, + IN UINT16 PortMultiplierPort, + OUT UINTN *DevicePathLength, + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath + ) +{ + EFI_DEVICE_PATH_PROTOCOL *DevicePathWalker; + SATA_DEVICE_PATH *SataDeviceNode; + + if (DevicePathLength == NULL || DevicePath == NULL) { + return EFI_INVALID_PARAMETER; + } + + *DevicePathLength = Private->DevicePathLength + sizeof (SATA_DEVICE_PATH); + *DevicePath = AllocatePool (*DevicePathLength); + if (*DevicePath == NULL) { + *DevicePathLength = 0; + return EFI_OUT_OF_RESOURCES; + } + + // + // Construct the host controller part device nodes + // + DevicePathWalker = *DevicePath; + CopyMem ( + DevicePathWalker, + Private->DevicePath, + Private->DevicePathLength - sizeof (EFI_DEVICE_PATH_PROTOCOL) + ); + + // + // Construct the SATA device node + // + DevicePathWalker = (EFI_DEVICE_PATH_PROTOCOL *) ((UINT8 *)DevicePathWalker + + (Private->DevicePathLength - sizeof (EFI_DEVICE_PATH_PROTOCOL))); + CopyMem ( + DevicePathWalker, + &mAhciSataDevicePathNodeTemplate, + sizeof (mAhciSataDevicePathNodeTemplate) + ); + SataDeviceNode = (SATA_DEVICE_PATH *)DevicePathWalker; + SataDeviceNode->HBAPortNumber = Port; + SataDeviceNode->PortMultiplierPortNumber = PortMultiplierPort; + + // + // Construct the end device node + // + DevicePathWalker = (EFI_DEVICE_PATH_PROTOCOL *) ((UINT8 *)DevicePathWalker + + sizeof (SATA_DEVICE_PATH)); + CopyMem ( + DevicePathWalker, + &mAhciEndDevicePathNodeTemplate, + sizeof (mAhciEndDevicePathNodeTemplate) + ); + + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/DmaMem.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/DmaMem.c new file mode 100644 index 0000000..748f562 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/DmaMem.c @@ -0,0 +1,269 @@ +/** @file + The DMA memory help function. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
    + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "AhciPei.h" + +/** + Get IOMMU PPI. + + @return Pointer to IOMMU PPI. + +**/ +EDKII_IOMMU_PPI * +GetIoMmu ( + VOID + ) +{ +// +// for fuzz +// +/* + EFI_STATUS Status; + EDKII_IOMMU_PPI *IoMmu; + + IoMmu = NULL; + Status = PeiServicesLocatePpi ( + &gEdkiiIoMmuPpiGuid, + 0, + NULL, + (VOID **) &IoMmu + ); + if (!EFI_ERROR (Status) && (IoMmu != NULL)) { + return IoMmu; + } +*/ + + return NULL; +} + +/** + Provides the controller-specific addresses required to access system memory from a + DMA bus master. + + @param Operation Indicates if the bus master is going to read or write to system memory. + @param HostAddress The system memory address to map to the PCI controller. + @param NumberOfBytes On input the number of bytes to map. On output the number of bytes + that were mapped. + @param DeviceAddress The resulting map address for the bus master PCI controller to use to + access the hosts HostAddress. + @param Mapping A resulting value to pass to Unmap(). + + @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes. + @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer. + @retval EFI_INVALID_PARAMETER One or more parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @retval EFI_DEVICE_ERROR The system hardware could not map the requested address. + +**/ +EFI_STATUS +IoMmuMap ( + IN EDKII_IOMMU_OPERATION Operation, + IN VOID *HostAddress, + IN OUT UINTN *NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ) +{ + EFI_STATUS Status; + UINT64 Attribute; + EDKII_IOMMU_PPI *IoMmu; + + IoMmu = GetIoMmu (); + + if (IoMmu != NULL) { + Status = IoMmu->Map ( + IoMmu, + Operation, + HostAddress, + NumberOfBytes, + DeviceAddress, + Mapping + ); + if (EFI_ERROR (Status)) { + return EFI_OUT_OF_RESOURCES; + } + switch (Operation) { + case EdkiiIoMmuOperationBusMasterRead: + case EdkiiIoMmuOperationBusMasterRead64: + Attribute = EDKII_IOMMU_ACCESS_READ; + break; + case EdkiiIoMmuOperationBusMasterWrite: + case EdkiiIoMmuOperationBusMasterWrite64: + Attribute = EDKII_IOMMU_ACCESS_WRITE; + break; + case EdkiiIoMmuOperationBusMasterCommonBuffer: + case EdkiiIoMmuOperationBusMasterCommonBuffer64: + Attribute = EDKII_IOMMU_ACCESS_READ | EDKII_IOMMU_ACCESS_WRITE; + break; + default: + ASSERT(FALSE); + return EFI_INVALID_PARAMETER; + } + Status = IoMmu->SetAttribute ( + IoMmu, + *Mapping, + Attribute + ); + if (EFI_ERROR (Status)) { + return Status; + } + } else { + *DeviceAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)HostAddress; + *Mapping = NULL; + Status = EFI_SUCCESS; + } + return Status; +} + +/** + Completes the Map() operation and releases any corresponding resources. + + @param Mapping The mapping value returned from Map(). + + @retval EFI_SUCCESS The range was unmapped. + @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by Map(). + @retval EFI_DEVICE_ERROR The data was not committed to the target system memory. +**/ +EFI_STATUS +IoMmuUnmap ( + IN VOID *Mapping + ) +{ + EFI_STATUS Status; + EDKII_IOMMU_PPI *IoMmu; + + IoMmu = GetIoMmu (); + + if (IoMmu != NULL) { + Status = IoMmu->SetAttribute (IoMmu, Mapping, 0); + Status = IoMmu->Unmap (IoMmu, Mapping); + } else { + Status = EFI_SUCCESS; + } + return Status; +} + +/** + Allocates pages that are suitable for an OperationBusMasterCommonBuffer or + OperationBusMasterCommonBuffer64 mapping. + + @param Pages The number of pages to allocate. + @param HostAddress A pointer to store the base system memory address of the + allocated range. + @param DeviceAddress The resulting map address for the bus master PCI controller to use to + access the hosts HostAddress. + @param Mapping A resulting value to pass to Unmap(). + + @retval EFI_SUCCESS The requested memory pages were allocated. + @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are + MEMORY_WRITE_COMBINE and MEMORY_CACHED. + @retval EFI_INVALID_PARAMETER One or more parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. + +**/ +EFI_STATUS +IoMmuAllocateBuffer ( + IN UINTN Pages, + OUT VOID **HostAddress, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ) +{ + EFI_STATUS Status; + UINTN NumberOfBytes; + EFI_PHYSICAL_ADDRESS HostPhyAddress; + EDKII_IOMMU_PPI *IoMmu; + + *HostAddress = NULL; + *DeviceAddress = 0; + + IoMmu = GetIoMmu (); + + if (IoMmu != NULL) { + Status = IoMmu->AllocateBuffer ( + IoMmu, + EfiBootServicesData, + Pages, + HostAddress, + 0 + ); + if (EFI_ERROR (Status)) { + return EFI_OUT_OF_RESOURCES; + } + + NumberOfBytes = EFI_PAGES_TO_SIZE(Pages); + Status = IoMmu->Map ( + IoMmu, + EdkiiIoMmuOperationBusMasterCommonBuffer, + *HostAddress, + &NumberOfBytes, + DeviceAddress, + Mapping + ); + if (EFI_ERROR (Status)) { + return EFI_OUT_OF_RESOURCES; + } + Status = IoMmu->SetAttribute ( + IoMmu, + *Mapping, + EDKII_IOMMU_ACCESS_READ | EDKII_IOMMU_ACCESS_WRITE + ); + if (EFI_ERROR (Status)) { + return Status; + } + } else { + // + // for fuzz + // + HostPhyAddress = (UINTN)AllocatePages (Pages); + if (HostPhyAddress == 0) { + return EFI_OUT_OF_RESOURCES; + } + Status = EFI_SUCCESS; + *HostAddress = (VOID *)(UINTN)HostPhyAddress; + *DeviceAddress = HostPhyAddress; + *Mapping = NULL; + } + return Status; +} + +/** + Frees memory that was allocated with AllocateBuffer(). + + @param Pages The number of pages to free. + @param HostAddress The base system memory address of the allocated range. + @param Mapping The mapping value returned from Map(). + + @retval EFI_SUCCESS The requested memory pages were freed. + @retval EFI_INVALID_PARAMETER The memory range specified by HostAddress and Pages + was not allocated with AllocateBuffer(). + +**/ +EFI_STATUS +IoMmuFreeBuffer ( + IN UINTN Pages, + IN VOID *HostAddress, + IN VOID *Mapping + ) +{ + EFI_STATUS Status; + EDKII_IOMMU_PPI *IoMmu; + + IoMmu = GetIoMmu (); + + if (IoMmu != NULL) { + Status = IoMmu->SetAttribute (IoMmu, Mapping, 0); + Status = IoMmu->Unmap (IoMmu, Mapping); + Status = IoMmu->FreeBuffer (IoMmu, Pages, HostAddress); + } else { + FreePages (HostAddress, Pages); // for fuzz + Status = EFI_SUCCESS; + } + return Status; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/IoMmu.h b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/IoMmu.h new file mode 100644 index 0000000..34d7f05 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/IoMmu.h @@ -0,0 +1,201 @@ +/** @file + PEI IOMMU PPI. + +Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#ifndef __PEI_IOMMU_H__ +#define __PEI_IOMMU_H__ + +// +// for EFI_ALLOCATE_TYPE +// +#include + +// +// Include protocol for common definition +// EDKII_IOMMU_ACCESS_xxx +// EDKII_IOMMU_OPERATION +// +#include + +// +// IOMMU Ppi GUID value +// +#define EDKII_IOMMU_PPI_GUID \ + { \ + 0x70b0af26, 0xf847, 0x4bb6, { 0xaa, 0xb9, 0xcd, 0xe8, 0x4f, 0xc6, 0x14, 0x31 } \ + } + +// +// Forward reference for pure ANSI compatability +// +typedef struct _EDKII_IOMMU_PPI EDKII_IOMMU_PPI; + +// +// Revision The revision to which the IOMMU interface adheres. +// All future revisions must be backwards compatible. +// If a future version is not back wards compatible it is not the same GUID. +// +#define EDKII_IOMMU_PPI_REVISION 0x00010000 + +/** + Set IOMMU attribute for a system memory. + + If the IOMMU PPI exists, the system memory cannot be used + for DMA by default. + + When a device requests a DMA access for a system memory, + the device driver need use SetAttribute() to update the IOMMU + attribute to request DMA access (read and/or write). + + @param[in] This The PPI instance pointer. + @param[in] Mapping The mapping value returned from Map(). + @param[in] IoMmuAccess The IOMMU access. + + @retval EFI_SUCCESS The IoMmuAccess is set for the memory range specified by DeviceAddress and Length. + @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by Map(). + @retval EFI_INVALID_PARAMETER IoMmuAccess specified an illegal combination of access. + @retval EFI_UNSUPPORTED The bit mask of IoMmuAccess is not supported by the IOMMU. + @retval EFI_UNSUPPORTED The IOMMU does not support the memory range specified by Mapping. + @retval EFI_OUT_OF_RESOURCES There are not enough resources available to modify the IOMMU access. + @retval EFI_DEVICE_ERROR The IOMMU device reported an error while attempting the operation. + @retval EFI_NOT_AVAILABLE_YET DMA protection has been enabled, but DMA buffer are + not available to be allocated yet. + +**/ +typedef +EFI_STATUS +(EFIAPI *EDKII_PEI_IOMMU_SET_ATTRIBUTE)( + IN EDKII_IOMMU_PPI *This, + IN VOID *Mapping, + IN UINT64 IoMmuAccess + ); + +/** + Provides the controller-specific addresses required to access system memory from a + DMA bus master. + + @param This The PPI instance pointer. + @param Operation Indicates if the bus master is going to read or write to system memory. + @param HostAddress The system memory address to map to the PCI controller. + @param NumberOfBytes On input the number of bytes to map. On output the number of bytes + that were mapped. + @param DeviceAddress The resulting map address for the bus master PCI controller to use to + access the hosts HostAddress. + @param Mapping A resulting value to pass to Unmap(). + + @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes. + @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer. + @retval EFI_INVALID_PARAMETER One or more parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @retval EFI_DEVICE_ERROR The system hardware could not map the requested address. + @retval EFI_NOT_AVAILABLE_YET DMA protection has been enabled, but DMA buffer are + not available to be allocated yet. + +**/ +typedef +EFI_STATUS +(EFIAPI *EDKII_PEI_IOMMU_MAP)( + IN EDKII_IOMMU_PPI *This, + IN EDKII_IOMMU_OPERATION Operation, + IN VOID *HostAddress, + IN OUT UINTN *NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ); + +/** + Completes the Map() operation and releases any corresponding resources. + + @param This The PPI instance pointer. + @param Mapping The mapping value returned from Map(). + + @retval EFI_SUCCESS The range was unmapped. + @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by Map(). + @retval EFI_DEVICE_ERROR The data was not committed to the target system memory. + @retval EFI_NOT_AVAILABLE_YET DMA protection has been enabled, but DMA buffer are + not available to be allocated yet. + +**/ +typedef +EFI_STATUS +(EFIAPI *EDKII_PEI_IOMMU_UNMAP)( + IN EDKII_IOMMU_PPI *This, + IN VOID *Mapping + ); + +/** + Allocates pages that are suitable for an OperationBusMasterCommonBuffer or + OperationBusMasterCommonBuffer64 mapping. + + @param This The PPI instance pointer. + @param MemoryType The type of memory to allocate, EfiBootServicesData or + EfiRuntimeServicesData. + @param Pages The number of pages to allocate. + @param HostAddress A pointer to store the base system memory address of the + allocated range. + @param Attributes The requested bit mask of attributes for the allocated range. + + @retval EFI_SUCCESS The requested memory pages were allocated. + @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are + MEMORY_WRITE_COMBINE, MEMORY_CACHED and DUAL_ADDRESS_CYCLE. + @retval EFI_INVALID_PARAMETER One or more parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. + @retval EFI_NOT_AVAILABLE_YET DMA protection has been enabled, but DMA buffer are + not available to be allocated yet. + +**/ +typedef +EFI_STATUS +(EFIAPI *EDKII_PEI_IOMMU_ALLOCATE_BUFFER)( + IN EDKII_IOMMU_PPI *This, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN Pages, + IN OUT VOID **HostAddress, + IN UINT64 Attributes + ); + +/** + Frees memory that was allocated with AllocateBuffer(). + + @param This The PPI instance pointer. + @param Pages The number of pages to free. + @param HostAddress The base system memory address of the allocated range. + + @retval EFI_SUCCESS The requested memory pages were freed. + @retval EFI_INVALID_PARAMETER The memory range specified by HostAddress and Pages + was not allocated with AllocateBuffer(). + @retval EFI_NOT_AVAILABLE_YET DMA protection has been enabled, but DMA buffer are + not available to be allocated yet. + +**/ +typedef +EFI_STATUS +(EFIAPI *EDKII_PEI_IOMMU_FREE_BUFFER)( + IN EDKII_IOMMU_PPI *This, + IN UINTN Pages, + IN VOID *HostAddress + ); + +/// +/// IOMMU PPI structure. +/// +struct _EDKII_IOMMU_PPI { + UINT64 Revision; + EDKII_PEI_IOMMU_SET_ATTRIBUTE SetAttribute; + EDKII_PEI_IOMMU_MAP Map; + EDKII_PEI_IOMMU_UNMAP Unmap; + EDKII_PEI_IOMMU_ALLOCATE_BUFFER AllocateBuffer; + EDKII_PEI_IOMMU_FREE_BUFFER FreeBuffer; +}; + +/// +/// IOMMU PPI GUID variable. +/// +extern EFI_GUID gEdkiiIoMmuPpiGuid; + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.c new file mode 100644 index 0000000..fa23995 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.c @@ -0,0 +1,150 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#ifdef TEST_WITH_LIBFUZZER +#include +#include +#endif + +#include +#include "AhciPei.h" + +#include +#include +#include +#include + +#include "AhciPei.h" + +#define TOTAL_SIZE (512 * 1024) +VOID FixBuffer( + UINT8 *TestBuffer, + UINTN TestBufferSize) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize( + VOID) +{ + return TOTAL_SIZE; +} + +VOID + EFIAPI + RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize, + PEI_AHCI_ATA_DEVICE_DATA *DeviceDataPtr) +{ + EFI_STATUS Status; + PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private; + ATA_IDENTIFY_DATA *IdentifyData1; + UINTN DeviceIndex; + UINTN DataBufferSize; + VOID *DataBuffer; + UINTN DataTransferSize; + + FixBuffer(TestBuffer, TestBufferSize); + + IdentifyData1 = (ATA_IDENTIFY_DATA *)TestBuffer; + + Private = AllocateZeroPool (sizeof (PEI_AHCI_CONTROLLER_PRIVATE_DATA)); + ASSERT (Private != NULL); + + Private->Signature = AHCI_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE; + Private->PortBitMap = 0x1; + InitializeListHead (&Private->DeviceList); + + Status = AhciCreateTransferDescriptor (Private); + ASSERT_EFI_ERROR (Status); + + Private->AtaPassThruMode.Attributes = EFI_ATA_PASS_THRU_ATTRIBUTES_PHYSICAL | + EFI_ATA_PASS_THRU_ATTRIBUTES_LOGICAL; + Private->AtaPassThruMode.IoAlign = sizeof (UINTN); + Private->AtaPassThruPpi.Revision = EDKII_PEI_ATA_PASS_THRU_PPI_REVISION; + Private->AtaPassThruPpi.Mode = &Private->AtaPassThruMode; + Private->AtaPassThruPpi.PassThru = AhciAtaPassThruPassThru; + Private->AtaPassThruPpi.GetNextPort = AhciAtaPassThruGetNextPort; + Private->AtaPassThruPpi.GetNextDevice = AhciAtaPassThruGetNextDevice; + Private->AtaPassThruPpi.GetDevicePath = AhciAtaPassThruGetDevicePath; + + DeviceIndex = 1; + Status = CreateNewDevice (Private, DeviceIndex, 1, 0xFFFF, 0, IdentifyData1); + if (EFI_ERROR (Status)) { + return; + } + + // + // Test #1 for Storage Security Command PPI, ReceiveData() + // + DataBufferSize = 0x10; + DataBuffer = AllocatePool (DataBufferSize); + ASSERT (DataBuffer != NULL); + AhciStorageSecurityReceiveData ( + &Private->StorageSecurityPpi, + DeviceIndex, + ATA_TIMEOUT, + 0, + 0, + DataBufferSize, + DataBuffer, + &DataTransferSize + ); + + // + // Test #2 for Storage Security Command PPI, SendData() + // + DataBufferSize = 0x10; + AhciStorageSecuritySendData ( + &Private->StorageSecurityPpi, + DeviceIndex, + ATA_TIMEOUT, + 0, + 0, + DataBufferSize, + DataBuffer + ); + FreePool (DataBuffer); + + // + // Test #1 for Block IO PPI, ReadBlocks() - with small DataBufferSize. + // + DataBuffer = AllocatePool (0x200000); + ASSERT (DataBuffer != NULL); + DataBufferSize = 0x800; + AhciBlockIoReadBlocks ( + NULL, + &Private->BlkIoPpi, + DeviceIndex, + 0, + DataBufferSize, + DataBuffer + ); + + // + // Test #2 for Block IO PPI, ReadBlocks() - with large DataBufferSize. + // + DataBufferSize = 0x200000; + AhciBlockIoReadBlocks ( + NULL, + &Private->BlkIoPpi, + DeviceIndex, + 0, + DataBufferSize, + DataBuffer + ); + FreePool (DataBuffer); + + return; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.inf new file mode 100644 index 0000000..79e4583 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.inf @@ -0,0 +1,47 @@ +## @file +# Component description file for TestIdentifyAtaDevice module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestIdentifyAtaDevice + FILE_GUID = CFDACAD0-E720-4F6F-A023-448851EEFB93 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestIdentifyAtaDevice.c + Override/AhciPei.h + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + PeiServicesLib + IoLib + DebugLib + TimerLib + LockBoxLib + ToolChainHarnessLib + +[Ppis] + gEdkiiIoMmuPpiGuid ## CONSUMES + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /Od /GL- diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.c new file mode 100644 index 0000000..43a5399 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.c @@ -0,0 +1,65 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include "UsbBus.h" + +#define TOTAL_SIZE (512 * 1024) + +EFI_STATUS +UsbBuildDescTable ( + IN USB_DEVICE *UsbDev + ); + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + USB_DEVICE UsbDev; + USB_BUS Bus; + EFI_USB2_HC_PROTOCOL *Usb2Hc; + + Usb2HcStubInitialize (NULL, 0, TestBuffer, TestBufferSize, NULL, 0, &Usb2Hc); + + UsbDev.Bus = &Bus; + Bus.Usb2Hc = Usb2Hc; + + UsbBuildDescTable (&UsbDev); +} + + diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.inf new file mode 100644 index 0000000..babc101 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.inf @@ -0,0 +1,38 @@ +## @file +# Component description file for TestUsb module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestUsb + FILE_GUID = CFDACAD0-E720-4F6F-A023-448851EEFB93 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestUsb.c + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.h + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + UefiBootServicesTableLib + Usb2HcStubLib + ToolChainHarnessLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.c new file mode 100644 index 0000000..681c9c9 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.c @@ -0,0 +1,77 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include "UsbPeim.h" +#include "HubPeim.h" +#include "PeiUsbLib.h" + +#define TOTAL_SIZE (512 * 1024) + +UINT32 +GetUsbTransferTimeoutValue ( + VOID + ) +{ + return 1; +} + +EFI_STATUS +PeiUsbGetAllConfiguration ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB_DEVICE *PeiUsbDevice + ); + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + PEI_USB_DEVICE PeiUsbDevice; + PEI_USB_IO_PPI *UsbIoPpi; + + ZeroMem(&PeiUsbDevice, sizeof(PeiUsbDevice)); + + UsbIoPpiStubInitialize(NULL, 0, TestBuffer, TestBufferSize, NULL, 0, &UsbIoPpi); + + CopyMem(&PeiUsbDevice.UsbIoPpi, UsbIoPpi, sizeof(*UsbIoPpi)); + + PeiUsbGetAllConfiguration(NULL, &PeiUsbDevice); +} + + diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.inf new file mode 100644 index 0000000..d613151 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.inf @@ -0,0 +1,39 @@ +## @file +# Component description file for TestPeiUsb module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestPeiUsb + FILE_GUID = E47055D6-D042-4846-83AE-A7AE8AA5D581 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestPeiUsb.c + MdeModulePkg/Bus/Usb/UsbBusPei/UsbPeim.h + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + TimerLib + UsbIoPpiStubLib + ToolChainHarnessLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.c new file mode 100644 index 0000000..f8756a9 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.c @@ -0,0 +1,67 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#define TOTAL_SIZE (1 * 1024) + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GopBlt; + UINTN GopBltSize; + UINTN PixelHeight; + UINTN PixelWidth; + FixBuffer (TestBuffer); + GopBlt = NULL; + TranslateBmpToGopBlt( + TestBuffer, + TestBufferSize, + &GopBlt, + &GopBltSize, + &PixelHeight, + &PixelWidth + ); + if (GopBlt != NULL) + FreePool (GopBlt); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf new file mode 100644 index 0000000..7286f83 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf @@ -0,0 +1,38 @@ +## @file +# Component description file for TestBmpSupportLib module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestBmpSupportLib + FILE_GUID = E911AB26-4741-4621-93EF-305FEA98A851 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestBmpSupportLib.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + SafeIntLib + BmpSupportLib + ToolChainHarnessLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.c new file mode 100644 index 0000000..24a85d0 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.c @@ -0,0 +1,84 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include "CommonHeader.h" + +#define TOTAL_SIZE (512 * 1024) + +EFI_STATUS +EFIAPI +CapsuleDataCoalesce ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS *BlockListBuffer, + IN MEMORY_RESOURCE_DESCRIPTOR *MemoryResource, + IN OUT VOID **MemoryBase, + IN OUT UINTN *MemorySize + ); + +VOID +FixBuffer ( + UINT8 *TestBuffer, + UINTN TestBufferSize + ) +{ + ((EFI_CAPSULE_HEADER *)TestBuffer)->CapsuleImageSize = (UINT32)TestBufferSize; +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + MEMORY_RESOURCE_DESCRIPTOR MemoryResource[3]; + VOID *MemoryBase; + UINTN MemorySize; + VOID *CapsuleMemoryBase; + UINTN CapsuleMemorySize; + + MemorySize = TOTAL_SIZE; + MemoryBase = AllocatePool (MemorySize); + + MemoryResource[0].PhysicalStart = (UINT64)(UINTN)TestBuffer; + MemoryResource[0].ResourceLength = (UINT64)(UINTN)TOTAL_SIZE; + MemoryResource[1].PhysicalStart = (UINT64)(UINTN)MemoryBase; + MemoryResource[1].ResourceLength = (UINT64)(UINTN)MemorySize; + MemoryResource[2].PhysicalStart = 0; + MemoryResource[2].ResourceLength = 0; + + FixBuffer (TestBuffer, TestBufferSize); + + CapsuleMemoryBase = MemoryBase; + CapsuleMemorySize = MemorySize; + CapsuleDataCoalesce(NULL, TestBuffer, MemoryResource, &CapsuleMemoryBase, &CapsuleMemorySize); + + FreePool (MemoryBase); +} + diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.inf new file mode 100644 index 0000000..fecdc1f --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.inf @@ -0,0 +1,36 @@ +## @file +# Component description file for TestDxeCapsulePei module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestCapsulePei + FILE_GUID = 23C9CE4E-26BB-4850-A3E2-5AEA95963F87 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestCapsulePei.c + MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + ToolChainHarnessLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/CreateErrorInjectionProfile.py b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/CreateErrorInjectionProfile.py new file mode 100644 index 0000000..827b14a --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/CreateErrorInjectionProfile.py @@ -0,0 +1,81 @@ +# @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import shutil +import sys +try: + import ConfigParser as ConfigParser +except Exception as e: + print("Import for ConfigParser not found, attempting configparser: " + "%s" % e) + import configparser as ConfigParser +import argparse + +Case_Path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'Case') + + +class myconf(ConfigParser.RawConfigParser): + def __init__(self, defaults=None): + ConfigParser.RawConfigParser.__init__(self, defaults=None) + + def optionxform(self, optionstr): + return optionstr + + +class errorInjection(): + def __init__(self, Num): + self.CallErrorCountNum = int(Num) + + def run(self): + if os.path.exists(Case_Path): + shutil.rmtree(Case_Path) + os.makedirs(Case_Path) + else: + os.makedirs(Case_Path) + Case_Count_Num = 1 + for CountNum in range(1, self.CallErrorCountNum + 1): + print('#######################################') + print('Current CallErrorCountNum: {}'.format(CountNum)) + print('#######################################') + for count in range(3): + CaseName = 'test_' + str(Case_Count_Num) + '.ini' + self.create_tcs(os.path.join(Case_Path, CaseName), + CountNum, count) + Case_Count_Num = Case_Count_Num + 1 + + def create_tcs(self, tcs_file, num, count): + conf = myconf() + if count == 0: + conf.add_section('AllocateZeroPool') + conf.set('AllocateZeroPool', 'CallErrorCount', num) + conf.set('AllocateZeroPool', 'ReturnValue', 0) + elif count == 1: + conf.add_section('ReadBlocks') + conf.set('ReadBlocks', 'CallErrorCount', num) + conf.set('ReadBlocks', 'ReturnValue', 'EFI_DEVICE_ERROR') + elif count == 2: + conf.add_section('ReadDisk') + conf.set('ReadDisk', 'CallErrorCount', num) + conf.set('ReadDisk', 'ReturnValue', 'EFI_DEVICE_ERROR') + else: + pass + + with open(tcs_file, 'w') as f: + conf.write(f) + + +if __name__ == '__main__': + # # # Opt Parser + parse = argparse.ArgumentParser() + parse.add_argument("-c", dest="CallErrorCountNum", + help="CallErrorCount number,if CallErrorCount = N," + "script will try CallErrorCount = 1 ~ CallErrorCount " + "= N", default=None) + + options = parse.parse_args(sys.argv[1:]) + test = errorInjection(options.CallErrorCountNum) + test.run() diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.c new file mode 100644 index 0000000..4393845 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.c @@ -0,0 +1,245 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +typedef struct _FUNC_HOOK FUNC_HOOK; + +typedef +UINTN +(EFIAPI *HOOK_FUNC_ENTER) ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +typedef +VOID +(EFIAPI *HOOK_FUNC_EXIT) ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +struct _FUNC_HOOK { + CHAR8 *Name; + UINTN Func; + UINTN HookFuncEnter; + UINTN HookFuncExit; + UINTN CallErrorCount; + UINTN ReturnValue; + UINTN CurrentCallCount; +} ; + +EFI_STATUS +EFIAPI +ReadBlocks ( + IN EFI_BLOCK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + OUT VOID *Buffer + ); + +EFI_STATUS +EFIAPI +WriteBlocks ( + IN EFI_BLOCK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + IN VOID *Buffer + ); + +EFI_STATUS +EFIAPI +ReadDisk ( + IN EFI_DISK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN UINT64 Offset, + IN UINTN BufferSize, + OUT VOID *Buffer + ); + +EFI_STATUS +EFIAPI +WriteDisk ( + IN EFI_DISK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN UINT64 Offset, + IN UINTN BufferSize, + IN VOID *Buffer + ); + +BOOLEAN mInitDone; + +UINTN +EFIAPI +CommonEnter ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FuncHook->CurrentCallCount++; + if (FuncHook->CurrentCallCount == FuncHook->CallErrorCount) { + //SetSkipReturnValue (EntryContext, FuncHook->ReturnValue); + if (FuncHook->Func == (UINTN)AllocateZeroPool) { + SetParameterValue (EntryContext, 1, (UINTN)-1); + } else if (FuncHook->Func == (UINTN)ReadBlocks) { + SetParameterValue64 (EntryContext, 3, (UINT64)-1); + } else if (FuncHook->Func == (UINTN)ReadDisk) { + SetParameterValue64 (EntryContext, 3, (UINT64)-1); + } + return 1; + } + return 0; +} + +VOID +EFIAPI +CommonExit ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + if (FuncHook->CurrentCallCount == FuncHook->CallErrorCount) { + SetReturnValue (ExitContext, FuncHook->ReturnValue); + } + return ; +} + +GLOBAL_REMOVE_IF_UNREFERENCED FUNC_HOOK mFuncHook[] = { + {"AllocateZeroPool", (UINTN)AllocateZeroPool, (UINTN)CommonEnter, (UINTN)CommonExit}, + {"ReadBlocks", (UINTN)ReadBlocks, (UINTN)CommonEnter, (UINTN)CommonExit}, + {"ReadDisk", (UINTN)ReadDisk, (UINTN)CommonEnter, (UINTN)CommonExit}, +}; + +FUNC_HOOK * +GetFuncHook ( + IN UINTN FuncAddr + ) +{ + UINTN Index; + for (Index = 0; Index < ARRAY_SIZE(mFuncHook); Index++) { + if (FuncAddr == mFuncHook[Index].Func) { + return &mFuncHook[Index]; + } + } + return NULL; +} + +UINTN +EFIAPI +FunctionEnter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FUNC_HOOK *FuncHook; + HOOK_FUNC_ENTER HookFunc; + + if (!mInitDone) { + return 0; + } + + FuncHook = GetFuncHook (FunctionAddress); + if (FuncHook == NULL) { + return 0; + } + if (FuncHook->HookFuncEnter == 0) { + return 0; + } + HookFunc = (HOOK_FUNC_ENTER)(FuncHook->HookFuncEnter); + return HookFunc (FuncHook, EntryContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +FunctionExit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FUNC_HOOK *FuncHook; + HOOK_FUNC_EXIT HookFunc; + + if (!mInitDone) { + return ; + } + + FuncHook = GetFuncHook (FunctionAddress); + if (FuncHook == NULL) { + return ; + } + if (FuncHook->HookFuncExit == 0) { + return ; + } + HookFunc = (HOOK_FUNC_EXIT)(FuncHook->HookFuncExit); + HookFunc (FuncHook, ExitContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +InstrumentHookLibInit ( + IN UINT8 *DataBuffer, + IN UINTN BufferSize + ) +{ + VOID *Context; + UINTN Index; + EFI_STATUS Status; + + Context = OpenIniFile (DataBuffer, BufferSize); + + for (Index = 0; Index < ARRAY_SIZE(mFuncHook); Index++) { + Status = GetDecimalUintnFromDataFile ( + Context, + mFuncHook[Index].Name, + "CallErrorCount", + &mFuncHook[Index].CallErrorCount + ); + if (EFI_ERROR(Status)) { + continue ; + } + + Status = GetEfiStatusFromDataFile ( + Context, + mFuncHook[Index].Name, + "ReturnValue", + &mFuncHook[Index].ReturnValue + ); + if (EFI_ERROR(Status)) { + Status = GetHexUintnFromDataFile ( + Context, + mFuncHook[Index].Name, + "ReturnValue", + &mFuncHook[Index].ReturnValue + ); + } + } + + CloseIniFile (Context); + + mInitDone = TRUE; +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.inf new file mode 100644 index 0000000..14940c2 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.inf @@ -0,0 +1,40 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = InstrumentHookLibTestPartition + FILE_GUID = B61898FA-92D7-47D9-8751-6E4F82F55B7F + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = InstrumentHookLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + InstrumentHookLibTestPartition.c + +[Packages] + MdePkg/MdePkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + IniParsingLib + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.c new file mode 100644 index 0000000..0d52983 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.c @@ -0,0 +1,85 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#define MAX_CORRECTION_BLOCKS_NUM 512u + +#include +#include +#include +#include +#include + +EFI_STATUS +FindUdfFileSystem ( + IN EFI_BLOCK_IO_PROTOCOL *BlockIo, + IN EFI_DISK_IO_PROTOCOL *DiskIo, + OUT EFI_LBA *StartingLBA, + OUT EFI_LBA *EndingLBA + ); + +#define TOTAL_SIZE (512 * 1024) +#define BLOCK_SIZE (512) +#define IO_ALIGN (1) + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + EFI_LBA StartingLBA; + EFI_LBA EndingLBA; + EFI_BLOCK_IO_PROTOCOL *BlockIo; + EFI_DISK_IO_PROTOCOL *DiskIo; + + FixBuffer (TestBuffer); + + DiskStubInitialize (TestBuffer, TestBufferSize, BLOCK_SIZE, IO_ALIGN, &BlockIo, &DiskIo); + + // fuzz function: + // buffer overflow, crash will be detected at place. + // only care about security, not for function bug. + // + // try to separate EFI lib, use stdlib function. + // no asm code. + FindUdfFileSystem ( + BlockIo, + DiskIo, + &StartingLBA, + &EndingLBA + ); + + DiskStubDestory(); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.inf new file mode 100644 index 0000000..f86365f --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.inf @@ -0,0 +1,36 @@ +## @file +# Component description file for TestPartition module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestPartition + FILE_GUID = 9420FB50-57EC-4609-92B3-A57589037933 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestPartition.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + DiskStubLib + ToolChainHarnessLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/CreateErrorInjectionProfile.py b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/CreateErrorInjectionProfile.py new file mode 100644 index 0000000..b0ed609 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/CreateErrorInjectionProfile.py @@ -0,0 +1,82 @@ +# @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import shutil +try: + import ConfigParser as ConfigParser +except Exception as e: + print("Import for ConfigParser not found, attempting configparser: " + "%s" % e) + import configparser as ConfigParser +import argparse + +Case_Path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'Case') + + +class myconf(ConfigParser.RawConfigParser): + def __init__(self, defaults=None): + ConfigParser.RawConfigParser.__init__(self, defaults=None) + + def optionxform(self, optionstr): + return optionstr + + +class errorInjection(): + def __init__(self, Num): + self.CallErrorCountNum = int(Num) + + def run(self): + if os.path.exists(Case_Path): + shutil.rmtree(Case_Path) + os.makedirs(Case_Path) + else: + os.makedirs(Case_Path) + Case_Count_Num = 1 + for CountNum in range(1, self.CallErrorCountNum + 1): + print('#######################################') + print('Current CallErrorCountNum: {}'.format(CountNum)) + print('#######################################') + for count in range(3): + CaseName = 'test_' + str(Case_Count_Num) + '.ini' + self.create_tcs(os.path.join(Case_Path, CaseName), CountNum, + count) + Case_Count_Num = Case_Count_Num + 1 + + def create_tcs(self, tcs_file, num, count): + conf = myconf() + if count == 0: + conf.add_section('AllocateZeroPool') + conf.set('AllocateZeroPool', 'CallErrorCount', num) + conf.set('AllocateZeroPool', 'ReturnValue', 0) + elif count == 1: + conf.add_section('ReallocatePool') + conf.set('ReallocatePool', 'CallErrorCount', num) + conf.set('ReallocatePool', 'ReturnValue', 0) + elif count == 2: + conf.add_section('AllocatePool') + conf.set('AllocatePool', 'CallErrorCount', num) + conf.set('AllocatePool', 'ReturnValue', 0) + else: + pass + + with open(tcs_file, 'w') as f: + conf.write(f) + + +if __name__ == '__main__': + # # # Opt Parser + parse = argparse.ArgumentParser() + parse.add_argument("-c", dest="CallErrorCountNum", + help="CallErrorCount number,if CallErrorCount = N," + " script will try " + "CallErrorCount = 1 ~ CallErrorCount = N", + default=None) + + options = parse.parse_args(sys.argv[1:]) + test = errorInjection(options.CallErrorCountNum) + test.run() diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.c new file mode 100644 index 0000000..431e2b8 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.c @@ -0,0 +1,206 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "../Udf.h" + +typedef struct _FUNC_HOOK FUNC_HOOK; + +typedef +UINTN +(EFIAPI *HOOK_FUNC_ENTER) ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +typedef +VOID +(EFIAPI *HOOK_FUNC_EXIT) ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ); + +struct _FUNC_HOOK { + CHAR8 *Name; + UINTN Func; + UINTN HookFuncEnter; + UINTN HookFuncExit; + UINTN CallErrorCount; + UINTN ReturnValue; + UINTN CurrentCallCount; +} ; + +BOOLEAN mInitDone; + +UINTN +EFIAPI +CommonEnter ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FuncHook->CurrentCallCount++; + if (FuncHook->CurrentCallCount == FuncHook->CallErrorCount) { + //SetSkipReturnValue (EntryContext, FuncHook->ReturnValue); + if (FuncHook->Func == (UINTN)AllocateZeroPool) { + SetParameterValue (EntryContext, 1, (UINTN)-1); + } else if (FuncHook->Func == (UINTN)AllocatePool) { + SetParameterValue (EntryContext, 1, (UINTN)-1); + } else if (FuncHook->Func == (UINTN)ReallocatePool) { + SetParameterValue (EntryContext, 1, (UINTN)-1); + } + return 1; + } + return 0; +} + +VOID +EFIAPI +CommonExit ( + IN FUNC_HOOK *FuncHook, + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + if (FuncHook->CurrentCallCount == FuncHook->CallErrorCount) { + SetReturnValue (ExitContext, FuncHook->ReturnValue); + } + return ; +} + +GLOBAL_REMOVE_IF_UNREFERENCED FUNC_HOOK mFuncHook[] = { + {"AllocateZeroPool", (UINTN)AllocateZeroPool, (UINTN)CommonEnter, (UINTN)CommonExit}, + {"AllocatePool", (UINTN)AllocatePool, (UINTN)CommonEnter, (UINTN)CommonExit}, + {"ReallocatePool", (UINTN)ReallocatePool, (UINTN)CommonEnter, (UINTN)CommonExit}, +}; + +FUNC_HOOK * +GetFuncHook ( + IN UINTN FuncAddr + ) +{ + UINTN Index; + for (Index = 0; Index < ARRAY_SIZE(mFuncHook); Index++) { + if (FuncAddr == mFuncHook[Index].Func) { + return &mFuncHook[Index]; + } + } + return NULL; +} + +UINTN +EFIAPI +FunctionEnter ( + IN OUT FUNC_ENTER_CONTEXT EntryContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FUNC_HOOK *FuncHook; + HOOK_FUNC_ENTER HookFunc; + + if (!mInitDone) { + return 0; + } + + FuncHook = GetFuncHook (FunctionAddress); + if (FuncHook == NULL) { + return 0; + } + if (FuncHook->HookFuncEnter == 0) { + return 0; + } + HookFunc = (HOOK_FUNC_ENTER)(FuncHook->HookFuncEnter); + return HookFunc (FuncHook, EntryContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +FunctionExit ( + IN OUT FUNC_EXIT_CONTEXT ExitContext, + IN UINTN FunctionAddress, + IN UINTN CallerAddress + ) +{ + FUNC_HOOK *FuncHook; + HOOK_FUNC_EXIT HookFunc; + + if (!mInitDone) { + return ; + } + + FuncHook = GetFuncHook (FunctionAddress); + if (FuncHook == NULL) { + return ; + } + if (FuncHook->HookFuncExit == 0) { + return ; + } + HookFunc = (HOOK_FUNC_EXIT)(FuncHook->HookFuncExit); + HookFunc (FuncHook, ExitContext, FunctionAddress, CallerAddress); +} + +VOID +EFIAPI +InstrumentHookLibInit ( + IN UINT8 *DataBuffer, + IN UINTN BufferSize + ) +{ + VOID *Context; + UINTN Index; + EFI_STATUS Status; + + Context = OpenIniFile (DataBuffer, BufferSize); + + for (Index = 0; Index < ARRAY_SIZE(mFuncHook); Index++) { + Status = GetDecimalUintnFromDataFile ( + Context, + mFuncHook[Index].Name, + "CallErrorCount", + &mFuncHook[Index].CallErrorCount + ); + if (EFI_ERROR(Status)) { + continue ; + } + + Status = GetEfiStatusFromDataFile ( + Context, + mFuncHook[Index].Name, + "ReturnValue", + &mFuncHook[Index].ReturnValue + ); + if (EFI_ERROR(Status)) { + Status = GetHexUintnFromDataFile ( + Context, + mFuncHook[Index].Name, + "ReturnValue", + &mFuncHook[Index].ReturnValue + ); + } + } + + CloseIniFile (Context); + + mInitDone = TRUE; +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.inf new file mode 100644 index 0000000..519530f --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.inf @@ -0,0 +1,40 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = InstrumentHookLibTestUdf + FILE_GUID = F9BE464E-3E19-4BE9-B6F1-D560A0031CAD + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = InstrumentHookLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + InstrumentHookLibTestUdf.c + +[Packages] + MdePkg/MdePkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + IniParsingLib + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.c new file mode 100644 index 0000000..a19b2e4 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.c @@ -0,0 +1,43 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#define MAX_FILENAME_LEN 4096 + +CHAR16 * +MangleFileName ( + IN CHAR16 *FileName + ); + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return MAX_FILENAME_LEN; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + MangleFileName((CHAR16*)TestBuffer); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.inf new file mode 100644 index 0000000..756dc10 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.inf @@ -0,0 +1,35 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestFileName + FILE_GUID = 451C64D2-84B4-4DC1-BBE7-BBA46603C16B + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestFileName.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + UefiBootServicesTableLib + ToolChainHarnessLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.c new file mode 100644 index 0000000..e747877 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.c @@ -0,0 +1,512 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "Udf.h" + +extern EFI_SIMPLE_FILE_SYSTEM_PROTOCOL gUdfSimpleFsTemplate; + +EFI_STATUS +FindUdfFileSystem ( + IN EFI_BLOCK_IO_PROTOCOL *BlockIo, + IN EFI_DISK_IO_PROTOCOL *DiskIo, + OUT EFI_LBA *StartingLBA, + OUT EFI_LBA *EndingLBA + ); + +#define TOTAL_SIZE (1 * 1024 * 1024) +#define BLOCK_SIZE (1024) +#define IO_ALIGN (1) +#define MAX_FILENAME_LEN (4096) + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +PRIVATE_UDF_SIMPLE_FS_DATA *PrivFsData = NULL; + +EFI_FILE_PROTOCOL * +TestSimpleFileSystem ( + EFI_BLOCK_IO_PROTOCOL *PartitionBlockIo, + EFI_DISK_IO_PROTOCOL *PartitionDiskIo, + UINT8 *TestBuffer + ) +{ + EFI_STATUS Status; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFs; + EFI_FILE_PROTOCOL *Root; + + + PrivFsData->Signature = PRIVATE_UDF_SIMPLE_FS_DATA_SIGNATURE; + PrivFsData->BlockIo = PartitionBlockIo; + PrivFsData->DiskIo = PartitionDiskIo; + // + // Set up SimpleFs protocol + // + CopyMem ((VOID *)&PrivFsData->SimpleFs, (VOID *)&gUdfSimpleFsTemplate, sizeof (EFI_SIMPLE_FILE_SYSTEM_PROTOCOL)); + + SimpleFs = &PrivFsData->SimpleFs; + + // Test SimpleFs == NULL or &Root == NULL + Status = SimpleFs->OpenVolume ( + NULL, + &Root + ); + ASSERT (EFI_ERROR(Status)); + Status = SimpleFs->OpenVolume ( + SimpleFs, + NULL + ); + ASSERT (EFI_ERROR(Status)); + + // Test normal situation + Status = SimpleFs->OpenVolume ( + SimpleFs, + &Root + ); + if (!EFI_ERROR(Status)) { + ASSERT (Root != NULL); + return Root; + } else { + return NULL; + } +} + +VOID +TestFile ( + EFI_FILE_PROTOCOL *Root, + CHAR16 *FileName + ) +{ + EFI_STATUS Status; + EFI_FILE_HANDLE FileHandle; + UINTN BufferSize; + UINTN FileBufferSize; + UINT64 SourceFileSize; + EFI_FILE_INFO *FileInfo = NULL; + VOID *Buffer = NULL; + + FileHandle = NULL; + Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_CREATE, 0); + if (EFI_ERROR(Status)) { + Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_READ, 0); + if (EFI_ERROR(Status)) { + goto Done; + } + } + ASSERT (FileHandle != NULL); + + // + // Test UdfSetPosition + // + Status = FileHandle->SetPosition (FileHandle, (UINT64) -1); + if (EFI_ERROR (Status)) { + goto Done; + } + + // + // Test UdfGetPosition + // + // Test FileHandle == NULL or &SourceFileSize == NULL + Status = FileHandle->GetPosition (NULL, &SourceFileSize); + ASSERT(EFI_ERROR(Status)); + + Status = FileHandle->GetPosition (FileHandle, NULL); + ASSERT(EFI_ERROR(Status)); + + // Test normal situation + Status = FileHandle->GetPosition (FileHandle, &SourceFileSize); + if (EFI_ERROR (Status)) { + goto Done; + } + ASSERT (SourceFileSize <= MAX_UINTN); + + + // + // Test UdfSetPosition + // + // Test FileHandle == NULL + Status = FileHandle->SetPosition (NULL, 0); + ASSERT(EFI_ERROR(Status)); + + // Test normal situation + Status = FileHandle->SetPosition (FileHandle, 0); + if (EFI_ERROR (Status)) { + goto Done; + } + + + // + // Test UdfRead + // + // Test FileHandle == NULL or &BufferSize == NULL + BufferSize = (UINTN) SourceFileSize; + Buffer = AllocateZeroPool(BufferSize); + if (Buffer == NULL) { + goto Done; + } + + BufferSize = (UINTN) SourceFileSize; + + Status = FileHandle->Read (NULL, &BufferSize, Buffer); + ASSERT(EFI_ERROR(Status)); + Status = FileHandle->Read (FileHandle, NULL, Buffer); + ASSERT(EFI_ERROR(Status)); + + // Test Position > FileSize + Status = FileHandle->SetPosition (FileHandle, SourceFileSize + 1); + if (EFI_ERROR (Status)) { + goto Done; + } + Status = FileHandle->Read (FileHandle, &BufferSize, Buffer); + ASSERT(EFI_ERROR(Status)); + + // Test normal situation + Status = FileHandle->SetPosition (FileHandle, 0); + if (EFI_ERROR (Status)) { + goto Done; + } + Status = FileHandle->Read (FileHandle, &BufferSize, Buffer); + if (EFI_ERROR (Status) || BufferSize != (UINTN) SourceFileSize) { + goto Done; + } + + + // + // Test UdfGetInfo + // + // Test FileHandle == NULL or InfomationType == NULL or FileBufferSize == NULL + FileBufferSize = sizeof(EFI_FILE_INFO) + sizeof(CHAR16) * 1024; + FileInfo = AllocateZeroPool(FileBufferSize); + if (FileInfo == NULL) { + goto Done; + } + + Status = FileHandle->GetInfo (NULL, &gEfiFileSystemInfoGuid, &FileBufferSize, FileInfo); + ASSERT(EFI_ERROR(Status)); + + Status = FileHandle->GetInfo (FileHandle, NULL, &FileBufferSize, FileInfo); + ASSERT(EFI_ERROR(Status)); + + Status = FileHandle->GetInfo (FileHandle, &gEfiFileSystemInfoGuid, NULL, FileInfo); + ASSERT(EFI_ERROR(Status)); + + // Test normal situation + Status = FileHandle->GetInfo (FileHandle, &gEfiFileSystemInfoGuid, &FileBufferSize, FileInfo); + if (EFI_ERROR (Status)) { + goto Done; + } + + Status = FileHandle->GetInfo (FileHandle, &gEfiFileSystemVolumeLabelInfoIdGuid, &FileBufferSize, FileInfo); + if (EFI_ERROR (Status)) { + goto Done; + } + + // + // Test UdfWrite + // + Status = FileHandle->Write (FileHandle, &FileBufferSize, FileInfo); + ASSERT(EFI_ERROR (Status)); + + + // + // Test SetInfo + // + Status = FileHandle-> SetInfo (FileHandle, &gEfiFileSystemInfoGuid, FileBufferSize, FileInfo); + ASSERT(EFI_ERROR (Status)); + +Done: + if (FileHandle != NULL) { + Status = FileHandle->Close (NULL); + Status = FileHandle->Close (FileHandle); + } + + if (Buffer != NULL) { + FreePool(Buffer); + Buffer = NULL; + } + + if (FileInfo != NULL) { + FreePool(FileInfo); + FileInfo = NULL; + } + return ; +} + +VOID +TestDetele ( + EFI_FILE_PROTOCOL *Root, + CHAR16 *FileName + ) +{ + EFI_STATUS Status; + EFI_FILE_HANDLE FileHandle; + + FileHandle = NULL; + Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_CREATE, 0); + if (EFI_ERROR(Status)) { + Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_READ, 0); + if (EFI_ERROR(Status)) { + goto Done; + } + } + ASSERT (FileHandle != NULL); + + Status = FileHandle->Delete (NULL); + Status = FileHandle->Delete (FileHandle); + if (EFI_ERROR (Status)) { + goto Done; + } + +Done: + return ; +} + +VOID +TestFlush ( + EFI_FILE_PROTOCOL *Root, + CHAR16 *FileName + ) +{ + EFI_STATUS Status; + EFI_FILE_HANDLE FileHandle; + + FileHandle = NULL; + Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_CREATE, 0); + if (EFI_ERROR(Status)) { + Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_READ, 0); + if (EFI_ERROR(Status)) { + goto Done; + } + } + ASSERT (FileHandle != NULL); + + Status = FileHandle->Flush (FileHandle); + ASSERT(EFI_ERROR (Status)); + +Done: + if (FileHandle != NULL) { + Status = FileHandle->Close (FileHandle); + } + return ; +} + +VOID +TestDir ( + EFI_FILE_PROTOCOL *Root, + CHAR16 *FileName + ) +{ + EFI_STATUS Status; + EFI_FILE_HANDLE FileHandle; + UINTN DirBufferSize; + UINTN FileBufferSize; + EFI_FILE_INFO *DirInfo = NULL; + EFI_FILE_INFO *FileInfo = NULL; + UINT64 SourceFileSize; + + FileHandle = NULL; + Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_CREATE, 0); + if (EFI_ERROR(Status)) { + Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_READ, 0); + if (EFI_ERROR(Status)) { + goto Done ; + } + } + ASSERT (FileHandle != NULL); + + // + // Test UdfRead + // + FileBufferSize = sizeof(EFI_FILE_INFO) + sizeof(CHAR16) * 1024; + FileInfo = AllocateZeroPool(FileBufferSize); + if (FileInfo == NULL) { + goto Done ; + } + + FileBufferSize = 0; + Status = FileHandle->Read (FileHandle, &FileBufferSize, FileInfo); + + FileBufferSize = sizeof(EFI_FILE_INFO) + sizeof(CHAR16) * 1024; + Status = FileHandle->Read (FileHandle, &FileBufferSize, FileInfo); + if (EFI_ERROR (Status)) { + goto Done ; + } + + // + // Test UdfGetPosition + // + // As per UEFI spec, if the file handle is a directory, then the current file + // position has no meaning and the operation is not supported. + Status = FileHandle->GetPosition (FileHandle, &SourceFileSize); + + + // + // Test UdfSetPosition + // + Status = FileHandle->SetPosition (FileHandle, 0); + if (EFI_ERROR (Status)) { + goto Done; + } + + // + // Test UdfGetInfo + // + DirBufferSize = sizeof(EFI_FILE_INFO) + sizeof(CHAR16) * 1024; + DirInfo = AllocateZeroPool(DirBufferSize); + if (DirInfo == NULL) { + goto Done ; + } + + Status = FileHandle->GetInfo (FileHandle, &gEfiFileInfoGuid, &DirBufferSize, DirInfo); + if (EFI_ERROR (Status)) { + goto Done ; + } + + DirBufferSize = 0; + Status = FileHandle->GetInfo (FileHandle, &gEfiFileSystemInfoGuid, &DirBufferSize, DirInfo); + ASSERT (EFI_ERROR (Status)); + + DirBufferSize = 0; + Status = FileHandle->GetInfo (FileHandle, &gEfiFileSystemVolumeLabelInfoIdGuid, &DirBufferSize, DirInfo); + ASSERT (EFI_ERROR (Status)); + + DirBufferSize = sizeof(EFI_FILE_INFO) + sizeof(CHAR16) * 1024; + Status = FileHandle->GetInfo (FileHandle, &gEfiFileSystemInfoGuid, &DirBufferSize, DirInfo); + if (EFI_ERROR (Status)) { + goto Done ; + } + + Status = FileHandle->GetInfo (FileHandle, &gEfiFileSystemVolumeLabelInfoIdGuid, &DirBufferSize, DirInfo); + if (EFI_ERROR (Status)) { + goto Done; + } + +Done: + if (FileHandle != NULL) { + Status = FileHandle-> Close (NULL); + Status = FileHandle-> Close (FileHandle); + } + + if (DirInfo != NULL) { + FreePool(DirInfo); + DirInfo = NULL; + } + + if (FileInfo != NULL) { + FreePool(FileInfo); + FileInfo = NULL; + } + + return ; +} + + +VOID +TestUdfFileSystem ( + EFI_BLOCK_IO_PROTOCOL *PartitionBlockIo, + EFI_DISK_IO_PROTOCOL *PartitionDiskIo, + UINT8 *TestBuffer, + CHAR16 *FileName + ) +{ + EFI_FILE_PROTOCOL *Root; + + PrivFsData = (PRIVATE_UDF_SIMPLE_FS_DATA *)AllocateZeroPool (sizeof (PRIVATE_UDF_SIMPLE_FS_DATA)); + if (PrivFsData == NULL) { + goto Done ; + }; + + Root = TestSimpleFileSystem (PartitionBlockIo, PartitionDiskIo, TestBuffer); + if (Root == NULL) { + goto Done ; + } + + if (FileName == NULL) { + TestFile (Root, L"udf.bin"); + TestFile (Root, L".\\\\b\\\\a"); + TestFile (Root, L"..\\a"); + TestFile (Root, L"b_link\\ a"); + TestFile (Root, L"...a"); + TestFile (Root, NULL); + + TestDir (Root, L"\\"); + TestDir (Root, L"."); + TestDir (Root, L".."); + TestDir (Root, L"b_link"); + TestDir (Root, L"lost+found"); + TestDir (Root, L"b\\c\\"); + + TestDetele (Root, L"b_link\\c"); + TestFlush (Root, L"b_link\\a_link"); + goto Done; + } else { + TestFile (Root, FileName); + TestDir (Root, FileName); + + TestDetele (Root, FileName); + TestFlush (Root, FileName); + goto Done; + } +Done: + if (PrivFsData != NULL) { + FreePool(PrivFsData); + PrivFsData = NULL; + }; + return; +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + EFI_BLOCK_IO_PROTOCOL *PartitionBlockIo; + EFI_DISK_IO_PROTOCOL *PartitionDiskIo; + CHAR16 *FileName; + + FileName = NULL; + FixBuffer (TestBuffer); + + // + // NOTE: There are 2 partitions: 0x101, and 0x202. + // The files are updated in 0x202. + // + DiskStubInitialize ((UINT8 *)TestBuffer + 0x202 * BLOCK_SIZE, TOTAL_SIZE - 0x202 * BLOCK_SIZE, BLOCK_SIZE, IO_ALIGN, &PartitionBlockIo, &PartitionDiskIo); + + TestUdfFileSystem (PartitionBlockIo, PartitionDiskIo, TestBuffer, FileName); + + DiskStubDestory(); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.inf new file mode 100644 index 0000000..f92fa59 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.inf @@ -0,0 +1,44 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestUdf + FILE_GUID = 045C4491-29E5-4357-A939-897A757FB31F + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestUdf.c + MdeModulePkg/Universal/Disk/UdfDxe/Udf.h + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + UefiBootServicesTableLib + DiskStubLib + ToolChainHarnessLib + +[Guids] + gEfiFileInfoGuid + gEfiFileSystemInfoGuid + gEfiFileSystemVolumeLabelInfoIdGuid diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.c new file mode 100644 index 0000000..1c484e8 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.c @@ -0,0 +1,85 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#ifdef TEST_WITH_LIBFUZZER +#include +#include +#endif + +#include + +#include +#include +#include +#include +#include + +extern BOOLEAN mEndOfDxe; + +#define TOTAL_SIZE (512 * 1024) + +extern UINT8 *mVariableBufferPayload; +extern UINTN mVariableBufferPayloadSize; + +EFI_STATUS +EFIAPI +SmmVariableHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *RegisterContext, + IN OUT VOID *CommBuffer, + IN OUT UINTN *CommBufferSize + ); + +VOID +FixBuffer ( + UINT8 *TestBuffer, + UINTN TestBufferSize + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + SMM_COMMUNICATION_BUFFER_DESCRIPTOR SmmCommBufferDesc[1]; + + SmmCommBufferDesc[0].Address = (UINTN)TestBuffer; + SmmCommBufferDesc[0].Size = TOTAL_SIZE; + + FixBuffer (TestBuffer, TestBufferSize); + + SmmMemLibInitialize (ARRAY_SIZE(SmmCommBufferDesc), SmmCommBufferDesc); + mEndOfDxe = TRUE; + + mVariableBufferPayloadSize = GetMaxBufferSize(); + mVariableBufferPayload = AllocatePool(mVariableBufferPayloadSize); + if (mVariableBufferPayload == NULL) + return; + + SmmVariableHandler(NULL, NULL, TestBuffer, &TestBufferSize); + + if (mVariableBufferPayload != NULL) + FreePool(mVariableBufferPayload); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.inf new file mode 100644 index 0000000..dddb80b --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.inf @@ -0,0 +1,39 @@ +## @file +# Component description file for TestVariableSmm module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestVariableSmm + FILE_GUID = E911AB26-4741-4621-93EF-305FEA98A851 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestVariableSmm.c + MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + SmmMemLib + SmmMemLibStubLib + ToolChainHarnessLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.h b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.h new file mode 100644 index 0000000..7769270 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.h @@ -0,0 +1,140 @@ +/*++ + +Copyright (c) 2006, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +Module Name: + + FwBlockService.h + +Abstract: + + Firmware volume block driver for Intel Firmware Hub (FWH) device + +--*/ + +#ifndef _FW_BLOCK_SERVICE_H +#define _FW_BLOCK_SERVICE_H + +// +// Fvb Protocol instance data +// +#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE) +#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N') + +#pragma pack (1) + +typedef struct { + + EFI_FIRMWARE_VOLUME_HEADER FvHdr; + EFI_FV_BLOCK_MAP_ENTRY EndBlockMap; + VARIABLE_STORE_HEADER VarHdr; + +} FVB_FV_HDR_AND_VARS_TEMPLATE; + +typedef struct { + MEMMAP_DEVICE_PATH MemMapDevPath; + EFI_DEVICE_PATH_PROTOCOL EndDevPath; +} FV_DEVICE_PATH; + +#pragma pack () + +typedef struct { + UINTN Signature; + FV_DEVICE_PATH DevicePath; + VOID *BufferPtr; + UINTN BlockSize; + UINTN Size; + EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance; +} EFI_FW_VOL_BLOCK_DEVICE; + + +// +// Constants +// +#define EMU_FVB_BLOCK_SIZE \ + EFI_PAGE_SIZE +#define EMU_FVB_NUM_SPARE_BLOCKS \ + EFI_SIZE_TO_PAGES ((UINTN)FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize)) +#define EMU_FVB_NUM_TOTAL_BLOCKS \ + (2 * EMU_FVB_NUM_SPARE_BLOCKS) +#define EMU_FVB_SIZE \ + (EMU_FVB_NUM_TOTAL_BLOCKS * EMU_FVB_BLOCK_SIZE) +#define FTW_WRITE_QUEUE_SIZE \ + (FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) - \ + sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER)) +#define EMU_FV_HEADER_LENGTH OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr) + +#define NOT_ERASED_BIT 0 +#define ERASED_BIT 1 +#define ERASED_UINT8 0xff +#define ERASED_UINT32 0xffffffff + +// +// Protocol APIs +// +EFI_STATUS +EFIAPI +FvbProtocolGetAttributes ( + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + OUT EFI_FVB_ATTRIBUTES_2 *Attributes + ) +; + +EFI_STATUS +EFIAPI +FvbProtocolSetAttributes ( + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes + ) +; + +EFI_STATUS +EFIAPI +FvbProtocolGetPhysicalAddress ( + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + OUT EFI_PHYSICAL_ADDRESS *Address + ) +; + +EFI_STATUS +EFIAPI +FvbProtocolGetBlockSize ( + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + OUT UINTN *BlockSize, + OUT UINTN *NumberOfBlocks + ) +; + +EFI_STATUS +EFIAPI +FvbProtocolRead ( + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + IN UINTN Offset, + IN OUT UINTN *NumBytes, + IN OUT UINT8 *Buffer + ) +; + +EFI_STATUS +EFIAPI +FvbProtocolWrite ( + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN EFI_LBA Lba, + IN UINTN Offset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer + ) +; + +EFI_STATUS +EFIAPI +FvbProtocolEraseBlocks ( + IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + ... + ) +; + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.c new file mode 100644 index 0000000..12d4856 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.c @@ -0,0 +1,69 @@ +/** @file + Firmware Block Services to support emulating non-volatile variables + by pretending that a memory buffer is storage for the NV variables. + + Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#define TOTAL_SIZE (1024* 1024) +#define BLOCK_SIZE (512) +#define IO_ALIGN (1) + + +BOOLEAN +EFIAPI +PlatformValidateNvVarStore ( + IN UINT8 *TdvfCfvBase, + IN UINT32 TdvfCfvSize + ); + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + + FixBuffer (TestBuffer); + + + // fuzz function: + // buffer overflow, crash will be detected at place. + // only care about security, not for function bug. + // + // try to separate EFI lib, use stdlib function. + // no asm code. + PlatformValidateNvVarStore (TestBuffer, (UINT32)TestBufferSize); + +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.inf new file mode 100644 index 0000000..6178475 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.inf @@ -0,0 +1,46 @@ +## @file +# +# Copyright (c) 2008 - 2021, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestValidateTdxCfv + FILE_GUID = 22dc2b60-fe40-a2ac-b02f-3ab1fad9aad8 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + TestValidateTdxCfv.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + OvmfPkg/OvmfPkg.dec + OvmfPkg/OvmfPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec +[Pcd] +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x40000 +[LibraryClasses] + BaseLib + BaseMemoryLib + DebugLib + MemoryAllocationLib + DxeServicesTableLib + HobLib + PcdLib + UefiBootServicesTableLib + UefiDriverEntryPoint + UefiLib + ToolChainHarnessLib + PlatformInitLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.c new file mode 100644 index 0000000..16adfda --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.c @@ -0,0 +1,64 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#define TOTAL_SIZE (512 * 1024) +#define BLOCK_SIZE (512) +#define IO_ALIGN (1) + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + VBLK_DEV *VblkDev; + VIRTIO_1_0_DEV *VirtioDev; + VOID *ConfigRegion; + EFI_STATUS Status; + + VirtioDev = (VIRTIO_1_0_DEV *) AllocateZeroPool (sizeof *VirtioDev); + VblkDev = (VBLK_DEV *) AllocateZeroPool (sizeof *VblkDev); + ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG) + sizeof (VIRTIO_BLK_CONFIG) + 0x100); + + Status = ParseBufferAndInitVirtioPciDev10 (TestBuffer, TestBufferSize, ConfigRegion, (VIRTIO_1_0_DEV *) VirtioDev); + + if (!EFI_ERROR(Status)) { + if (VirtioDev->VirtIo.SubSystemDeviceId == VIRTIO_SUBSYSTEM_BLOCK_DEVICE) { + VblkDev->Signature = VBLK_SIG; + VblkDev->VirtIo = &VirtioDev->VirtIo; + VirtioBlkInit (VblkDev); + } + } + + FreePool (ConfigRegion); + FreePool (VirtioDev); + FreePool (VblkDev); +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.inf new file mode 100644 index 0000000..1c8f015 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.inf @@ -0,0 +1,40 @@ +## @file +# Component description file for TestUsb module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestVirtio10Blk + FILE_GUID = 7AF4DF33-6FED-4FCD-A393-C80D76BA9702 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestVirtio10Blk.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseMemoryLib + DebugLib + MemoryAllocationLib + UefiDriverEntryPoint + UefiLib + VirtioLib + VirtioPciDevice10StubLib + VirtioBlkStubLib + ToolChainHarnessLib \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.c new file mode 100644 index 0000000..feb7284 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.c @@ -0,0 +1,67 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#define TOTAL_SIZE (512 * 1024) +#define BLOCK_SIZE (512) +#define IO_ALIGN (1) + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + VBLK_DEV *VblkDev; + VIRTIO_PCI_DEVICE *VirtioDev; + EFI_PCI_IO_PROTOCOL *PciIo; + VOID *ConfigRegion; + EFI_STATUS Status; + + VirtioDev = (VIRTIO_PCI_DEVICE *) AllocateZeroPool (sizeof *VirtioDev); + VblkDev = (VBLK_DEV *) AllocateZeroPool (sizeof *VblkDev); + PciIo = (EFI_PCI_IO_PROTOCOL *)AllocateZeroPool(sizeof (*PciIo)); + ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_HDR) + sizeof (VIRTIO_BLK_CONFIG)); + + Status = ParseBufferAndInitVirtioPciDev (TestBuffer, TestBufferSize, PciIo, ConfigRegion, VirtioDev); + + if (!EFI_ERROR(Status)) { + if (VirtioDev->VirtioDevice.SubSystemDeviceId == VIRTIO_SUBSYSTEM_BLOCK_DEVICE) { + VblkDev->Signature = VBLK_SIG; + VblkDev->VirtIo = &VirtioDev->VirtioDevice; + VirtioBlkInit (VblkDev); + } + } + + FreePool (ConfigRegion); + FreePool (VirtioDev); + FreePool (VblkDev); + FreePool (PciIo); +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.inf new file mode 100644 index 0000000..d9706e0 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.inf @@ -0,0 +1,40 @@ +## @file +# Component description file for TestUsb module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestVirtioBlk + FILE_GUID = 7AF4DF33-6FED-4FCD-A393-C80D76BA9702 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestVirtioBlk.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseMemoryLib + DebugLib + MemoryAllocationLib + UefiDriverEntryPoint + UefiLib + VirtioLib + VirtioPciDevice10StubLib + VirtioBlkStubLib + ToolChainHarnessLib \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.c new file mode 100644 index 0000000..db6f8cc --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.c @@ -0,0 +1,74 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#define TOTAL_SIZE (512 * 1024) +#define BLOCK_SIZE (512) +#define IO_ALIGN (1) + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + VBLK_DEV *VblkDev; + VIRTIO_PCI_DEVICE *VirtioDev; + EFI_PCI_IO_PROTOCOL *PciIo; + VOID *ConfigRegion; + EFI_STATUS Status; + + VirtioDev = (VIRTIO_PCI_DEVICE *) AllocateZeroPool (sizeof *VirtioDev); + VblkDev = (VBLK_DEV *) AllocateZeroPool (sizeof *VblkDev); + PciIo = (EFI_PCI_IO_PROTOCOL *)AllocateZeroPool(sizeof (*PciIo)); + ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_HDR) + sizeof (VIRTIO_BLK_CONFIG)); + + Status = InitVirtioPciDev (PciIo, ConfigRegion, VirtioDev); + + if (!EFI_ERROR(Status)) { + if (VirtioDev->VirtioDevice.SubSystemDeviceId == VIRTIO_SUBSYSTEM_BLOCK_DEVICE) { + VblkDev->Signature = VBLK_SIG; + VblkDev->VirtIo = &VirtioDev->VirtioDevice; + Status = VirtioBlkInit (VblkDev); + if (!EFI_ERROR(Status)) { + VblkDev->BlockIo.WriteBlocks(&VblkDev->BlockIo, 0, 0, TestBufferSize, TestBuffer); + VblkDev->BlockIo.ReadBlocks(&VblkDev->BlockIo, 0, 0, TestBufferSize, TestBuffer); + VblkDev->BlockIo.FlushBlocks(&VblkDev->BlockIo); + } + } + } + + VirtioRingUninit (VblkDev->VirtIo, &VblkDev->Ring); + FreePool (ConfigRegion); + FreePool (VirtioDev); + FreePool (VblkDev); + FreePool (PciIo); +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.inf new file mode 100644 index 0000000..34803a9 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.inf @@ -0,0 +1,40 @@ +## @file +# Component description file for TestUsb module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestVirtioBlkReadWrite + FILE_GUID = 7AF4DF33-6FED-44CD-A393-C80D76BA9701 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestVirtioBlkReadWrite.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseMemoryLib + DebugLib + MemoryAllocationLib + UefiDriverEntryPoint + UefiLib + VirtioLib + VirtioPciDevice10StubLib + VirtioBlkStubLib + ToolChainHarnessLib \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.c new file mode 100644 index 0000000..bc45223 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.c @@ -0,0 +1,181 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#define TOTAL_SIZE (512 * 1024) +#define BLOCK_SIZE (512) +#define IO_ALIGN (1) + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +EFI_STATUS +EFIAPI +ParseCapabilities ( + IN OUT VIRTIO_1_0_DEV *Device + ) +{ + EFI_STATUS Status; + PCI_CAP_DEV *PciDevice; + PCI_CAP_LIST *CapList; + UINT16 VendorInstance; + PCI_CAP *VendorCap; + + Status = PciCapPciIoDeviceInit (Device->PciIo, &PciDevice); + if (EFI_ERROR (Status)) { + return Status; + } + + Status = PciCapListInit (PciDevice, &CapList); + if (EFI_ERROR (Status)) { + goto UninitPciDevice; + } + + for (VendorInstance = 0; + !EFI_ERROR (PciCapListFindCap (CapList, PciCapNormal, + EFI_PCI_CAPABILITY_ID_VENDOR, VendorInstance, + &VendorCap)); + VendorInstance++) { + UINT8 CapLen; + VIRTIO_PCI_CAP VirtIoCap; + VIRTIO_1_0_CONFIG *ParsedConfig; + + // + // Big enough to accommodate a VIRTIO_PCI_CAP structure? + // + Status = PciCapRead (PciDevice, VendorCap, + OFFSET_OF (EFI_PCI_CAPABILITY_VENDOR_HDR, Length), &CapLen, + sizeof CapLen); + if (EFI_ERROR (Status)) { + goto UninitCapList; + } + if (CapLen < sizeof VirtIoCap) { + // + // Too small, move to next. + // + continue; + } + + // + // Read interesting part of capability. + // + Status = PciCapRead (PciDevice, VendorCap, 0, &VirtIoCap, sizeof VirtIoCap); + if (EFI_ERROR (Status)) { + goto UninitCapList; + } + + switch (VirtIoCap.ConfigType) { + case VIRTIO_PCI_CAP_COMMON_CFG: + ParsedConfig = &Device->CommonConfig; + break; + case VIRTIO_PCI_CAP_NOTIFY_CFG: + ParsedConfig = &Device->NotifyConfig; + break; + case VIRTIO_PCI_CAP_DEVICE_CFG: + ParsedConfig = &Device->SpecificConfig; + break; + default: + // + // Capability is not interesting. + // + continue; + } + + // + // Save the location of the register block into ParsedConfig. + // + Status = GetBarType (Device->PciIo, VirtIoCap.Bar, &ParsedConfig->BarType); + if (EFI_ERROR (Status)) { + goto UninitCapList; + } + ParsedConfig->Bar = VirtIoCap.Bar; + ParsedConfig->Offset = VirtIoCap.Offset; + ParsedConfig->Length = VirtIoCap.Length; + + if (VirtIoCap.ConfigType == VIRTIO_PCI_CAP_NOTIFY_CFG) { + // + // This capability has an additional field called NotifyOffsetMultiplier; + // parse it too. + // + if (CapLen < sizeof VirtIoCap + sizeof Device->NotifyOffsetMultiplier) { + // + // Too small, move to next. + // + continue; + } + + Status = PciCapRead (PciDevice, VendorCap, sizeof VirtIoCap, + &Device->NotifyOffsetMultiplier, + sizeof Device->NotifyOffsetMultiplier); + if (EFI_ERROR (Status)) { + goto UninitCapList; + } + } + + // + // Capability parsed successfully. + // + ParsedConfig->Exists = TRUE; + } + + ASSERT_EFI_ERROR (Status); + +UninitCapList: + PciCapListUninit (CapList); + +UninitPciDevice: + PciCapPciIoDeviceUninit (PciDevice); + + return Status; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + VIRTIO_1_0_DEV *VirtioPciDevice; + EFI_STATUS Status; + EFI_PCI_IO_PROTOCOL *PciIo; + + VirtioPciDevice = (VIRTIO_1_0_DEV *) AllocateZeroPool(sizeof (*VirtioPciDevice)); + + PciIo = (EFI_PCI_IO_PROTOCOL *)AllocateZeroPool(sizeof (*PciIo)); + + VirtioPciDevice->PciIo = PciIo; + + Status = InitVirtioPciDevice (VirtioPciDevice, TestBuffer, TestBufferSize, PciIo); + + if (!EFI_ERROR(Status)) { + ParseCapabilities (VirtioPciDevice); + } + + FreePool (PciIo); + FreePool (VirtioPciDevice); +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.inf new file mode 100644 index 0000000..761cf07 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.inf @@ -0,0 +1,39 @@ +## @file +# Component description file for TestUsb module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestVirtioPciDevice + FILE_GUID = 7AF4DF33-6FED-4FCD-A313-C80D76BA9602 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestVirtioPciDevice.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseMemoryLib + DebugLib + MemoryAllocationLib + UefiBootServicesTableLib + UefiDriverEntryPoint + UefiLib + ToolChainHarnessLib + VirtioPciDevice10StubLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.c new file mode 100644 index 0000000..4261716 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.c @@ -0,0 +1,111 @@ +/** @file + Firmware Block Services to support emulating non-volatile variables + by pretending that a memory buffer is storage for the NV variables. + + Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TOTAL_SIZE (512 * 1024) +#define BLOCK_SIZE (512) +#define IO_ALIGN (1) + + +typedef struct { + EFI_TCG2_PROTOCOL *Tcg2Protocol; + EFI_CC_MEASUREMENT_PROTOCOL *CcProtocol; +} MEASURE_BOOT_PROTOCOLS; + +EFI_STATUS +EFIAPI +Tcg2MeasureGptTable ( + IN MEASURE_BOOT_PROTOCOLS *MeasureBootProtocols, + IN EFI_HANDLE GptHandle + ); + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + EFI_BLOCK_IO_PROTOCOL *BlockIo; + EFI_DISK_IO_PROTOCOL *DiskIo; + MEASURE_BOOT_PROTOCOLS MeasureBootProtocols; + EFI_TCG2_PROTOCOL *Tcg2Protocol; + EFI_CC_MEASUREMENT_PROTOCOL *CcProtocol; + EFI_HANDLE GptHandle; + EFI_STATUS Status; + + FixBuffer (TestBuffer); + DiskStubInitialize (TestBuffer, TestBufferSize, BLOCK_SIZE, IO_ALIGN, &BlockIo, &DiskIo); + Tcg2StubInitlize(); + + MeasureBootProtocols.Tcg2Protocol = NULL; + MeasureBootProtocols.CcProtocol = NULL; + // fuzz function: + // buffer overflow, crash will be detected at place. + // only care about security, not for function bug. + // + // try to separate EFI lib, use stdlib function. + // no asm code. + + GptHandle =NULL; + Status = gBS->InstallMultipleProtocolInterfaces ( + &GptHandle, + &gEfiBlockIoProtocolGuid, + BlockIo, + &gEfiDiskIoProtocolGuid, + DiskIo, + NULL + ); + + Status = gBS->LocateProtocol (&gEfiTcg2ProtocolGuid, NULL, (VOID **) &Tcg2Protocol); + Status = gBS->LocateProtocol (&gEfiCcMeasurementProtocolGuid, NULL, (VOID **) &CcProtocol); + + //case 1: set MeasureBootProtocols.CcProtocol = NULL + MeasureBootProtocols.Tcg2Protocol = Tcg2Protocol; + Tcg2MeasureGptTable (&MeasureBootProtocols, GptHandle); + + //case2:set MeasureBootProtocols.Tcg2Protocol = NULL + MeasureBootProtocols.Tcg2Protocol = NULL; + MeasureBootProtocols.CcProtocol = CcProtocol; + Tcg2MeasureGptTable (&MeasureBootProtocols, GptHandle); + +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.inf new file mode 100644 index 0000000..7960023 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.inf @@ -0,0 +1,50 @@ +## @file +# Provides security service for Tdvf measured boot +# +# This library instance hooks LoadImage() API to measure every image that +# is not measured in PEI phase. And, it will also measure GPT partition. +# +# Caution: This module requires additional review when modified. +# This library will have external input - PE/COFF image and GPT partition. +# This external input must be validated carefully to avoid security issues such +# as buffer overflow or integer overflow. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestTcg2MeasureGptTable + FILE_GUID = 778DF4F4-36BD-4ae7-B2F0-10B434B0D164 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = X64 +# + +[Sources] + TestTcg2MeasureGptTable.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + OvmfPkg/OvmfPkg.dec + SecurityPkg/SecurityPkg.dec + CryptoPkg/CryptoPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseMemoryLib + DebugLib + MemoryAllocationLib + BaseLib + DiskStubLib + Tcg2StubLib + UefiBootServicesTableLib + ToolChainHarnessLib \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.c new file mode 100644 index 0000000..119f11c --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.c @@ -0,0 +1,154 @@ +/** @file + + Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +#define TOTAL_SIZE (512 * 1024) +#define BLOCK_SIZE (512) +#define IO_ALIGN (1) + +typedef struct { + EFI_TCG2_PROTOCOL *Tcg2Protocol; + EFI_CC_MEASUREMENT_PROTOCOL *CcProtocol; +} MEASURE_BOOT_PROTOCOLS; + +EFI_STATUS +EFIAPI +Tcg2MeasurePeImage ( + IN MEASURE_BOOT_PROTOCOLS *MeasureBootProtocols, + IN EFI_PHYSICAL_ADDRESS ImageAddress, + IN UINTN ImageSize, + IN UINTN LinkTimeBase, + IN UINT16 ImageType, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath + ); + + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + EFI_BLOCK_IO_PROTOCOL *BlockIo; + EFI_DISK_IO_PROTOCOL *DiskIo; + MEASURE_BOOT_PROTOCOLS MeasureBootProtocols; + EFI_TCG2_PROTOCOL *Tcg2Protocol; + EFI_CC_MEASUREMENT_PROTOCOL *CcProtocol; + EFI_HANDLE GptHandle; + EFI_STATUS Status; + + PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; + EFI_DEVICE_PATH_PROTOCOL *OrigDevicePathNode; + //HARDDRIVE_DEVICE_PATH *Hd; + UINT8 DeviceArray[]={0x03,0x17,0x10,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0x7F,0xFF,0x04,0x00}; + + FixBuffer (TestBuffer); + DiskStubInitialize (TestBuffer, TestBufferSize, BLOCK_SIZE, IO_ALIGN, &BlockIo, &DiskIo); + Tcg2StubInitlize(); + + MeasureBootProtocols.Tcg2Protocol = NULL; + MeasureBootProtocols.CcProtocol = NULL; + // fuzz function: + // buffer overflow, crash will be detected at place. + // only care about security, not for function bug. + // + // try to separate EFI lib, use stdlib function. + // no asm code. + + GptHandle =NULL; + Status = gBS->InstallMultipleProtocolInterfaces ( + &GptHandle, + &gEfiBlockIoProtocolGuid, + BlockIo, + &gEfiDiskIoProtocolGuid, + DiskIo, + NULL + ); + Status = gBS->LocateProtocol (&gEfiTcg2ProtocolGuid, NULL, (VOID **) &Tcg2Protocol); + Status = gBS->LocateProtocol (&gEfiCcMeasurementProtocolGuid, NULL, (VOID **) &CcProtocol); + + MeasureBootProtocols.Tcg2Protocol = Tcg2Protocol; + /* + Hd = (HARDDRIVE_DEVICE_PATH *) CreateDeviceNode ( + MEDIA_DEVICE_PATH, + MEDIA_HARDDRIVE_DP, + (UINT16) sizeof (HARDDRIVE_DEVICE_PATH) + ); + */ + OrigDevicePathNode= (EFI_DEVICE_PATH_PROTOCOL*) DeviceArray; + #pragma warning(disable: 4700) + + //test case 1:set MeasureBootProtocols.CcProtocol = NULL; + ImageContext.ImageType = 0x1; + ImageContext.ImageAddress = 0x1234; + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode ); + ImageContext.ImageType = 10; + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode ); + ImageContext.ImageType = 11; + + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode); + ImageContext.ImageType = 12; + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode ); + ImageContext.ImageType = 13; + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode ); + + //test case 2:set MeasureBootProtocols.Tcg2Protocol = NULL; + MeasureBootProtocols.Tcg2Protocol = NULL; + MeasureBootProtocols.CcProtocol = CcProtocol; + + ImageContext.ImageType = 0x1; + ImageContext.ImageAddress = 0x1234; + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode ); + ImageContext.ImageType = 10; + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode ); + ImageContext.ImageType = 11; + + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode); + ImageContext.ImageType = 12; + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode ); + ImageContext.ImageType = 13; + Tcg2MeasurePeImage (&MeasureBootProtocols, (EFI_PHYSICAL_ADDRESS)TestBuffer, TestBufferSize,(UINTN) ImageContext.ImageAddress,ImageContext.ImageType,OrigDevicePathNode ); + +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.inf new file mode 100644 index 0000000..6e88af4 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.inf @@ -0,0 +1,42 @@ +## @file +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestTcg2MeasurePeImage + FILE_GUID = 778DF4F4-36BD-4ae7-B2F0-10B434B0D164 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = X64 +# + +[Sources] + TestTcg2MeasurePeImage.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + OvmfPkg/OvmfPkg.dec + SecurityPkg/SecurityPkg.dec + CryptoPkg/CryptoPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseMemoryLib + DebugLib + MemoryAllocationLib + BaseLib + DiskStubLib + Tcg2StubLib + UefiBootServicesTableLib + DevicePathLib + ToolChainHarnessLib \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf new file mode 100644 index 0000000..3720806 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf @@ -0,0 +1,43 @@ +## @file +# Component description file for TestTpm2CommandLib module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = CryptoLibStubPkcs7 + FILE_GUID = C9FE7135-3EDA-4E4A-AB1F-EB4DD74A85CA + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = BaseCryptLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + CryptoStubPkcs7.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + CryptoPkg/CryptoPkg.dec + SecurityPkg/SecurityPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + ToolChainHarnessLib + +[Guids] + gEfiCertPkcs7Guid + diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoStubPkcs7.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoStubPkcs7.c new file mode 100644 index 0000000..0276ee1 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoStubPkcs7.c @@ -0,0 +1,22 @@ +/** @file + + Copyright (c) 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +BOOLEAN +EFIAPI +Pkcs7Verify ( + IN CONST UINT8 *P7Data, + IN UINTN P7Length, + IN CONST UINT8 *TrustedCert, + IN UINTN CertLength, + IN CONST UINT8 *InData, + IN UINTN DataLength + ) +{ + return TRUE; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/SamplePkcs7.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/SamplePkcs7.c new file mode 100644 index 0000000..a8eff48 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/SamplePkcs7.c @@ -0,0 +1,11 @@ +/** @file + + Copyright (c) 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +UINT8 mPkcs7PublicKeyData[] = {0x30, 0x82, 0x03, 0xec, 0x30, 0x82, 0x02, 0xd4, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xc0, 0x91, 0xc5, 0xe2, 0xb7, 0x66, 0xc0, 0xf8, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x02, 0x53, 0x48, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x02, 0x53, 0x48, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54, 0x69, 0x61, 0x6e, 0x6f, 0x43, 0x6f, 0x72, 0x65, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x05, 0x45, 0x44, 0x4b, 0x49, 0x49, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x08, 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x13, 0x65, 0x64, 0x6b, 0x69, 0x69, 0x40, 0x74, 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x34, 0x31, 0x30, 0x30, 0x38, 0x32, 0x37, 0x34, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, 0x31, 0x30, 0x30, 0x38, 0x32, 0x37, 0x34, 0x30, 0x5a, 0x30, 0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x02, 0x53, 0x48, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x02, 0x53, 0x48, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54, 0x69, 0x61, 0x6e, 0x6f, 0x43, 0x6f, 0x72, 0x65, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x05, 0x45, 0x44, 0x4b, 0x49, 0x49, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x08, 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x13, 0x65, 0x64, 0x6b, 0x69, 0x69, 0x40, 0x74, 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0x29, 0x29, 0x6c, 0x60, 0x0c, 0xd7, 0x23, 0xf6, 0x7d, 0xee, 0xf0, 0x62, 0xff, 0xd9, 0xc9, 0xaa, 0x55, 0x8c, 0x81, 0x95, 0x56, 0x3f, 0xb7, 0x56, 0x53, 0xb0, 0xc2, 0x82, 0x12, 0xc5, 0x3b, 0x75, 0x23, 0xb9, 0x4d, 0xd6, 0xc4, 0x55, 0x73, 0xf3, 0xaa, 0x95, 0xa8, 0x1b, 0xf3, 0x93, 0x7e, 0x9e, 0x40, 0xe4, 0x1d, 0x22, 0x9c, 0x93, 0x07, 0x0b, 0xd7, 0xaa, 0x5b, 0xd7, 0xe4, 0x1a, 0x21, 0x84, 0xd7, 0x63, 0x59, 0x03, 0x50, 0x1f, 0xf5, 0x14, 0x55, 0x93, 0x91, 0x9b, 0xf5, 0x52, 0xb0, 0xbf, 0x0e, 0x5c, 0x68, 0x3b, 0x59, 0x52, 0x98, 0x96, 0x56, 0xe1, 0xab, 0xc4, 0x43, 0xbb, 0x05, 0x57, 0x78, 0x45, 0x01, 0x9f, 0x58, 0x15, 0x53, 0x0e, 0x11, 0x94, 0x2f, 0x0e, 0xf1, 0xa6, 0x19, 0xa2, 0x6e, 0x86, 0x39, 0x2b, 0x33, 0x8d, 0xc7, 0xc5, 0xeb, 0xee, 0x1e, 0x33, 0xd3, 0x32, 0x94, 0xc1, 0x59, 0xc4, 0x0c, 0x97, 0x0b, 0x12, 0x48, 0x5f, 0x33, 0xf6, 0x60, 0x74, 0x7d, 0x57, 0xc2, 0x13, 0x2d, 0x7d, 0xa9, 0x87, 0xa3, 0x35, 0xea, 0x91, 0x83, 0x3f, 0x67, 0x7a, 0x92, 0x1f, 0x01, 0x53, 0x9f, 0x62, 0x5f, 0x99, 0x12, 0xfd, 0x73, 0x1b, 0x2d, 0x9e, 0x2b, 0x6c, 0x34, 0x49, 0xaf, 0x4f, 0x07, 0x8f, 0xc0, 0xe9, 0x6b, 0x9e, 0x5f, 0x79, 0x35, 0xda, 0x2a, 0x5c, 0x88, 0xee, 0xf6, 0x48, 0x61, 0xda, 0x96, 0xe3, 0x48, 0x46, 0xa0, 0x94, 0x1c, 0x9d, 0xf6, 0x5c, 0x87, 0x0e, 0xef, 0x74, 0x09, 0x91, 0x0d, 0x3d, 0x5a, 0xe7, 0xc5, 0x4c, 0x8a, 0x7a, 0xac, 0xa1, 0x85, 0xb6, 0x67, 0x44, 0x17, 0x55, 0x52, 0x3a, 0xe8, 0x11, 0x4d, 0x58, 0xa2, 0x93, 0x00, 0x62, 0xea, 0x7b, 0x80, 0xed, 0xcf, 0xbd, 0xdf, 0x75, 0x80, 0x4b, 0xb9, 0x65, 0x63, 0xad, 0x0b, 0x4d, 0x74, 0xfa, 0x59, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x63, 0x30, 0x61, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x16, 0xaa, 0xd6, 0x8e, 0x1b, 0x2d, 0x43, 0xf3, 0x2d, 0xb0, 0x24, 0xad, 0x36, 0x65, 0x3f, 0xb2, 0xfa, 0xb1, 0x2c, 0xed, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x16, 0xaa, 0xd6, 0x8e, 0x1b, 0x2d, 0x43, 0xf3, 0x2d, 0xb0, 0x24, 0xad, 0x36, 0x65, 0x3f, 0xb2, 0xfa, 0xb1, 0x2c, 0xed, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x95, 0xde, 0xdf, 0xa4, 0x14, 0xdb, 0x92, 0x22, 0x78, 0x1a, 0xbd, 0x31, 0x9d, 0x1e, 0xd7, 0x2f, 0x0a, 0x10, 0x11, 0x5d, 0x74, 0x61, 0xe8, 0x30, 0xc4, 0xf3, 0x15, 0xe9, 0x30, 0x54, 0xf4, 0xbb, 0x0c, 0x04, 0x78, 0x13, 0x5d, 0x2c, 0xdd, 0x8c, 0x92, 0x90, 0xd1, 0x9c, 0xd0, 0xd0, 0x18, 0xa3, 0xa3, 0xfc, 0x8c, 0x28, 0x5a, 0xd4, 0x91, 0x4d, 0x08, 0xc3, 0xf6, 0x1a, 0xc8, 0xdd, 0xa6, 0x08, 0x58, 0xe2, 0x15, 0x95, 0xfb, 0x2d, 0x2d, 0x8a, 0xb1, 0x30, 0x80, 0xbd, 0x9a, 0xb6, 0xe1, 0x2c, 0x20, 0x3e, 0xdd, 0xc4, 0xc7, 0x55, 0x65, 0xcf, 0x28, 0x17, 0xf4, 0xee, 0xda, 0xbe, 0x77, 0x70, 0xd5, 0x52, 0xd6, 0x15, 0x7a, 0xfb, 0xad, 0xaf, 0xfd, 0xd5, 0x45, 0x90, 0x5a, 0xe6, 0x31, 0x42, 0xd7, 0x84, 0xb3, 0x49, 0x56, 0x6a, 0xd3, 0x47, 0xf3, 0xbf, 0x68, 0x60, 0x8b, 0x0f, 0xe2, 0xaf, 0xf4, 0xe3, 0xec, 0x12, 0xb9, 0xe2, 0x3a, 0x16, 0x11, 0x4e, 0x4d, 0x73, 0x79, 0xaf, 0x47, 0x85, 0x4c, 0x76, 0x26, 0x9e, 0x8b, 0x32, 0xc0, 0x8e, 0xc2, 0xdc, 0x27, 0xa6, 0xef, 0xac, 0x93, 0x9e, 0xa1, 0x5e, 0xcf, 0x34, 0x45, 0xe0, 0x2a, 0xc7, 0x9d, 0x4d, 0xd7, 0xd7, 0x37, 0x72, 0x97, 0xf8, 0x58, 0xf9, 0xb6, 0x35, 0x48, 0xf1, 0xd1, 0x0a, 0x72, 0x7f, 0xfd, 0x4d, 0x7c, 0xe9, 0xcc, 0xd8, 0x48, 0x1b, 0x49, 0x52, 0x53, 0xde, 0x51, 0x01, 0x53, 0x35, 0xbc, 0x90, 0xcd, 0x8c, 0x8a, 0xcc, 0x43, 0x20, 0xa7, 0x45, 0xff, 0x2b, 0x55, 0xb0, 0x8b, 0x2d, 0xff, 0x55, 0x15, 0x4b, 0x84, 0xd0, 0xc3, 0xd3, 0x90, 0x9c, 0x94, 0x4b, 0x55, 0xd5, 0x62, 0xea, 0x22, 0xab, 0x62, 0x68, 0xdd, 0x53, 0xc6, 0xdc, 0xa5, 0xdd, 0x9a, 0x2d, 0x8e, 0x79, 0x7c, 0x2e, 0x9c, 0xe4, 0x66, 0x80, 0x8c, 0x1d}; +UINTN mPkcs7PublicKeyDataSize = sizeof(mPkcs7PublicKeyData); diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.c new file mode 100644 index 0000000..913de0a --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.c @@ -0,0 +1,55 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#define TOTAL_SIZE (512 * 1024) + +extern UINT8 mPkcs7PublicKeyData[]; +extern UINTN mPkcs7PublicKeyDataSize; + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + FixBuffer (TestBuffer); + AuthenticateFmpImage (TestBuffer, TestBufferSize, mPkcs7PublicKeyData, mPkcs7PublicKeyDataSize); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.inf new file mode 100644 index 0000000..5b86a0f --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.inf @@ -0,0 +1,44 @@ +## @file +# Component description file for TestTpm2CommandLib module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestFmpAuthenticationLibPkcs7 + FILE_GUID = 671711BA-ED88-46D3-99E6-A690E7C301F0 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestFmpAuthenticationLibPkcs7.c + SamplePkcs7.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + CryptoPkg/CryptoPkg.dec + SecurityPkg/SecurityPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + FmpAuthenticationLib + ToolChainHarnessLib + +[Guids] + gEfiCertPkcs7Guid + diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoLibStubRsa2048Sha256.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoLibStubRsa2048Sha256.inf new file mode 100644 index 0000000..5e2acc6 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoLibStubRsa2048Sha256.inf @@ -0,0 +1,43 @@ +## @file +# Component description file for TestTpm2CommandLib module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = CryptoLibStubRsa2048Sha256 + FILE_GUID = 2826B09D-AEEA-4BB4-876F-1A025BF43752 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = BaseCryptLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + CryptoStubRsa2048Sha256.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + CryptoPkg/CryptoPkg.dec + SecurityPkg/SecurityPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + ToolChainHarnessLib + +[Guids] + gEfiCertPkcs7Guid + diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoStubRsa2048Sha256.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoStubRsa2048Sha256.c new file mode 100644 index 0000000..7afcaaf --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoStubRsa2048Sha256.c @@ -0,0 +1,90 @@ +/** @file + + Copyright (c) 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +VOID * +EFIAPI +RsaNew ( + VOID + ) +{ + return NULL; +} + +VOID +EFIAPI +RsaFree ( + IN VOID *RsaContext + ) +{ +} + +BOOLEAN +EFIAPI +RsaSetKey ( + IN OUT VOID *RsaContext, + IN RSA_KEY_TAG KeyTag, + IN CONST UINT8 *BigNumber, + IN UINTN BnSize + ) +{ + return FALSE; +} + +BOOLEAN +EFIAPI +RsaPkcs1Verify ( + IN VOID *RsaContext, + IN CONST UINT8 *MessageHash, + IN UINTN HashSize, + IN CONST UINT8 *Signature, + IN UINTN SigSize + ) +{ + return FALSE; +} + +UINTN +EFIAPI +Sha256GetContextSize ( + VOID + ) +{ + return 0; +} + +BOOLEAN +EFIAPI +Sha256Init ( + OUT VOID *Sha256Context + ) +{ + return FALSE; +} + +BOOLEAN +EFIAPI +Sha256Update ( + IN OUT VOID *Sha256Context, + IN CONST VOID *Data, + IN UINTN DataSize + ) +{ + return FALSE; +} + +BOOLEAN +EFIAPI +Sha256Final ( + IN OUT VOID *Sha256Context, + OUT UINT8 *HashValue + ) +{ + return FALSE; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/SampleRsa2048Sha256.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/SampleRsa2048Sha256.c new file mode 100644 index 0000000..8a5fd9a --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/SampleRsa2048Sha256.c @@ -0,0 +1,11 @@ +/** @file + + Copyright (c) 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +UINT8 mRsa2048Sha256PublicKeyData[] = {0x91, 0x29, 0xc4, 0xbd, 0xea, 0x6d, 0xda, 0xb3, 0xaa, 0x6f, 0x50, 0x16, 0xfc, 0xdb, 0x4b, 0x7e, 0x3c, 0xd6, 0xdc, 0xa4, 0x7a, 0x0e, 0xdd, 0xe6, 0x15, 0x8c, 0x73, 0x96, 0xa2, 0xd4, 0xa6, 0x4d}; +UINTN mRsa2048Sha256PublicKeyDataSize = sizeof(mRsa2048Sha256PublicKeyData); diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.c new file mode 100644 index 0000000..696f5e8 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.c @@ -0,0 +1,55 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#define TOTAL_SIZE (512 * 1024) + +extern UINT8 mRsa2048Sha256PublicKeyData[]; +extern UINTN mRsa2048Sha256PublicKeyDataSize; + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ +} + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + FixBuffer (TestBuffer); + AuthenticateFmpImage (TestBuffer, TestBufferSize, mRsa2048Sha256PublicKeyData, mRsa2048Sha256PublicKeyDataSize); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.inf new file mode 100644 index 0000000..bea19be --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.inf @@ -0,0 +1,44 @@ +## @file +# Component description file for TestTpm2CommandLib module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestFmpAuthenticationLibRsa2048Sha256 + FILE_GUID = 22914CAE-62CD-450E-BCC7-9A69C0EF9C93 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestFmpAuthenticationLibRsa2048Sha256.c + SampleRsa2048Sha256.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + CryptoPkg/CryptoPkg.dec + SecurityPkg/SecurityPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + FmpAuthenticationLib + ToolChainHarnessLib + +[Guids] + gEfiCertTypeRsa2048Sha256Guid + gEfiHashAlgorithmSha256Guid diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.c new file mode 100644 index 0000000..abe815f --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.c @@ -0,0 +1,86 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#define TOTAL_SIZE (512 * 1024) + +#pragma pack(1) + +typedef struct { + TPM2_RESPONSE_HEADER Header; + UINT32 ParameterSize; + TPML_DIGEST_VALUES Digests; + TPMS_AUTH_RESPONSE AuthSessionPcr; +} TPM2_PCR_EVENT_RESPONSE; + +#pragma pack() + +VOID +FixBuffer ( + UINT8 *TestBuffer + ) +{ + TPM2_PCR_EVENT_RESPONSE *Res; + + Res = (VOID *)TestBuffer; + Res->Header.responseCode = SwapBytes32(TPM_RC_SUCCESS); + Res->Header.paramSize = SwapBytes32 (sizeof(TPM2_PCR_EVENT_RESPONSE)); +} + +VOID +TestTpm2PcrEve ( + VOID + ) +{ + TPMI_DH_PCR PcrHandle; + TPM2B_EVENT EventData; + TPML_DIGEST_VALUES Digests; + + PcrHandle = 0; + ZeroMem (&EventData, sizeof(EventData)); + EventData.size = 4; + ZeroMem (&Digests, sizeof(Digests)); + Tpm2PcrEvent (PcrHandle, &EventData, &Digests); +} +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ) +{ + return TOTAL_SIZE; +} + +VOID +EFIAPI +RunTestHarness( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ) +{ + FixBuffer (TestBuffer); + Tpm2ResponseInitialize (TestBuffer, TestBufferSize); + + TestTpm2PcrEve (); +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.inf new file mode 100644 index 0000000..5920228 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.inf @@ -0,0 +1,38 @@ +## @file +# Component description file for TestTpm2CommandLib module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TestTpm2CommandLib + FILE_GUID = 671711BA-ED88-46D3-99E6-A690E7C301F0 + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + TestTpm2CommandLib.c + +[Packages] + MdePkg/MdePkg.dec + SecurityPkg/SecurityPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + Tpm2CommandLib + Tpm2DeviceStubLib + ToolChainHarnessLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.c new file mode 100644 index 0000000..b0101c9 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.c @@ -0,0 +1,735 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +#include +#include +#include +#include + +typedef struct { + UINTN Signature; + EFI_BLOCK_IO_PROTOCOL BlockIo; + EFI_BLOCK_IO_MEDIA Media; + EFI_DISK_IO_PROTOCOL DiskIo; + UINT64 StartingAddr; + UINT64 Size; +} UDF_TEST_PRIVATE; + +UDF_TEST_PRIVATE *UdfTestPrivate = NULL; + +#define DATA_BUFFER_BLOCK_NUM (64) + +#define UDF_TEST_PRIVATE_SIGNATURE SIGNATURE_32 ('U', 'D', 'F', 'T') + +#define UDF_TEST_PRIVATE_FROM_BLOCK_IO(a) CR (a, UDF_TEST_PRIVATE, BlockIo, UDF_TEST_PRIVATE_SIGNATURE) +#define UDF_TEST_PRIVATE_FROM_DISK_IO(a) CR (a, UDF_TEST_PRIVATE, DiskIo, UDF_TEST_PRIVATE_SIGNATURE) + +/** + Reset the Block Device. + + @param This Indicates a pointer to the calling context. + @param ExtendedVerification Driver may perform diagnostics on reset. + + @retval EFI_SUCCESS The device was reset. + @retval EFI_DEVICE_ERROR The device is not functioning properly and could + not be reset. + +**/ +EFI_STATUS +EFIAPI +Reset ( + IN EFI_BLOCK_IO_PROTOCOL *This, + IN BOOLEAN ExtendedVerification + ) +{ + return EFI_SUCCESS; +} + +/** + Read BufferSize bytes from Lba into Buffer. + + @param This Indicates a pointer to the calling context. + @param MediaId Id of the media, changes every time the media is replaced. + @param Lba The starting Logical Block Address to read from + @param BufferSize Size of Buffer, must be a multiple of device block size. + @param Buffer A pointer to the destination buffer for the data. The caller is + responsible for either having implicit or explicit ownership of the buffer. + + @retval EFI_SUCCESS The data was read correctly from the device. + @retval EFI_DEVICE_ERROR The device reported an error while performing the read. + @retval EFI_NO_MEDIA There is no media in the device. + @retval EFI_MEDIA_CHANGED The MediaId does not matched the current device. + @retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device. + @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid, + or the buffer is not on proper alignment. + +**/ +EFI_STATUS +EFIAPI +ReadBlocks ( + IN EFI_BLOCK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + OUT VOID *Buffer + ) +{ + UDF_TEST_PRIVATE *PrivateData; + UINTN NumberOfBlocks; + + PrivateData = UDF_TEST_PRIVATE_FROM_BLOCK_IO (This); + + if (MediaId != PrivateData->Media.MediaId) { + return EFI_MEDIA_CHANGED; + } + + if (Buffer == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (BufferSize == 0) { + return EFI_SUCCESS; + } + + if ((BufferSize % PrivateData->Media.BlockSize) != 0) { + return EFI_BAD_BUFFER_SIZE; + } + + if (Lba > PrivateData->Media.LastBlock) { + return EFI_INVALID_PARAMETER; + } + + NumberOfBlocks = BufferSize / PrivateData->Media.BlockSize; + if ((Lba + NumberOfBlocks - 1) > PrivateData->Media.LastBlock) { + return EFI_INVALID_PARAMETER; + } + + CopyMem ( + Buffer, + (VOID *)(UINTN)(PrivateData->StartingAddr + MultU64x32 (Lba, PrivateData->Media.BlockSize)), + BufferSize + ); + + return EFI_SUCCESS; +} + +/** + Write BufferSize bytes from Lba into Buffer. + + @param This Indicates a pointer to the calling context. + @param MediaId The media ID that the write request is for. + @param Lba The starting logical block address to be written. The caller is + responsible for writing to only legitimate locations. + @param BufferSize Size of Buffer, must be a multiple of device block size. + @param Buffer A pointer to the source buffer for the data. + + @retval EFI_SUCCESS The data was written correctly to the device. + @retval EFI_WRITE_PROTECTED The device can not be written to. + @retval EFI_DEVICE_ERROR The device reported an error while performing the write. + @retval EFI_NO_MEDIA There is no media in the device. + @retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device. + @retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device. + @retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid, + or the buffer is not on proper alignment. + +**/ +EFI_STATUS +EFIAPI +WriteBlocks ( + IN EFI_BLOCK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + IN VOID *Buffer + ) +{ + UDF_TEST_PRIVATE *PrivateData; + UINTN NumberOfBlocks; + + PrivateData = UDF_TEST_PRIVATE_FROM_BLOCK_IO (This); + + if (MediaId != PrivateData->Media.MediaId) { + return EFI_MEDIA_CHANGED; + } + + if (TRUE == PrivateData->Media.ReadOnly) { + return EFI_WRITE_PROTECTED; + } + + if (Buffer == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (BufferSize == 0) { + return EFI_SUCCESS; + } + + if ((BufferSize % PrivateData->Media.BlockSize) != 0) { + return EFI_BAD_BUFFER_SIZE; + } + + if (Lba > PrivateData->Media.LastBlock) { + return EFI_INVALID_PARAMETER; + } + + NumberOfBlocks = BufferSize / PrivateData->Media.BlockSize; + if ((Lba + NumberOfBlocks - 1) > PrivateData->Media.LastBlock) { + return EFI_INVALID_PARAMETER; + } + + CopyMem ( + (VOID *)(UINTN)(PrivateData->StartingAddr + MultU64x32 (Lba, PrivateData->Media.BlockSize)), + Buffer, + BufferSize + ); + + return EFI_SUCCESS; +} + +/** + Flush the Block Device. + + @param This Indicates a pointer to the calling context. + + @retval EFI_SUCCESS All outstanding data was written to the device + @retval EFI_DEVICE_ERROR The device reported an error while writting back the data + @retval EFI_NO_MEDIA There is no media in the device. + +**/ +EFI_STATUS +EFIAPI +FlushBlocks ( + IN EFI_BLOCK_IO_PROTOCOL *This + ) +{ + return EFI_SUCCESS; +} + +/** + Read BufferSize bytes from Offset into Buffer. + + @param This Protocol instance pointer. + @param MediaId Id of the media, changes every time the media is replaced. + @param Offset The starting byte offset to read from + @param BufferSize Size of Buffer + @param Buffer Buffer containing read data + + @retval EFI_SUCCESS The data was read correctly from the device. + @retval EFI_DEVICE_ERROR The device reported an error while performing the read. + @retval EFI_NO_MEDIA There is no media in the device. + @retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device. + @retval EFI_INVALID_PARAMETER The read request contains device addresses that are not + valid for the device. + +**/ +EFI_STATUS +EFIAPI +ReadDisk ( + IN EFI_DISK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN UINT64 Offset, + IN UINTN BufferSize, + OUT VOID *Buffer + ) +{ + EFI_STATUS Status; + UDF_TEST_PRIVATE *Private; + EFI_BLOCK_IO_PROTOCOL *BlockIo; + EFI_BLOCK_IO_MEDIA *Media; + UINT32 BlockSize; + UINT64 Lba; + UINT64 OverRunLba; + UINT32 UnderRun; + UINT32 OverRun; + BOOLEAN TransactionComplete; + UINTN WorkingBufferSize; + UINT8 *WorkingBuffer; + UINTN Length; + UINT8 *Data; + UINT8 *PreData; + UINTN IsBufferAligned; + UINTN DataBufferSize; + BOOLEAN LastRead; + + Private = UDF_TEST_PRIVATE_FROM_DISK_IO (This); + + BlockIo = &Private->BlockIo; + Media = BlockIo->Media; + BlockSize = Media->BlockSize; + + if (Media->MediaId != MediaId) { + return EFI_MEDIA_CHANGED; + } + + WorkingBuffer = Buffer; + WorkingBufferSize = BufferSize; + + // + // Allocate a temporary buffer for operation + // + DataBufferSize = BlockSize * DATA_BUFFER_BLOCK_NUM; + + if (Media->IoAlign > 1) { + PreData = AllocatePool (DataBufferSize + Media->IoAlign); + Data = PreData - ((UINTN) PreData & (Media->IoAlign - 1)) + Media->IoAlign; + } else { + PreData = AllocatePool (DataBufferSize); + Data = PreData; + } + + if (PreData == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Lba = DivU64x32Remainder (Offset, BlockSize, &UnderRun); + + Length = BlockSize - UnderRun; + TransactionComplete = FALSE; + + Status = EFI_SUCCESS; + if (UnderRun != 0) { + // + // Offset starts in the middle of an Lba, so read the entire block. + // + Status = BlockIo->ReadBlocks ( + BlockIo, + MediaId, + Lba, + BlockSize, + Data + ); + + if (EFI_ERROR (Status)) { + goto Done; + } + + if (Length > BufferSize) { + Length = BufferSize; + TransactionComplete = TRUE; + } + + CopyMem (WorkingBuffer, Data + UnderRun, Length); + + WorkingBuffer += Length; + + WorkingBufferSize -= Length; + if (WorkingBufferSize == 0) { + goto Done; + } + + Lba += 1; + } + + OverRunLba = Lba + DivU64x32Remainder (WorkingBufferSize, BlockSize, &OverRun); + + if (!TransactionComplete && WorkingBufferSize >= BlockSize) { + // + // If the DiskIo maps directly to a BlockIo device do the read. + // + if (OverRun != 0) { + WorkingBufferSize -= OverRun; + } + // + // Check buffer alignment + // + IsBufferAligned = (UINTN) WorkingBuffer & (UINTN) (Media->IoAlign - 1); + + if (Media->IoAlign <= 1 || IsBufferAligned == 0) { + // + // Alignment is satisfied, so read them together + // + Status = BlockIo->ReadBlocks ( + BlockIo, + MediaId, + Lba, + WorkingBufferSize, + WorkingBuffer + ); + + if (EFI_ERROR (Status)) { + goto Done; + } + + WorkingBuffer += WorkingBufferSize; + + } else { + // + // Use the allocated buffer instead of the original buffer + // to avoid alignment issue. + // Here, the allocated buffer (8-byte align) can satisfy the alignment + // + LastRead = FALSE; + do { + if (WorkingBufferSize <= DataBufferSize) { + // + // It is the last calling to readblocks in this loop + // + DataBufferSize = WorkingBufferSize; + LastRead = TRUE; + } + + Status = BlockIo->ReadBlocks ( + BlockIo, + MediaId, + Lba, + DataBufferSize, + Data + ); + if (EFI_ERROR (Status)) { + goto Done; + } + + CopyMem (WorkingBuffer, Data, DataBufferSize); + WorkingBufferSize -= DataBufferSize; + WorkingBuffer += DataBufferSize; + Lba += DATA_BUFFER_BLOCK_NUM; + } while (!LastRead); + } + } + + if (!TransactionComplete && OverRun != 0) { + // + // Last read is not a complete block. + // + Status = BlockIo->ReadBlocks ( + BlockIo, + MediaId, + OverRunLba, + BlockSize, + Data + ); + + if (EFI_ERROR (Status)) { + goto Done; + } + + CopyMem (WorkingBuffer, Data, OverRun); + } + +Done: + if (PreData != NULL) { + FreePool (PreData); + } + + return Status; +} + +/** + Writes a specified number of bytes to a device. + + @param This Indicates a pointer to the calling context. + @param MediaId ID of the medium to be written. + @param Offset The starting byte offset on the logical block I/O device to write. + @param BufferSize The size in bytes of Buffer. The number of bytes to write to the device. + @param Buffer A pointer to the buffer containing the data to be written. + + @retval EFI_SUCCESS The data was written correctly to the device. + @retval EFI_WRITE_PROTECTED The device can not be written to. + @retval EFI_DEVICE_ERROR The device reported an error while performing the write. + @retval EFI_NO_MEDIA There is no media in the device. + @retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device. + @retval EFI_INVALID_PARAMETER The write request contains device addresses that are not + valid for the device. + +**/ +EFI_STATUS +EFIAPI +WriteDisk ( + IN EFI_DISK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN UINT64 Offset, + IN UINTN BufferSize, + IN VOID *Buffer + ) +{ + EFI_STATUS Status; + UDF_TEST_PRIVATE *Private; + EFI_BLOCK_IO_PROTOCOL *BlockIo; + EFI_BLOCK_IO_MEDIA *Media; + UINT32 BlockSize; + UINT64 Lba; + UINT64 OverRunLba; + UINT32 UnderRun; + UINT32 OverRun; + BOOLEAN TransactionComplete; + UINTN WorkingBufferSize; + UINT8 *WorkingBuffer; + UINTN Length; + UINT8 *Data; + UINT8 *PreData; + UINTN IsBufferAligned; + UINTN DataBufferSize; + BOOLEAN LastWrite; + + Private = UDF_TEST_PRIVATE_FROM_DISK_IO (This); + + BlockIo = &Private->BlockIo; + Media = BlockIo->Media; + BlockSize = Media->BlockSize; + + if (Media->ReadOnly) { + return EFI_WRITE_PROTECTED; + } + + if (Media->MediaId != MediaId) { + return EFI_MEDIA_CHANGED; + } + + DataBufferSize = BlockSize * DATA_BUFFER_BLOCK_NUM; + + if (Media->IoAlign > 1) { + PreData = AllocatePool (DataBufferSize + Media->IoAlign); + Data = PreData - ((UINTN) PreData & (Media->IoAlign - 1)) + Media->IoAlign; + } else { + PreData = AllocatePool (DataBufferSize); + Data = PreData; + } + + if (PreData == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + WorkingBuffer = Buffer; + WorkingBufferSize = BufferSize; + + Lba = DivU64x32Remainder (Offset, BlockSize, &UnderRun); + + Length = BlockSize - UnderRun; + TransactionComplete = FALSE; + + Status = EFI_SUCCESS; + if (UnderRun != 0) { + // + // Offset starts in the middle of an Lba, so do read modify write. + // + Status = BlockIo->ReadBlocks ( + BlockIo, + MediaId, + Lba, + BlockSize, + Data + ); + + if (EFI_ERROR (Status)) { + goto Done; + } + + if (Length > BufferSize) { + Length = BufferSize; + TransactionComplete = TRUE; + } + + CopyMem (Data + UnderRun, WorkingBuffer, Length); + + Status = BlockIo->WriteBlocks ( + BlockIo, + MediaId, + Lba, + BlockSize, + Data + ); + if (EFI_ERROR (Status)) { + goto Done; + } + + WorkingBuffer += Length; + WorkingBufferSize -= Length; + if (WorkingBufferSize == 0) { + goto Done; + } + + Lba += 1; + } + + OverRunLba = Lba + DivU64x32Remainder (WorkingBufferSize, BlockSize, &OverRun); + + if (!TransactionComplete && WorkingBufferSize >= BlockSize) { + // + // If the DiskIo maps directly to a BlockIo device do the write. + // + if (OverRun != 0) { + WorkingBufferSize -= OverRun; + } + // + // Check buffer alignment + // + IsBufferAligned = (UINTN) WorkingBuffer & (UINTN) (Media->IoAlign - 1); + + if (Media->IoAlign <= 1 || IsBufferAligned == 0) { + // + // Alignment is satisfied, so write them together + // + Status = BlockIo->WriteBlocks ( + BlockIo, + MediaId, + Lba, + WorkingBufferSize, + WorkingBuffer + ); + + if (EFI_ERROR (Status)) { + goto Done; + } + + WorkingBuffer += WorkingBufferSize; + + } else { + // + // The buffer parameter is not aligned with the request + // So use the allocated instead. + // It can fit almost all the cases. + // + LastWrite = FALSE; + do { + if (WorkingBufferSize <= DataBufferSize) { + // + // It is the last calling to writeblocks in this loop + // + DataBufferSize = WorkingBufferSize; + LastWrite = TRUE; + } + + CopyMem (Data, WorkingBuffer, DataBufferSize); + Status = BlockIo->WriteBlocks ( + BlockIo, + MediaId, + Lba, + DataBufferSize, + Data + ); + if (EFI_ERROR (Status)) { + goto Done; + } + + WorkingBufferSize -= DataBufferSize; + WorkingBuffer += DataBufferSize; + Lba += DATA_BUFFER_BLOCK_NUM; + } while (!LastWrite); + } + } + + if (!TransactionComplete && OverRun != 0) { + // + // Last bit is not a complete block, so do a read modify write. + // + Status = BlockIo->ReadBlocks ( + BlockIo, + MediaId, + OverRunLba, + BlockSize, + Data + ); + + if (EFI_ERROR (Status)) { + goto Done; + } + + CopyMem (Data, WorkingBuffer, OverRun); + + Status = BlockIo->WriteBlocks ( + BlockIo, + MediaId, + OverRunLba, + BlockSize, + Data + ); + if (EFI_ERROR (Status)) { + goto Done; + } + } + +Done: + if (PreData != NULL) { + FreePool (PreData); + } + + return Status; +} + +UDF_TEST_PRIVATE mUdfTestPrivate = { + UDF_TEST_PRIVATE_SIGNATURE, + { + EFI_BLOCK_IO_PROTOCOL_REVISION, + &mUdfTestPrivate.Media, + Reset, + ReadBlocks, + WriteBlocks, + FlushBlocks, + }, + { + 0, // MediaId; + FALSE, // RemovableMedia; + TRUE, // MediaPresent; + FALSE, // LogicalPartition; + FALSE, // ReadOnly; + FALSE, // WriteCaching; + 0, // BlockSize; + 1, // IoAlign; + 0, // LastBlock; + 0, // LowestAlignedLba; + 0, // LogicalBlocksPerPhysicalBlock; + 0, // OptimalTransferLengthGranularity; + }, + { + EFI_DISK_IO_PROTOCOL_REVISION, + ReadDisk, + WriteDisk, + }, + 0, // StartingAddr + 0, // Size +}; + +EFI_STATUS +EFIAPI +DiskStubInitialize ( + IN VOID *Buffer, + IN UINTN BufferSize, + IN UINT32 BlockSize, + IN UINT32 IoAlign, + OUT EFI_BLOCK_IO_PROTOCOL **BlockIo, + OUT EFI_DISK_IO_PROTOCOL **DiskIo + ) +{ + UdfTestPrivate = AllocatePool (sizeof(UDF_TEST_PRIVATE)); + CopyMem (UdfTestPrivate, &mUdfTestPrivate, sizeof(UDF_TEST_PRIVATE)); + + UdfTestPrivate->BlockIo.Media = &UdfTestPrivate->Media; + + UdfTestPrivate->StartingAddr = (UINTN)Buffer; + UdfTestPrivate->Size = BufferSize; + + UdfTestPrivate->Media.IoAlign = IoAlign; + UdfTestPrivate->Media.BlockSize = BlockSize; + UdfTestPrivate->Media.LastBlock = (BufferSize + BlockSize - 1) / BlockSize - 1; + + if (BlockIo != NULL) { + *BlockIo = &UdfTestPrivate->BlockIo; + } + if (DiskIo != NULL) { + *DiskIo = &UdfTestPrivate->DiskIo; + } + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +DiskStubDestory ( + VOID + ) +{ + if (UdfTestPrivate != NULL) { + FreePool(UdfTestPrivate); + UdfTestPrivate = NULL; + } + + return EFI_SUCCESS; +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.inf new file mode 100644 index 0000000..9838e73 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.inf @@ -0,0 +1,35 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = DiskStubLib + FILE_GUID = 746FA64E-1095-44A6-BC15-5729E0335A49 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = DiskStubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + DiskStubLib.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/DiskStubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/DiskStubLib.h new file mode 100644 index 0000000..03a7852 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/DiskStubLib.h @@ -0,0 +1,32 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _DISK_STUB_LIB_H_ +#define _DISK_STUB_LIB_H_ + +#include +#include +#include + +EFI_STATUS +EFIAPI +DiskStubInitialize ( + IN VOID *Buffer, + IN UINTN BufferSize, + IN UINT32 BlockSize, + IN UINT32 IoAlign, + OUT EFI_BLOCK_IO_PROTOCOL **BlockIo, + OUT EFI_DISK_IO_PROTOCOL **DiskIo + ); + +EFI_STATUS +EFIAPI +DiskStubDestory ( + VOID + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/SmmMemLibStubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/SmmMemLibStubLib.h new file mode 100644 index 0000000..8f6e84c --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/SmmMemLibStubLib.h @@ -0,0 +1,25 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _SMM_MEM_LIB_LIB_LIB_H_ +#define _SMM_MEM_LIB_LIB_LIB_H_ + +#include + +typedef struct { + EFI_PHYSICAL_ADDRESS Address; + UINT64 Size; +} SMM_COMMUNICATION_BUFFER_DESCRIPTOR; + +VOID +EFIAPI +SmmMemLibInitialize ( + IN UINTN SmmCommBufferDescCount, + IN SMM_COMMUNICATION_BUFFER_DESCRIPTOR *SmmCommBufferDesc + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Tcg2StubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Tcg2StubLib.h new file mode 100644 index 0000000..95f18d2 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Tcg2StubLib.h @@ -0,0 +1,12 @@ +#ifndef _TCG2_STUB_LIB_H_ +#define _TCG2_STUB_LIB_H_ + +#include + +EFI_STATUS +EFIAPI +Tcg2StubInitlize( + VOID +); + +#endif \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Tpm2DeviceStubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Tpm2DeviceStubLib.h new file mode 100644 index 0000000..febc0e9 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Tpm2DeviceStubLib.h @@ -0,0 +1,20 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _TPM2_DEVICE_STUB_LIB_H_ +#define _TPM2_DEVICE_STUB_LIB_H_ + +#include + +EFI_STATUS +EFIAPI +Tpm2ResponseInitialize ( + IN VOID *Buffer, + IN UINTN BufferSize + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Usb2HcPpiStubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Usb2HcPpiStubLib.h new file mode 100644 index 0000000..073bf8a --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Usb2HcPpiStubLib.h @@ -0,0 +1,26 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _USB2_HC_PPI_STUB_LIB_H_ +#define _USB2_HC_PPI_STUB_LIB_H_ + +#include +#include + +EFI_STATUS +EFIAPI +Usb2HcPpiStubInitialize ( + IN VOID *DeviceDescBuffer, + IN UINTN DeviceDescBufferSize, + IN VOID *ConfigDescBuffer, + IN UINTN ConfigDescBufferSize, + IN VOID *StringDescBuffer, + IN UINTN StringDescBufferSize, + OUT PEI_USB2_HOST_CONTROLLER_PPI **Usb2HcPpi + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Usb2HcStubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Usb2HcStubLib.h new file mode 100644 index 0000000..1a61b20 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/Usb2HcStubLib.h @@ -0,0 +1,26 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _USB2_HC_STUB_LIB_H_ +#define _USB2_HC_STUB_LIB_H_ + +#include +#include + +EFI_STATUS +EFIAPI +Usb2HcStubInitialize ( + IN VOID *DeviceDescBuffer, + IN UINTN DeviceDescBufferSize, + IN VOID *ConfigDescBuffer, + IN UINTN ConfigDescBufferSize, + IN VOID *StringDescBuffer, + IN UINTN StringDescBufferSize, + OUT EFI_USB2_HC_PROTOCOL **Usb2Hc + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/UsbIoPpiStubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/UsbIoPpiStubLib.h new file mode 100644 index 0000000..0549b61 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/UsbIoPpiStubLib.h @@ -0,0 +1,26 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _USB_IO_PPI_STUB_LIB_H_ +#define _USB_IO_PPI_STUB_LIB_H_ + +#include +#include + +EFI_STATUS +EFIAPI +UsbIoPpiStubInitialize ( + IN VOID *DeviceDescBuffer, + IN UINTN DeviceDescBufferSize, + IN VOID *ConfigDescBuffer, + IN UINTN ConfigDescBufferSize, + IN VOID *StringDescBuffer, + IN UINTN StringDescBufferSize, + OUT PEI_USB_IO_PPI **UsbIoPpi + ); + +#endif diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/VirtioBlkStubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/VirtioBlkStubLib.h new file mode 100644 index 0000000..8eaeb4e --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/VirtioBlkStubLib.h @@ -0,0 +1,41 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _VIRTIOBLK_STUB_LIB_H_ +#define _VIRTIOBLK_STUB_LIB_H_ + +#include + +#include +#include + +#define VBLK_SIG SIGNATURE_32 ('V', 'B', 'L', 'K') + +typedef struct { + // + // Parts of this structure are initialized / torn down in various functions + // at various call depths. The table to the right should make it easier to + // track them. + // + // field init function init dpth + // --------------------- ------------------ --------- + UINT32 Signature; // DriverBindingStart 0 + VIRTIO_DEVICE_PROTOCOL *VirtIo; // DriverBindingStart 0 + EFI_EVENT ExitBoot; // DriverBindingStart 0 + VRING Ring; // VirtioRingInit 2 + EFI_BLOCK_IO_PROTOCOL BlockIo; // VirtioBlkInit 1 + EFI_BLOCK_IO_MEDIA BlockIoMedia; // VirtioBlkInit 1 + VOID *RingMap; // VirtioRingMap 2 +} VBLK_DEV; + +EFI_STATUS +EFIAPI +VirtioBlkInit ( + IN OUT VBLK_DEV *Dev +); + +#endif \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/VirtioPciDeviceStubLib.h b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/VirtioPciDeviceStubLib.h new file mode 100644 index 0000000..5529771 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Include/Library/VirtioPciDeviceStubLib.h @@ -0,0 +1,152 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _VIRTIOPCI_DEV_STUB_LIB_H_ +#define _VIRTIOPCI_DEV_STUB_LIB_H_ + +#include +#include +#include + +#include +#include + + +#define VIRTIO_1_0_SIGNATURE SIGNATURE_32 ('V', 'I', 'O', '1') + +#define VIRTIO_PCI_DEVICE_SIGNATURE SIGNATURE_32 ('V', 'P', 'C', 'I') + +// +// Type of the PCI BAR that contains a VirtIo 1.0 config structure. +// +typedef enum { + Virtio10BarTypeMem, + Virtio10BarTypeIo +} VIRTIO_1_0_BAR_TYPE; + +// +// The type below defines the access to a VirtIo 1.0 config structure. +// +typedef struct { + BOOLEAN Exists; // The device exposes this structure + VIRTIO_1_0_BAR_TYPE BarType; + UINT8 Bar; + UINT32 Offset; // Offset into BAR where structure starts + UINT32 Length; // Length of structure in BAR. + UINT64 ConfigBase; +} VIRTIO_1_0_CONFIG; + +typedef struct { + UINT32 Signature; + VIRTIO_DEVICE_PROTOCOL VirtIo; + EFI_PCI_IO_PROTOCOL *PciIo; + UINT64 OriginalPciAttributes; + VIRTIO_1_0_CONFIG CommonConfig; // Common settings + VIRTIO_1_0_CONFIG NotifyConfig; // Notifications + UINT32 NotifyOffsetMultiplier; + VIRTIO_1_0_CONFIG SpecificConfig; // Device specific settings +} VIRTIO_1_0_DEV; + +#define VIRTIO_1_0_FROM_VIRTIO_DEVICE(Device) \ + CR (Device, VIRTIO_1_0_DEV, VirtIo, VIRTIO_1_0_SIGNATURE) + +typedef struct { + VIRTIO_PCI_CAP Cap; + UINT32 Notify_Off_Multiplier; +} VIRTIO_PCI_NOTIFY_CAP; + +typedef struct +{ + PCI_TYPE00 PciBasicCfg; + UINT8 Element[0x100 - sizeof(PCI_TYPE00)]; + } PCI_CFG_SPACE; + +// Virtio 1.0 +typedef struct { + UINT32 Device_Feature_Select; + UINT32 Device_Feature; + UINT32 Driver_Feature_Select; + UINT32 Driver_Feature; + UINT16 Msix_Config; + UINT16 Num_Queues; + UINT8 Device_Status; + UINT8 Config_Generation; + UINT16 Queue_Select; + UINT16 Queue_Size; + UINT16 Queue_Msix_Vector; + UINT16 Queue_Enable; + UINT16 Queue_Notify_Off; + UINT64 Queue_Desc; + UINT64 Queue_Avail; + UINT64 Queue_Used; +} VIRTIO_PCI_CAP_COMMON_CONFIG; + +// Virtio 0.9.5 +typedef struct { + UINT32 Device_Features; + UINT32 Guest_Features; + UINT32 Queue_Address; + UINT16 Queue_Size; + UINT16 Queue_Select; + UINT16 Queue_Notify; + UINT8 Device_Status; + UINT8 ISR_Status; +} VIRTIO_HDR; + +EFI_STATUS +GetBarType ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN UINT8 BarIndex, + OUT VIRTIO_1_0_BAR_TYPE *BarType + ); + +EFI_STATUS +EFIAPI +InitVirtioPciDevice ( + IN OUT VIRTIO_1_0_DEV *Device, + IN UINT8 *TestBuffer, + IN UINTN BufferSize, + IN EFI_PCI_IO_PROTOCOL *PciIo +); + + +EFI_STATUS +EFIAPI +ParseBufferAndInitVirtioPciDev10 ( + IN UINT8 *TestBuffer, + IN UINTN BufferSize, + IN VOID *ConfigRegion, + IN OUT VIRTIO_1_0_DEV *Device +); + +// Virtio 0.9.5 +typedef struct { + UINT32 Signature; + VIRTIO_DEVICE_PROTOCOL VirtioDevice; + EFI_PCI_IO_PROTOCOL *PciIo; + UINT64 OriginalPciAttributes; + UINT32 DeviceSpecificConfigurationOffset; +} VIRTIO_PCI_DEVICE; + +EFI_STATUS +EFIAPI +InitVirtioPciDev ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN VOID *ConfigRegion, + IN OUT VIRTIO_PCI_DEVICE *Device +); + +EFI_STATUS +EFIAPI +ParseBufferAndInitVirtioPciDev ( + IN UINT8 *TestBuffer, + IN UINTN BufferSize, + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN VOID *ConfigRegion, + IN OUT VIRTIO_PCI_DEVICE *Device +); +#endif \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.c new file mode 100644 index 0000000..f9e92a7 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.c @@ -0,0 +1,318 @@ +/** @file + +Copyright (c) 2021, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/** + Add a new entry to the Event Log. + + @param[in] DigestList A list of digest. + @param[in,out] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR data structure. + @param[in] NewEventData Pointer to the new event data. + + @retval EFI_SUCCESS The new event log entry was added. + @retval EFI_OUT_OF_RESOURCES No enough memory to log the new event. +**/ +EFI_STATUS +TcgDxeLogHashEvent ( + IN TPML_DIGEST_VALUES *DigestList, + IN OUT TCG_PCR_EVENT_HDR *NewEventHdr, + IN UINT8 *NewEventData + ) +{ + + return EFI_SUCCESS; +} + +/** + Do a hash operation on a data buffer, extend a specific TPM PCR with the hash result, + and add an entry to the Event Log. + + @param[in] Flags Bitmap providing additional information. + @param[in] HashData Physical address of the start of the data buffer + to be hashed, extended, and logged. + @param[in] HashDataLen The length, in bytes, of the buffer referenced by HashData + @param[in, out] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR data structure. + @param[in] NewEventData Pointer to the new event data. + + @retval EFI_SUCCESS Operation completed successfully. + @retval EFI_OUT_OF_RESOURCES No enough memory to log the new event. + @retval EFI_DEVICE_ERROR The command was unsuccessful. + +**/ +EFI_STATUS +TcgDxeHashLogExtendEvent ( + IN UINT64 Flags, + IN UINT8 *HashData, + IN UINT64 HashDataLen, + IN OUT TCG_PCR_EVENT_HDR *NewEventHdr, + IN UINT8 *NewEventData + ) +{ + + + return EFI_SUCCESS; +} + +/** + The EFI_TCG2_PROTOCOL HashLogExtendEvent function call provides callers with + an opportunity to extend and optionally log events without requiring + knowledge of actual TPM commands. + The extend operation will occur even if this function cannot create an event + log entry (e.g. due to the event log being full). + + @param[in] This Indicates the calling context + @param[in] Flags Bitmap providing additional information. + @param[in] DataToHash Physical address of the start of the data buffer to be hashed. + @param[in] DataToHashLen The length in bytes of the buffer referenced by DataToHash. + @param[in] Event Pointer to data buffer containing information about the event. + + @retval EFI_SUCCESS Operation completed successfully. + @retval EFI_DEVICE_ERROR The command was unsuccessful. + @retval EFI_VOLUME_FULL The extend operation occurred, but the event could not be written to one or more event logs. + @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. + @retval EFI_UNSUPPORTED The PE/COFF image type is not supported. +**/ +EFI_STATUS +EFIAPI +Tcg2HashLogExtendEvent ( + IN EFI_TCG2_PROTOCOL *This, + IN UINT64 Flags, + IN EFI_PHYSICAL_ADDRESS DataToHash, + IN UINT64 DataToHashLen, + IN EFI_TCG2_EVENT *Event + ) +{ + + return EFI_SUCCESS; +} + +/** + This service enables the sending of commands to the TPM. + TODO For TDVF the commands should be submitted to RTMR + + @param[in] This Indicates the calling context + @param[in] InputParameterBlockSize Size of the TPM input parameter block. + @param[in] InputParameterBlock Pointer to the TPM input parameter block. + @param[in] OutputParameterBlockSize Size of the TPM output parameter block. + @param[in] OutputParameterBlock Pointer to the TPM output parameter block. + + @retval EFI_SUCCESS The command byte stream was successfully sent to the device and a response was successfully received. + @retval EFI_DEVICE_ERROR The command was not successfully sent to the device or a response was not successfully received from the device. + @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. + @retval EFI_BUFFER_TOO_SMALL The output parameter block is too small. +**/ +EFI_STATUS +EFIAPI +Tcg2SubmitCommand ( + IN EFI_TCG2_PROTOCOL *This, + IN UINT32 InputParameterBlockSize, + IN UINT8 *InputParameterBlock, + IN UINT32 OutputParameterBlockSize, + IN UINT8 *OutputParameterBlock + ) +{ + return EFI_SUCCESS; +} + +/** + This service returns the currently active PCR banks. + + @param[in] This Indicates the calling context + @param[out] ActivePcrBanks Pointer to the variable receiving the bitmap of currently active PCR banks. + + @retval EFI_SUCCESS The bitmap of active PCR banks was stored in the ActivePcrBanks parameter. + @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. +**/ +EFI_STATUS +EFIAPI +Tcg2GetActivePCRBanks ( + IN EFI_TCG2_PROTOCOL *This, + OUT UINT32 *ActivePcrBanks + ) +{ + return EFI_SUCCESS; +} + +/** + This service sets the currently active PCR banks. + TODO Can PCR banks be set externally? + + @param[in] This Indicates the calling context + @param[in] ActivePcrBanks Bitmap of the requested active PCR banks. At least one bit SHALL be set. + + @retval EFI_SUCCESS The bitmap in ActivePcrBank parameter is already active. + @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. +**/ +EFI_STATUS +EFIAPI +Tcg2SetActivePCRBanks ( + IN EFI_TCG2_PROTOCOL *This, + IN UINT32 ActivePcrBanks + ) +{ + + return EFI_SUCCESS; + +} + +/** + This service retrieves the result of a previous invocation of SetActivePcrBanks. + + @param[in] This Indicates the calling context + @param[out] OperationPresent Non-zero value to indicate a SetActivePcrBank operation was invoked during the last boot. + @param[out] Response The response from the SetActivePcrBank request. + + @retval EFI_SUCCESS The result value could be returned. + @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. +**/ +EFI_STATUS +EFIAPI +Tcg2GetResultOfSetActivePcrBanks ( + IN EFI_TCG2_PROTOCOL *This, + OUT UINT32 *OperationPresent, + OUT UINT32 *Response + ) +{ + + return EFI_SUCCESS; +} +EFI_STATUS +EFIAPI +Tcg2GetCapability ( + IN EFI_TCG2_PROTOCOL *This, + IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY *ProtocolCapability + ) +{ + return EFI_SUCCESS; +} + +/** + The EFI_TCG2_PROTOCOL Get Event Log function call allows a caller to + retrieve the address of a given event log and its last entry. + + @param[in] This Indicates the calling context + @param[in] EventLogFormat The type of the event log for which the information is requested. + @param[out] EventLogLocation A pointer to the memory address of the event log. + @param[out] EventLogLastEntry If the Event Log contains more than one entry, this is a pointer to the + address of the start of the last entry in the event log in memory. + @param[out] EventLogTruncated If the Event Log is missing at least one entry because an event would + have exceeded the area allocated for events, this value is set to TRUE. + Otherwise, the value will be FALSE and the Event Log will be complete. + + @retval EFI_SUCCESS Operation completed successfully. + @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect + (e.g. asking for an event log whose format is not supported). +**/ +EFI_STATUS +EFIAPI +Tcg2GetEventLog ( + IN EFI_TCG2_PROTOCOL *This, + IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat, + OUT EFI_PHYSICAL_ADDRESS *EventLogLocation, + OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry, + OUT BOOLEAN *EventLogTruncated + ) +{ + return EFI_SUCCESS; +} +EFI_TCG2_PROTOCOL mTcg2Protocol = { + Tcg2GetCapability, + Tcg2GetEventLog, + Tcg2HashLogExtendEvent, + Tcg2SubmitCommand, + Tcg2GetActivePCRBanks, + Tcg2SetActivePCRBanks, + Tcg2GetResultOfSetActivePcrBanks, +}; + +EFI_STATUS +EFIAPI +CcGetCapability ( + IN EFI_CC_MEASUREMENT_PROTOCOL *This, + IN OUT EFI_CC_BOOT_SERVICE_CAPABILITY *ProtocolCapability + ) +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +CcGetEventlog ( + IN EFI_CC_MEASUREMENT_PROTOCOL *This, + IN EFI_CC_EVENT_LOG_FORMAT EventLogFormat, + OUT EFI_PHYSICAL_ADDRESS *EventLogLocation, + OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry, + OUT BOOLEAN *EventLogTruncated + ) +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +CcHashLogExtendEvent ( + IN EFI_CC_MEASUREMENT_PROTOCOL *This, + IN UINT64 Flags, + IN EFI_PHYSICAL_ADDRESS DataToHash, + IN UINT64 DataToHashLen, + IN EFI_CC_EVENT *EfiCcEvent + ) +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +CcMapPcrToMrIndex ( + IN EFI_CC_MEASUREMENT_PROTOCOL *This, + IN TCG_PCRINDEX PcrIndex, + OUT EFI_CC_MR_INDEX *MrIndex + ) +{ + MrIndex = 0; + return EFI_SUCCESS; +} + +EFI_CC_MEASUREMENT_PROTOCOL mCcProtocol = { + CcGetCapability, + CcGetEventlog, + CcHashLogExtendEvent, + CcMapPcrToMrIndex, +}; + +EFI_STATUS +EFIAPI +Tcg2StubInitlize( + VOID +){ + EFI_STATUS Status; + EFI_HANDLE Handle; + + Handle = NULL; + Status = gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEfiTcg2ProtocolGuid, + &mTcg2Protocol, + &gEfiCcMeasurementProtocolGuid, + &mCcProtocol, + NULL + ); + return Status; + +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.inf new file mode 100644 index 0000000..60f92f8 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.inf @@ -0,0 +1,35 @@ +## @file +# Component description file for Tcg2StubLib. +# +# Copyright (c) 2021, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = Tcg2StubLib + FILE_GUID = 520FA64E-1318-44A6-BC15-5729E0335A49 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = Tcg2StubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + Tcg2StubLib.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.c new file mode 100644 index 0000000..c6717bd --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.c @@ -0,0 +1,72 @@ +/** @file + This library is TPM2 DTPM device lib. + Choosing this library means platform uses and only uses DTPM device as TPM2 engine. + +Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +VOID *mTpm2TestBuffer; +UINTN mTpm2TestBufferSize; + +/** + This service enables the sending of commands to the TPM2. + + @param[in] InputParameterBlockSize Size of the TPM2 input parameter block. + @param[in] InputParameterBlock Pointer to the TPM2 input parameter block. + @param[in,out] OutputParameterBlockSize Size of the TPM2 output parameter block. + @param[in] OutputParameterBlock Pointer to the TPM2 output parameter block. + + @retval EFI_SUCCESS The command byte stream was successfully sent to the device and a response was successfully received. + @retval EFI_DEVICE_ERROR The command was not successfully sent to the device or a response was not successfully received from the device. + @retval EFI_BUFFER_TOO_SMALL The output parameter block is too small. +**/ +EFI_STATUS +EFIAPI +Tpm2SubmitCommand ( + IN UINT32 InputParameterBlockSize, + IN UINT8 *InputParameterBlock, + IN OUT UINT32 *OutputParameterBlockSize, + IN UINT8 *OutputParameterBlock + ) +{ + if (*OutputParameterBlockSize > mTpm2TestBufferSize) { + *OutputParameterBlockSize = (UINT32)mTpm2TestBufferSize; + } + CopyMem (OutputParameterBlock, mTpm2TestBuffer, *OutputParameterBlockSize); + return EFI_SUCCESS; +} + +/** + This service requests use TPM2. + + @retval EFI_SUCCESS Get the control of TPM2 chip. + @retval EFI_NOT_FOUND TPM2 not found. + @retval EFI_DEVICE_ERROR Unexpected device behavior. +**/ +EFI_STATUS +EFIAPI +Tpm2RequestUseTpm ( + VOID + ) +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +Tpm2ResponseInitialize ( + IN VOID *Buffer, + IN UINTN BufferSize + ) +{ + mTpm2TestBuffer = Buffer; + mTpm2TestBufferSize = BufferSize; + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf new file mode 100644 index 0000000..383ce77 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf @@ -0,0 +1,34 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = Tpm2DeviceLibStub + FILE_GUID = E54A3327-A345-4068-8842-70AC0D519855 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = Tpm2DeviceLib + LIBRARY_CLASS = Tpm2DeviceStubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + Tpm2DeviceLibStub.c + +[Packages] + MdePkg/MdePkg.dec + SecurityPkg/SecurityPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + DebugLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.c new file mode 100644 index 0000000..229fb27 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.c @@ -0,0 +1,369 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include +#include + +VOID *mDeviceDescBuffer; +UINTN mDeviceDescBufferSize; +VOID *mConfigDescBuffer; +UINTN mConfigDescBufferSize; +VOID *mStringDescBuffer; +UINTN mStringDescBufferSize; + +// +// USB Keyboard example +// +USB_DEVICE_DESCRIPTOR mDeviceDesc = { + 0x12, // Length; + 0x01, // DescriptorType; - USB_DESC_TYPE_DEVICE + 0x0110, // BcdUSB; + 0x00, // DeviceClass; + 0x00, // DeviceSubClass; + 0x00, // DeviceProtocol; + 0x08, // MaxPacketSize0; + 0x03F0, // IdVendor; + 0x0325, // IdProduct; + 0x0103, // BcdDevice; + 0x01, // StrManufacturer; + 0x02, // StrProduct; + 0x00, // StrSerialNumber; + 0x01, // NumConfigurations; +}; + +typedef struct { + USB_CONFIG_DESCRIPTOR ConfigDesc; + USB_INTERFACE_DESCRIPTOR InterfaceDesc; + EFI_USB_HID_DESCRIPTOR HidDesc; + USB_ENDPOINT_DESCRIPTOR EndpointDesc; +} FULL_USB_CONFIG_DESCRIPTOR; + +FULL_USB_CONFIG_DESCRIPTOR mConfigDesc = { + { + 0x09, // Length; + 0x02, // DescriptorType; - USB_DESC_TYPE_CONFIG + 0x0022, // TotalLength; + 0x01, // NumInterfaces; + 0x01, // ConfigurationValue; + 0x00, // Configuration; + 0xA0, // Attributes; + 0x32, // MaxPower; + }, + { + 0x09, // Length; + 0x04, // DescriptorType; - USB_DESC_TYPE_INTERFACE + 0x00, // InterfaceNumber; + 0x00, // AlternateSetting; + 0x01, // NumEndpoints; + 0x03, // InterfaceClass; + 0x01, // InterfaceSubClass; + 0x01, // InterfaceProtocol; + 0x00, // Interface; + }, + { + 0x09, // Length; + 0x21, // DescriptorType; - USB_DESC_TYPE_HID + 0x0110, // BcdHID; + 0x00, // CountryCode; + 0x01, // NumDescriptors; + {{0x22, 0x0041}}, // HidClassDesc[0]; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x81, // EndpointAddress; + 0x03, // Attributes; + 0x0008, // MaxPacketSize; + 0x0A, // Interval; + }, +}; + +EFI_USB_STRING_DESCRIPTOR mStringDesc = { + 0x04, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x0409}, // String[0]; +}; + +typedef struct { + UINT8 Length; + UINT8 DescriptorType; + CHAR16 String[4]; +} FULL_EFI_USB_STRING_DESCRIPTOR; + +FULL_EFI_USB_STRING_DESCRIPTOR mStringDesc_2 = { + 0x0A, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x2000, 0x2000, 0x2000, 0x2000}, // String +}; + +// +// USB Key example +// +USB_DEVICE_DESCRIPTOR mDeviceDesc2 = { + 0x12, // Length; + 0x01, // DescriptorType; - USB_DESC_TYPE_DEVICE + 0x0200, // BcdUSB; + 0x00, // DeviceClass; + 0x00, // DeviceSubClass; + 0x00, // DeviceProtocol; + 0x40, // MaxPacketSize0; + 0x0781, // IdVendor; + 0x5151, // IdProduct; + 0x0010, // BcdDevice; + 0x01, // StrManufacturer; + 0x02, // StrProduct; + 0x03, // StrSerialNumber; + 0x01, // NumConfigurations; +}; + +typedef struct { + USB_CONFIG_DESCRIPTOR ConfigDesc; + USB_INTERFACE_DESCRIPTOR InterfaceDesc; + USB_ENDPOINT_DESCRIPTOR EndpointDesc1; + USB_ENDPOINT_DESCRIPTOR EndpointDesc2; +} FULL_USB_CONFIG_DESCRIPTOR2; + +FULL_USB_CONFIG_DESCRIPTOR2 mConfigDesc2 = { + { + 0x09, // Length; + 0x02, // DescriptorType; - USB_DESC_TYPE_CONFIG + 0x0020, // TotalLength; + 0x01, // NumInterfaces; + 0x01, // ConfigurationValue; + 0x00, // Configuration; + 0x80, // Attributes; + 0x64, // MaxPower; + }, + { + 0x09, // Length; + 0x04, // DescriptorType; - USB_DESC_TYPE_INTERFACE + 0x00, // InterfaceNumber; + 0x00, // AlternateSetting; + 0x02, // NumEndpoints; + 0x08, // InterfaceClass; + 0x06, // InterfaceSubClass; + 0x50, // InterfaceProtocol; + 0x00, // Interface; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x81, // EndpointAddress; + 0x02, // Attributes; + 0x0200, // MaxPacketSize; + 0x00, // Interval; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x01, // EndpointAddress; + 0x02, // Attributes; + 0x0200, // MaxPacketSize; + 0x01, // Interval; + }, +}; + +EFI_USB_STRING_DESCRIPTOR mStringDesc2 = { + 0x04, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x0409}, // String[0]; +}; + +typedef struct { + UINT8 Length; + UINT8 DescriptorType; + CHAR16 String[4]; +} FULL_EFI_USB_STRING_DESCRIPTOR2; + +FULL_EFI_USB_STRING_DESCRIPTOR2 mStringDesc2_2 = { + 0x0A, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x2000, 0x2000, 0x2000, 0x2000}, // String +}; + +EFI_STATUS +EFIAPI +Usb2HcPpiStubControlTransfer ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB2_HOST_CONTROLLER_PPI *This, + IN UINT8 DeviceAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN USB_DEVICE_REQUEST *Request, + IN EFI_USB_DATA_DIRECTION TransferDirection, + IN OUT VOID *Data OPTIONAL, + IN OUT UINTN *DataLength OPTIONAL, + IN UINTN TimeOut, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: ControlTransfer\n")); + + if ((TransferDirection == EfiUsbDataIn) && + (Request->RequestType == 0x80) && + (Request->Request == USB_REQ_GET_DESCRIPTOR)) { + switch (Request->Value >> 8) { + case USB_DESC_TYPE_DEVICE: + DEBUG ((DEBUG_INFO, "DEVICE - 0x%x\n", *DataLength)); + if (mDeviceDescBuffer != NULL) { + if (*DataLength > mDeviceDescBufferSize) { + *DataLength = mDeviceDescBufferSize; + } + CopyMem (Data, mDeviceDescBuffer, *DataLength); + } else { + if (*DataLength > sizeof(mDeviceDesc)) { + *DataLength = sizeof(mDeviceDesc); + } + CopyMem (Data, &mDeviceDesc, *DataLength); + } + break; + case USB_DESC_TYPE_CONFIG: + DEBUG ((DEBUG_INFO, "CONFIG - 0x%x\n", *DataLength)); + if (mConfigDescBuffer != NULL) { + if (*DataLength > mConfigDescBufferSize) { + *DataLength = mConfigDescBufferSize; + } + CopyMem (Data, mConfigDescBuffer, *DataLength); + } else { + if (*DataLength > sizeof(mConfigDesc)) { + *DataLength = sizeof(mConfigDesc); + } + CopyMem (Data, &mConfigDesc, *DataLength); + } + break; + case USB_DESC_TYPE_STRING: + DEBUG ((DEBUG_INFO, "STRING - 0x%x\n", *DataLength)); + if (mStringDescBuffer != NULL) { + if (*DataLength > mStringDescBufferSize) { + *DataLength = mStringDescBufferSize; + } + CopyMem (Data, mStringDescBuffer, *DataLength); + } else { + if (*DataLength > sizeof(mStringDesc)) { + *DataLength = sizeof(mStringDesc); + } + CopyMem (Data, &mStringDesc, *DataLength); + } + break; + } + } + + *TransferResult = EFI_USB_NOERROR; + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +Usb2HcPpiStubBulkTransfer ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB2_HOST_CONTROLLER_PPI *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM], + IN OUT UINTN *DataLength, + IN OUT UINT8 *DataToggle, + IN UINTN TimeOut, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: BulkTransfer\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcPpiStubGetRootHubPortNumber ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB2_HOST_CONTROLLER_PPI *This, + OUT UINT8 *PortNumber + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: GetRootHubPortNumber\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcPpiStubGetRootHubPortStatus ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB2_HOST_CONTROLLER_PPI *This, + IN UINT8 PortNumber, + OUT EFI_USB_PORT_STATUS *PortStatus + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: GetRootHubPortStatus\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcPpiStubSetRootHubPortFeature ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB2_HOST_CONTROLLER_PPI *This, + IN UINT8 PortNumber, + IN EFI_USB_PORT_FEATURE PortFeature + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: SetRootHubPortFeature\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcPpiStubClearRootHubPortFeature ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB2_HOST_CONTROLLER_PPI *This, + IN UINT8 PortNumber, + IN EFI_USB_PORT_FEATURE PortFeature + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: ClearRootHubPortFeature\n")); + return EFI_UNSUPPORTED; +} + +PEI_USB2_HOST_CONTROLLER_PPI mUsb2HcPpiStub = { + Usb2HcPpiStubControlTransfer, + Usb2HcPpiStubBulkTransfer, + Usb2HcPpiStubGetRootHubPortNumber, + Usb2HcPpiStubGetRootHubPortStatus, + Usb2HcPpiStubSetRootHubPortFeature, + Usb2HcPpiStubClearRootHubPortFeature, +}; + +EFI_STATUS +EFIAPI +Usb2HcPpiStubInitialize ( + IN VOID *DeviceDescBuffer, + IN UINTN DeviceDescBufferSize, + IN VOID *ConfigDescBuffer, + IN UINTN ConfigDescBufferSize, + IN VOID *StringDescBuffer, + IN UINTN StringDescBufferSize, + OUT PEI_USB2_HOST_CONTROLLER_PPI **Usb2HcPpi + ) +{ + mDeviceDescBuffer = DeviceDescBuffer; + mDeviceDescBufferSize = DeviceDescBufferSize; + mConfigDescBuffer = ConfigDescBuffer; + mConfigDescBufferSize = ConfigDescBufferSize; + mStringDescBuffer = StringDescBuffer; + mStringDescBufferSize = StringDescBufferSize; + *Usb2HcPpi = &mUsb2HcPpiStub; + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.inf new file mode 100644 index 0000000..fd53093 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.inf @@ -0,0 +1,36 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = Usb2HcPpiStubLib + FILE_GUID = A139202F-6BAA-4ED9-95CF-C5267D50208F + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = Usb2HcPpiStubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + Usb2HcPpiStubLib.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.c new file mode 100644 index 0000000..f0ad6bb --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.c @@ -0,0 +1,485 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +#include +#include +#include +#include + +VOID *mDeviceDescBuffer; +UINTN mDeviceDescBufferSize; +VOID *mConfigDescBuffer; +UINTN mConfigDescBufferSize; +VOID *mStringDescBuffer; +UINTN mStringDescBufferSize; + +// +// USB Keyboard example +// +USB_DEVICE_DESCRIPTOR mDeviceDesc = { + 0x12, // Length; + 0x01, // DescriptorType; - USB_DESC_TYPE_DEVICE + 0x0110, // BcdUSB; + 0x00, // DeviceClass; + 0x00, // DeviceSubClass; + 0x00, // DeviceProtocol; + 0x08, // MaxPacketSize0; + 0x03F0, // IdVendor; + 0x0325, // IdProduct; + 0x0103, // BcdDevice; + 0x01, // StrManufacturer; + 0x02, // StrProduct; + 0x00, // StrSerialNumber; + 0x01, // NumConfigurations; +}; + +typedef struct { + USB_CONFIG_DESCRIPTOR ConfigDesc; + USB_INTERFACE_DESCRIPTOR InterfaceDesc; + EFI_USB_HID_DESCRIPTOR HidDesc; + USB_ENDPOINT_DESCRIPTOR EndpointDesc; +} FULL_USB_CONFIG_DESCRIPTOR; + +FULL_USB_CONFIG_DESCRIPTOR mConfigDesc = { + { + 0x09, // Length; + 0x02, // DescriptorType; - USB_DESC_TYPE_CONFIG + 0x0022, // TotalLength; + 0x01, // NumInterfaces; + 0x01, // ConfigurationValue; + 0x00, // Configuration; + 0xA0, // Attributes; + 0x32, // MaxPower; + }, + { + 0x09, // Length; + 0x04, // DescriptorType; - USB_DESC_TYPE_INTERFACE + 0x00, // InterfaceNumber; + 0x00, // AlternateSetting; + 0x01, // NumEndpoints; + 0x03, // InterfaceClass; + 0x01, // InterfaceSubClass; + 0x01, // InterfaceProtocol; + 0x00, // Interface; + }, + { + 0x09, // Length; + 0x21, // DescriptorType; - USB_DESC_TYPE_HID + 0x0110, // BcdHID; + 0x00, // CountryCode; + 0x01, // NumDescriptors; + {{0x22, 0x0041}}, // HidClassDesc[0]; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x81, // EndpointAddress; + 0x03, // Attributes; + 0x0008, // MaxPacketSize; + 0x0A, // Interval; + }, +}; + +EFI_USB_STRING_DESCRIPTOR mStringDesc = { + 0x04, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x0409}, // String[0]; +}; + +typedef struct { + UINT8 Length; + UINT8 DescriptorType; + CHAR16 String[4]; +} FULL_EFI_USB_STRING_DESCRIPTOR; + +FULL_EFI_USB_STRING_DESCRIPTOR mStringDesc_2 = { + 0x0A, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x2000, 0x2000, 0x2000, 0x2000}, // String +}; + +// +// USB Key example +// +USB_DEVICE_DESCRIPTOR mDeviceDesc2 = { + 0x12, // Length; + 0x01, // DescriptorType; - USB_DESC_TYPE_DEVICE + 0x0200, // BcdUSB; + 0x00, // DeviceClass; + 0x00, // DeviceSubClass; + 0x00, // DeviceProtocol; + 0x40, // MaxPacketSize0; + 0x0781, // IdVendor; + 0x5151, // IdProduct; + 0x0010, // BcdDevice; + 0x01, // StrManufacturer; + 0x02, // StrProduct; + 0x03, // StrSerialNumber; + 0x01, // NumConfigurations; +}; + +typedef struct { + USB_CONFIG_DESCRIPTOR ConfigDesc; + USB_INTERFACE_DESCRIPTOR InterfaceDesc; + USB_ENDPOINT_DESCRIPTOR EndpointDesc1; + USB_ENDPOINT_DESCRIPTOR EndpointDesc2; +} FULL_USB_CONFIG_DESCRIPTOR2; + +FULL_USB_CONFIG_DESCRIPTOR2 mConfigDesc2 = { + { + 0x09, // Length; + 0x02, // DescriptorType; - USB_DESC_TYPE_CONFIG + 0x0020, // TotalLength; + 0x01, // NumInterfaces; + 0x01, // ConfigurationValue; + 0x00, // Configuration; + 0x80, // Attributes; + 0x64, // MaxPower; + }, + { + 0x09, // Length; + 0x04, // DescriptorType; - USB_DESC_TYPE_INTERFACE + 0x00, // InterfaceNumber; + 0x00, // AlternateSetting; + 0x02, // NumEndpoints; + 0x08, // InterfaceClass; + 0x06, // InterfaceSubClass; + 0x50, // InterfaceProtocol; + 0x00, // Interface; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x81, // EndpointAddress; + 0x02, // Attributes; + 0x0200, // MaxPacketSize; + 0x00, // Interval; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x01, // EndpointAddress; + 0x02, // Attributes; + 0x0200, // MaxPacketSize; + 0x01, // Interval; + }, +}; + +EFI_USB_STRING_DESCRIPTOR mStringDesc2 = { + 0x04, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x0409}, // String[0]; +}; + +typedef struct { + UINT8 Length; + UINT8 DescriptorType; + CHAR16 String[4]; +} FULL_EFI_USB_STRING_DESCRIPTOR2; + +FULL_EFI_USB_STRING_DESCRIPTOR2 mStringDesc2_2 = { + 0x0A, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x2000, 0x2000, 0x2000, 0x2000}, // String +}; + +EFI_STATUS +EFIAPI +Usb2HcStubGetCapability ( + IN EFI_USB2_HC_PROTOCOL *This, + OUT UINT8 *MaxSpeed, + OUT UINT8 *PortNumber, + OUT UINT8 *Is64BitCapable + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: GetCapability\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubReset ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT16 Attributes + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: Reset\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubGetState ( + IN EFI_USB2_HC_PROTOCOL *This, + OUT EFI_USB_HC_STATE *State + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: GetState\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubSetState ( + IN EFI_USB2_HC_PROTOCOL *This, + IN EFI_USB_HC_STATE State + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: SetState\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubControlTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN EFI_USB_DEVICE_REQUEST *Request, + IN EFI_USB_DATA_DIRECTION TransferDirection, + IN OUT VOID *Data OPTIONAL, + IN OUT UINTN *DataLength OPTIONAL, + IN UINTN TimeOut, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: ControlTransfer\n")); + + if ((TransferDirection == EfiUsbDataIn) && + (Request->RequestType == 0x80) && + (Request->Request == USB_REQ_GET_DESCRIPTOR)) { + switch (Request->Value >> 8) { + case USB_DESC_TYPE_DEVICE: + DEBUG ((DEBUG_INFO, "DEVICE - 0x%x\n", *DataLength)); + if (mDeviceDescBuffer != NULL) { + if (*DataLength > mDeviceDescBufferSize) { + *DataLength = mDeviceDescBufferSize; + } + CopyMem (Data, mDeviceDescBuffer, *DataLength); + } else { + if (*DataLength > sizeof(mDeviceDesc)) { + *DataLength = sizeof(mDeviceDesc); + } + CopyMem (Data, &mDeviceDesc, *DataLength); + } + break; + case USB_DESC_TYPE_CONFIG: + DEBUG ((DEBUG_INFO, "CONFIG - 0x%x\n", *DataLength)); + if (mConfigDescBuffer != NULL) { + if (*DataLength > mConfigDescBufferSize) { + *DataLength = mConfigDescBufferSize; + } + CopyMem (Data, mConfigDescBuffer, *DataLength); + } else { + if (*DataLength > sizeof(mConfigDesc)) { + *DataLength = sizeof(mConfigDesc); + } + CopyMem (Data, &mConfigDesc, *DataLength); + } + break; + case USB_DESC_TYPE_STRING: + DEBUG ((DEBUG_INFO, "STRING - 0x%x\n", *DataLength)); + if (mStringDescBuffer != NULL) { + if (*DataLength > mStringDescBufferSize) { + *DataLength = mStringDescBufferSize; + } + CopyMem (Data, mStringDescBuffer, *DataLength); + } else { + if (*DataLength > sizeof(mStringDesc)) { + *DataLength = sizeof(mStringDesc); + } + CopyMem (Data, &mStringDesc, *DataLength); + } + break; + } + } + + *TransferResult = EFI_USB_NOERROR; + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +Usb2HcStubBulkTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN UINT8 DataBuffersNumber, + IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM], + IN OUT UINTN *DataLength, + IN OUT UINT8 *DataToggle, + IN UINTN TimeOut, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: BulkTransfer\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubAsyncInterruptTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaxiumPacketLength, + IN BOOLEAN IsNewTransfer, + IN OUT UINT8 *DataToggle, + IN UINTN PollingInterval OPTIONAL, + IN UINTN DataLength OPTIONAL, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator OPTIONAL, + IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL, + IN VOID *Context OPTIONAL + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: AsyncInterruptTransfer\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubSyncInterruptTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN OUT VOID *Data, + IN OUT UINTN *DataLength, + IN OUT UINT8 *DataToggle, + IN UINTN TimeOut, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: SyncInterruptTransfer\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubIsochronousTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN UINT8 DataBuffersNumber, + IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], + IN UINTN DataLength, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + OUT UINT32 *TransferResult + ) +{ + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubAsyncIsochronousTransfer ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 DeviceAddress, + IN UINT8 EndPointAddress, + IN UINT8 DeviceSpeed, + IN UINTN MaximumPacketLength, + IN UINT8 DataBuffersNumber, + IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], + IN UINTN DataLength, + IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, + IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack, + IN VOID *Context OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubGetRootHubPortStatus ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 PortNumber, + OUT EFI_USB_PORT_STATUS *PortStatus + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: GetRootHubPortStatus\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubSetRootHubPortFeature ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 PortNumber, + IN EFI_USB_PORT_FEATURE PortFeature + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: SetRootHubPortFeature\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +Usb2HcStubClearRootHubPortFeature ( + IN EFI_USB2_HC_PROTOCOL *This, + IN UINT8 PortNumber, + IN EFI_USB_PORT_FEATURE PortFeature + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: ClearRootHubPortFeature\n")); + return EFI_UNSUPPORTED; +} + +EFI_USB2_HC_PROTOCOL mUsb2HcStub = { + Usb2HcStubGetCapability, + Usb2HcStubReset, + Usb2HcStubGetState, + Usb2HcStubSetState, + Usb2HcStubControlTransfer, + Usb2HcStubBulkTransfer, + Usb2HcStubAsyncInterruptTransfer, + Usb2HcStubSyncInterruptTransfer, + Usb2HcStubIsochronousTransfer, + Usb2HcStubAsyncIsochronousTransfer, + Usb2HcStubGetRootHubPortStatus, + Usb2HcStubSetRootHubPortFeature, + Usb2HcStubClearRootHubPortFeature, + 0x2, + 0x0 +}; + +EFI_STATUS +EFIAPI +Usb2HcStubInitialize ( + IN VOID *DeviceDescBuffer, + IN UINTN DeviceDescBufferSize, + IN VOID *ConfigDescBuffer, + IN UINTN ConfigDescBufferSize, + IN VOID *StringDescBuffer, + IN UINTN StringDescBufferSize, + OUT EFI_USB2_HC_PROTOCOL **Usb2Hc + ) +{ + mDeviceDescBuffer = DeviceDescBuffer; + mDeviceDescBufferSize = DeviceDescBufferSize; + mConfigDescBuffer = ConfigDescBuffer; + mConfigDescBufferSize = ConfigDescBufferSize; + mStringDescBuffer = StringDescBuffer; + mStringDescBufferSize = StringDescBufferSize; + *Usb2Hc = &mUsb2HcStub; + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.inf new file mode 100644 index 0000000..8f0bbd0 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.inf @@ -0,0 +1,35 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = Usb2HcStubLib + FILE_GUID = A139202F-6BAA-4ED9-95CF-C5267D50208F + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = Usb2HcStubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + Usb2HcStubLib.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.c new file mode 100644 index 0000000..fa44963 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.c @@ -0,0 +1,340 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include +#include + +VOID *mDeviceDescBuffer; +UINTN mDeviceDescBufferSize; +VOID *mConfigDescBuffer; +UINTN mConfigDescBufferSize; +VOID *mStringDescBuffer; +UINTN mStringDescBufferSize; + +// +// USB Keyboard example +// +USB_DEVICE_DESCRIPTOR mDeviceDesc = { + 0x12, // Length; + 0x01, // DescriptorType; - USB_DESC_TYPE_DEVICE + 0x0110, // BcdUSB; + 0x00, // DeviceClass; + 0x00, // DeviceSubClass; + 0x00, // DeviceProtocol; + 0x08, // MaxPacketSize0; + 0x03F0, // IdVendor; + 0x0325, // IdProduct; + 0x0103, // BcdDevice; + 0x01, // StrManufacturer; + 0x02, // StrProduct; + 0x00, // StrSerialNumber; + 0x01, // NumConfigurations; +}; + +typedef struct { + USB_CONFIG_DESCRIPTOR ConfigDesc; + USB_INTERFACE_DESCRIPTOR InterfaceDesc; + EFI_USB_HID_DESCRIPTOR HidDesc; + USB_ENDPOINT_DESCRIPTOR EndpointDesc; +} FULL_USB_CONFIG_DESCRIPTOR; + +FULL_USB_CONFIG_DESCRIPTOR mConfigDesc = { + { + 0x09, // Length; + 0x02, // DescriptorType; - USB_DESC_TYPE_CONFIG + 0x0022, // TotalLength; + 0x01, // NumInterfaces; + 0x01, // ConfigurationValue; + 0x00, // Configuration; + 0xA0, // Attributes; + 0x32, // MaxPower; + }, + { + 0x09, // Length; + 0x04, // DescriptorType; - USB_DESC_TYPE_INTERFACE + 0x00, // InterfaceNumber; + 0x00, // AlternateSetting; + 0x01, // NumEndpoints; + 0x03, // InterfaceClass; + 0x01, // InterfaceSubClass; + 0x01, // InterfaceProtocol; + 0x00, // Interface; + }, + { + 0x09, // Length; + 0x21, // DescriptorType; - USB_DESC_TYPE_HID + 0x0110, // BcdHID; + 0x00, // CountryCode; + 0x01, // NumDescriptors; + {{0x22, 0x0041}}, // HidClassDesc[0]; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x81, // EndpointAddress; + 0x03, // Attributes; + 0x0008, // MaxPacketSize; + 0x0A, // Interval; + }, +}; + +EFI_USB_STRING_DESCRIPTOR mStringDesc = { + 0x04, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x0409}, // String[0]; +}; + +typedef struct { + UINT8 Length; + UINT8 DescriptorType; + CHAR16 String[4]; +} FULL_EFI_USB_STRING_DESCRIPTOR; + +FULL_EFI_USB_STRING_DESCRIPTOR mStringDesc_2 = { + 0x0A, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x2000, 0x2000, 0x2000, 0x2000}, // String +}; + +// +// USB Key example +// +USB_DEVICE_DESCRIPTOR mDeviceDesc2 = { + 0x12, // Length; + 0x01, // DescriptorType; - USB_DESC_TYPE_DEVICE + 0x0200, // BcdUSB; + 0x00, // DeviceClass; + 0x00, // DeviceSubClass; + 0x00, // DeviceProtocol; + 0x40, // MaxPacketSize0; + 0x0781, // IdVendor; + 0x5151, // IdProduct; + 0x0010, // BcdDevice; + 0x01, // StrManufacturer; + 0x02, // StrProduct; + 0x03, // StrSerialNumber; + 0x01, // NumConfigurations; +}; + +typedef struct { + USB_CONFIG_DESCRIPTOR ConfigDesc; + USB_INTERFACE_DESCRIPTOR InterfaceDesc; + USB_ENDPOINT_DESCRIPTOR EndpointDesc1; + USB_ENDPOINT_DESCRIPTOR EndpointDesc2; +} FULL_USB_CONFIG_DESCRIPTOR2; + +FULL_USB_CONFIG_DESCRIPTOR2 mConfigDesc2 = { + { + 0x09, // Length; + 0x02, // DescriptorType; - USB_DESC_TYPE_CONFIG + 0x0020, // TotalLength; + 0x01, // NumInterfaces; + 0x01, // ConfigurationValue; + 0x00, // Configuration; + 0x80, // Attributes; + 0x64, // MaxPower; + }, + { + 0x09, // Length; + 0x04, // DescriptorType; - USB_DESC_TYPE_INTERFACE + 0x00, // InterfaceNumber; + 0x00, // AlternateSetting; + 0x02, // NumEndpoints; + 0x08, // InterfaceClass; + 0x06, // InterfaceSubClass; + 0x50, // InterfaceProtocol; + 0x00, // Interface; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x81, // EndpointAddress; + 0x02, // Attributes; + 0x0200, // MaxPacketSize; + 0x00, // Interval; + }, + { + 0x07, // Length; + 0x05, // DescriptorType; - USB_DESC_TYPE_ENDPOINT + 0x01, // EndpointAddress; + 0x02, // Attributes; + 0x0200, // MaxPacketSize; + 0x01, // Interval; + }, +}; + +EFI_USB_STRING_DESCRIPTOR mStringDesc2 = { + 0x04, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x0409}, // String[0]; +}; + +typedef struct { + UINT8 Length; + UINT8 DescriptorType; + CHAR16 String[4]; +} FULL_EFI_USB_STRING_DESCRIPTOR2; + +FULL_EFI_USB_STRING_DESCRIPTOR2 mStringDesc2_2 = { + 0x0A, // Length; + 0x03, // DescriptorType; - USB_DESC_TYPE_STRING + {0x2000, 0x2000, 0x2000, 0x2000}, // String +}; + +EFI_STATUS +EFIAPI +UsbIoPpiStubControlTransfer ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB_IO_PPI *This, + IN EFI_USB_DEVICE_REQUEST *Request, + IN EFI_USB_DATA_DIRECTION Direction, + IN UINT32 Timeout, + IN OUT VOID *Data OPTIONAL, + IN UINTN DataLength OPTIONAL + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: ControlTransfer\n")); + + if ((Direction == EfiUsbDataIn) && + (Request->RequestType == 0x80) && + (Request->Request == USB_REQ_GET_DESCRIPTOR)) { + switch (Request->Value >> 8) { + case USB_DESC_TYPE_DEVICE: + DEBUG ((DEBUG_INFO, "DEVICE - 0x%x\n", DataLength)); + if (mDeviceDescBuffer != NULL) { + if (DataLength > mDeviceDescBufferSize) { + DataLength = mDeviceDescBufferSize; + } + CopyMem (Data, mDeviceDescBuffer, DataLength); + } else { + if (DataLength > sizeof(mDeviceDesc)) { + DataLength = sizeof(mDeviceDesc); + } + CopyMem (Data, &mDeviceDesc, DataLength); + } + break; + case USB_DESC_TYPE_CONFIG: + DEBUG ((DEBUG_INFO, "CONFIG - 0x%x\n", DataLength)); + if (mConfigDescBuffer != NULL) { + if (DataLength > mConfigDescBufferSize) { + DataLength = mConfigDescBufferSize; + } + CopyMem (Data, mConfigDescBuffer, DataLength); + } else { + if (DataLength > sizeof(mConfigDesc)) { + DataLength = sizeof(mConfigDesc); + } + CopyMem (Data, &mConfigDesc, DataLength); + } + break; + case USB_DESC_TYPE_STRING: + DEBUG ((DEBUG_INFO, "STRING - 0x%x\n", DataLength)); + if (mStringDescBuffer != NULL) { + if (DataLength > mStringDescBufferSize) { + DataLength = mStringDescBufferSize; + } + CopyMem (Data, mStringDescBuffer, DataLength); + } else { + if (DataLength > sizeof(mStringDesc)) { + DataLength = sizeof(mStringDesc); + } + CopyMem (Data, &mStringDesc, DataLength); + } + break; + } + } + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +UsbIoPpiStubBulkTransfer ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB_IO_PPI *This, + IN UINT8 DeviceEndpoint, + IN OUT VOID *Data, + IN OUT UINTN *DataLength, + IN UINTN Timeout + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: BulkTransfer\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +UsbIoPpiStubGetInterfaceDescriptor ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB_IO_PPI *This, + IN EFI_USB_INTERFACE_DESCRIPTOR **InterfaceDescriptor + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: GetInterfaceDescriptor\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +UsbIoPpiStubGetEndpointDescriptor ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB_IO_PPI *This, + IN UINT8 EndpointIndex, + IN EFI_USB_ENDPOINT_DESCRIPTOR **EndpointDescriptor + ) +{ + DEBUG ((DEBUG_INFO, "USB_STUB: GetEndpointDescriptor\n")); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +UsbIoPpiStubPortReset ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_USB_IO_PPI *This + ) +{ + DEBUG ((DEBUG_INFO, "USB_IO_STUB: PortReset\n")); + return EFI_UNSUPPORTED; +} + +PEI_USB_IO_PPI mUsbIoPpiStub = { + UsbIoPpiStubControlTransfer, + UsbIoPpiStubBulkTransfer, + UsbIoPpiStubGetInterfaceDescriptor, + UsbIoPpiStubGetEndpointDescriptor, + UsbIoPpiStubPortReset, +}; + +EFI_STATUS +EFIAPI +UsbIoPpiStubInitialize ( + IN VOID *DeviceDescBuffer, + IN UINTN DeviceDescBufferSize, + IN VOID *ConfigDescBuffer, + IN UINTN ConfigDescBufferSize, + IN VOID *StringDescBuffer, + IN UINTN StringDescBufferSize, + OUT PEI_USB_IO_PPI **UsbIoPpi + ) +{ + mDeviceDescBuffer = DeviceDescBuffer; + mDeviceDescBufferSize = DeviceDescBufferSize; + mConfigDescBuffer = ConfigDescBuffer; + mConfigDescBufferSize = ConfigDescBufferSize; + mStringDescBuffer = StringDescBuffer; + mStringDescBufferSize = StringDescBufferSize; + *UsbIoPpi = &mUsbIoPpiStub; + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.inf new file mode 100644 index 0000000..07d4bf3 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.inf @@ -0,0 +1,36 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = UsbIoPpiStubLib + FILE_GUID = A84AF093-3CAF-424E-BCEC-3E1606030A5F + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = UsbIoPpiStubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + UsbIoPpiStubLib.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.c new file mode 100644 index 0000000..1640072 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.c @@ -0,0 +1,324 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include + +#include +#include +#include +#include +#include + +#include +#include + +EFI_STATUS +EFIAPI +VirtioBlkReset ( + IN EFI_BLOCK_IO_PROTOCOL *This, + IN BOOLEAN ExtendedVerification + ); + +EFI_STATUS +EFIAPI +VirtioBlkReadBlocks ( + IN EFI_BLOCK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + OUT VOID *Buffer + ); + +EFI_STATUS +EFIAPI +VirtioBlkWriteBlocks ( + IN EFI_BLOCK_IO_PROTOCOL *This, + IN UINT32 MediaId, + IN EFI_LBA Lba, + IN UINTN BufferSize, + IN VOID *Buffer + ); + + +EFI_STATUS +EFIAPI +VirtioBlkFlushBlocks ( + IN EFI_BLOCK_IO_PROTOCOL *This + ); + +#define VIRTIO_CFG_WRITE(Dev, Field, Value) ((Dev)->VirtIo->WriteDevice ( \ + (Dev)->VirtIo, \ + OFFSET_OF_VBLK (Field), \ + SIZE_OF_VBLK (Field), \ + (Value) \ + )) + +#define VIRTIO_CFG_READ(Dev, Field, Pointer) ((Dev)->VirtIo->ReadDevice ( \ + (Dev)->VirtIo, \ + OFFSET_OF_VBLK (Field), \ + SIZE_OF_VBLK (Field), \ + sizeof *(Pointer), \ + (Pointer) \ + )) + +EFI_STATUS +EFIAPI +VirtioBlkInit ( + IN OUT VBLK_DEV *Dev +) +{ + UINT8 NextDevStat; + EFI_STATUS Status; + + UINT64 Features; + UINT64 NumSectors; + UINT32 BlockSize; + UINT8 PhysicalBlockExp; + UINT8 AlignmentOffset; + UINT32 OptIoSize; + UINT16 QueueSize; + UINT64 RingBaseShift; + + PhysicalBlockExp = 0; + AlignmentOffset = 0; + OptIoSize = 0; + // + // Execute virtio-0.9.5, 2.2.1 Device Initialization Sequence. + // + NextDevStat = 0; // step 1 -- reset device + Status = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat); + if (EFI_ERROR (Status)) { + goto Failed; + } + + NextDevStat |= VSTAT_ACK; // step 2 -- acknowledge device presence + Status = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat); + if (EFI_ERROR (Status)) { + goto Failed; + } + + NextDevStat |= VSTAT_DRIVER; // step 3 -- we know how to drive it + Status = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat); + if (EFI_ERROR (Status)) { + goto Failed; + } + // printf ("Set page size\n"); + // + // Set Page Size - MMIO VirtIo Specific + // + Status = Dev->VirtIo->SetPageSize (Dev->VirtIo, EFI_PAGE_SIZE); + if (EFI_ERROR (Status)) { + goto Failed; + } + // printf ("get device features\n"); + // + // step 4a -- retrieve and validate features + // + Status = Dev->VirtIo->GetDeviceFeatures (Dev->VirtIo, &Features); + if (EFI_ERROR (Status)) { + goto Failed; + } + // printf ("read device features\n"); + Status = VIRTIO_CFG_READ (Dev, Capacity, &NumSectors); + if (EFI_ERROR (Status)) { + goto Failed; + } + if (NumSectors == 0) { + Status = EFI_UNSUPPORTED; + goto Failed; + } + if (Features & VIRTIO_BLK_F_BLK_SIZE) { + Status = VIRTIO_CFG_READ (Dev, BlkSize, &BlockSize); + if (EFI_ERROR (Status)) { + goto Failed; + } + if (BlockSize == 0 || BlockSize % 512 != 0 || + ModU64x32 (NumSectors, BlockSize / 512) != 0) { + // + // We can only handle a logical block consisting of whole sectors, + // and only a disk composed of whole logical blocks. + // + Status = EFI_UNSUPPORTED; + goto Failed; + } + } + else { + BlockSize = 512; + } + if (Features & VIRTIO_BLK_F_TOPOLOGY) { + Status = VIRTIO_CFG_READ (Dev, Topology.PhysicalBlockExp, + &PhysicalBlockExp); + if (EFI_ERROR (Status)) { + goto Failed; + } + if (PhysicalBlockExp >= 32) { + Status = EFI_UNSUPPORTED; + goto Failed; + } + + Status = VIRTIO_CFG_READ (Dev, Topology.AlignmentOffset, &AlignmentOffset); + if (EFI_ERROR (Status)) { + goto Failed; + } + + Status = VIRTIO_CFG_READ (Dev, Topology.OptIoSize, &OptIoSize); + if (EFI_ERROR (Status)) { + goto Failed; + } + } + + Features &= VIRTIO_BLK_F_BLK_SIZE | VIRTIO_BLK_F_TOPOLOGY | VIRTIO_BLK_F_RO | + VIRTIO_BLK_F_FLUSH | VIRTIO_F_VERSION_1 | + VIRTIO_F_IOMMU_PLATFORM; + + // printf ("write features\n"); + // + // In virtio-1.0, feature negotiation is expected to complete before queue + // discovery, and the device can also reject the selected set of features. + // + if (Dev->VirtIo->Revision >= VIRTIO_SPEC_REVISION (1, 0, 0)) { + Status = Virtio10WriteFeatures (Dev->VirtIo, Features, &NextDevStat); + if (EFI_ERROR (Status)) { + goto Failed; + } + } + // + // step 4b -- allocate virtqueue + // + Status = Dev->VirtIo->SetQueueSel (Dev->VirtIo, 0); + if (EFI_ERROR (Status)) { + goto Failed; + } + Status = Dev->VirtIo->GetQueueNumMax (Dev->VirtIo, &QueueSize); + if (EFI_ERROR (Status)) { + goto Failed; + } + if (QueueSize < 3) { // SynchronousRequest() uses at most three descriptors + Status = EFI_UNSUPPORTED; + goto Failed; + } + + Status = VirtioRingInit (Dev->VirtIo, QueueSize, &Dev->Ring); + if (EFI_ERROR (Status)) { + goto Failed; + } + // + // If anything fails from here on, we must release the ring resources + // + Status = VirtioRingMap ( + Dev->VirtIo, + &Dev->Ring, + &RingBaseShift, + &Dev->RingMap + ); + if (EFI_ERROR (Status)) { + goto ReleaseQueue; + } + + // + // Additional steps for MMIO: align the queue appropriately, and set the + // size. If anything fails from here on, we must unmap the ring resources. + // + Status = Dev->VirtIo->SetQueueNum (Dev->VirtIo, QueueSize); + if (EFI_ERROR (Status)) { + goto UnmapQueue; + } + + Status = Dev->VirtIo->SetQueueAlign (Dev->VirtIo, EFI_PAGE_SIZE); + if (EFI_ERROR (Status)) { + goto UnmapQueue; + } + // + // step 4c -- Report GPFN (guest-physical frame number) of queue. + // + Status = Dev->VirtIo->SetQueueAddress ( + Dev->VirtIo, + &Dev->Ring, + RingBaseShift + ); + if (EFI_ERROR (Status)) { + goto UnmapQueue; + } + + + // + // step 5 -- Report understood features. + // + if (Dev->VirtIo->Revision < VIRTIO_SPEC_REVISION (1, 0, 0)) { + Features &= ~(UINT64)(VIRTIO_F_VERSION_1 | VIRTIO_F_IOMMU_PLATFORM); + Status = Dev->VirtIo->SetGuestFeatures (Dev->VirtIo, Features); + if (EFI_ERROR (Status)) { + goto UnmapQueue; + } + } + + // + // step 6 -- initialization complete + // + NextDevStat |= VSTAT_DRIVER_OK; + Status = Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat); + if (EFI_ERROR (Status)) { + goto UnmapQueue; + } + + + + // + // Populate the exported interface's attributes; see UEFI spec v2.4, 12.9 EFI + // Block I/O Protocol. + // + Dev->BlockIo.Revision = 0; + Dev->BlockIo.Media = &Dev->BlockIoMedia; + Dev->BlockIo.Reset = &VirtioBlkReset; + Dev->BlockIo.ReadBlocks = &VirtioBlkReadBlocks; + Dev->BlockIo.WriteBlocks = &VirtioBlkWriteBlocks; + Dev->BlockIo.FlushBlocks = &VirtioBlkFlushBlocks; + Dev->BlockIoMedia.MediaId = 0; + Dev->BlockIoMedia.RemovableMedia = FALSE; + Dev->BlockIoMedia.MediaPresent = TRUE; + Dev->BlockIoMedia.LogicalPartition = FALSE; + Dev->BlockIoMedia.ReadOnly = (BOOLEAN) ((Features & VIRTIO_BLK_F_RO) != 0); + Dev->BlockIoMedia.WriteCaching = (BOOLEAN) ((Features & VIRTIO_BLK_F_FLUSH) != 0); + Dev->BlockIoMedia.BlockSize = BlockSize; + Dev->BlockIoMedia.IoAlign = 0; + Dev->BlockIoMedia.LastBlock = DivU64x32 (NumSectors, + BlockSize / 512) - 1; + + DEBUG ((DEBUG_INFO, "%a: LbaSize=0x%x[B] NumBlocks=0x%Lx[Lba]\n", + __FUNCTION__, Dev->BlockIoMedia.BlockSize, + Dev->BlockIoMedia.LastBlock + 1)); + + if (Features & VIRTIO_BLK_F_TOPOLOGY) { + Dev->BlockIo.Revision = EFI_BLOCK_IO_PROTOCOL_REVISION3; + + Dev->BlockIoMedia.LowestAlignedLba = AlignmentOffset; + Dev->BlockIoMedia.LogicalBlocksPerPhysicalBlock = 1u << PhysicalBlockExp; + Dev->BlockIoMedia.OptimalTransferLengthGranularity = OptIoSize; + + DEBUG ((DEBUG_INFO, "%a: FirstAligned=0x%Lx[Lba] PhysBlkSize=0x%x[Lba]\n", + __FUNCTION__, Dev->BlockIoMedia.LowestAlignedLba, + Dev->BlockIoMedia.LogicalBlocksPerPhysicalBlock)); + DEBUG ((DEBUG_INFO, "%a: OptimalTransferLengthGranularity=0x%x[Lba]\n", + __FUNCTION__, Dev->BlockIoMedia.OptimalTransferLengthGranularity)); + } + return EFI_SUCCESS; + +UnmapQueue: + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Dev->RingMap); + +ReleaseQueue: + VirtioRingUninit (Dev->VirtIo, &Dev->Ring); + +Failed: + // + // Notify the host about our failure to setup: virtio-0.9.5, 2.2.2.1 Device + // Status. VirtIo access failure here should not mask the original error. + // + NextDevStat |= VSTAT_FAILED; + Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, NextDevStat); + + return Status; // reached only via Failed above +} \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf new file mode 100644 index 0000000..3476140 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf @@ -0,0 +1,36 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = VirtioBlkStubLib + FILE_GUID = 1C7BD8C1-C26C-764C-0977-D8BF49A10DDA + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = VirtioBlkStubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + VirtioBlkStubLib.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.c new file mode 100644 index 0000000..68d0fcf --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.c @@ -0,0 +1,968 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +PCI_CFG_SPACE *PciCfg; + +// VOID +// EFIAPI +// PrintByByte(UINT8* Content, UINT32 Len) { +// UINT32 i; +// for (i = 0; i < Len; i++) { +// if (i % 16 == 0) printf ("\n"); +// printf ("%02x ", Content[i]); +// } +// printf ("\n"); +// } + +EFI_STATUS +EFIAPI +PciCapPciIoDeviceInit ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + OUT PCI_CAP_DEV **PciDevice + ); + +VOID +EFIAPI +PciCapPciIoDeviceUninit ( + IN PCI_CAP_DEV *PciDevice + ); + +RETURN_STATUS +EFIAPI +PciCapListInit ( + IN PCI_CAP_DEV *PciDevice, + OUT PCI_CAP_LIST **CapList + ); + +RETURN_STATUS +EFIAPI +PciCapListFindCap ( + IN PCI_CAP_LIST *CapList, + IN PCI_CAP_DOMAIN Domain, + IN UINT16 CapId, + IN UINT16 Instance, + OUT PCI_CAP **Cap OPTIONAL + ); + +RETURN_STATUS +EFIAPI +PciCapRead ( + IN PCI_CAP_DEV *PciDevice, + IN PCI_CAP *Cap, + IN UINT16 SourceOffsetInCap, + OUT VOID *DestinationBuffer, + IN UINT16 Size + ); + +VOID +EFIAPI +PciCapListUninit ( + IN PCI_CAP_LIST *CapList + ); + +EFI_STATUS +GetBarType ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN UINT8 BarIndex, + OUT VIRTIO_1_0_BAR_TYPE *BarType + ) +{ + if (PciCfg->PciBasicCfg.Device.Bar[BarIndex] & BIT0) { + *BarType = Virtio10BarTypeIo; + } + else { + *BarType = Virtio10BarTypeMem; + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +Virtio10Transfer ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN VIRTIO_1_0_CONFIG *Config, + IN BOOLEAN Write, + IN UINTN FieldOffset, + IN UINTN FieldSize, + IN OUT VOID *Buffer + ) +{ + if (!Config->Exists || + (FieldSize > Config->Length) || + (FieldOffset > Config->Length - FieldSize)) + { + return EFI_INVALID_PARAMETER; + } + + if (Write) { + CopyMem ((void *) (((UINT64) PciCfg->PciBasicCfg.Device.Bar[1] << 32) | PciCfg->PciBasicCfg.Device.Bar[0] + Config->Offset + FieldOffset), Buffer, FieldSize); + } + else { + CopyMem (Buffer, (void *) (((UINT64) PciCfg->PciBasicCfg.Device.Bar[1] << 32) | PciCfg->PciBasicCfg.Device.Bar[0] + Config->Offset + FieldOffset), FieldSize); + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10GetDeviceFeatures ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT64 *DeviceFeatures + ) +{ + VIRTIO_1_0_DEV *Dev; + UINT32 Selector; + UINT32 Features32[2]; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + for (Selector = 0; Selector < 2; ++Selector) { + EFI_STATUS Status; + + // + // Select the low or high half of the features. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, DeviceFeatureSelect), + sizeof Selector, + &Selector + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Fetch that half. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + FALSE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, DeviceFeature), + sizeof Features32[Selector], + &Features32[Selector] + ); + if (EFI_ERROR (Status)) { + return Status; + } + } + + *DeviceFeatures = LShiftU64 (Features32[1], 32) | Features32[0]; + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10SetGuestFeatures ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT64 Features + ) +{ + VIRTIO_1_0_DEV *Dev; + UINT32 Selector; + UINT32 Features32[2]; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Features32[0] = (UINT32)Features; + Features32[1] = (UINT32)RShiftU64 (Features, 32); + + for (Selector = 0; Selector < 2; ++Selector) { + EFI_STATUS Status; + + // + // Select the low or high half of the features. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, DriverFeatureSelect), + sizeof Selector, + &Selector + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Write that half. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, DriverFeature), + sizeof Features32[Selector], + &Features32[Selector] + ); + + if (EFI_ERROR (Status)) { + return Status; + } + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10SetQueueAddress ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VRING *Ring, + IN UINT64 RingBaseShift + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + UINT64 Address; + UINT16 Enable; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Address = (UINTN)Ring->Desc; + Address += RingBaseShift; + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueDesc), + sizeof Address, + &Address + ); + if (EFI_ERROR (Status)) { + return Status; + } + + Address = (UINTN)Ring->Avail.Flags; + Address += RingBaseShift; + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueAvail), + sizeof Address, + &Address + ); + if (EFI_ERROR (Status)) { + return Status; + } + + Address = (UINTN)Ring->Used.Flags; + Address += RingBaseShift; + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueUsed), + sizeof Address, + &Address + ); + if (EFI_ERROR (Status)) { + return Status; + } + + Enable = 1; + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueEnable), + sizeof Enable, + &Enable + ); + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10SetQueueSel ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Index + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueSelect), + sizeof Index, + &Index + ); + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10SetQueueNotify ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Index + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + UINT16 SavedQueueSelect; + UINT16 NotifyOffset; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + // + // Read NotifyOffset first. NotifyOffset is queue specific, so we have + // to stash & restore the current queue selector around it. + // + // So, start with saving the current queue selector. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + FALSE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueSelect), + sizeof SavedQueueSelect, + &SavedQueueSelect + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Select the requested queue. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueSelect), + sizeof Index, + &Index + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Read the QueueNotifyOff field. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + FALSE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueNotifyOff), + sizeof NotifyOffset, + &NotifyOffset + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Re-select the original queue. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueSelect), + sizeof SavedQueueSelect, + &SavedQueueSelect + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // We can now kick the queue. + // + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->NotifyConfig, + TRUE, + (UINTN)NotifyOffset * Dev->NotifyOffsetMultiplier, + sizeof Index, + &Index + ); + + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10SetQueueAlign ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT32 Alignment + ) +{ + return (Alignment == EFI_PAGE_SIZE) ? EFI_SUCCESS : EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10SetPageSize ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT32 PageSize + ) +{ + return (PageSize == EFI_PAGE_SIZE) ? EFI_SUCCESS : EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10GetQueueNumMax ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT16 *QueueNumMax + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + FALSE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueSize), + sizeof *QueueNumMax, + QueueNumMax + ); + + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10SetQueueNum ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 QueueSize + ) +{ + EFI_STATUS Status; + UINT16 CurrentSize; + + // + // This member function is required for VirtIo MMIO, and a no-op in + // VirtIo PCI 0.9.5. In VirtIo 1.0, drivers can theoretically use this + // member to reduce memory consumption, but none of our drivers do. So + // just check that they set the size that is already in effect. + // + Status = Virtio10GetQueueNumMax (This, &CurrentSize); + if (EFI_ERROR (Status)) { + return Status; + } + + return (CurrentSize == QueueSize) ? EFI_SUCCESS : EFI_UNSUPPORTED; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10GetDeviceStatus ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT8 *DeviceStatus + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + FALSE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, DeviceStatus), + sizeof *DeviceStatus, + DeviceStatus + ); + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10SetDeviceStatus ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT8 DeviceStatus + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->CommonConfig, + TRUE, + OFFSET_OF (VIRTIO_PCI_COMMON_CFG, DeviceStatus), + sizeof DeviceStatus, + &DeviceStatus + ); + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10WriteDevice ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN FieldOffset, + IN UINTN FieldSize, + IN UINT64 Value + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->SpecificConfig, + TRUE, + FieldOffset, + FieldSize, + &Value + ); + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10ReadDevice ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN FieldOffset, + IN UINTN FieldSize, + IN UINTN BufferSize, + OUT VOID *Buffer + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + + if (FieldSize != BufferSize) { + return EFI_INVALID_PARAMETER; + } + + Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Status = Virtio10Transfer ( + Dev->PciIo, + &Dev->SpecificConfig, + FALSE, + FieldOffset, + FieldSize, + Buffer + ); + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10AllocateSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN Pages, + IN OUT VOID **HostAddress + ) +{ + EFI_STATUS Status = EFI_SUCCESS; + + *HostAddress = AllocatePages (Pages); + + if (*HostAddress == NULL) { + Status = EFI_OUT_OF_RESOURCES; + } + + return Status; +} + +STATIC +VOID +EFIAPI +Virtio10FreeSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN Pages, + IN VOID *HostAddress + ) +{ + FreePages(HostAddress, Pages); +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10MapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VIRTIO_MAP_OPERATION Operation, + IN VOID *HostAddress, + IN OUT UINTN *NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ) +{ + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10UnmapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VOID *Mapping + ) +{ + return EFI_SUCCESS; +} + +STATIC CONST VIRTIO_DEVICE_PROTOCOL mVirtIoTemplate = { + VIRTIO_SPEC_REVISION (1, 0, 0), + 0, // SubSystemDeviceId, filled in dynamically + Virtio10GetDeviceFeatures, + Virtio10SetGuestFeatures, + Virtio10SetQueueAddress, + Virtio10SetQueueSel, + Virtio10SetQueueNotify, + Virtio10SetQueueAlign, + Virtio10SetPageSize, + Virtio10GetQueueNumMax, + Virtio10SetQueueNum, + Virtio10GetDeviceStatus, + Virtio10SetDeviceStatus, + Virtio10WriteDevice, + Virtio10ReadDevice, + Virtio10AllocateSharedPages, + Virtio10FreeSharedPages, + Virtio10MapSharedBuffer, + Virtio10UnmapSharedBuffer +}; + +EFI_STATUS +EFIAPI +FixPciCfg ( + IN OUT PCI_CFG_SPACE *PciCfg, + IN VIRTIO_PCI_CAP_COMMON_CONFIG *PciCommonConfig +) +{ + PciCfg->PciBasicCfg.Device.Bar[0] = (UINT32) ((UINT64)PciCommonConfig); + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +ParseCapabilities ( + IN OUT VIRTIO_1_0_DEV *Device + ) +{ + EFI_STATUS Status; + PCI_CAP_DEV *PciDevice; + PCI_CAP_LIST *CapList; + UINT16 VendorInstance; + PCI_CAP *VendorCap; + + Status = PciCapPciIoDeviceInit (Device->PciIo, &PciDevice); + if (EFI_ERROR (Status)) { + return Status; + } + + Status = PciCapListInit (PciDevice, &CapList); + if (EFI_ERROR (Status)) { + goto UninitPciDevice; + } + + for (VendorInstance = 0; + !EFI_ERROR (PciCapListFindCap (CapList, PciCapNormal, + EFI_PCI_CAPABILITY_ID_VENDOR, VendorInstance, + &VendorCap)); + VendorInstance++) { + UINT8 CapLen; + VIRTIO_PCI_CAP VirtIoCap; + VIRTIO_1_0_CONFIG *ParsedConfig; + + // + // Big enough to accommodate a VIRTIO_PCI_CAP structure? + // + Status = PciCapRead (PciDevice, VendorCap, + OFFSET_OF (EFI_PCI_CAPABILITY_VENDOR_HDR, Length), &CapLen, + sizeof CapLen); + if (EFI_ERROR (Status)) { + goto UninitCapList; + } + if (CapLen < sizeof VirtIoCap) { + // + // Too small, move to next. + // + continue; + } + + // + // Read interesting part of capability. + // + Status = PciCapRead (PciDevice, VendorCap, 0, &VirtIoCap, sizeof VirtIoCap); + if (EFI_ERROR (Status)) { + goto UninitCapList; + } + + switch (VirtIoCap.ConfigType) { + case VIRTIO_PCI_CAP_COMMON_CFG: + ParsedConfig = &Device->CommonConfig; + break; + case VIRTIO_PCI_CAP_NOTIFY_CFG: + ParsedConfig = &Device->NotifyConfig; + break; + case VIRTIO_PCI_CAP_DEVICE_CFG: + ParsedConfig = &Device->SpecificConfig; + break; + default: + // + // Capability is not interesting. + // + continue; + } + + // + // Save the location of the register block into ParsedConfig. + // + Status = GetBarType (Device->PciIo, VirtIoCap.Bar, &ParsedConfig->BarType); + if (EFI_ERROR (Status)) { + goto UninitCapList; + } + ParsedConfig->Bar = VirtIoCap.Bar; + ParsedConfig->Offset = VirtIoCap.Offset; + ParsedConfig->Length = VirtIoCap.Length; + + if (VirtIoCap.ConfigType == VIRTIO_PCI_CAP_NOTIFY_CFG) { + // + // This capability has an additional field called NotifyOffsetMultiplier; + // parse it too. + // + if (CapLen < sizeof VirtIoCap + sizeof Device->NotifyOffsetMultiplier) { + // + // Too small, move to next. + // + continue; + } + + Status = PciCapRead (PciDevice, VendorCap, sizeof VirtIoCap, + &Device->NotifyOffsetMultiplier, + sizeof Device->NotifyOffsetMultiplier); + if (EFI_ERROR (Status)) { + goto UninitCapList; + } + } + + // + // Capability parsed successfully. + // + ParsedConfig->Exists = TRUE; + } + + ASSERT_EFI_ERROR (Status); + +UninitCapList: + PciCapListUninit (CapList); + +UninitPciDevice: + PciCapPciIoDeviceUninit (PciDevice); + + return Status; +} + +EFI_STATUS +EFIAPI +PciIoRead ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN EFI_PCI_IO_PROTOCOL_WIDTH Width, + IN UINT16 Offset, + IN UINT16 Count, + IN OUT UINT8 *Buffer +) { + UINT16 Len = 0; + + switch (Width) + { + case EfiPciIoWidthUint32: + Len = Count * sizeof(UINT32); + break; + case EfiPciIoWidthUint16: + Len = Count * sizeof(UINT16); + break; + case EfiPciIoWidthUint8: + Len = Count * sizeof(UINT8); + break; + default: + break; + } + + CopyMem (Buffer, (void *) ((UINT64) PciCfg + Offset), Len); + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +InitVirtioPciDevice ( + IN OUT VIRTIO_1_0_DEV *Device, + IN UINT8 *TestBuffer, + IN UINTN BufferSize, + IN EFI_PCI_IO_PROTOCOL *PciIo +) +{ + // VOID *ConfigRegion; + + // ConfigRegion = (VOID *) AllocateZeroPool (sizeof (PCI_CFG_SPACE)); + PciCfg = (PCI_CFG_SPACE *) TestBuffer; + + // CopyMem (PciCfg, (void *) TestBuffer, sizeof (PCI_CFG_SPACE)); + + PciIo->Pci.Read = &PciIoRead; + + if ((PciCfg->PciBasicCfg.Hdr.VendorId == VIRTIO_VENDOR_ID) && + (PciCfg->PciBasicCfg.Hdr.DeviceId >= 0x1040) && + (PciCfg->PciBasicCfg.Hdr.DeviceId <= 0x107F) && + (PciCfg->PciBasicCfg.Hdr.RevisionID >= 0x01) && + (PciCfg->PciBasicCfg.Device.SubsystemID >= 0x40) && + ((PciCfg->PciBasicCfg.Hdr.Status & EFI_PCI_STATUS_CAPABILITY) != 0)) + { + if (!((PciCfg->PciBasicCfg.Hdr.DeviceId != 0x1050) || !(PciCfg->PciBasicCfg.Hdr.ClassCode == PciCfg))) { + return EFI_OUT_OF_RESOURCES; + } + } + else { + return EFI_OUT_OF_RESOURCES; + } + + ParseCapabilities (Device); + + return EFI_SUCCESS; +} + + +EFI_STATUS +EFIAPI +ParseBufferAndInitVirtioPciDev10 ( + IN UINT8 *TestBuffer, + IN UINTN BufferSize, + IN VOID *ConfigRegion, + IN OUT VIRTIO_1_0_DEV *Device +) +{ + EFI_STATUS Status; + EFI_PCI_IO_PROTOCOL *PciIo; + VIRTIO_BLK_CONFIG *BlkConfig; + VIRTIO_PCI_CAP_COMMON_CONFIG *PciCommonConfig; + VOID *PciNotifyConfig; + // VOID *ConfigRegion; + + // ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG) + sizeof (VIRTIO_BLK_CONFIG) + 0x100); + if (ConfigRegion == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + if (BufferSize != sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG) + sizeof (VIRTIO_BLK_CONFIG)) { + goto FreeDevice; + } + + Device->Signature = VIRTIO_1_0_SIGNATURE; + CopyMem (&Device->VirtIo, &mVirtIoTemplate, sizeof (VIRTIO_DEVICE_PROTOCOL)); + + PciCfg = (PCI_CFG_SPACE *) ConfigRegion; + PciCommonConfig = (VIRTIO_PCI_CAP_COMMON_CONFIG *) ((UINT64) ConfigRegion + sizeof (PCI_CFG_SPACE)); + BlkConfig = (VIRTIO_BLK_CONFIG *) ((UINT64) ConfigRegion + sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG)); + PciNotifyConfig = (VOID *) ((UINT64) ConfigRegion + sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG) + sizeof (VIRTIO_BLK_CONFIG)); + + CopyMem (PciCfg, (void *) TestBuffer, sizeof (PCI_CFG_SPACE)); + + CopyMem (PciCommonConfig, + (void *) ((UINT64)TestBuffer + sizeof (PCI_CFG_SPACE)), + sizeof (VIRTIO_PCI_CAP_COMMON_CONFIG)); + + CopyMem (BlkConfig, + (void *) ((UINT64)TestBuffer + sizeof (PCI_CFG_SPACE) + sizeof (VIRTIO_PCI_CAP_COMMON_CONFIG)), + sizeof (VIRTIO_BLK_CONFIG)); + + if ((PciCfg->PciBasicCfg.Hdr.VendorId == VIRTIO_VENDOR_ID) && + (PciCfg->PciBasicCfg.Hdr.DeviceId >= 0x1040) && + (PciCfg->PciBasicCfg.Hdr.DeviceId <= 0x107F) && + (PciCfg->PciBasicCfg.Hdr.RevisionID >= 0x01) && + (PciCfg->PciBasicCfg.Device.SubsystemID >= 0x40) && + ((PciCfg->PciBasicCfg.Hdr.Status & EFI_PCI_STATUS_CAPABILITY) != 0)) + { + if (!((PciCfg->PciBasicCfg.Hdr.DeviceId != 0x1050) || !(PciCfg->PciBasicCfg.Hdr.ClassCode == PciCfg))) { + goto FreeDevice; + } + } + else { + goto FreeDevice; + } + + PciCfg->PciBasicCfg.Device.Bar[0] = (UINT32) ((UINT64)PciCommonConfig); + PciCfg->PciBasicCfg.Device.Bar[1] = (UINT32) ((UINT64)PciCommonConfig >> 32); + + Device->VirtIo.SubSystemDeviceId = PciCfg->PciBasicCfg.Hdr.DeviceId - 0x1040; + + Device->CommonConfig.Offset = 0; + Device->CommonConfig.Bar = 0; + Device->CommonConfig.Exists = TRUE; + Device->CommonConfig.Length = sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG); + + Device->NotifyConfig.Offset = sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG) + sizeof (VIRTIO_BLK_CONFIG); + Device->NotifyConfig.Bar = 0; + Device->NotifyConfig.Exists = TRUE; + Device->NotifyConfig.Length = 0x100; + + Device->SpecificConfig.Offset = sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG); + Device->SpecificConfig.Bar = 0; + Device->SpecificConfig.Exists = TRUE; + Device->SpecificConfig.Length = sizeof (VIRTIO_BLK_CONFIG); + + // if (Device->NotifyConfig.Length < (Device->CommonConfig.Offset * Device->NotifyOffsetMultiplier + 4)) { + // goto FreeDevice; + // } + + return EFI_SUCCESS; + +FreeDevice: + // FreePool (ConfigRegion); + + return EFI_OUT_OF_RESOURCES; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.inf new file mode 100644 index 0000000..3835167 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.inf @@ -0,0 +1,39 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = VirtioPciDevice10StubLib + FILE_GUID = 1C7BD2C1-C26C-764C-0927-D8BF49A30DDA + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = VirtioPciDevice10StubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + VirtioPciDevice10StubLib.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + UefiPciCapPciIoLib + BasePciCapLib + OrderedCollectionLib \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.c b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.c new file mode 100644 index 0000000..94cbb08 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.c @@ -0,0 +1,404 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +PCI_CFG_SPACE *PciCfg; + +VOID +EFIAPI +PrintByByte(UINT8* Content, UINT32 Len) { + UINT32 i; + for (i = 0; i < Len; i++) { + if (i % 16 == 0) printf ("\n"); + printf ("%02x ", Content[i]); + } + printf ("\n"); +} + +EFI_STATUS +EFIAPI +VirtioPciIoRead ( + IN VIRTIO_PCI_DEVICE *Dev, + IN UINTN FieldOffset, + IN UINTN FieldSize, + IN UINTN BufferSize, + OUT VOID *Buffer + ); + +EFI_STATUS +EFIAPI +VirtioPciIoWrite ( + IN VIRTIO_PCI_DEVICE *Dev, + IN UINTN FieldOffset, + IN UINTN FieldSize, + IN UINT64 Value + ); + +/******************************************** + * PCI Functions for VIRTIO_DEVICE_PROTOCOL + *******************************************/ +EFI_STATUS +EFIAPI +VirtioPciDeviceRead ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN FieldOffset, + IN UINTN FieldSize, + IN UINTN BufferSize, + OUT VOID *Buffer + ); + +EFI_STATUS +EFIAPI +VirtioPciDeviceWrite ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN FieldOffset, + IN UINTN FieldSize, + IN UINT64 Value + ); + +EFI_STATUS +EFIAPI +VirtioPciGetDeviceFeatures ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT64 *DeviceFeatures + ); + +EFI_STATUS +EFIAPI +VirtioPciGetQueueSize ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT16 *QueueNumMax + ); + +EFI_STATUS +EFIAPI +VirtioPciSetQueueAlignment ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT32 Alignment + ); + +EFI_STATUS +EFIAPI +VirtioPciSetPageSize ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT32 PageSize + ); + +EFI_STATUS +EFIAPI +VirtioPciGetDeviceStatus ( + IN VIRTIO_DEVICE_PROTOCOL *This, + OUT UINT8 *DeviceStatus + ); + +EFI_STATUS +EFIAPI +VirtioPciSetGuestFeatures ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT64 Features + ); + +EFI_STATUS +EFIAPI +VirtioPciSetQueueAddress ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VRING *Ring, + IN UINT64 RingBaseShift + ); + +EFI_STATUS +EFIAPI +VirtioPciSetQueueSel ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Sel + ); + +EFI_STATUS +EFIAPI +VirtioPciSetQueueNotify ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Index + ); + +EFI_STATUS +EFIAPI +VirtioPciSetQueueSize ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT16 Size + ); + +EFI_STATUS +EFIAPI +VirtioPciSetDeviceStatus ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINT8 DeviceStatus + ); + +EFI_STATUS +EFIAPI +VirtioPciAllocateSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN NumPages, + OUT VOID **HostAddress + ); + +VOID +EFIAPI +VirtioPciFreeSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN NumPages, + IN VOID *HostAddress + ); + +EFI_STATUS +EFIAPI +VirtioPciMapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VIRTIO_MAP_OPERATION Operation, + IN VOID *HostAddress, + IN OUT UINTN *NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ); + +EFI_STATUS +EFIAPI +VirtioPciUnmapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VOID *Mapping + ); + +EFI_STATUS +EFIAPI +PciIoRead ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN EFI_PCI_IO_PROTOCOL_WIDTH Width, + IN UINT8 BAR_IDX, + IN UINT16 Offset, + IN UINT16 Count, + IN OUT UINT8 *Buffer +) { + UINT16 Len = 0; + + switch (Width) + { + case EfiPciIoWidthUint32: + Len = Count * sizeof(UINT32); + break; + case EfiPciIoWidthUint16: + Len = Count * sizeof(UINT16); + break; + case EfiPciIoWidthUint8: + Len = Count * sizeof(UINT8); + break; + default: + break; + } + CopyMem (Buffer, (void *) ((UINT64) (PciCfg->PciBasicCfg.Device.Bar[1]) << 32 | PciCfg->PciBasicCfg.Device.Bar[0] + Offset), Len); + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +PciIoWrite ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN EFI_PCI_IO_PROTOCOL_WIDTH Width, + IN UINT8 BAR_IDX, + IN UINT16 Offset, + IN UINT16 Count, + IN OUT UINT8 *Buffer +) { + UINT16 Len = 0; + + switch (Width) + { + case EfiPciIoWidthUint32: + Len = Count * sizeof(UINT32); + break; + case EfiPciIoWidthUint16: + Len = Count * sizeof(UINT16); + break; + case EfiPciIoWidthUint8: + Len = Count * sizeof(UINT8); + break; + default: + break; + } + CopyMem ((void *) ((UINT64) (PciCfg->PciBasicCfg.Device.Bar[1]) << 32 | PciCfg->PciBasicCfg.Device.Bar[0] + Offset), Buffer, Len); + return EFI_SUCCESS; +} + +STATIC VIRTIO_DEVICE_PROTOCOL mDeviceProtocolTemplate = { + 0, // Revision + 0, // SubSystemDeviceId + VirtioPciGetDeviceFeatures, // GetDeviceFeatures + VirtioPciSetGuestFeatures, // SetGuestFeatures + VirtioPciSetQueueAddress, // SetQueueAddress + VirtioPciSetQueueSel, // SetQueueSel + VirtioPciSetQueueNotify, // SetQueueNotify + VirtioPciSetQueueAlignment, // SetQueueAlignment + VirtioPciSetPageSize, // SetPageSize + VirtioPciGetQueueSize, // GetQueueNumMax + VirtioPciSetQueueSize, // SetQueueNum + VirtioPciGetDeviceStatus, // GetDeviceStatus + VirtioPciSetDeviceStatus, // SetDeviceStatus + VirtioPciDeviceWrite, // WriteDevice + VirtioPciDeviceRead, // ReadDevice + VirtioPciAllocateSharedPages, // AllocateSharedPages + VirtioPciFreeSharedPages, // FreeSharedPages + VirtioPciMapSharedBuffer, // MapSharedBuffer + VirtioPciUnmapSharedBuffer, // UnmapSharedBuffer +}; + +EFI_STATUS +EFIAPI +InitVirtioPciDev ( + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN VOID *ConfigRegion, + IN OUT VIRTIO_PCI_DEVICE *Device +) { + // VOID *ConfigRegion; + + // ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_HDR) + sizeof (VIRTIO_BLK_CONFIG)); + if (ConfigRegion == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Device->Signature = VIRTIO_PCI_DEVICE_SIGNATURE; + // + // Copy protocol template + // + CopyMem (&Device->VirtioDevice, &mDeviceProtocolTemplate, sizeof (VIRTIO_DEVICE_PROTOCOL)); + + PciCfg = (PCI_CFG_SPACE *) ConfigRegion; + + //This test expects this binary file to exist in the current execution folder + FILE *f = fopen("VirtioBlkFuzzSeed0.9.5.bin", "rb"); + if (f==NULL) { + fputs ("File error",stderr); + goto FreeDevice; + } + + fseek(f, 0, SEEK_END); + + long int fsize = ftell(f); + rewind(f); + if (fsize<0) { + fputs ("Error on reading file size",stderr); + fclose(f); + goto FreeDevice; + } + + size_t bytes_read = fread((void *)ConfigRegion, 1, (size_t)fsize, f); + fclose(f); + if ((UINTN)bytes_read!=fsize) { + fputs ("File error",stderr); + goto FreeDevice; + } + + PciCfg->PciBasicCfg.Device.Bar[0] = (UINT32) ((UINT64)PciCfg + sizeof(PCI_CFG_SPACE)); + PciCfg->PciBasicCfg.Device.Bar[1] = (UINT32) (((UINT64)PciCfg + sizeof(PCI_CFG_SPACE)) >> 32); + + Device->VirtioDevice.SubSystemDeviceId = PciCfg->PciBasicCfg.Device.SubsystemID; + + PciIo->Io.Read = &PciIoRead; + PciIo->Io.Write = &PciIoWrite; + Device->PciIo = PciIo; + + // + // Note: We don't support the MSI-X capability. If we did, + // the offset would become 24 after enabling MSI-X. + // + Device->DeviceSpecificConfigurationOffset = VIRTIO_DEVICE_SPECIFIC_CONFIGURATION_OFFSET_PCI; + + return EFI_SUCCESS; + +FreeDevice: + // FreePool (ConfigRegion); + + return EFI_OUT_OF_RESOURCES; +} + +EFI_STATUS +EFIAPI +ParseBufferAndInitVirtioPciDev ( + IN UINT8 *TestBuffer, + IN UINTN BufferSize, + IN EFI_PCI_IO_PROTOCOL *PciIo, + IN VOID *ConfigRegion, + IN OUT VIRTIO_PCI_DEVICE *Device +) +{ + VIRTIO_HDR *VirtioHdr; + + + // ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_HDR) + sizeof (VIRTIO_BLK_CONFIG)); + if (ConfigRegion == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + if (BufferSize != sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_HDR) + sizeof (VIRTIO_BLK_CONFIG)) { + goto FreeDevice; + } + + Device->Signature = VIRTIO_PCI_DEVICE_SIGNATURE; + + PciCfg = (PCI_CFG_SPACE *) ConfigRegion; + + // + // Copy protocol template + // + CopyMem (&Device->VirtioDevice, &mDeviceProtocolTemplate, sizeof (VIRTIO_DEVICE_PROTOCOL)); + + CopyMem ((void *)PciCfg, (void *) TestBuffer, sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_HDR) + sizeof (VIRTIO_BLK_CONFIG)); + + Device->VirtioDevice.Revision = VIRTIO_SPEC_REVISION (0, 9, 5); + Device->VirtioDevice.SubSystemDeviceId = PciCfg->PciBasicCfg.Device.SubsystemID; + + // + // virtio-0.9.5, 2.1 PCI Discovery + // + if (!((PciCfg->PciBasicCfg.Hdr.VendorId == VIRTIO_VENDOR_ID) && + (PciCfg->PciBasicCfg.Hdr.DeviceId >= 0x1000) && + (PciCfg->PciBasicCfg.Hdr.DeviceId <= 0x103F) && + (PciCfg->PciBasicCfg.Hdr.RevisionID == 0x00))) { + goto FreeDevice; + } + + PciCfg->PciBasicCfg.Device.Bar[0] = (UINT32) ((UINT64)PciCfg + sizeof(PCI_CFG_SPACE)); + PciCfg->PciBasicCfg.Device.Bar[1] = (UINT32) (((UINT64)PciCfg + sizeof(PCI_CFG_SPACE)) >> 32); + + Device->VirtioDevice.SubSystemDeviceId = PciCfg->PciBasicCfg.Device.SubsystemID; + + PciIo->Io.Read = &PciIoRead; + PciIo->Io.Write = &PciIoWrite; + Device->PciIo = PciIo; + + // + // Note: We don't support the MSI-X capability. If we did, + // the offset would become 24 after enabling MSI-X. + // + Device->DeviceSpecificConfigurationOffset = VIRTIO_DEVICE_SPECIFIC_CONFIGURATION_OFFSET_PCI; + + return EFI_SUCCESS; + +FreeDevice: + return EFI_OUT_OF_RESOURCES; +} diff --git a/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.inf b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.inf new file mode 100644 index 0000000..3ebb1cc --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.inf @@ -0,0 +1,36 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = VirtioPciDeviceStubLib + FILE_GUID = 1C7BD2C1-C26C-764C-0927-D8BF49A30DDA + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = VirtioPciDeviceStubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + VirtioPciDeviceStubLib.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib diff --git a/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec b/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec new file mode 100644 index 0000000..af0e2d0 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dec @@ -0,0 +1,15 @@ +## @file UefiHostFuzzTestCasePkg.dec +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION = 0x00010005 + PACKAGE_NAME = UefiHostFuzzTestCasePkg + PACKAGE_GUID = C8C2F32C-35BC-4D74-9467-178BC9325EBE + PACKAGE_VERSION = 0.11 + +[Includes.common] + TestStub/Include diff --git a/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc b/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc new file mode 100644 index 0000000..4f8bd6d --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc @@ -0,0 +1,296 @@ +## @file UefiHostTestPkg.dsc +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = UefiHostFuzzTestCasePkg + PLATFORM_GUID = 9497CEE4-EEEB-4B38-B0EF-03E01920F040 + PLATFORM_VERSION = 0.11 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/UefiHostFuzzTestCasePkg + SUPPORTED_ARCHITECTURES = IA32|X64 + BUILD_TARGETS = DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER = DEFAULT + + DEFINE TEST_WITH_INSTRUMENT = FALSE + +[LibraryClasses] + BaseLib|UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf + CacheMaintenanceLib|UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/BaseCacheMaintenanceLibHost.inf + BaseMemoryLib|UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf + MemoryAllocationLib|UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf + DebugLib|UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf + UefiBootServicesTableLib|UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf + HobLib|UefiHostTestPkg/Library/HobLibHost/HobLibHost.inf + SmmMemLib|UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf + SmmMemLibStubLib|UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf + DevicePathLib|UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf + DxeServicesTableLib|UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.inf + UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf + SmmServicesTableLib|UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf + MmServicesTableLib|UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + PeiServicesTablePointerLib|UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.inf + UefiDriverEntryPoint|UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf + PeimEntryPoint|UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.inf + ToolChainHarnessLib|UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf + + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf + ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf + SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf + SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf + PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf + DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf + TimerLib|UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.inf + + UefiLib|MdePkg/Library/UefiLib/UefiLib.inf + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf + + SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf + + DiskStubLib|UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.inf + Usb2HcStubLib|UefiHostFuzzTestCasePkg/TestStub/Usb2HcStubLib/Usb2HcStubLib.inf + Usb2HcPpiStubLib|UefiHostFuzzTestCasePkg/TestStub/Usb2HcPpiStubLib/Usb2HcPpiStubLib.inf + UsbIoPpiStubLib|UefiHostFuzzTestCasePkg/TestStub/UsbIoPpiStubLib/UsbIoPpiStubLib.inf + Tcg2StubLib|UefiHostFuzzTestCasePkg/TestStub/Tcg2StubLib/Tcg2StubLib.inf + # Add below libs due to Edk2 update + VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf + VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf +!if $(TEST_WITH_INSTRUMENT) + IniParsingLib|UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.inf + NULL|UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf + InstrumentHookLib|UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.inf +!endif + +!if $(TEST_WITH_KLEE) + BaseLib|UefiHostTestPkg/Library/BaseLibHost/BaseLibHostNoAsm.inf +!endif + +[LibraryClasses.common.USER_DEFINED] + +[Components] +!if $(TEST_WITH_INSTRUMENT) + UefiHostFuzzTestCasePkg/TestStub/DiskStubLib/DiskStubLib.inf { + + MSFT: *_*_*_CC_FLAGS = /Gh /GH /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 -finstrument-functions + } + UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf { + + MSFT: *_*_*_CC_FLAGS = /Gh /GH /Od /GL- + GCC:*_*_*_CC_FLAGS = -O0 -finstrument-functions + } + UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf { + + MSFT: *_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + GCC:*_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + } +!endif + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/TestPartition.inf { + + NULL|MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf +!if $(TEST_WITH_INSTRUMENT) + + MSFT: *_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + GCC:*_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + + InstrumentHookLib|UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/PartitionDxe/InstrumentHookLibTestPartition/InstrumentHookLibTestPartition.inf +!endif + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestUdf.inf { + + NULL|MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf +!if $(TEST_WITH_INSTRUMENT) + + MSFT: *_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + GCC:*_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + + InstrumentHookLib|UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/InstrumentHookLibTestUdf/InstrumentHookLibTestUdf.inf +!endif + } + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Disk/UdfDxe/TestFileName.inf { + + NULL|MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib/TestBmpSupportLib.inf { + + BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/CapsulePei/Common/TestCapsulePei.inf { + + NULL|MdeModulePkg/Universal/CapsulePei/CapsulePei.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Universal/Variable/RuntimeDxe/TestVariableSmm.inf { + + NULL|MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf + NULL|UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.inf + AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf + VarCheckLib|UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.inf + VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/Tpm2CommandLib/TestTpm2CommandLib.inf { + + Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf + Tpm2DeviceLib|UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf + Tpm2DeviceStubLib|UefiHostFuzzTestCasePkg/TestStub/Tpm2DeviceLibStub/Tpm2DeviceLibStub.inf + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusDxe/TestUsb.inf { + + NULL|MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf + } + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Usb/UsbBusPei/TestPeiUsb.inf { + + NULL|MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf + } + + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/TestFmpAuthenticationLibPkcs7.inf { + + FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf + BaseCryptLib|UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf + } + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/TestFmpAuthenticationLibRsa2048Sha256.inf { + + FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.inf + BaseCryptLib|UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/CryptoLibStubRsa2048Sha256.inf + } + + UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/TestPeiGpt.inf { + + NULL|UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/Override/FatPei.inf +!if $(TEST_WITH_INSTRUMENT) + + MSFT: *_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + GCC:*_*_*_CC_FLAGS = "-DTEST_WITH_INSTRUMENT=TRUE" + + InstrumentHookLib|UefiHostFuzzTestCasePkg/TestCase/FatPkg/FatPei/InstrumentHookLibTestPeiGpt/InstrumentHookLibTestPeiGpt.inf +!endif + } + + UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/TestIdentifyAtaDevice.inf{ + + NULL|UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Bus/Ata/AhciPei/Override/AhciPei.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf + PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf + TdxLib|MdePkg/Library/TdxLib/TdxLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + RegisterFilterLib|MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf + } + + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasureGptTable.inf{ + + NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib.inf + BaseCryptLib|UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf + PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf + SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/DxeTpm2MeasureBootLib/TestTcg2MeasurePeImage.inf{ + + NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib.inf + BaseCryptLib|UefiHostFuzzTestCasePkg/TestCase/SecurityPkg/Library/FmpAuthenticationLibPkcs7/CryptoLibStubPkcs7.inf + PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf + SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + } + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/EmuVariableFvbRuntimeDxe/TestValidateTdxCfv.inf{ + + NULL|OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf + CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + PeiHardwareInfoLib|OvmfPkg/Library/HardwareInfoLib/PeiHardwareInfoLib.inf + RegisterFilterLib|MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf + #UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf + LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf + CcExitLib|OvmfPkg/Library/CcExitLib/CcExitLib.inf + MemEncryptTdxLib|OvmfPkg/Library/BaseMemEncryptTdxLib/BaseMemEncryptTdxLib.inf + MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf + CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf + PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf + PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf + TdxLib|MdePkg/Library/TdxLib/TdxLib.inf + PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf + MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf + QemuFwCfgSimpleParserLib|OvmfPkg/Library/QemuFwCfgSimpleParserLib/QemuFwCfgSimpleParserLib.inf + QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf + IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf + PlatformInitLib|OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioPciDeviceDxe/TestVirtioPciDevice.inf{ + + UefiPciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + BasePciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf + VirtioPciDevice10StubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.inf + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.inf{ + + NULL|OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + UefiPciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf + BasePciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf + VirtioBlkStubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf + VirtioPciDevice10StubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioPciDevice10StubLib/VirtioPciDevice10StubLib.inf + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.inf{ + + NULL|OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + NULL|OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + VirtioBlkStubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf + VirtioPciDevice10StubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.inf + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + } + + UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkReadWrite/TestVirtioBlkReadWrite.inf{ + + NULL|OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + NULL|OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + VirtioBlkStubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioBlkStubLib/VirtioBlkStubLib.inf + VirtioPciDevice10StubLib|UefiHostFuzzTestCasePkg/TestStub/VirtioPciDeviceStubLib/VirtioPciDeviceStubLib.inf + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + } + + [PcdsDynamicDefault] + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0 + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0 + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0 + [PcdsFixedAtBuild] + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize|0x002000 +!include UefiHostFuzzTestPkg/UefiHostFuzzTestBuildOption.dsc diff --git a/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestDeviceSecurityPkg.dsc b/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestDeviceSecurityPkg.dsc new file mode 100644 index 0000000..937de65 --- /dev/null +++ b/HBFA/UefiHostFuzzTestCasePkg/UefiHostFuzzTestDeviceSecurityPkg.dsc @@ -0,0 +1,83 @@ +## @file UefiHostFuzzTestCasePkg +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = UefiHostFuzzTestDeviceSecurityPkg + PLATFORM_GUID = 9497CEE4-EEEB-4B38-B0EF-03E01920F042 + PLATFORM_VERSION = 0.11 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/UefiHostFuzzTestDeviceSecurityPkg + SUPPORTED_ARCHITECTURES = IA32|X64 + BUILD_TARGETS = DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER = DEFAULT + + DEFINE TEST_WITH_INSTRUMENT = FALSE + +[LibraryClasses] + BaseLib|UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf + BaseMemoryLib|UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf + MemoryAllocationLib|UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf + DebugLib|UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf + UefiBootServicesTableLib|UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf + DevicePathLib|UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf + DxeServicesTableLib|UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.inf + UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf + SmmServicesTableLib|UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf + MmServicesTableLib|UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf + UefiDriverEntryPoint|UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf + ToolChainHarnessLib|UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf + + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf + ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf + SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf + PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf + DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf + TimerLib|UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.inf + + UefiLib|MdePkg/Library/UefiLib/UefiLib.inf + SmmServicesTableLib|UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf + MmServicesTableLib|UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + PeiServicesTablePointerLib|UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.inf + UefiDriverEntryPoint|UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf + PeimEntryPoint|UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.inf + ToolChainHarnessLib|UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf + SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf + + RngLib|MdePkg/Library/BaseRngLibNull/BaseRngLibNull.inf + TestSignListLib|DeviceSecurityPkg/Library/TestSignListLib/TestSignListLib.inf + SpdmSecuredMessageLib|DeviceSecurityPkg/Library/SpdmLib/SpdmSecuredMessageLib.inf + MemLibWrapper|DeviceSecurityPkg/Library/OsStub/MemLibWrapper/MemLibWrapper.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFull.inf + #BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf + SpdmCommonLib|DeviceSecurityPkg/Library/SpdmLib/SpdmCommonLib.inf + SpdmCryptLib|DeviceSecurityPkg/Library/SpdmLib/SpdmCryptLib.inf + SpdmDeviceSecretLib|DeviceSecurityPkg/Library/SpdmLib/SpdmDeviceSecretLibNull.inf + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + CryptlibWrapper|DeviceSecurityPkg/Library/OsStub/CryptlibWrapper/CryptlibWrapper.inf + +!if $(TEST_WITH_INSTRUMENT) + IniParsingLib|UefiInstrumentTestPkg/Library/IniParsingLib/IniParsingLib.inf + NULL|UefiInstrumentTestPkg/Library/InstrumentLib/InstrumentLib.inf + InstrumentHookLib|UefiInstrumentTestPkg/Library/InstrumentHookLibNull/InstrumentHookLibNull.inf +!endif + +!if $(TEST_WITH_KLEE) + BaseLib|UefiHostTestPkg/Library/BaseLibHost/BaseLibHostNoAsm.inf +!endif + +[LibraryClasses.common.USER_DEFINED] + +[PcdsFixedAtBuild] + #gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled|TRUE + +[Components] + UefiHostFuzzTestCasePkg/TestCase/DeviceSecurityPkg/TestSignatureList/TestSignatureList.inf +!include UefiHostFuzzTestPkg/UefiHostFuzzTestBuildOption.dsc diff --git a/HBFA/UefiHostFuzzTestPkg/Conf/LLVMLink.py b/HBFA/UefiHostFuzzTestPkg/Conf/LLVMLink.py new file mode 100644 index 0000000..919802a --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/Conf/LLVMLink.py @@ -0,0 +1,90 @@ +# @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import subprocess +import sys +from shutil import which +import argparse + +# python version +python_version = sys.version_info[0] + + +def GetObjFile(TargetPath): + ObjFileList = [] + static_library_files = open(os.path.join(TargetPath, + r'static_library_files.lst'), 'r') + static_library_files_list = static_library_files.readlines() + static_library_files.close() + + for file in static_library_files_list: + object_files = open(os.path.join(os.path.dirname(file.replace( + '.lib\n', '.lib')), r'object_files.lst'), 'r') + object_files_list = object_files.readlines() + object_files.close() + for objfile in object_files_list: + ObjFileList.append(objfile.replace('.obj\n', '.obj')) + + return ObjFileList + + +def VerifyCommand(command): + # Find full path of command binary / verity it is present + # return command with full path + try: + full_path_command = which(command) + except FileNotFoundError as e: + print(f"[!] Error finding command binary on system: {e}") + exit(1) + return full_path_command + + +def GenerateCommand(Command, Flags, InputFileList, OutputFile): + Template = " -o " + InputFile = ' '.join(InputFileList) + VerifiedCommand = VerifyCommand(Command) + CommandLine = Template.replace("", VerifiedCommand).replace( + "", Flags).replace("", InputFile).replace( + "", OutputFile) + print(CommandLine) + return CommandLine + + +def CallCommand(CommandLine): + CommandList = [item for item in CommandLine.split(' ') if len(item) > 0] + Cm = subprocess.Popen(CommandList, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=False) + msg = Cm.communicate() + for m in msg: + print(m) + + +if __name__ == '__main__': + # # # Opt Parser + parse = argparse.ArgumentParser() + parse.add_argument("-o", dest="output", + help="output file name", default=None) + parse.add_argument("-d", dest="targetpath", + help="target path", default=None) + parse.add_argument("-t", dest="tool", + help="the tool you use", default=None) + options = parse.parse_args(sys.argv[1:]) + if options.tool: + if options.targetpath: + if options.output: + CallCommand(GenerateCommand(options.tool, "", + GetObjFile(options.targetpath), + options.output)) + else: + raise Exception("Please input -o output file name") + else: + raise Exception("Plesase input -d target file path") + else: + raise Exception("Please input -t tool you use.") diff --git a/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.customized b/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.customized new file mode 100644 index 0000000..660b496 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.customized @@ -0,0 +1,646 @@ +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    +# Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +## Syntax +# +# "*" is used to indicate that the source files will be processed at the same time. +# "?" is used to indicate that the source files will be processed one by one. +# +# "[" [.][.][, [.][.]] "]" +# ]> +# (?|*). [(\n|,) (?|*).] +# +# ]> +# +# +# +# +# +# ]> +# +# [] +# +# is the MODULE_TYPE in EDK2 or COMPONENT_TYPE in EDK. +# Missing will cause an exception and break build. +# Missing will cause that related build target won't be generated but +# won't break build. +# + +## Placeholders for string substitution +# +# ${src} Source file(s) to be built (full path) +# ${s_path} Source file directory (absolute path) +# ${s_dir} Source file relative directory within a module +# (Note: ${s_dir} is always equals to "." if source file is given in absolute path.) +# ${s_name} Source file name without path +# ${s_base} Source file name without extension and path +# ${s_ext} Source file extension +# +# ${dst} Destination file(s) built from ${src} (full path) +# ${d_path} Destination file directory (absolute path) +# ${d_name} Destination file name without path +# ${d_base} Destination file name without extension and path +# ${d_ext} Destination file extension +# +# (+) Directory separator +# + +## Macro +# $(WORKSPACE) Workspace directory +# $(OUTPUT_DIR) Directory for intermediate files for building a module +# $(DEBUG_DIR) Directory for files used to debug a module +# $(BUILD_DIR) All files for building a platform will be put in this directory +# $(BIN_DIR) Common directory for executable files +# $(FV_DIR) Directory to store flash image files +# $(INC) Search path of current module +# $(NASM_INC) Search nasm file path of current module +# $(INC_LIST) A file containing search paths of current module +# $(LIBS) Static library files of current module +# $(_FLAGS) Tools flags of current module +# $(MODULE_NAME) Current module name +# $(MODULE_NAME_GUID) Current module name with module FILE_GUID if same $(MODULE_NAME) exists +# in different modules, otherwise its value is same as $(MODULE_NAME) +# $(MODULE_TYPE) Current module type +# $(MODULE_GUID) Current module guid +# $(ARCH) Architecture of current module +# $(TOOLCHAIN) Toolchain used to build current module +# $(TARGET) Target of current module (DEBUG/RELEASE) +# $() Path of tool +# $(EDK_TOOLS_PATH) Path of build tools +# $() File list of each file type +# (Note: The macro name is derived from file type name. For example, +# C-Code-File will have C_CODE_FILES macro.) +# $() Macro point to a file containing list of files of a file type +# ( +# Note: The macro and file name are derived from file type name. +# For example, C-Code-File will have C_CODE_FILES_LIST macro pointing +# to $(OUTPUT_DIR)/c_code_files.lst. The list file and macro name +# will be generated only when this macro is used in command line. +# This is intended to get over the long command line limitation. +# ) +# +# $(CP) copy command +# $(MV) move command +# $(RM) delete command +# $(MD) create dir command +# $(RD) remove dir command +# + +## Reserved File-Type +# +# Don't change following names of file types and their associated files, +# which are also used in tools' code +# +# C-Code-File +# C-Header-File +# Dynamic-Library-File +# Static-Library-File +# Visual-Form-Representation-File +# Unicode-Text-File +# + +## Build Rule Version Number +# build_rule_version=0.1 +# + +[C-Code-File] + + ?.c + ?.C + ?.cc + ?.CC + ?.cpp + ?.Cpp + ?.CPP + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + + "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src} + + + # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues + "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src} + + + "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src} + +[C-Code-File.BASE.AARCH64,C-Code-File.SEC.AARCH64,C-Code-File.PEI_CORE.AARCH64,C-Code-File.PEIM.AARCH64,C-Code-File.BASE.ARM,C-Code-File.SEC.ARM,C-Code-File.PEI_CORE.ARM,C-Code-File.PEIM.ARM] + + ?.c + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + + "$(CC)" $(CC_FLAGS) $(CC_XIPFLAGS) -c -o ${dst} $(INC) ${src} + +[C-Header-File] + + *.h, *.H + + + + + +[Assembly-Code-File.COMMON.COMMON] + + ?.asm, ?.Asm, ?.ASM + + + ?.S, ?.s + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues + "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iii + +[Assembly-Code-File.COMMON.ARM,Assembly-Code-File.COMMON.AARCH64] + # Remove --convert-hex for ARM as it breaks MSFT assemblers + + ?.asm, ?.Asm, ?.ASM + + + ?.S, ?.s + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --source-code --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues + "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iii + +[Nasm-Assembly-Code-File.COMMON.COMMON] + + ?.nasm + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + "$(NASM)" -I${s_path}(+) $(NASM_INC) $(NASM_FLAGS) -o $dst ${d_path}(+)${s_base}.iii + +[Device-Tree-Source-File] + + ?.dts + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dtb + + + "$(DTCPP)" $(DTCPP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + "$(DTC)" $(DTC_FLAGS) -I dts -O dtb -o ${dst} ${d_path}(+)${s_base}.i + +[Visual-Form-Representation-File] + + ?.vfr + ?.Vfr + ?.VFR + + + $(MAKE_FILE) + + + $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c + + + "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_base}.i + "$(VFR)" $(VFR_FLAGS) --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_base}.i + +[Object-File] + + *.obj + *.o + + + $(OUTPUT_DIR)(+)$(MODULE_NAME).lib + + + "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} @$(OBJECT_FILES_LIST) + + + $(RM) ${dst} + "$(SLINK)" cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST) + + + "$(SLINK)" $(SLINK_FLAGS) ${dst} --via $(OBJECT_FILES_LIST) + + + # $(OBJECT_FILES_LIST) has wrong paths for cygwin + "$(SLINK)" $(SLINK_FLAGS) ${dst} $(OBJECT_FILES) + + + "$(SLINK)" $(SLINK_FLAGS) ${dst} -filelist $(OBJECT_FILES_LIST) + +[Static-Library-File] + + *.lib + + + $(MAKE_FILE) + + + $(DEBUG_DIR)(+)$(MODULE_NAME).dll + + + "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK2_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) + "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) + + + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(DLINK2_FLAGS) + "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst} + + + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + + #$(STATIC_LIBRARY_FILES_LIST) has wrong paths for cygwin + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS) + + + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + +[Static-Library-File.SEC.AARCH64, Static-Library-File.PEI_CORE.AARCH64, Static-Library-File.PEIM.AARCH64,Static-Library-File.SEC.ARM, Static-Library-File.PEI_CORE.ARM, Static-Library-File.PEIM.ARM] + + *.lib + + + $(MAKE_FILE) + + + $(DEBUG_DIR)(+)$(MODULE_NAME).dll + + + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_XIPFLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(CC_XIPFLAGS) $(DLINK2_FLAGS) + "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst} + + +[Static-Library-File.USER_DEFINED, Static-Library-File.HOST_APPLICATION] + + *.lib + + + $(MAKE_FILE) + + + $(DEBUG_DIR)(+)$(MODULE_NAME) + + + "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) + + + "$(DLINK)" $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(DLINK2_FLAGS) + + + echo $(STATIC_LIBRARY_FILES_LIST) + python $(SCRIPT_PATH) ${DLINK_FLAGS} -t $(DLINK) -d $(OUTPUT_DIR) + + + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + + #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS) + + + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + +[Dynamic-Library-File] + + ?.dll + + + $(OUTPUT_DIR)(+)$(MODULE_NAME).efi + + + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS) + $(CP) ${dst} $(DEBUG_DIR) + $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi + -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) + -$(CP) $(DEBUG_DIR)(+)*.pdb $(OUTPUT_DIR) + + $(CP) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).debug + $(OBJCOPY) --strip-unneeded -R .eh_frame ${src} + + # + #The below 2 lines are only needed for UNIXGCC tool chain, which generates PE image directly + # + -$(OBJCOPY) $(OBJCOPY_ADDDEBUGFLAG) ${src} + -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR)(+)$(MODULE_NAME_GUID).debug + + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS) + $(CP) ${dst} $(DEBUG_DIR) + $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi + -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) + + + # tool to convert Mach-O to PE/COFF + "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff + # create symbol file for GDB debug + -$(DSYMUTIL) ${src} + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS) + $(CP) ${dst} $(DEBUG_DIR) + $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi + -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) + +[Dependency-Expression-File] + + ?.dxs, ?.Dxs, ?.DXS + + + $(OUTPUT_DIR)(+)$(MODULE_NAME).depex + + + $(MAKE_FILE) + + + "$(PP)" $(APP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i + Trim --source-code -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i + GenDepex -t $(MODULE_TYPE) -o ${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + +[Acpi-Source-Language-File] + + ?.asl, ?.Asl, ?.ASL + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml + + + $(MAKE_FILE) + + + Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(ASLPP)" $(ASLPP_FLAGS) $(INC) /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii + + + Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(ASLPP)" $(ASLPP_FLAGS) $(INC) -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii + +[C-Code-File.AcpiTable] + + ?.c + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi + + + $(MAKE_FILE) + + + "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src} + "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + + + "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} + "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + +[Acpi-Table-Code-File] + + ?.aslc, ?.act + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi + + + $(MAKE_FILE) + + + "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src} + "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + + + "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} + "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + + + "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src} + "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.pecoff + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.pecoff $(GENFW_FLAGS) + + +[Masm16-Code-File] + + ?.asm16, ?.Asm16, ?.ASM16, ?.s16, ?.S16 + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_base}.com + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + cd $(OUTPUT_DIR)(+)${s_dir} + "$(ASM16)" /nologo /c /omf $(INC) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${d_path}(+)${s_base}.iii + "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,, + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) $(LIBS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj --end-group + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii + "$(SLINK)" $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst} + + +[Nasm-to-Binary-Code-File] + + ?.nasmb + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_base}.bin + + + "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i + "$(NASM)" -I${s_path}(+) -l ${d_path}(+)${s_base}.lst $(NASMB_FLAGS) -o $dst ${d_path}(+)${s_base}.iii + # copy the output file with .com postfix that be same to the output file of .asm16 + $(CP) ${dst} $(OUTPUT_DIR)(+)${s_base}.com + +[Microcode-File.USER_DEFINED, Microcode-File.Microcode] + + ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc + + + $(OUTPUT_DIR)(+)${s_base}.mcb + + + "$(GENFW)" -o ${dst} -m ${src} $(GENFW_FLAGS) + +[Microcode-Binary-File] + + *.mcb + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)$(MODULE_NAME).bin + + + "$(GENFW)" -o ${dst} -j $(MICROCODE_BINARY_FILES) $(GENFW_FLAGS) + -$(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).bin + +[EFI-Image-File] + + ?.efi, ?.Efi, ?.EFI + + + + + +[Unicode-Text-File] + + *.uni, *.Uni, *.UNI + + + $(DEBUG_DIR)(+)AutoGen.c + $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h + $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk + + + +[Image-Definition-File] + + *.idf, *.Idf, *.IDF + + + $(DEBUG_DIR)(+)AutoGen.c + $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h + $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk + + + +[Efi-Image.UEFI_OPTIONROM] + + ?.efi, ?.EFI, ?.Efi + + + $(BIN_DIR)(+)$(MODULE_NAME_GUID).rom + + + $(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src + +[Unicode-Text-File.UEFI_HII] + + *.uni, *.Uni, *.UNI + + + $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk + $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h + + + +[Image-Definition-File.UEFI_HII] + + *.idf, *.Idf, *.IDF + + + $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h + $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk + + + +[Visual-Form-Representation-File.UEFI_HII] + + ?.vfr + ?.Vfr + ?.VFR + + + $(MAKE_FILE) + + + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.hpk + + + "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i + "$(VFR)" $(VFR_FLAGS) --create-ifr-package --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory $(OUTPUT_DIR)(+)${s_dir} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i + +[Hii-Binary-Package.UEFI_HII] + + *.hpk + + + $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib + + + $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc + + + "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS) + "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc + + + "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS) + "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst} + + + GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) + + diff --git a/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.customized b/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.customized new file mode 100644 index 0000000..db954d9 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.customized @@ -0,0 +1,614 @@ +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +#################################################################################### +# GCC Common for AFL/Klee +#################################################################################### +DEFINE AFL_IA32_PREFIX = ENV(AFL_BIN) +DEFINE AFL_X64_PREFIX = ENV(AFL_BIN) + +DEFINE KLEE_IA32_PREFIX = ENV(KLEE_BIN) +DEFINE KLEE_X64_PREFIX = ENV(KLEE_BIN) + +DEFINE AFL_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -fno-pic -fno-pie +DEFINE AFL_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) +DEFINE AFL_IA32_X64_DLINK_COMMON = DEF(GCC5_IA32_X64_DLINK_COMMON) +DEFINE AFL_IA32_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) +DEFINE AFL_IA32_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) +DEFINE AFL_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -Wno-error +DEFINE AFL_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) +DEFINE AFL_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -Wno-error +DEFINE AFL_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) +DEFINE AFL_ARM_ASM_FLAGS = DEF(GCC5_ARM_ASM_FLAGS) +DEFINE AFL_AARCH64_ASM_FLAGS = DEF(GCC5_AARCH64_ASM_FLAGS) +DEFINE AFL_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) +DEFINE AFL_ARM_CC_XIPFLAGS = DEF(GCC5_ARM_CC_XIPFLAGS) +DEFINE AFL_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) +DEFINE AFL_AARCH64_CC_XIPFLAGS = DEF(GCC5_AARCH64_CC_XIPFLAGS) +DEFINE AFL_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) +DEFINE AFL_ARM_DLINK2_FLAGS = DEF(GCC5_ARM_DLINK2_FLAGS) -Wno-error +DEFINE AFL_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) +DEFINE AFL_AARCH64_DLINK2_FLAGS = DEF(GCC5_AARCH64_DLINK2_FLAGS) -Wno-error +DEFINE AFL_ARM_ASLDLINK_FLAGS = DEF(GCC5_ARM_ASLDLINK_FLAGS) +DEFINE AFL_AARCH64_ASLDLINK_FLAGS = DEF(GCC5_AARCH64_ASLDLINK_FLAGS) + + +DEFINE KLEE_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -MD -Wno-deprecated-declarations -Wno-unused-result -Wno-error -Wno-int-to-void-pointer-cast -Wno-int-to-pointer-cast -g -O2 -O0 -emit-llvm +DEFINE KLEE_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -MD -Wno-deprecated-declarations -Wno-unused-result -g -O2 -O0 -emit-llvm +DEFINE KLEE_IA32_X64_DLINK_COMMON = DEF(GCC5_IA32_X64_DLINK_COMMON) +DEFINE KLEE_IA32_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) +DEFINE KLEE_IA32_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) +DEFINE KLEE_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -Wno-error +DEFINE KLEE_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) +DEFINE KLEE_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -Wno-error +DEFINE KLEE_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) +DEFINE KLEE_ARM_ASM_FLAGS = DEF(GCC5_ARM_ASM_FLAGS) +DEFINE KLEE_AARCH64_ASM_FLAGS = DEF(GCC5_AARCH64_ASM_FLAGS) +DEFINE KLEE_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) +DEFINE KLEE_ARM_CC_XIPFLAGS = DEF(GCC5_ARM_CC_XIPFLAGS) +DEFINE KLEE_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) +DEFINE KLEE_AARCH64_CC_XIPFLAGS = DEF(GCC5_AARCH64_CC_XIPFLAGS) +DEFINE KLEE_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) +DEFINE KLEE_ARM_DLINK2_FLAGS = DEF(GCC5_ARM_DLINK2_FLAGS) -Wno-error +DEFINE KLEE_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) +DEFINE KLEE_AARCH64_DLINK2_FLAGS = DEF(GCC5_AARCH64_DLINK2_FLAGS) -Wno-error +DEFINE KLEE_ARM_ASLDLINK_FLAGS = DEF(GCC5_ARM_ASLDLINK_FLAGS) +DEFINE KLEE_AARCH64_ASLDLINK_FLAGS = DEF(GCC5_AARCH64_ASLDLINK_FLAGS) + +#################################################################################### +# +# AFL - This configuration is used to compile under Linux to produce +# PE/COFF binaries using AFL with Link Time Optimization enabled +# +#################################################################################### +*_AFL_*_*_FAMILY = GCC + +*_AFL_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make +*_AFL_*_*_DLL = ENV(AFL_DLL) +*_AFL_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_AFL_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_AFL_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_AFL_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_AFL_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_AFL_*_APP_FLAGS = +*_AFL_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_AFL_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +################## +# AFL IA32 definitions +################## +*_AFL_IA32_OBJCOPY_PATH = DEF(AFL_IA32_PREFIX)objcopy +*_AFL_IA32_CC_PATH = DEF(AFL_IA32_PREFIX)gcc +*_AFL_IA32_SLINK_PATH = DEF(AFL_IA32_PREFIX)gcc-ar +*_AFL_IA32_DLINK_PATH = DEF(AFL_IA32_PREFIX)gcc +*_AFL_IA32_ASLDLINK_PATH = DEF(AFL_IA32_PREFIX)gcc +*_AFL_IA32_ASM_PATH = DEF(AFL_IA32_PREFIX)gcc +*_AFL_IA32_PP_PATH = DEF(AFL_IA32_PREFIX)gcc +*_AFL_IA32_VFRPP_PATH = DEF(AFL_IA32_PREFIX)gcc +*_AFL_IA32_ASLCC_PATH = DEF(AFL_IA32_PREFIX)gcc +*_AFL_IA32_ASLPP_PATH = DEF(AFL_IA32_PREFIX)gcc +*_AFL_IA32_RC_PATH = DEF(AFL_IA32_PREFIX)objcopy + +*_AFL_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto +*_AFL_IA32_ASLDLINK_FLAGS = DEF(AFL_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -no-pie +*_AFL_IA32_ASM_FLAGS = DEF(AFL_ASM_FLAGS) -m32 -march=i386 +*_AFL_IA32_DLINK2_FLAGS = DEF(AFL_IA32_DLINK2_FLAGS) -no-pie +*_AFL_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_AFL_IA32_OBJCOPY_FLAGS = +*_AFL_IA32_NASM_FLAGS = -f elf32 + +DEBUG_AFL_IA32_CC_FLAGS = DEF(AFL_IA32_CC_FLAGS) -flto -Os +DEBUG_AFL_IA32_DLINK_FLAGS = DEF(AFL_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + +RELEASE_AFL_IA32_CC_FLAGS = DEF(AFL_IA32_CC_FLAGS) -flto -Os -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_AFL_IA32_DLINK_FLAGS = DEF(AFL_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + +NOOPT_AFL_IA32_CC_FLAGS = DEF(AFL_IA32_CC_FLAGS) -O0 +NOOPT_AFL_IA32_DLINK_FLAGS = DEF(AFL_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0 + +################## +# AFL X64 definitions +################## +*_AFL_X64_OBJCOPY_PATH = DEF(AFL_X64_PREFIX)objcopy +*_AFL_X64_CC_PATH = DEF(AFL_X64_PREFIX)gcc +*_AFL_X64_SLINK_PATH = DEF(AFL_X64_PREFIX)gcc-ar +*_AFL_X64_DLINK_PATH = DEF(AFL_X64_PREFIX)gcc +*_AFL_X64_ASLDLINK_PATH = DEF(AFL_X64_PREFIX)gcc +*_AFL_X64_ASM_PATH = DEF(AFL_X64_PREFIX)gcc +*_AFL_X64_PP_PATH = DEF(AFL_X64_PREFIX)gcc +*_AFL_X64_VFRPP_PATH = DEF(AFL_X64_PREFIX)gcc +*_AFL_X64_ASLCC_PATH = DEF(AFL_X64_PREFIX)gcc +*_AFL_X64_ASLPP_PATH = DEF(AFL_X64_PREFIX)gcc +*_AFL_X64_RC_PATH = DEF(AFL_X64_PREFIX)objcopy + +*_AFL_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto +*_AFL_X64_ASLDLINK_FLAGS = DEF(AFL_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_AFL_X64_ASM_FLAGS = DEF(AFL_ASM_FLAGS) -m64 +*_AFL_X64_DLINK2_FLAGS = DEF(AFL_X64_DLINK2_FLAGS) +*_AFL_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_AFL_X64_OBJCOPY_FLAGS = +*_AFL_X64_NASM_FLAGS = -f elf64 + +DEBUG_AFL_X64_CC_FLAGS = DEF(AFL_X64_CC_FLAGS) -flto -DUSING_LTO -Os +DEBUG_AFL_X64_DLINK_FLAGS = DEF(AFL_X64_DLINK_FLAGS) -flto -Os + +RELEASE_AFL_X64_CC_FLAGS = DEF(AFL_X64_CC_FLAGS) -flto -DUSING_LTO -Os -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_AFL_X64_DLINK_FLAGS = DEF(AFL_X64_DLINK_FLAGS) -flto -Os + +NOOPT_AFL_X64_CC_FLAGS = DEF(AFL_X64_CC_FLAGS) -O0 +NOOPT_AFL_X64_DLINK_FLAGS = DEF(AFL_X64_DLINK_FLAGS) -O0 + +#################################################################################### +# +# Klee - This configuration is used to compile under Linux to produce +# PE/COFF binaries using Klee with Link Time Optimization enabled +# +#################################################################################### +*_KLEE_*_*_FAMILY = GCC +*_KLEE_*_*_BUILDRULEFAMILY = KLEE + +*_KLEE_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make +*_KLEE_*_*_DLL = ENV(KLEE_DLL) +*_KLEE_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_KLEE_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_KLEE_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_KLEE_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_KLEE_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_KLEE_*_APP_FLAGS = +*_KLEE_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_KLEE_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +################## +# KLEE IA32 definitions +################## +*_KLEE_IA32_OBJCOPY_PATH = DEF(KLEE_IA32_PREFIX)objcopy +*_KLEE_IA32_CC_PATH = DEF(KLEE_IA32_PREFIX)wllvm +*_KLEE_IA32_SLINK_PATH = DEF(KLEE_IA32_PREFIX)llvm-ar +*_KLEE_IA32_DLINK_PATH = DEF(KLEE_IA32_PREFIX)llvm-link +*_KLEE_IA32_ASLDLINK_PATH = DEF(KLEE_IA32_PREFIX)wllvm +*_KLEE_IA32_ASM_PATH = DEF(KLEE_IA32_PREFIX)wllvm +*_KLEE_IA32_PP_PATH = DEF(KLEE_IA32_PREFIX)wllvm +*_KLEE_IA32_VFRPP_PATH = DEF(KLEE_IA32_PREFIX)wllvm +*_KLEE_IA32_ASLCC_PATH = DEF(KLEE_IA32_PREFIX)wllvm +*_KLEE_IA32_ASLPP_PATH = DEF(KLEE_IA32_PREFIX)wllvm +*_KLEE_IA32_RC_PATH = DEF(KLEE_IA32_PREFIX)objcopy + +*_KLEE_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto +*_KLEE_IA32_ASLDLINK_FLAGS = DEF(KLEE_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -no-pie +*_KLEE_IA32_ASM_FLAGS = DEF(KLEE_ASM_FLAGS) -m32 -march=i386 +*_KLEE_IA32_DLINK2_FLAGS = DEF(KLEE_IA32_DLINK2_FLAGS) -no-pie +*_KLEE_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_KLEE_IA32_OBJCOPY_FLAGS = +*_KLEE_IA32_NASM_FLAGS = -f elf32 + + DEBUG_KLEE_IA32_CC_FLAGS = DEF(KLEE_IA32_CC_FLAGS) -flto -Os + DEBUG_KLEE_IA32_DLINK_FLAGS = DEF(KLEE_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + +RELEASE_KLEE_IA32_CC_FLAGS = DEF(KLEE_IA32_CC_FLAGS) -flto -Os -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_KLEE_IA32_DLINK_FLAGS = DEF(KLEE_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + + NOOPT_KLEE_IA32_CC_FLAGS = DEF(KLEE_IA32_CC_FLAGS) -O0 + NOOPT_KLEE_IA32_DLINK_FLAGS = DEF(KLEE_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0 + +################## +# KLEE X64 definitions +################## +*_KLEE_X64_OBJCOPY_PATH = DEF(KLEE_X64_PREFIX)objcopy +*_KLEE_X64_CC_PATH = DEF(KLEE_X64_PREFIX)wllvm +*_KLEE_X64_SLINK_PATH = DEF(KLEE_X64_PREFIX)llvm-ar +*_KLEE_X64_DLINK_PATH = DEF(KLEE_X64_PREFIX)llvm-link +*_KLEE_X64_ASLDLINK_PATH = DEF(KLEE_X64_PREFIX)wllvm +*_KLEE_X64_ASM_PATH = DEF(KLEE_X64_PREFIX)wllvm +*_KLEE_X64_PP_PATH = DEF(KLEE_X64_PREFIX)wllvm +*_KLEE_X64_VFRPP_PATH = DEF(KLEE_X64_PREFIX)wllvm +*_KLEE_X64_ASLCC_PATH = DEF(KLEE_X64_PREFIX)wllvm +*_KLEE_X64_ASLPP_PATH = DEF(KLEE_X64_PREFIX)wllvm +*_KLEE_X64_RC_PATH = DEF(KLEE_X64_PREFIX)objcopy + +*_KLEE_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto +*_KLEE_X64_ASLDLINK_FLAGS = DEF(KLEE_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_KLEE_X64_ASM_FLAGS = DEF(KLEE_ASM_FLAGS) -m64 +*_KLEE_X64_DLINK2_FLAGS = DEF(KLEE_X64_DLINK2_FLAGS) +*_KLEE_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_KLEE_X64_OBJCOPY_FLAGS = +*_KLEE_X64_NASM_FLAGS = -f elf64 + +DEBUG_KLEE_X64_CC_FLAGS = DEF(KLEE_X64_CC_FLAGS) -flto -DUSING_LTO -Os +DEBUG_KLEE_X64_DLINK_FLAGS = DEF(KLEE_X64_DLINK_FLAGS) -flto -Os + +RELEASE_KLEE_X64_CC_FLAGS = DEF(KLEE_X64_CC_FLAGS) -flto -DUSING_LTO -Os -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_KLEE_X64_DLINK_FLAGS = DEF(KLEE_X64_DLINK_FLAGS) -flto -Os + +NOOPT_KLEE_X64_CC_FLAGS = DEF(KLEE_X64_CC_FLAGS) -O0 +NOOPT_KLEE_X64_DLINK_FLAGS = DEF(KLEE_X64_DLINK_FLAGS) -O0 + +#################################################################################### +# +# Clang 8 - This configuration is used to compile under Linux to produce +# PE/COFF binaries using LLVM/Clang 8 with Link Time Optimization enabled +# +#################################################################################### +*_CLANG8_*_*_FAMILY = GCC +*_CLANG8_*_MAKE_PATH = make +*_CLANG8_*_*_DLL = ENV(CLANG8_DLL) +*_CLANG8_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_CLANG8_*_APP_FLAGS = +*_CLANG8_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANG8_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +DEFINE CLANG8_IA32_PREFIX = ENV(CLANG8_BIN) +DEFINE CLANG8_X64_PREFIX = ENV(CLANG8_BIN) + +DEFINE CLANG8_IA32_TARGET = -target i686-pc-linux-gnu +DEFINE CLANG8_X64_TARGET = -target x86_64-pc-linux-gnu + +DEFINE CLANG8_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option +DEFINE CLANG8_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG8_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference + +########################### +# CLANG8 IA32 definitions +########################### +*_CLANG8_IA32_OBJCOPY_PATH = objcopy +*_CLANG8_IA32_CC_PATH = DEF(CLANG8_IA32_PREFIX)clang +*_CLANG8_IA32_SLINK_PATH = DEF(CLANG8_IA32_PREFIX)llvm-ar +*_CLANG8_IA32_DLINK_PATH = DEF(CLANG8_IA32_PREFIX)clang +*_CLANG8_IA32_ASLDLINK_PATH = DEF(CLANG8_IA32_PREFIX)clang +*_CLANG8_IA32_ASM_PATH = DEF(CLANG8_IA32_PREFIX)clang +*_CLANG8_IA32_PP_PATH = DEF(CLANG8_IA32_PREFIX)clang +*_CLANG8_IA32_VFRPP_PATH = DEF(CLANG8_IA32_PREFIX)clang +*_CLANG8_IA32_ASLCC_PATH = DEF(CLANG8_IA32_PREFIX)clang +*_CLANG8_IA32_ASLPP_PATH = DEF(CLANG8_IA32_PREFIX)clang +*_CLANG8_IA32_RC_PATH = objcopy + +*_CLANG8_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG8_IA32_TARGET) +*_CLANG8_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_CLANG8_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG8_IA32_TARGET) +*_CLANG8_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_CLANG8_IA32_OBJCOPY_FLAGS = +*_CLANG8_IA32_NASM_FLAGS = -f elf32 +*_CLANG8_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG8_IA32_TARGET) +*_CLANG8_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG8_IA32_TARGET) +*_CLANG8_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG8_IA32_TARGET) + +DEBUG_CLANG8_IA32_CC_FLAGS = DEF(CLANG8_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG8_IA32_TARGET) -g +DEBUG_CLANG8_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +DEBUG_CLANG8_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O3 + +RELEASE_CLANG8_IA32_CC_FLAGS = DEF(CLANG8_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG8_IA32_TARGET) +RELEASE_CLANG8_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +RELEASE_CLANG8_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O3 + +NOOPT_CLANG8_IA32_CC_FLAGS = DEF(CLANG8_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG8_IA32_TARGET) -g +NOOPT_CLANG8_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +NOOPT_CLANG8_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O0 + +########################## +# CLANG8 X64 definitions +########################## +*_CLANG8_X64_OBJCOPY_PATH = objcopy +*_CLANG8_X64_CC_PATH = DEF(CLANG8_X64_PREFIX)clang +*_CLANG8_X64_SLINK_PATH = DEF(CLANG8_X64_PREFIX)llvm-ar +*_CLANG8_X64_DLINK_PATH = DEF(CLANG8_X64_PREFIX)clang +*_CLANG8_X64_ASLDLINK_PATH = DEF(CLANG8_X64_PREFIX)clang +*_CLANG8_X64_ASM_PATH = DEF(CLANG8_X64_PREFIX)clang +*_CLANG8_X64_PP_PATH = DEF(CLANG8_X64_PREFIX)clang +*_CLANG8_X64_VFRPP_PATH = DEF(CLANG8_X64_PREFIX)clang +*_CLANG8_X64_ASLCC_PATH = DEF(CLANG8_X64_PREFIX)clang +*_CLANG8_X64_ASLPP_PATH = DEF(CLANG8_X64_PREFIX)clang +*_CLANG8_X64_RC_PATH = objcopy + +*_CLANG8_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANG8_X64_TARGET) +*_CLANG8_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_CLANG8_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG8_X64_TARGET) +*_CLANG8_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_CLANG8_X64_OBJCOPY_FLAGS = +*_CLANG8_X64_NASM_FLAGS = -f elf64 +*_CLANG8_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG8_X64_TARGET) +*_CLANG8_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG8_X64_TARGET) +*_CLANG8_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG8_X64_TARGET) + +DEBUG_CLANG8_X64_CC_FLAGS = DEF(CLANG8_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG8_X64_TARGET) -g +DEBUG_CLANG8_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +DEBUG_CLANG8_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3 + +RELEASE_CLANG8_X64_CC_FLAGS = DEF(CLANG8_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG8_X64_TARGET) +RELEASE_CLANG8_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +RELEASE_CLANG8_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3 + +NOOPT_CLANG8_X64_CC_FLAGS = DEF(CLANG8_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG8_X64_TARGET) -g +NOOPT_CLANG8_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +NOOPT_CLANG8_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O0 + +#################################################################################### +# +# LIBFUZZER - This configuration is used to compile under Linux to produce +# PE/COFF binaries using LLVM/Clang 8 with Link Time Optimization enabled +# +#################################################################################### +*_LIBFUZZER_*_*_FAMILY = GCC +*_LIBFUZZER_*_MAKE_PATH = make +*_LIBFUZZER_*_*_DLL = ENV(LIBFUZZER_DLL) +*_LIBFUZZER_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_LIBFUZZER_*_APP_FLAGS = +*_LIBFUZZER_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_LIBFUZZER_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +DEFINE LIBFUZZER_IA32_PREFIX = ENV(LIBFUZZER_BIN) +DEFINE LIBFUZZER_X64_PREFIX = ENV(LIBFUZZER_BIN) + +DEFINE LIBFUZZER_IA32_TARGET = -target i686-pc-linux-gnu +DEFINE LIBFUZZER_X64_TARGET = -target x86_64-pc-linux-gnu + +DEFINE LIBFUZZER_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option +DEFINE LIBFUZZER_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(LIBFUZZER_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference + +########################### +# LIBFUZZER IA32 definitions +########################### +*_LIBFUZZER_IA32_OBJCOPY_PATH = objcopy +*_LIBFUZZER_IA32_CC_PATH = DEF(LIBFUZZER_IA32_PREFIX)clang +*_LIBFUZZER_IA32_SLINK_PATH = DEF(LIBFUZZER_IA32_PREFIX)llvm-ar +*_LIBFUZZER_IA32_DLINK_PATH = DEF(LIBFUZZER_IA32_PREFIX)clang +*_LIBFUZZER_IA32_ASLDLINK_PATH = DEF(LIBFUZZER_IA32_PREFIX)clang +*_LIBFUZZER_IA32_ASM_PATH = DEF(LIBFUZZER_IA32_PREFIX)clang +*_LIBFUZZER_IA32_PP_PATH = DEF(LIBFUZZER_IA32_PREFIX)clang +*_LIBFUZZER_IA32_VFRPP_PATH = DEF(LIBFUZZER_IA32_PREFIX)clang +*_LIBFUZZER_IA32_ASLCC_PATH = DEF(LIBFUZZER_IA32_PREFIX)clang +*_LIBFUZZER_IA32_ASLPP_PATH = DEF(LIBFUZZER_IA32_PREFIX)clang +*_LIBFUZZER_IA32_RC_PATH = objcopy + +*_LIBFUZZER_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(LIBFUZZER_IA32_TARGET) +*_LIBFUZZER_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_LIBFUZZER_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(LIBFUZZER_IA32_TARGET) +*_LIBFUZZER_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_LIBFUZZER_IA32_OBJCOPY_FLAGS = +*_LIBFUZZER_IA32_NASM_FLAGS = -f elf32 +*_LIBFUZZER_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(LIBFUZZER_IA32_TARGET) +*_LIBFUZZER_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(LIBFUZZER_IA32_TARGET) +*_LIBFUZZER_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(LIBFUZZER_IA32_TARGET) + +DEBUG_LIBFUZZER_IA32_CC_FLAGS = DEF(LIBFUZZER_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(LIBFUZZER_IA32_TARGET) -g +DEBUG_LIBFUZZER_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +DEBUG_LIBFUZZER_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O3 + +RELEASE_LIBFUZZER_IA32_CC_FLAGS = DEF(LIBFUZZER_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(LIBFUZZER_IA32_TARGET) +RELEASE_LIBFUZZER_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +RELEASE_LIBFUZZER_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O3 + +NOOPT_LIBFUZZER_IA32_CC_FLAGS = DEF(LIBFUZZER_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(LIBFUZZER_IA32_TARGET) -g +NOOPT_LIBFUZZER_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +NOOPT_LIBFUZZER_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O0 + +########################## +# LIBFUZZER X64 definitions +########################## +*_LIBFUZZER_X64_OBJCOPY_PATH = objcopy +*_LIBFUZZER_X64_CC_PATH = DEF(LIBFUZZER_X64_PREFIX)clang +*_LIBFUZZER_X64_SLINK_PATH = DEF(LIBFUZZER_X64_PREFIX)llvm-ar +*_LIBFUZZER_X64_DLINK_PATH = DEF(LIBFUZZER_X64_PREFIX)clang +*_LIBFUZZER_X64_ASLDLINK_PATH = DEF(LIBFUZZER_X64_PREFIX)clang +*_LIBFUZZER_X64_ASM_PATH = DEF(LIBFUZZER_X64_PREFIX)clang +*_LIBFUZZER_X64_PP_PATH = DEF(LIBFUZZER_X64_PREFIX)clang +*_LIBFUZZER_X64_VFRPP_PATH = DEF(LIBFUZZER_X64_PREFIX)clang +*_LIBFUZZER_X64_ASLCC_PATH = DEF(LIBFUZZER_X64_PREFIX)clang +*_LIBFUZZER_X64_ASLPP_PATH = DEF(LIBFUZZER_X64_PREFIX)clang +*_LIBFUZZER_X64_RC_PATH = objcopy + +*_LIBFUZZER_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(LIBFUZZER_X64_TARGET) +*_LIBFUZZER_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_LIBFUZZER_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 DEF(LIBFUZZER_X64_TARGET) +*_LIBFUZZER_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_LIBFUZZER_X64_OBJCOPY_FLAGS = +*_LIBFUZZER_X64_NASM_FLAGS = -f elf64 +*_LIBFUZZER_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(LIBFUZZER_X64_TARGET) +*_LIBFUZZER_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(LIBFUZZER_X64_TARGET) +*_LIBFUZZER_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(LIBFUZZER_X64_TARGET) + +DEBUG_LIBFUZZER_X64_CC_FLAGS = DEF(LIBFUZZER_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(LIBFUZZER_X64_TARGET) -g +DEBUG_LIBFUZZER_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +DEBUG_LIBFUZZER_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3 + +RELEASE_LIBFUZZER_X64_CC_FLAGS = DEF(LIBFUZZER_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(LIBFUZZER_X64_TARGET) +RELEASE_LIBFUZZER_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +RELEASE_LIBFUZZER_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3 + +NOOPT_LIBFUZZER_X64_CC_FLAGS = DEF(LIBFUZZER_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(LIBFUZZER_X64_TARGET) -g +NOOPT_LIBFUZZER_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +NOOPT_LIBFUZZER_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O0 + +#################################################################################### +# +# Clang Win - This configuration is used to compile under Windows to produce +# PE/COFF binaries using LLVM/Clang with Link Time Optimization enabled +# +#################################################################################### +*_CLANGWIN_*_*_FAMILY = GCC +*_CLANGWIN_*_*_BUILDRULEFAMILY = CLANGWIN +*_CLANGWIN_*_MAKE_PATH = nmake +*_CLANGWIN_*_*_DLL = ENV(CLANGWIN_DLL) +*_CLANGWIN_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) + +*_CLANGWIN_*_APP_FLAGS = +*_CLANGWIN_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_CLANGWIN_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) + +DEFINE CLANGWIN_IA32_PREFIX = ENV(CLANGWIN_BIN) +DEFINE CLANGWIN_X64_PREFIX = ENV(CLANGWIN_BIN) + +DEFINE CLANGWIN_IA32_TARGET = -target i686-pc-windows-msvc +DEFINE CLANGWIN_X64_TARGET = -target x86_64-pc-windows-msvc + +DEFINE CLANGWIN_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option +DEFINE CLANGWIN_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGWIN_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference -Wno-microsoft -fms-compatibility + +########################### +# CLANGWIN IA32 definitions +########################### +*_CLANGWIN_IA32_CC_PATH = DEF(CLANGWIN_IA32_PREFIX)clang +*_CLANGWIN_IA32_SLINK_PATH = lib.exe +*_CLANGWIN_IA32_DLINK_PATH = link.exe +*_CLANGWIN_IA32_ASLDLINK_PATH = DEF(CLANGWIN_IA32_PREFIX)clang +*_CLANGWIN_IA32_ASM_PATH = DEF(CLANGWIN_IA32_PREFIX)clang +*_CLANGWIN_IA32_PP_PATH = DEF(CLANGWIN_IA32_PREFIX)clang +*_CLANGWIN_IA32_VFRPP_PATH = DEF(CLANGWIN_IA32_PREFIX)clang +*_CLANGWIN_IA32_ASLCC_PATH = DEF(CLANGWIN_IA32_PREFIX)clang +*_CLANGWIN_IA32_ASLPP_PATH = DEF(CLANGWIN_IA32_PREFIX)clang +*_CLANGWIN_IA32_RC_PATH = rc.exe + +*_CLANGWIN_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGWIN_IA32_TARGET) +*_CLANGWIN_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_CLANGWIN_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANGWIN_IA32_TARGET) +*_CLANGWIN_IA32_OBJCOPY_FLAGS = +*_CLANGWIN_IA32_NASM_FLAGS = -f win32 +*_CLANGWIN_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGWIN_IA32_TARGET) +*_CLANGWIN_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGWIN_IA32_TARGET) +*_CLANGWIN_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGWIN_IA32_TARGET) + +DEBUG_CLANGWIN_IA32_CC_FLAGS = DEF(CLANGWIN_ALL_CC_FLAGS) -m32 -Oz -march=i586 DEF(CLANGWIN_IA32_TARGET) -g +DEBUG_CLANGWIN_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +DEBUG_CLANGWIN_IA32_DLINK2_FLAGS = + +RELEASE_CLANGWIN_IA32_CC_FLAGS = DEF(CLANGWIN_ALL_CC_FLAGS) -m32 -Oz -march=i586 DEF(CLANGWIN_IA32_TARGET) +RELEASE_CLANGWIN_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +RELEASE_CLANGWIN_IA32_DLINK2_FLAGS = + +NOOPT_CLANGWIN_IA32_CC_FLAGS = DEF(CLANGWIN_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANGWIN_IA32_TARGET) -g +NOOPT_CLANGWIN_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +NOOPT_CLANGWIN_IA32_DLINK2_FLAGS = + +########################## +# CLANGWIN X64 definitions +########################## +*_CLANGWIN_X64_CC_PATH = DEF(CLANGWIN_X64_PREFIX)clang +*_CLANGWIN_X64_SLINK_PATH = lib.exe +*_CLANGWIN_X64_DLINK_PATH = link.exe +*_CLANGWIN_X64_ASLDLINK_PATH = DEF(CLANGWIN_X64_PREFIX)clang +*_CLANGWIN_X64_ASM_PATH = DEF(CLANGWIN_X64_PREFIX)clang +*_CLANGWIN_X64_PP_PATH = DEF(CLANGWIN_X64_PREFIX)clang +*_CLANGWIN_X64_VFRPP_PATH = DEF(CLANGWIN_X64_PREFIX)clang +*_CLANGWIN_X64_ASLCC_PATH = DEF(CLANGWIN_X64_PREFIX)clang +*_CLANGWIN_X64_ASLPP_PATH = DEF(CLANGWIN_X64_PREFIX)clang +*_CLANGWIN_X64_RC_PATH = rc.exe + +*_CLANGWIN_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGWIN_X64_TARGET) +*_CLANGWIN_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_CLANGWIN_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANGWIN_X64_TARGET) +*_CLANGWIN_X64_OBJCOPY_FLAGS = +*_CLANGWIN_X64_NASM_FLAGS = -f win64 +*_CLANGWIN_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGWIN_X64_TARGET) +*_CLANGWIN_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGWIN_X64_TARGET) +*_CLANGWIN_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGWIN_X64_TARGET) + +DEBUG_CLANGWIN_X64_CC_FLAGS = DEF(CLANGWIN_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz DEF(CLANGWIN_X64_TARGET) -g +DEBUG_CLANGWIN_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +DEBUG_CLANGWIN_X64_DLINK2_FLAGS = + +RELEASE_CLANGWIN_X64_CC_FLAGS = DEF(CLANGWIN_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz DEF(CLANGWIN_X64_TARGET) +RELEASE_CLANGWIN_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +RELEASE_CLANGWIN_X64_DLINK2_FLAGS = + +NOOPT_CLANGWIN_X64_CC_FLAGS = DEF(CLANGWIN_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -O0 DEF(CLANGWIN_X64_TARGET) -g +NOOPT_CLANGWIN_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +NOOPT_CLANGWIN_X64_DLINK2_FLAGS = + +#################################################################################### +# +# LIBFUZZER Win - This configuration is used to compile under Windows to produce +# PE/COFF binaries using LLVM/Clang with Link Time Optimization enabled +# +#################################################################################### +*_LIBFUZZERWIN_*_*_FAMILY = GCC +*_LIBFUZZERWIN_*_*_BUILDRULEFAMILY = CLANGWIN +*_LIBFUZZERWIN_*_MAKE_PATH = nmake +*_LIBFUZZERWIN_*_*_DLL = ENV(LIBFUZZERWIN_DLL) +*_LIBFUZZERWIN_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) + +*_LIBFUZZERWIN_*_APP_FLAGS = +*_LIBFUZZERWIN_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_LIBFUZZERWIN_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) + +DEFINE LIBFUZZERWIN_IA32_PREFIX = ENV(LIBFUZZERWIN_BIN) +DEFINE LIBFUZZERWIN_X64_PREFIX = ENV(LIBFUZZERWIN_BIN) + +DEFINE LIBFUZZERWIN_IA32_TARGET = -target i686-pc-windows-msvc +DEFINE LIBFUZZERWIN_X64_TARGET = -target x86_64-pc-windows-msvc + +DEFINE LIBFUZZERWIN_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option +DEFINE LIBFUZZERWIN_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(LIBFUZZERWIN_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float -ftrap-function=undefined_behavior_has_been_optimized_away_by_LIBFUZZER -funsigned-char -fno-ms-extensions -Wno-null-dereference -Wno-microsoft -fms-compatibility + +########################### +# LIBFUZZERWIN IA32 definitions +########################### +*_LIBFUZZERWIN_IA32_CC_PATH = DEF(LIBFUZZERWIN_IA32_PREFIX)clang +*_LIBFUZZERWIN_IA32_SLINK_PATH = lib.exe +*_LIBFUZZERWIN_IA32_DLINK_PATH = link.exe +*_LIBFUZZERWIN_IA32_ASLDLINK_PATH = DEF(LIBFUZZERWIN_IA32_PREFIX)clang +*_LIBFUZZERWIN_IA32_ASM_PATH = DEF(LIBFUZZERWIN_IA32_PREFIX)clang +*_LIBFUZZERWIN_IA32_PP_PATH = DEF(LIBFUZZERWIN_IA32_PREFIX)clang +*_LIBFUZZERWIN_IA32_VFRPP_PATH = DEF(LIBFUZZERWIN_IA32_PREFIX)clang +*_LIBFUZZERWIN_IA32_ASLCC_PATH = DEF(LIBFUZZERWIN_IA32_PREFIX)clang +*_LIBFUZZERWIN_IA32_ASLPP_PATH = DEF(LIBFUZZERWIN_IA32_PREFIX)clang +*_LIBFUZZERWIN_IA32_RC_PATH = rc.exe + +*_LIBFUZZERWIN_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(LIBFUZZERWIN_IA32_TARGET) +*_LIBFUZZERWIN_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_LIBFUZZERWIN_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(LIBFUZZERWIN_IA32_TARGET) +*_LIBFUZZERWIN_IA32_OBJCOPY_FLAGS = +*_LIBFUZZERWIN_IA32_NASM_FLAGS = -f win32 +*_LIBFUZZERWIN_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(LIBFUZZERWIN_IA32_TARGET) +*_LIBFUZZERWIN_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(LIBFUZZERWIN_IA32_TARGET) +*_LIBFUZZERWIN_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(LIBFUZZERWIN_IA32_TARGET) + +DEBUG_LIBFUZZERWIN_IA32_CC_FLAGS = DEF(LIBFUZZERWIN_ALL_CC_FLAGS) -m32 -Oz -march=i586 DEF(LIBFUZZERWIN_IA32_TARGET) -g +DEBUG_LIBFUZZERWIN_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +DEBUG_LIBFUZZERWIN_IA32_DLINK2_FLAGS = + +RELEASE_LIBFUZZERWIN_IA32_CC_FLAGS = DEF(LIBFUZZERWIN_ALL_CC_FLAGS) -m32 -Oz -march=i586 DEF(LIBFUZZERWIN_IA32_TARGET) +RELEASE_LIBFUZZERWIN_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +RELEASE_LIBFUZZERWIN_IA32_DLINK2_FLAGS = + +NOOPT_LIBFUZZERWIN_IA32_CC_FLAGS = DEF(LIBFUZZERWIN_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(LIBFUZZERWIN_IA32_TARGET) -g +NOOPT_LIBFUZZERWIN_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +NOOPT_LIBFUZZERWIN_IA32_DLINK2_FLAGS = + +########################## +# LIBFUZZERWIN X64 definitions +########################## +*_LIBFUZZERWIN_X64_CC_PATH = DEF(LIBFUZZERWIN_X64_PREFIX)clang +*_LIBFUZZERWIN_X64_SLINK_PATH = lib.exe +*_LIBFUZZERWIN_X64_DLINK_PATH = link.exe +*_LIBFUZZERWIN_X64_ASLDLINK_PATH = DEF(LIBFUZZERWIN_X64_PREFIX)clang +*_LIBFUZZERWIN_X64_ASM_PATH = DEF(LIBFUZZERWIN_X64_PREFIX)clang +*_LIBFUZZERWIN_X64_PP_PATH = DEF(LIBFUZZERWIN_X64_PREFIX)clang +*_LIBFUZZERWIN_X64_VFRPP_PATH = DEF(LIBFUZZERWIN_X64_PREFIX)clang +*_LIBFUZZERWIN_X64_ASLCC_PATH = DEF(LIBFUZZERWIN_X64_PREFIX)clang +*_LIBFUZZERWIN_X64_ASLPP_PATH = DEF(LIBFUZZERWIN_X64_PREFIX)clang +*_LIBFUZZERWIN_X64_RC_PATH = rc.exe + +*_LIBFUZZERWIN_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(LIBFUZZERWIN_X64_TARGET) +*_LIBFUZZERWIN_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_LIBFUZZERWIN_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 DEF(LIBFUZZERWIN_X64_TARGET) +*_LIBFUZZERWIN_X64_OBJCOPY_FLAGS = +*_LIBFUZZERWIN_X64_NASM_FLAGS = -f win64 +*_LIBFUZZERWIN_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(LIBFUZZERWIN_X64_TARGET) +*_LIBFUZZERWIN_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(LIBFUZZERWIN_X64_TARGET) +*_LIBFUZZERWIN_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(LIBFUZZERWIN_X64_TARGET) + +DEBUG_LIBFUZZERWIN_X64_CC_FLAGS = DEF(LIBFUZZERWIN_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz DEF(LIBFUZZERWIN_X64_TARGET) -g +DEBUG_LIBFUZZERWIN_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +DEBUG_LIBFUZZERWIN_X64_DLINK2_FLAGS = + +RELEASE_LIBFUZZERWIN_X64_CC_FLAGS = DEF(LIBFUZZERWIN_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz DEF(LIBFUZZERWIN_X64_TARGET) +RELEASE_LIBFUZZERWIN_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +RELEASE_LIBFUZZERWIN_X64_DLINK2_FLAGS = + +NOOPT_LIBFUZZERWIN_X64_CC_FLAGS = DEF(LIBFUZZERWIN_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -O0 DEF(LIBFUZZERWIN_X64_TARGET) -g +NOOPT_LIBFUZZERWIN_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +NOOPT_LIBFUZZERWIN_X64_DLINK2_FLAGS = diff --git a/HBFA/UefiHostFuzzTestPkg/Include/Library/ToolChainHarnessLib.h b/HBFA/UefiHostFuzzTestPkg/Include/Library/ToolChainHarnessLib.h new file mode 100644 index 0000000..023841e --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/Include/Library/ToolChainHarnessLib.h @@ -0,0 +1,24 @@ +/** @file + +Copyright (c) 2019, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _TOOLCHAIN_HARNESS_LIB_ +#define _TOOLCHAIN_HARNESS_LIB_ + +VOID +EFIAPI +RunTestHarness ( + IN VOID *TestBuffer, + IN UINTN TestBufferSize + ); + +UINTN +EFIAPI +GetMaxBufferSize ( + VOID + ); + +#endif \ No newline at end of file diff --git a/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.c b/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.c new file mode 100644 index 0000000..29b84f2 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.c @@ -0,0 +1,185 @@ +/** @file + +Copyright (c) 2019, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#ifdef TEST_WITH_INSTRUMENT +#include +#endif + +#ifdef TEST_WITH_LIBFUZZER +#include +#include +#endif + +#ifdef TEST_WITH_KLEE +#include +#endif + +// TODO: xxx Improve coding style: naming, data type, etc + +#ifdef TEST_WITH_INSTRUMENT +VOID +ReadInstrumentProfile ( + IN CHAR8 *FileName + ) +{ + VOID *Buffer; + + FILE *f = fopen(FileName, "rb"); + if (f==NULL) { + fputs ("File error",stderr); + exit (1); + } + fseek(f, 0, SEEK_END); + + UINTN fsize = ftell(f); + rewind(f); + + Buffer = malloc (fsize); + size_t bytes_read = fread((void *)Buffer, 1, fsize, f); + if ((UINTN)bytes_read!=fsize) { + fputs ("File error",stderr); + exit (1); + } + fclose(f); + + InstrumentHookLibInit (Buffer, fsize); +} +#endif + +VOID +InitTestBuffer ( + int argc, + char **argv, + IN UINTN MaxBufferSize, + IN VOID **TestBuffer, + OUT UINTN *BufferSize + ) +{ + // 1. Allocate buffer + VOID *Buffer = AllocatePool (MaxBufferSize); + + // 2. Assign to TestBuffer and BufferSize + *TestBuffer = Buffer; + if (BufferSize != NULL) { + *BufferSize = MaxBufferSize; + } else { + printf ("error - Null pointer for Buffersize"); + exit(1); + } + + // 3. Initialize TestBuffer +#ifdef TEST_WITH_KLEE + // 3.1 For test with KLEE: write symbolic values to TestBuffer + klee_make_symbolic((UINT8 *)Buffer, MaxBufferSize, "Buffer"); + return; +#endif + + // 3.2 For other tests: read values from file to TestBuffer + // (may also update the value of BufferSize) + if (argc == 1) { + printf ("error - missing input file\n"); + exit(1); + } + CHAR8 *FileName = argv[1]; + + FILE *f = fopen(FileName, "rb"); + if (f==NULL) { + fputs ("File error",stderr); + exit (1); + } + fseek(f, 0, SEEK_END); + + UINTN fsize = ftell(f); + rewind(f); + + fsize = fsize > MaxBufferSize ? MaxBufferSize : fsize; + size_t bytes_read = fread((void *)Buffer, 1, fsize, f); + if ((UINTN)bytes_read!=fsize) { + fputs ("File error",stderr); + exit (1); + } + fclose(f); + if (BufferSize != NULL) { + *BufferSize = fsize; + } else { + printf ("error - Null pointer for Buffersize"); + exit(1); + } + + // 3.3 For ErrorInjection: read instrument profile for initialization +#ifdef TEST_WITH_INSTRUMENT + if (argc >= 3) { + ReadInstrumentProfile (argv[2]); + } +#endif +} + +#ifdef TEST_WITH_LIBFUZZER +int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + VOID *TestBuffer; + UINTN MaxBufferSize; + + // 1. Initialize TestBuffer + MaxBufferSize = GetMaxBufferSize(); + TestBuffer = AllocateZeroPool (MaxBufferSize); + if (Size > MaxBufferSize) { + Size = MaxBufferSize; + } + CopyMem (TestBuffer, Data, Size); + // 2. Run test + RunTestHarness(TestBuffer, Size); + // 3. Clean up + FreePool (TestBuffer); + return 0; +} +#else +#ifdef TEST_WITH_LIBFUZZERWIN +int LLVMFuzzerTestOneInput(const wint_t *Data, size_t Size) { + VOID *TestBuffer; + UINTN MaxBufferSize; + + // 1. Initialize TestBuffer + MaxBufferSize = GetMaxBufferSize(); + TestBuffer = AllocateZeroPool (MaxBufferSize); + if (Size > MaxBufferSize) { + Size = MaxBufferSize; + } + CopyMem (TestBuffer, Data, Size); + // 2. Run test + RunTestHarness(TestBuffer, Size); + // 3. Clean up + FreePool (TestBuffer); + return 0; +} +#else +int main(int argc, char **argv) +{ + VOID *TestBuffer; + UINTN TestBufferSize; + + // 1. Initialize TestBuffer + InitTestBuffer (argc, argv, GetMaxBufferSize(), &TestBuffer, &TestBufferSize); + // 2. Run test + RunTestHarness(TestBuffer, TestBufferSize); + // 3. Clean up + FreePool (TestBuffer); + return 0; +} +#endif +#endif diff --git a/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf b/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf new file mode 100644 index 0000000..e3affc9 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/Library/ToolChainHarnessLib/ToolChainHarnessLib.inf @@ -0,0 +1,32 @@ +## @file +# Component description file for ToolChainHarnessLib module. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = ToolChainHarnessLib + FILE_GUID = 053c6bc3-5ad4-491a-94c9-c4f5e3c91e39 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = ToolChainHarnessLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + ToolChainHarnessLib.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostFuzzTestPkg/UefiHostFuzzTestPkg.dec + UefiInstrumentTestPkg/UefiInstrumentTestPkg.dec + +[LibraryClasses] + BaseLib diff --git a/HBFA/UefiHostFuzzTestPkg/ReadME-AFLTurbo.txt b/HBFA/UefiHostFuzzTestPkg/ReadME-AFLTurbo.txt new file mode 100644 index 0000000..8843626 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/ReadME-AFLTurbo.txt @@ -0,0 +1,68 @@ +How to run AFLTurbo with UefiHostTestPkg in OS? +============== +AFLTurbo: +Prepare AFLTurbo in Linux +1) Install crypto dependency + sudo apt-get install libssl-dev +2) Goto https://github.com/sleicasper/aflturbo +3) Clone the repository and build the aflturbo code + git clone https://github.com/sleicasper/aflturbo.git + cd aflturbo/ + make + cp afl-fuzz afl-turbo-fuzz + +> Build AFLTurbo with `make` command & ensure AFLTurbo binary is in PATH environment variable. + +4) Add below content at the end of ~/.bashrc: + export AFL_PATH= + export PATH=$PATH:$AFL_PATH + For example: + export AFL_PATH=/home//Env/aflturbo + export PATH=$PATH:$AFL_PATH + +5) Run these commands as root (these command need to be ran every time you reboot your OS): + sudo bash -c 'echo core >/proc/sys/kernel/core_pattern' + cd /sys/devices/system/cpu/ + sudo bash -c 'echo performance | tee cpu*/cpufreq/scaling_governor' + +Build EDKII test case in Linux +1) python edk2-staging/HBFA/UefiHostTestTools/HBFAEnvSetup.py +2) cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.txt edk2/Conf/build_rule.txt +3) cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.txt edk2/Conf/tools_def.txt +4) build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a IA32 -t AFL + + +Run AFLTurbo in Linux +1) mkdir testcase_dir +2) mkdir /dev/shm/findings_dir + Note:'/dev/shm' is tmpfs, so 'findings_dir' will disappear after reboot system, please backup test result before reboot system. +3) cp edk2-staging/HBFA/UefiHostFuzzTestCasePkg/Seed//xxx.bin testcase_dir + NOTE: mapping list please refer to edk2-staging/HBFA/UefiHostFuzzTestCasePkg/Seed/readme.txt +4) afl-turbo-fuzz -i testcase_dir -o /dev/shm/findings_dir Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/IA32/TestPartition @@ +5) You will see something like below. Have fun! + + + AFL-BSO 2.52b (TestPartition) + +lq process timing qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwq overall results qqqqqk +x run time : 0 days, 0 hrs, 0 min, 5 sec x cycles done : 40 x +x last new path : none yet (odd, check syntax!) x total paths : 1 x +x last uniq crash : none seen yet x uniq crashes : 0 x +x last uniq hang : none seen yet x uniq hangs : 0 x +tq cycle progress qqqqqqqqqqqqqqqqqqqqwq map coverage qvqqqqqqqqqqqqqqqqqqqqqqqu +x now processing : 0 (0.00%) x map density : 0.00% / 0.00% x +x paths timed out : 0 (0.00%) x count coverage : 1.00 bits/tuple x +tq stage progress qqqqqqqqqqqqqqqqqqqqnq findings in depth qqqqqqqqqqqqqqqqqqqqu +x now trying : havoc x favored paths : 1 (100.00%) x +x stage execs : 164/256 (64.06%) x new edges on : 1 (100.00%) x +x total execs : 11.8k x total crashes : 0 (0 unique) x +x exec speed : 2092/sec x total tmouts : 0 (0 unique) x +tq fuzzing strategy yields qqqqqqqqqqqvqqqqqqqqqqqqqqqwq path geometry qqqqqqqqu +x bit flips : 0/32, 0/31, 0/29 x levels : 1 x +x byte flips : 0/4, 0/3, 0/1 x pending : 0 x +x arithmetics : 0/224, 0/204, 0/68 x pend fav : 0 x +x known ints : 0/8, 0/18, 0/10 x own finds : 0 x +x dictionary : 0/0, 0/0, 0/0 x imported : n/a x +x havoc : 0/11.0k, 0/0 x stability : 100.00% x +x trim : 100.00%/29, 0.00% tqqqqqqqqqqqqqqqqqqqqqqqqj +^Cqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj [cpu000: 70%] diff --git a/HBFA/UefiHostFuzzTestPkg/ReadMe-AFL.txt b/HBFA/UefiHostFuzzTestPkg/ReadMe-AFL.txt new file mode 100644 index 0000000..15ab054 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/ReadMe-AFL.txt @@ -0,0 +1,115 @@ +How to run AFL with UefiHostTestPkg in OS? +============== +AFL: +Prepare AFL in Linux +1) Goto http://lcamtuf.coredump.cx/afl/, download http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz +2) Extract afl-latest.tgz: + mv afl-latest.tgz /home//Env + cd /home//Env + tar xzvf afl-latest.tgz +3) Follow docs\QuickStartGuide.txt in AFL package to quickly make AFL: + cd afl-2.5.2b + make +4) Add below content at the end of ~/.bashrc: + export AFL_PATH= + export PATH=$PATH:$AFL_PATH + For example: + export AFL_PATH=/home//Env/afl-2.52b + export PATH=$PATH:$AFL_PATH +5) Run these commands as root (these command need to be ran every time you reboot your OS): + sudo bash -c 'echo core >/proc/sys/kernel/core_pattern' + cd /sys/devices/system/cpu/ + sudo bash -c 'echo performance | tee cpu*/cpufreq/scaling_governor' + +Prepare AFL in Windows +NOTE: as known issue https://github.com/googleprojectzero/winafl/issues/145 that cause compatibility issues in recent Windows versions, the author has disabled Drsyms in recent WinAFL builds, if you want you use the newest version, please according to Method.2 to rebuild winafl yourself. +Method.1: +1) goto https://github.com/googleprojectzero/winafl, clone the project and checkout version d501350f02147860604b5d755960fe3fc201653a + git clone https://github.com/googleprojectzero/winafl.git + cd winafl + git checkout -b Branch_d501350f d501350f02147860604b5d755960fe3fc201653a +2) download DynamoRIO release 6.2.0-2 from https://github.com/DynamoRIO/dynamorio/releases/tag/release_6_2_0 +3) setup AFL_PATH=<...>\winafl, DRIO_PATH=<...>\DynamoRIO-Windows-6.2.0-2 +Method.2: +1) get newest winafl + git clone https://github.com/googleprojectzero/winafl.git +2) download newest DynamoRIO release from https://github.com/DynamoRIO/dynamorio/wiki/Downloads +3) build winafl + cd winafl + mkdir build32 + cd build32 + cmake -G"Visual Studio 14 2015" .. -DDynamoRIO_DIR=%DRIO_PATH%\cmake -DUSE_DRSYMS=1 + cmake --build . --config Release + cd .. + mkdir build64 + cmake -G"Visual Studio 14 2015 Win64" .. -DDynamoRIO_DIR=%DRIO_PATH%\cmake -DUSE_DRSYMS=1 + cmake --build . --config Release + NOTE: If you get errors where the linker couldn't find certain .lib files. please refer to https://github.com/googleprojectzero/winafl/issues/145 and delete the nonexistent files from "Additional Dependencies". +4) copy all binary under build32/bin/Release to bin32, copy all binary under build64/bin/Release to bin64 + robocopy /E /is /it build32/bin/Release bin32 + robocopy /E /is /it build64/bin/Release bin64 +5) setup AFL_PATH=<...>\winafl, DRIO_PATH=<...>\DynamoRIO-Windows-x.x.x-x + + + +Build EDKII test case in Linux +1) python edk2-staging/HBFA/UefiHostTestTools/HBFAEnvSetup.py +2) cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.txt edk2/Conf/build_rule.txt +3) cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.txt edk2/Conf/tools_def.txt +4) build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a IA32 -t AFL + +Build EDKII test case in Windows +1) build -p UefiHostFuzzTestCasePkg\UefiHostFuzzTestCasePkg.dsc -a IA32 -t VS2015x86 + + + +Run AFL in Linux +1) mkdir testcase_dir +2) mkdir /dev/shm/findings_dir + Note:'/dev/shm' is tmpfs, so 'findings_dir' will disappear after reboot system, please backup test result before reboot system. +3) cp edk2-staging/HBFA/UefiHostFuzzTestCasePkg/Seed//xxx.bin testcase_dir + NOTE: mapping list please refer to edk2-staging/HBFA/UefiHostFuzzTestCasePkg/Seed/readme.txt +4) afl-fuzz -i testcase_dir -o /dev/shm/findings_dir Build/UefiHostFuzzTestCasePkg/DEBUG_AFL/IA32/TestPartition @@ +5) You will see something like below. Have fun! + +Run AFL in Windows +1) mkdir %AFL_PATH%\bin32\in +2) mkdir %AFL_PATH%\bin32\out +3) cp edk2-staging/HBFA/UefiHostFuzzTestCasePkg\Seed\\xxx.bin %AFL_PATH%\bin32\in + NOTE: mapping list please refer to edk2-staging/HBFA\UefiHostFuzzTestCasePkg\Seed\readme.txt +4) Copy xxx.exe and xxx.pdb to the same dir as %AFL_PATH%\bin32 or %AFL_PATH%\bin64, for example: TestPartition.exe and TestPartition.pdb. (NOTE: xxx.pdb must be copied) +5) cd %AFL_PATH%\bin32 + afl-fuzz.exe -i in -o out -D %DRIO_PATH%\bin32 -t 20000 -- -coverage_module xxx.exe -fuzz_iterations 1000 -target_module xxx.exe -target_method main -nargs 2 -- xxx.exe @@ + or + cd %AFL_PATH%\bin64 + afl-fuzz.exe -i in -o out -D %DRIO_PATH%\bin64 -t 20000 -- -coverage_module xxx.exe -fuzz_iterations 1000 -target_module xxx.exe -target_method main -nargs 2 -- xxx.exe @@ +6) You will see similar output, although it is slower than Linux. + + + american fuzzy lop 2.52b (TestPartition) + +lq process timing qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwq overall results qqqqqk +x run time : 0 days, 0 hrs, 0 min, 5 sec x cycles done : 40 x +x last new path : none yet (odd, check syntax!) x total paths : 1 x +x last uniq crash : none seen yet x uniq crashes : 0 x +x last uniq hang : none seen yet x uniq hangs : 0 x +tq cycle progress qqqqqqqqqqqqqqqqqqqqwq map coverage qvqqqqqqqqqqqqqqqqqqqqqqqu +x now processing : 0 (0.00%) x map density : 0.00% / 0.00% x +x paths timed out : 0 (0.00%) x count coverage : 1.00 bits/tuple x +tq stage progress qqqqqqqqqqqqqqqqqqqqnq findings in depth qqqqqqqqqqqqqqqqqqqqu +x now trying : havoc x favored paths : 1 (100.00%) x +x stage execs : 164/256 (64.06%) x new edges on : 1 (100.00%) x +x total execs : 11.8k x total crashes : 0 (0 unique) x +x exec speed : 2092/sec x total tmouts : 0 (0 unique) x +tq fuzzing strategy yields qqqqqqqqqqqvqqqqqqqqqqqqqqqwq path geometry qqqqqqqqu +x bit flips : 0/32, 0/31, 0/29 x levels : 1 x +x byte flips : 0/4, 0/3, 0/1 x pending : 0 x +x arithmetics : 0/224, 0/204, 0/68 x pend fav : 0 x +x known ints : 0/8, 0/18, 0/10 x own finds : 0 x +x dictionary : 0/0, 0/0, 0/0 x imported : n/a x +x havoc : 0/11.0k, 0/0 x stability : 100.00% x +x trim : 100.00%/29, 0.00% tqqqqqqqqqqqqqqqqqqqqqqqqj +^Cqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj [cpu000: 70%] + + + diff --git a/HBFA/UefiHostFuzzTestPkg/ReadMe-ErrorInjection.txt b/HBFA/UefiHostFuzzTestPkg/ReadMe-ErrorInjection.txt new file mode 100644 index 0000000..ef9ea7a --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/ReadMe-ErrorInjection.txt @@ -0,0 +1,36 @@ +How to do error injection? +============== +Build +1) Make sure UefiInstrumentTestPkg is in PACKAGES_PATH. +2) build -p UefiHostFuzzTestCasePkg\UefiHostFuzzTestCasePkg.dsc -a IA32 -t XXX -D TEST_WITH_INSTRUMENT + +Write Error Injection Profile +1) Create .Ini file like below: (test.ini) +####################### +# CallErrorCount=N means which call returns error. N means the Nth call returns error. +# N start from 1. CallErrorCount = 0 means disable. +# ReturnValue=X means when error happens, which value is returned. +####################### + +[AllocateZeroPool] + CallErrorCount = 1 + ReturnValue = 0 + +[ReadBlocks] + CallErrorCount = 1 + ReturnValue = EFI_DEVICE_ERROR + +[ReadDisk] + CallErrorCount = 1 + ReturnValue = EFI_DEVICE_ERROR +####################### + +Run +1) +for example: Build\UefiHostFuzzTestCasePkg\DEBUG_VS2015x86\IA32\TestPartition.exe UefiHostFuzzTestCasePkg\Seed\UDF\Raw\Udf_linux.bin test.ini + +Recommendation: +1) We had better provide a set of seeds, which already have high coverage. Only error handling path is not covered. +2) We had better have a script to increase CallErrorCount from 1 to N. And run the TestApp again and again. + As such, all the error can be returned. + diff --git a/HBFA/UefiHostFuzzTestPkg/ReadMe-KLEE.txt b/HBFA/UefiHostFuzzTestPkg/ReadMe-KLEE.txt new file mode 100644 index 0000000..94d13f5 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/ReadMe-KLEE.txt @@ -0,0 +1,122 @@ +How to run KLEE with UefiHostTestPkg in Linux? +============== +KLEE: +Prepare Env +1) "cd /home/" + "mkdir Env" +2) "sudo apt-get install build-essential curl libcap-dev cmake libncurses5-dev unzip libtcmalloc-minimal4 libgoogle-perftools-dev zlib1g-dev sqlite3 libsqlite3-dev uuid-dev texinfo bison flex libgmp3-dev libmpfr-dev libc6-dev-i386 doxygen python-pip" + +Prepare KLEE +1) install LLVM 3.8 + "sudo apt-get install clang-3.8 llvm-3.8 llvm-3.8-dev" +2) install constraint solver STP + a) "sudo apt-get install libboost-all-dev perl minisat" + b) "cd /home//Env" + c) "git clone https://github.com/stp/stp" + d) "cd stp" + e) "mkdir build" + f) "cd build" + g) "cmake .." + h) "make" + i) "sudo make install" +3) build uclibc and the POSIX environment model: + a) "cd /home//Env" + b) "git clone https://github.com/klee/klee-uclibc.git" + c) "cd klee-uclibc" + d) "./configure --make-llvm-lib" + e) "make -j2" +4) get Google test sources + a) "cd /home//Env" + b) "curl -OL https://github.com/google/googletest/archive/release-1.7.0.zip" + c) "unzip release-1.7.0.zip" +5) install lit + a) "cd /home//Env" + b) get lit source from https://pypi.org/project/lit/#files + c) "sudo pip install lit-0.6.0.tar.gz" +6) get and configure KLEE + a) "cd /home//Env" + b) "git clone https://github.com/klee/klee.git" + c) "mkdir klee_build_dir" + NOTE: this directory must out of KLEE source code + d) "cd klee_build_dir" + e) "cmake \ + -DENABLE_SOLVER_STP=ON \ + -DENABLE_POSIX_RUNTIME=ON \ + -DENABLE_KLEE_UCLIBC=ON \ + -DKLEE_UCLIBC_PATH= \ + -DGTEST_SRC_DIR= \ + -DENABLE_SYSTEM_TESTS=ON \ + -DENABLE_UNIT_TESTS=ON \ + -DLLVM_CONFIG_BINARY= \ + -DLLVMCC= \ + -DLLVMCXX= + " + NOTE: where is the absolute path the klee-uclibc source tree, is the absolute path to the Google Test source tree, is the absolute path the klee source tree. + e.g. + "cmake \ + -DENABLE_SOLVER_STP=ON \ + -DENABLE_POSIX_RUNTIME=ON \ + -DENABLE_KLEE_UCLIBC=ON \ + -DKLEE_UCLIBC_PATH=/home//Env/klee-uclibc \ + -DGTEST_SRC_DIR=/home//Env/googletest-release-1.7.0 \ + -DENABLE_SYSTEM_TESTS=ON \ + -DENABLE_UNIT_TESTS=ON \ + -DLLVM_CONFIG_BINARY=/usr/bin/llvm-config \ + -DLLVMCC=/usr/bin/clang-3.8 \ + -DLLVMCXX=/usr/bin/clang++-3.8 \ + /home//Env/klee" + f) "make" +7) you can varify whether your environment is setup correctly by running the first tutorial http://klee.github.io/tutorials/testing-function/ +8) Add below content at the end of ~/.bashrc: + export KLEE_BIN_PATH=/bin + export KLEE_SRC_PATH= + export PATH=$PATH:$KLEE_BIN_PATH + For example: + export KLEE_BIN_PATH=/home//Env/klee_build_dir/bin + export KLEE_SRC_PATH=/home//Env/klee + export PATH=$PATH:$KLEE_BIN_PATH + NOTE: is the directory you clone klee from github in step 6 b), is the directory you build klee in step 6 c) + +Prepare wllvm +1) get whole-program-llvm + "cd /home/xxx/Env" + "git clone https://github.com/travitch/whole-program-llvm.git" +2) "cd whole-program-llvm" +3) "sudo pip install -e ." + +Build EDKII test case +1) "python edk2-staging/HBFA/UefiHostTestTools/HBFAEnvSetup.py" +2) "cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.txt edk2/Conf/build_rule.txt" +3) "cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.txt edk2/Conf/tools_def.txt" +4) "export SCRIPT_PATH=/edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/LLVMLink.py" +5) "export LLVM_COMPILER=clang" + NOTE: if you can't find clang in /usr/bin, you can use clang-3.8 (clang-3.x) +6) "build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a IA32 -t KLEE -DTEST_WITH_KLEE --disable-include-path-check" + +Run KLEE +1) klee --only-output-states-covering-new Build/UefiHostFuzzTestCasePkg/DEBUG_KLEE/IA32/TestPartition" +2) You will see something like below. + +KLEE: output directory is "Build/UefiHostFuzzTestCasePkg/DEBUG_KLEE/IA32/klee-out-0" +KLEE: Using STP solver backend +KLEE: WARNING ONCE: Alignment of memory from call "malloc" is not modelled. Using alignment of 8. +KLEE: WARNING: killing 400 states (over memory cap) +KLEE: WARNING ONCE: skipping fork (memory cap exceeded) +KLEE: WARNING: killing 321 states (over memory cap) +KLEE: WARNING: killing 1291 states (over memory cap) +KLEE: WARNING: killing 860 states (over memory cap) +KLEE: WARNING: killing 996 states (over memory cap) +KLEE: WARNING: killing 946 states (over memory cap) +KLEE: WARNING: killing 839 states (over memory cap) +KLEE: WARNING: killing 500 states (over memory cap) +KLEE: WARNING: killing 802 states (over memory cap) +KLEE: WARNING: killing 629 states (over memory cap) +KLEE: WARNING: killing 789 states (over memory cap) +KLEE: WARNING: killing 634 states (over memory cap) +KLEE: WARNING: killing 753 states (over memory cap) +KLEE: WARNING: killing 552 states (over memory cap) + +Transfer generated .ktest to seed file +1) "python edk2-staging/HBFA/UefiHostTestTools/Script/TransferKtestToSeed.py " +2) generate .seed file can be used as seeds for AFL-Fuzzer. + diff --git a/HBFA/UefiHostFuzzTestPkg/ReadMe-LibFuzzer.txt b/HBFA/UefiHostFuzzTestPkg/ReadMe-LibFuzzer.txt new file mode 100644 index 0000000..8f8df7e --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/ReadMe-LibFuzzer.txt @@ -0,0 +1,73 @@ +How to run LibFuzzer in OS? +============== +Install LLVM in Linux +1) Download LLVM 8.0.0 Linux pre build binary from http://releases.llvm.org/download.html +2) Extract clang+llvm-x.x.x-.tar.xz + mv clang+llvm-x.x.x-.tar.xz /home//Env + cd /home//Env + xz -d clang+llvm-x.x.x-.tar.xz +3) Extract clang+llvm-x.x.x-.tar + tar xvf clang+llvm-x.x.x-.tar +4) Add below content at the end of ~/.bashrc: + export CLANG_PATH=/bin + export ASAN_SYMBOLIZER_PATH=$CLANG_PATH/llvm-symbolizer + For example: + export CLANG_PATH=/home/tiano/Env/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin + export ASAN_SYMBOLIZER_PATH=$CLANG_PATH/llvm-symbolizer + +=============== +Install LLVM in Windows (currently CLAGN8) +***NOTE: current CLAGN8 support Sanitizer (IA32/X64) and LIBFUZZER (X64) in Windows. +1) Download LLVM 8.0.0 windows pre build binary from http://releases.llvm.org/download.html and setup LLVM environment. +Note: Please install 64bit exe for X64 build and 32bit exe for IA32 build. +2) After LLVM setup done, please add LLVM installed location to system environment variable: + set LLVM_PATH=<64_LLVM_PATH> + set LLVMx86_PATH =<32_LLVM_PATH> + For example: + set LLVM_PATH=C:\Program Files\LLVM + set LLVMx86_PATH =C:\Program Files (x86)\LLVM +3) Add %LLVM_PATH%\bin, %LLVM_PATH%\lib\clang\8.0.0\lib\windows and %LLVMx86_PATH%\lib\clang\8.0.0\lib\windows to system environment variable PATH. + + +=========================== +Run Clang in Linux +1) python edk2-staging/HBFA/UefiHostTestTools/HBFAEnvSetup.py +2) cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.txt edk2/Conf/build_rule.txt +3) cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.txt edk2/Conf/tools_def.txt +4) export PATH=$CLANG_PATH:$PATH +5) build with "CLANG8" as toolchain. + build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a X64 -t CLANG8 + +Run Clang in Windows +1) python edk2-staging\HBFA\UefiHostTestTools\HBFAEnvSetup.py +2) copy edk2-staging\HBFA\UefiHostFuzzTestPkg\Conf\build_rule.txt edk2\Conf\build_rule.txt +3) copy edk2-staging\HBFA\UefiHostFuzzTestPkg\Conf\tools_def.txt edk2\Conf\tools_def.txt +4) build with "CLANGWIN" as toolchain. + build -p UefiHostFuzzTestCasePkg\UefiHostFuzzTestCasePkg.dsc -a X64 -t CLANGWIN + +=========================== +Run LibFuzzer in Linux: +1) python edk2-staging/HBFA/UefiHostTestTools/HBFAEnvSetup.py +2) cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/build_rule.txt edk2/Conf/build_rule.txt +3) cp edk2-staging/HBFA/UefiHostFuzzTestPkg/Conf/tools_def.txt edk2/Conf/tools_def.txt +4) export PATH=$CLANG_PATH:$PATH +5) build -p UefiHostFuzzTestCasePkg/UefiHostFuzzTestCasePkg.dsc -a X64 -t LIBFUZZER +6) mkdir NEW_CORPUS_DIR +7) cp HBFA/UefiHostFuzzTestCasePkg/Seed/XXX/Raw/Xxx.bin NEW_CORPUS_DIR +8) ./Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestXxx NEW_CORPUS_DIR -rss_limit_mb=0 -artifact_prefix=/ + +Run Clang in Windows +1) python edk2-staging\HBFA\UefiHostTestTools\HBFAEnvSetup.py +2) copy edk2-staging\HBFA\UefiHostFuzzTestPkg\Conf\build_rule.txt edk2\Conf\build_rule.txt +3) copy edk2-staging\HBFA\UefiHostFuzzTestPkg\Conf\tools_def.txt edk2\Conf\tools_def.txt +4) build -p UefiHostFuzzTestCasePkg\UefiHostFuzzTestCasePkg.dsc -a X64 -t LIBFUZZERWIN +5) mkdir NEW_CORPUS_DIR +6) copy HBFA\UefiHostFuzzTestCasePkg\Seed\XXX\Raw\Xxx.bin NEW_CORPUS_DIR +7) .\Build\UefiHostFuzzTestCasePkg\DEBUG_LIBFUZZERWIN\X64\TestXxx.exe NEW_CORPUS_DIR -rss_limit_mb=0 -artifact_prefix=\ + +=========================== +Sanitizer Coverage: +1) goto http://clang.llvm.org/docs/SanitizerCoverage.html, read the content. +2) ASAN_OPTIONS=coverage=1 ./Build/UefiHostFuzzTestCasePkg/DEBUG_LIBFUZZER/X64/TestXxx +3) sancov -symbolize TestXxx.123.sancov my_program > TestXxx.123.symcov +4) python3 tools/sancov/coverage-report-server.py --symcov TestXxx.123.symcov --srcpath diff --git a/HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestBuildOption.dsc b/HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestBuildOption.dsc new file mode 100644 index 0000000..77f41f1 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestBuildOption.dsc @@ -0,0 +1,170 @@ +## @file UefiHostFuzzTestBuildOption.dsc +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /D _CRT_SECURE_NO_WARNINGS + + GCC:*_*_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_PP_FLAGS == -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + + GCC:*_*_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_GCC49_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" + GCC:*_GCC5_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -DUSING_LTO -Os + GCC:*_*_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + + GCC:*_GCC5_*_CC_FLAGS = --coverage + GCC:*_GCC5_*_DLINK_FLAGS = --coverage + + GCC:*_GCC5_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_LIBFUZZER_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_LIBFUZZER_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_LIBFUZZER_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_LIBFUZZER_*_CC_FLAGS = "-DTEST_WITH_LIBFUZZER=TRUE" -O1 -fsanitize=fuzzer,address + GCC:*_LIBFUZZER_*_DLINK2_FLAGS = -fsanitize=fuzzer,address + + GCC:*_CLANG8_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_CLANG8_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_CLANG8_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_CLANG8_*_CC_FLAGS = -O1 -fsanitize=address -fprofile-arcs -ftest-coverage + GCC:*_CLANG8_*_DLINK2_FLAGS = -fsanitize=address --coverage + GCC:*_CLANGWIN_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + GCC:*_CLANGWIN_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + GCC:*_CLANGWIN_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include $(DEST_DIR_DEBUG)\AutoGen.h -D_CRT_SECURE_NO_WARNINGS -Wnonportable-include-path + GCC:*_CLANGWIN_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include $(DEST_DIR_DEBUG)\AutoGen.h -D_CRT_SECURE_NO_WARNINGS -Wnonportable-include-path + GCC:*_CLANGWIN_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_CLANGWIN_*_CC_FLAGS = -O1 + GCC:*_CLANGWIN_*_DLINK2_FLAGS == + + GCC:*_LIBFUZZERWIN_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + GCC:*_LIBFUZZERWIN_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + GCC:*_LIBFUZZERWIN_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include $(DEST_DIR_DEBUG)\AutoGen.h -D_CRT_SECURE_NO_WARNINGS -Wnonportable-include-path + GCC:*_LIBFUZZERWIN_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include $(DEST_DIR_DEBUG)\AutoGen.h -D_CRT_SECURE_NO_WARNINGS -Wnonportable-include-path + GCC:*_LIBFUZZERWIN_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_LIBFUZZERWIN_*_CC_FLAGS = "-DTEST_WITH_LIBFUZZERWIN=TRUE" -O1 -fsanitize=fuzzer,address + GCC:*_LIBFUZZERWIN_*_DLINK2_FLAGS == -fsanitize=fuzzer,address + + GCC:*_AFL_*_CC_PATH = afl-gcc + GCC:*_AFL_X64_CC_FLAGS = -DUSING_LTO + + GCC:*_KLEE_IA32_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) + GCC:*_KLEE_IA32_CC_FLAGS == -m32 -MD -g -fshort-wchar -fno-strict-aliasing -Wno-int-to-void-pointer-cast -Wall -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_IA32_PP_FLAGS == -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_IA32_DLINK2_FLAGS == + + GCC:*_KLEE_X64_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) + GCC:*_KLEE_X64_CC_FLAGS == -m64 -MD -g -fshort-wchar -fno-strict-aliasing -Wno-int-to-void-pointer-cast -Wall -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" + GCC:*_KLEE_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -DUSING_LTO -Os + GCC:*_KLEE_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_X64_DLINK2_FLAGS == + + GCC:*_KLEE_*_CC_PATH = wllvm + GCC:*_KLEE_*_CC_FLAGS = "-DTEST_WITH_KLEE=TRUE" -O2 -O0 -emit-llvm -I"$(KLEE_SRC_PATH)/include" + +[BuildOptions.common.EDKII.USER_DEFINED] + MSFT:*_*_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2015_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2015x86_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2017_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"%VCToolsInstallDir%lib\x86" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_*_IA32_CC_FLAGS == /nologo /W4 /WX /Gy /c /D UNICODE /Od /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE + MSFT:*_*_IA32_PP_FLAGS == /nologo /E /TC /FIAutoGen.h + MSFT:*_*_IA32_ASM_FLAGS == /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi + MSFT:*_*_IA32_ASMLINK_FLAGS == /link /nologo /tiny + + MSFT:*_*_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2015_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2015x86_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2017_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"%VCToolsInstallDir%lib\x64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_*_X64_CC_FLAGS == /nologo /W4 /WX /Gy /c /D UNICODE /Od /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE + MSFT:*_*_X64_PP_FLAGS == /nologo /E /TC /FIAutoGen.h + MSFT:*_*_X64_ASM_FLAGS == /nologo /W3 /WX /c /Cx /Zd /W0 /Zi + MSFT:*_*_X64_ASMLINK_FLAGS == /link /nologo + + GCC:*_*_IA32_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) -m32 -L/usr/X11R6/lib + GCC:*_*_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_PP_FLAGS == -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_DLINK2_FLAGS == -Wno-error -no-pie + + GCC:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) -m64 -L/usr/X11R6/lib + GCC:*_GCC5_X64_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) -m64 -L/usr/X11R6/lib + GCC:*_*_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_GCC49_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" + GCC:*_GCC5_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -DUSING_LTO -Os + GCC:*_*_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_X64_DLINK2_FLAGS == -Wno-error -no-pie + + GCC:*_GCC5_*_CC_FLAGS = -fstack-protector -fstack-protector-strong -fstack-protector-all + + GCC:*_GCC5_*_CC_FLAGS = --coverage + GCC:*_GCC5_*_DLINK_FLAGS = --coverage + + GCC:*_GCC5_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_LIBFUZZER_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_LIBFUZZER_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_LIBFUZZER_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_LIBFUZZER_*_CC_FLAGS = "-DTEST_WITH_LIBFUZZER=TRUE" -O1 -fsanitize=fuzzer,address + GCC:*_LIBFUZZER_*_DLINK2_FLAGS = -fsanitize=fuzzer,address + + GCC:*_CLANG8_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_CLANG8_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_CLANG8_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_CLANG8_*_CC_FLAGS = -O1 -fsanitize=address -fprofile-arcs -ftest-coverage + GCC:*_CLANG8_*_DLINK2_FLAGS = -fsanitize=address --coverage + + + GCC:*_CLANGWIN_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /LIBPATH:"%LLVMx86_PATH%\lib\clang\8.0.0\lib\windows" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib clang_rt.asan_dynamic-i386.lib clang_rt.asan_dynamic_runtime_thunk-i386.lib + GCC:*_CLANGWIN_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /LIBPATH:"%LLVM_PATH%\lib\clang\8.0.0\lib\windows" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib clang_rt.asan_dynamic-x86_64.lib clang_rt.asan_dynamic_runtime_thunk-x86_64.lib + GCC:*_CLANGWIN_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include $(DEST_DIR_DEBUG)\AutoGen.h -D_CRT_SECURE_NO_WARNINGS -Wnonportable-include-path + GCC:*_CLANGWIN_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include $(DEST_DIR_DEBUG)\AutoGen.h -D_CRT_SECURE_NO_WARNINGS -Wnonportable-include-path + GCC:*_CLANGWIN_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_CLANGWIN_*_CC_FLAGS = -O1 + GCC:*_CLANGWIN_*_DLINK2_FLAGS == + + GCC:*_CLANGWIN_*_CC_FLAGS = -fsanitize=address + + GCC:*_LIBFUZZERWIN_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /LIBPATH:"%LLVMx86_PATH%\lib\clang\8.0.0\lib\windows" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib clang_rt.asan_dynamic-i386.lib clang_rt.asan_dynamic_runtime_thunk-i386.lib clang_rt.fuzzer-i386.lib + GCC:*_LIBFUZZERWIN_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /LIBPATH:"%LLVM_PATH%\lib\clang\8.0.0\lib\windows" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib clang_rt.asan_dynamic-x86_64.lib clang_rt.asan_dynamic_runtime_thunk-x86_64.lib clang_rt.fuzzer-x86_64.lib + GCC:*_LIBFUZZERWIN_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include $(DEST_DIR_DEBUG)\AutoGen.h -D_CRT_SECURE_NO_WARNINGS -Wnonportable-include-path + GCC:*_LIBFUZZERWIN_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include $(DEST_DIR_DEBUG)\AutoGen.h -D_CRT_SECURE_NO_WARNINGS -Wnonportable-include-path + GCC:*_LIBFUZZERWIN_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + + GCC:*_LIBFUZZERWIN_*_CC_FLAGS = "-DTEST_WITH_LIBFUZZERWIN=TRUE" -O1 -fsanitize=fuzzer,address + GCC:*_LIBFUZZERWIN_*_DLINK2_FLAGS == -fsanitize=fuzzer,address + + GCC:*_AFL_*_CC_PATH = afl-gcc + + GCC:*_KLEE_IA32_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) + GCC:*_KLEE_IA32_CC_FLAGS == -m32 -MD -g -fshort-wchar -fno-strict-aliasing -Wno-int-to-void-pointer-cast -Wall -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_IA32_PP_FLAGS == -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_IA32_DLINK2_FLAGS == + + GCC:*_KLEE_X64_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) + GCC:*_KLEE_X64_CC_FLAGS == -m64 -MD -g -fshort-wchar -fno-strict-aliasing -Wno-int-to-void-pointer-cast -Wall -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" + GCC:*_KLEE_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -DUSING_LTO -Os + GCC:*_KLEE_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_KLEE_X64_DLINK2_FLAGS == + + GCC:*_KLEE_*_CC_PATH = wllvm + GCC:*_KLEE_*_CC_FLAGS = "-DTEST_WITH_KLEE=TRUE" -O2 -O0 -emit-llvm -I"$(KLEE_SRC_PATH)/include" diff --git a/HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestPkg.dec b/HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestPkg.dec new file mode 100644 index 0000000..9fa3ac0 --- /dev/null +++ b/HBFA/UefiHostFuzzTestPkg/UefiHostFuzzTestPkg.dec @@ -0,0 +1,15 @@ +## @file UefiHostFuzzTestPkg.dec +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION = 0x00010005 + PACKAGE_NAME = UefiHostFuzzTestPkg + PACKAGE_GUID = 9996C2CE-80B4-473E-B7C3-E326BA6B5D73 + PACKAGE_VERSION = 0.11 + +[Includes] + Include \ No newline at end of file diff --git a/HBFA/UefiHostTestPkg/Include/Library/OsServiceLib.h b/HBFA/UefiHostTestPkg/Include/Library/OsServiceLib.h new file mode 100644 index 0000000..a50b892 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Include/Library/OsServiceLib.h @@ -0,0 +1,24 @@ +/** + +Implement UnitTestLib + +Copyright (c) Microsoft +**/ + +#ifndef _OS_SERVICE_LIB_H_ +#define _OS_SERVICE_LIB_H_ + +#include + +VOID * +AllocateExecutableMemory ( + IN UINTN Size + ); + +VOID +FreeExecutableMemory ( + IN VOID *Buffer, + IN UINTN Size + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/BaseCacheMaintenanceLibHost.inf b/HBFA/UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/BaseCacheMaintenanceLibHost.inf new file mode 100644 index 0000000..3ef2f30 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/BaseCacheMaintenanceLibHost.inf @@ -0,0 +1,31 @@ +## @file +# Instance of Cache Maintenance Library using Base Library services. +# +# Cache Maintenance Library that uses Base Library services to maintain caches. +# This library assumes there are no chipset dependencies required to maintain caches. +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    +# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseCacheMaintenanceLibHost + FILE_GUID = 0F652FA7-946D-4737-A6D7-4B8B97AD0EA3 + MODULE_TYPE = BASE + VERSION_STRING = 1.1 + LIBRARY_CLASS = CacheMaintenanceLib + +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC ARM AARCH64 +# + +[Sources] + Cache.c + +[Packages] + MdePkg/MdePkg.dec diff --git a/HBFA/UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/Cache.c b/HBFA/UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/Cache.c new file mode 100644 index 0000000..a350df3 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/Cache.c @@ -0,0 +1,226 @@ +/** @file + Cache Maintenance Functions. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + + +**/ + +#include +#include +#include + +/** + Invalidates the entire instruction cache in cache coherency domain of the + calling CPU. + +**/ +VOID +EFIAPI +InvalidateInstructionCache ( + VOID + ) +{ +} + +/** + Invalidates a range of instruction cache lines in the cache coherency domain + of the calling CPU. + + Invalidates the instruction cache lines specified by Address and Length. If + Address is not aligned on a cache line boundary, then entire instruction + cache line containing Address is invalidated. If Address + Length is not + aligned on a cache line boundary, then the entire instruction cache line + containing Address + Length -1 is invalidated. This function may choose to + invalidate the entire instruction cache if that is more efficient than + invalidating the specified range. If Length is 0, then no instruction cache + lines are invalidated. Address is returned. + + If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT(). + + @param Address The base address of the instruction cache lines to + invalidate. If the CPU is in a physical addressing mode, then + Address is a physical address. If the CPU is in a virtual + addressing mode, then Address is a virtual address. + + @param Length The number of bytes to invalidate from the instruction cache. + + @return Address. + +**/ +VOID * +EFIAPI +InvalidateInstructionCacheRange ( + IN VOID *Address, + IN UINTN Length + ) +{ + return Address; +} + +/** + Writes back and invalidates the entire data cache in cache coherency domain + of the calling CPU. + + Writes back and invalidates the entire data cache in cache coherency domain + of the calling CPU. This function guarantees that all dirty cache lines are + written back to system memory, and also invalidates all the data cache lines + in the cache coherency domain of the calling CPU. + +**/ +VOID +EFIAPI +WriteBackInvalidateDataCache ( + VOID + ) +{ + +} + +/** + Writes back and invalidates a range of data cache lines in the cache + coherency domain of the calling CPU. + + Writes back and invalidates the data cache lines specified by Address and + Length. If Address is not aligned on a cache line boundary, then entire data + cache line containing Address is written back and invalidated. If Address + + Length is not aligned on a cache line boundary, then the entire data cache + line containing Address + Length -1 is written back and invalidated. This + function may choose to write back and invalidate the entire data cache if + that is more efficient than writing back and invalidating the specified + range. If Length is 0, then no data cache lines are written back and + invalidated. Address is returned. + + If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT(). + + @param Address The base address of the data cache lines to write back and + invalidate. If the CPU is in a physical addressing mode, then + Address is a physical address. If the CPU is in a virtual + addressing mode, then Address is a virtual address. + @param Length The number of bytes to write back and invalidate from the + data cache. + + @return Address of cache invalidation. + +**/ +VOID * +EFIAPI +WriteBackInvalidateDataCacheRange ( + IN VOID *Address, + IN UINTN Length + ) +{ + return Address; +} + +/** + Writes back the entire data cache in cache coherency domain of the calling + CPU. + + Writes back the entire data cache in cache coherency domain of the calling + CPU. This function guarantees that all dirty cache lines are written back to + system memory. This function may also invalidate all the data cache lines in + the cache coherency domain of the calling CPU. + +**/ +VOID +EFIAPI +WriteBackDataCache ( + VOID + ) +{ + WriteBackInvalidateDataCache (); +} + +/** + Writes back a range of data cache lines in the cache coherency domain of the + calling CPU. + + Writes back the data cache lines specified by Address and Length. If Address + is not aligned on a cache line boundary, then entire data cache line + containing Address is written back. If Address + Length is not aligned on a + cache line boundary, then the entire data cache line containing Address + + Length -1 is written back. This function may choose to write back the entire + data cache if that is more efficient than writing back the specified range. + If Length is 0, then no data cache lines are written back. This function may + also invalidate all the data cache lines in the specified range of the cache + coherency domain of the calling CPU. Address is returned. + + If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT(). + + @param Address The base address of the data cache lines to write back. If + the CPU is in a physical addressing mode, then Address is a + physical address. If the CPU is in a virtual addressing + mode, then Address is a virtual address. + @param Length The number of bytes to write back from the data cache. + + @return Address of cache written in main memory. + +**/ +VOID * +EFIAPI +WriteBackDataCacheRange ( + IN VOID *Address, + IN UINTN Length + ) +{ + return WriteBackInvalidateDataCacheRange (Address, Length); +} + +/** + Invalidates the entire data cache in cache coherency domain of the calling + CPU. + + Invalidates the entire data cache in cache coherency domain of the calling + CPU. This function must be used with care because dirty cache lines are not + written back to system memory. It is typically used for cache diagnostics. If + the CPU does not support invalidation of the entire data cache, then a write + back and invalidate operation should be performed on the entire data cache. + +**/ +VOID +EFIAPI +InvalidateDataCache ( + VOID + ) +{ + +} + +/** + Invalidates a range of data cache lines in the cache coherency domain of the + calling CPU. + + Invalidates the data cache lines specified by Address and Length. If Address + is not aligned on a cache line boundary, then entire data cache line + containing Address is invalidated. If Address + Length is not aligned on a + cache line boundary, then the entire data cache line containing Address + + Length -1 is invalidated. This function must never invalidate any cache lines + outside the specified range. If Length is 0, then no data cache lines are + invalidated. Address is returned. This function must be used with care + because dirty cache lines are not written back to system memory. It is + typically used for cache diagnostics. If the CPU does not support + invalidation of a data cache range, then a write back and invalidate + operation should be performed on the data cache range. + + If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT(). + + @param Address The base address of the data cache lines to invalidate. If + the CPU is in a physical addressing mode, then Address is a + physical address. If the CPU is in a virtual addressing mode, + then Address is a virtual address. + @param Length The number of bytes to invalidate from the data cache. + + @return Address. + +**/ +VOID * +EFIAPI +InvalidateDataCacheRange ( + IN VOID *Address, + IN UINTN Length + ) +{ + return WriteBackInvalidateDataCacheRange (Address, Length); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.c b/HBFA/UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.c new file mode 100644 index 0000000..ab0ef3c --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.c @@ -0,0 +1,38 @@ +/** @file + Base Library CPU Functions for EBC + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include + +/** + Flushes all the Translation Lookaside Buffers(TLB) entries in a CPU. + + Flushes all the Translation Lookaside Buffers(TLB) entries in a CPU. + +**/ +VOID +EFIAPI +CpuFlushTlb ( + VOID + ) +{ +} + +/** + Places the CPU in a sleep state until an interrupt is received. + + Places the CPU in a sleep state until an interrupt is received. If interrupts + are disabled prior to calling this function, then the CPU will be placed in a + sleep state indefinitely. + +**/ +VOID +EFIAPI +CpuSleep ( + VOID + ) +{ +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.inf b/HBFA/UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.inf new file mode 100644 index 0000000..07ac365 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.inf @@ -0,0 +1,25 @@ +## @file +# Instance of CPU Library for various architecture. +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseCpuLibHost + FILE_GUID = 197E7CD0-2C4A-4AF1-A84D-DCAC0A1D7EF8 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = CpuLib + +[Sources] + BaseCpuLibHost.c + +[Packages] + MdePkg/MdePkg.dec + + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/ARShiftU64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/ARShiftU64.c new file mode 100644 index 0000000..82aa010 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/ARShiftU64.c @@ -0,0 +1,44 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathARShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ); + +/** + Shifts a 64-bit integer right between 0 and 63 bits. The high bits are filled + with the original integer's bit 63. The shifted value is returned. + + This function shifts the 64-bit value Operand to the right by Count bits. The + high Count bits are set to bit 63 of Operand. The shifted value is returned. + + If Count is greater than 63, then ASSERT(). + + @param Operand The 64-bit operand to shift right. + @param Count The number of bits to shift right. + + @return Operand >> Count + +**/ +UINT64 +EFIAPI +ARShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + ASSERT (Count < 64); + return InternalMathARShiftU64 (Operand, Count); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf b/HBFA/UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf new file mode 100644 index 0000000..29db48f --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf @@ -0,0 +1,80 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseLibHost + FILE_GUID = FA4A8DE0-8D55-44AA-8368-07D24BDA6A7D + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = BaseLib + +[Sources] + Math64.c + RShiftU64.c + LShiftU64.c + ARShiftU64.c + MultU64x64.c + MultS64x64.c + MultU64x32.c + DivS64x64Remainder.c + DivU64x64Remainder.c + DivU64x32Remainder.c + DivU64x32.c + ModU64x32.c + SwapBytes16.c + SwapBytes32.c + SwapBytes64.c + BitField.c + GetPowerOfTwo32.c + GetPowerOfTwo64.c + HighBitSet32.c + HighBitSet64.c + LowBitSet32.c + LowBitSet64.c + LRotU32.c + LRotU64.c + RRotU32.c + RRotU64.c + SafeString.c + String.c + CheckSum.c + CpuDeadLoop.c + LinkedList.c + Unaligned.c + SetJump.c + LongJump.c + X86MemoryFenceMsvc.c | MSFT + X86MemoryFenceGcc.c | GCC + CpuBreakpointMsvc.c | MSFT + CpuBreakpointGcc.c | GCC + Cpu.c + Cache.c + X86Cr.c + X86Dr.c + X86RdRand.c + X86PatchInstruction.c + X86GdtrNull.c + X86IdtrNull.c + X86SegmentNull.c + X86DisablePaging64Null.c + SwitchStackNull.c + +[Sources.Ia32] + Ia32/RdRand.nasm + Ia32/ReadTsc.nasm + +[Sources.X64] + X64/RdRand.nasm + X64/ReadTsc.nasm + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseMemoryLib diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/BaseLibHostNoAsm.inf b/HBFA/UefiHostTestPkg/Library/BaseLibHost/BaseLibHostNoAsm.inf new file mode 100644 index 0000000..bd93a24 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/BaseLibHostNoAsm.inf @@ -0,0 +1,76 @@ +## @file +# +# this is a special build to pass KLEE build, because KLEE cannot use ASM. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseLibHost + FILE_GUID = FA4A8DE0-8D55-44AA-8368-07D24BDA6A7D + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = BaseLib + +[Sources] + Math64.c + RShiftU64.c + LShiftU64.c + ARShiftU64.c + MultU64x64.c + MultS64x64.c + MultU64x32.c + DivS64x64Remainder.c + DivU64x64Remainder.c + DivU64x32Remainder.c + DivU64x32.c + ModU64x32.c + SwapBytes16.c + SwapBytes32.c + SwapBytes64.c + BitField.c + GetPowerOfTwo32.c + GetPowerOfTwo64.c + HighBitSet32.c + HighBitSet64.c + LowBitSet32.c + LowBitSet64.c + LRotU32.c + LRotU64.c + RRotU32.c + RRotU64.c + SafeString.c + String.c + CheckSum.c + CpuDeadLoop.c + LinkedList.c + Unaligned.c + SetJump.c + LongJump.c + X86MemoryFenceMsvc.c | MSFT + X86MemoryFenceGcc.c | GCC + CpuBreakpointMsvc.c | MSFT + CpuBreakpointGcc.c | GCC + Cpu.c + Cache.c + X86Cr.c + X86Dr.c + X86RdRand.c + X86PatchInstruction.c + X86GdtrNull.c + X86IdtrNull.c + X86SegmentNull.c + X86DisablePaging64Null.c + SwitchStackNull.c + DummyRdRand.c + DummyReadTsc.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseMemoryLib diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/BitField.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/BitField.c new file mode 100644 index 0000000..8d044e0 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/BitField.c @@ -0,0 +1,1004 @@ +/** @file + Bit field functions of BaseLib. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Worker function that returns a bit field from Operand. + + Returns the bitfield specified by the StartBit and the EndBit from Operand. + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + @param EndBit The ordinal of the most significant bit in the bit field. + + @return The bit field read. + +**/ +UINTN +EFIAPI +InternalBaseLibBitFieldReadUint ( + IN UINTN Operand, + IN UINTN StartBit, + IN UINTN EndBit + ) +{ + // + // ~((UINTN)-2 << EndBit) is a mask in which bit[0] thru bit[EndBit] + // are 1's while bit[EndBit + 1] thru the most significant bit are 0's. + // + return (Operand & ~((UINTN)-2 << EndBit)) >> StartBit; +} + +/** + Worker function that reads a bit field from Operand, performs a bitwise OR, + and returns the result. + + Performs a bitwise OR between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData. All other bits in Operand are + preserved. The new value is returned. + + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + @param EndBit The ordinal of the most significant bit in the bit field. + @param OrData The value to OR with the read value from the value. + + @return The new value. + +**/ +UINTN +EFIAPI +InternalBaseLibBitFieldOrUint ( + IN UINTN Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINTN OrData + ) +{ + // + // Higher bits in OrData those are not used must be zero. + // + // EndBit - StartBit + 1 might be 32 while the result right shifting 32 on a 32bit integer is undefined, + // So the logic is updated to right shift (EndBit - StartBit) bits and compare the last bit directly. + // + ASSERT ((OrData >> (EndBit - StartBit)) == ((OrData >> (EndBit - StartBit)) & 1)); + + // + // ~((UINTN)-2 << EndBit) is a mask in which bit[0] thru bit[EndBit] + // are 1's while bit[EndBit + 1] thru the most significant bit are 0's. + // + return Operand | ((OrData << StartBit) & ~((UINTN) -2 << EndBit)); +} + +/** + Worker function that reads a bit field from Operand, performs a bitwise AND, + and returns the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData. All other bits in Operand are + preserved. The new value is returned. + + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + @param EndBit The ordinal of the most significant bit in the bit field. + @param AndData The value to And with the read value from the value. + + @return The new value. + +**/ +UINTN +EFIAPI +InternalBaseLibBitFieldAndUint ( + IN UINTN Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINTN AndData + ) +{ + // + // Higher bits in AndData those are not used must be zero. + // + // EndBit - StartBit + 1 might be 32 while the result right shifting 32 on a 32bit integer is undefined, + // So the logic is updated to right shift (EndBit - StartBit) bits and compare the last bit directly. + // + ASSERT ((AndData >> (EndBit - StartBit)) == ((AndData >> (EndBit - StartBit)) & 1)); + + // + // ~((UINTN)-2 << EndBit) is a mask in which bit[0] thru bit[EndBit] + // are 1's while bit[EndBit + 1] thru the most significant bit are 0's. + // + return Operand & ~((~AndData << StartBit) & ~((UINTN)-2 << EndBit)); +} + +/** + Returns a bit field from an 8-bit value. + + Returns the bitfield specified by the StartBit and the EndBit from Operand. + + If 8-bit operations are not supported, then ASSERT(). + If StartBit is greater than 7, then ASSERT(). + If EndBit is greater than 7, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..7. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..7. + + @return The bit field read. + +**/ +UINT8 +EFIAPI +BitFieldRead8 ( + IN UINT8 Operand, + IN UINTN StartBit, + IN UINTN EndBit + ) +{ + ASSERT (EndBit < 8); + ASSERT (StartBit <= EndBit); + return (UINT8)InternalBaseLibBitFieldReadUint (Operand, StartBit, EndBit); +} + +/** + Writes a bit field to an 8-bit value, and returns the result. + + Writes Value to the bit field specified by the StartBit and the EndBit in + Operand. All other bits in Operand are preserved. The new 8-bit value is + returned. + + If 8-bit operations are not supported, then ASSERT(). + If StartBit is greater than 7, then ASSERT(). + If EndBit is greater than 7, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..7. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..7. + @param Value The new value of the bit field. + + @return The new 8-bit value. + +**/ +UINT8 +EFIAPI +BitFieldWrite8 ( + IN UINT8 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 Value + ) +{ + ASSERT (EndBit < 8); + ASSERT (StartBit <= EndBit); + return BitFieldAndThenOr8 (Operand, StartBit, EndBit, 0, Value); +} + +/** + Reads a bit field from an 8-bit value, performs a bitwise OR, and returns the + result. + + Performs a bitwise OR between the bit field specified by StartBit + and EndBit in Operand and the value specified by OrData. All other bits in + Operand are preserved. The new 8-bit value is returned. + + If 8-bit operations are not supported, then ASSERT(). + If StartBit is greater than 7, then ASSERT(). + If EndBit is greater than 7, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..7. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..7. + @param OrData The value to OR with the read value from the value. + + @return The new 8-bit value. + +**/ +UINT8 +EFIAPI +BitFieldOr8 ( + IN UINT8 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 OrData + ) +{ + ASSERT (EndBit < 8); + ASSERT (StartBit <= EndBit); + return (UINT8)InternalBaseLibBitFieldOrUint (Operand, StartBit, EndBit, OrData); +} + +/** + Reads a bit field from an 8-bit value, performs a bitwise AND, and returns + the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData. All other bits in Operand are + preserved. The new 8-bit value is returned. + + If 8-bit operations are not supported, then ASSERT(). + If StartBit is greater than 7, then ASSERT(). + If EndBit is greater than 7, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..7. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..7. + @param AndData The value to AND with the read value from the value. + + @return The new 8-bit value. + +**/ +UINT8 +EFIAPI +BitFieldAnd8 ( + IN UINT8 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 AndData + ) +{ + ASSERT (EndBit < 8); + ASSERT (StartBit <= EndBit); + return (UINT8)InternalBaseLibBitFieldAndUint (Operand, StartBit, EndBit, AndData); +} + +/** + Reads a bit field from an 8-bit value, performs a bitwise AND followed by a + bitwise OR, and returns the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData, followed by a bitwise + OR with value specified by OrData. All other bits in Operand are + preserved. The new 8-bit value is returned. + + If 8-bit operations are not supported, then ASSERT(). + If StartBit is greater than 7, then ASSERT(). + If EndBit is greater than 7, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..7. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..7. + @param AndData The value to AND with the read value from the value. + @param OrData The value to OR with the result of the AND operation. + + @return The new 8-bit value. + +**/ +UINT8 +EFIAPI +BitFieldAndThenOr8 ( + IN UINT8 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 AndData, + IN UINT8 OrData + ) +{ + ASSERT (EndBit < 8); + ASSERT (StartBit <= EndBit); + return BitFieldOr8 ( + BitFieldAnd8 (Operand, StartBit, EndBit, AndData), + StartBit, + EndBit, + OrData + ); +} + +/** + Returns a bit field from a 16-bit value. + + Returns the bitfield specified by the StartBit and the EndBit from Operand. + + If 16-bit operations are not supported, then ASSERT(). + If StartBit is greater than 15, then ASSERT(). + If EndBit is greater than 15, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..15. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..15. + + @return The bit field read. + +**/ +UINT16 +EFIAPI +BitFieldRead16 ( + IN UINT16 Operand, + IN UINTN StartBit, + IN UINTN EndBit + ) +{ + ASSERT (EndBit < 16); + ASSERT (StartBit <= EndBit); + return (UINT16)InternalBaseLibBitFieldReadUint (Operand, StartBit, EndBit); +} + +/** + Writes a bit field to a 16-bit value, and returns the result. + + Writes Value to the bit field specified by the StartBit and the EndBit in + Operand. All other bits in Operand are preserved. The new 16-bit value is + returned. + + If 16-bit operations are not supported, then ASSERT(). + If StartBit is greater than 15, then ASSERT(). + If EndBit is greater than 15, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..15. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..15. + @param Value The new value of the bit field. + + @return The new 16-bit value. + +**/ +UINT16 +EFIAPI +BitFieldWrite16 ( + IN UINT16 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 Value + ) +{ + ASSERT (EndBit < 16); + ASSERT (StartBit <= EndBit); + return BitFieldAndThenOr16 (Operand, StartBit, EndBit, 0, Value); +} + +/** + Reads a bit field from a 16-bit value, performs a bitwise OR, and returns the + result. + + Performs a bitwise OR between the bit field specified by StartBit + and EndBit in Operand and the value specified by OrData. All other bits in + Operand are preserved. The new 16-bit value is returned. + + If 16-bit operations are not supported, then ASSERT(). + If StartBit is greater than 15, then ASSERT(). + If EndBit is greater than 15, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..15. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..15. + @param OrData The value to OR with the read value from the value. + + @return The new 16-bit value. + +**/ +UINT16 +EFIAPI +BitFieldOr16 ( + IN UINT16 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 OrData + ) +{ + ASSERT (EndBit < 16); + ASSERT (StartBit <= EndBit); + return (UINT16)InternalBaseLibBitFieldOrUint (Operand, StartBit, EndBit, OrData); +} + +/** + Reads a bit field from a 16-bit value, performs a bitwise AND, and returns + the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData. All other bits in Operand are + preserved. The new 16-bit value is returned. + + If 16-bit operations are not supported, then ASSERT(). + If StartBit is greater than 15, then ASSERT(). + If EndBit is greater than 15, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..15. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..15. + @param AndData The value to AND with the read value from the value. + + @return The new 16-bit value. + +**/ +UINT16 +EFIAPI +BitFieldAnd16 ( + IN UINT16 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 AndData + ) +{ + ASSERT (EndBit < 16); + ASSERT (StartBit <= EndBit); + return (UINT16)InternalBaseLibBitFieldAndUint (Operand, StartBit, EndBit, AndData); +} + +/** + Reads a bit field from a 16-bit value, performs a bitwise AND followed by a + bitwise OR, and returns the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData, followed by a bitwise + OR with value specified by OrData. All other bits in Operand are + preserved. The new 16-bit value is returned. + + If 16-bit operations are not supported, then ASSERT(). + If StartBit is greater than 15, then ASSERT(). + If EndBit is greater than 15, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..15. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..15. + @param AndData The value to AND with the read value from the value. + @param OrData The value to OR with the result of the AND operation. + + @return The new 16-bit value. + +**/ +UINT16 +EFIAPI +BitFieldAndThenOr16 ( + IN UINT16 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 AndData, + IN UINT16 OrData + ) +{ + ASSERT (EndBit < 16); + ASSERT (StartBit <= EndBit); + return BitFieldOr16 ( + BitFieldAnd16 (Operand, StartBit, EndBit, AndData), + StartBit, + EndBit, + OrData + ); +} + +/** + Returns a bit field from a 32-bit value. + + Returns the bitfield specified by the StartBit and the EndBit from Operand. + + If 32-bit operations are not supported, then ASSERT(). + If StartBit is greater than 31, then ASSERT(). + If EndBit is greater than 31, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..31. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..31. + + @return The bit field read. + +**/ +UINT32 +EFIAPI +BitFieldRead32 ( + IN UINT32 Operand, + IN UINTN StartBit, + IN UINTN EndBit + ) +{ + ASSERT (EndBit < 32); + ASSERT (StartBit <= EndBit); + return (UINT32)InternalBaseLibBitFieldReadUint (Operand, StartBit, EndBit); +} + +/** + Writes a bit field to a 32-bit value, and returns the result. + + Writes Value to the bit field specified by the StartBit and the EndBit in + Operand. All other bits in Operand are preserved. The new 32-bit value is + returned. + + If 32-bit operations are not supported, then ASSERT(). + If StartBit is greater than 31, then ASSERT(). + If EndBit is greater than 31, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..31. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..31. + @param Value The new value of the bit field. + + @return The new 32-bit value. + +**/ +UINT32 +EFIAPI +BitFieldWrite32 ( + IN UINT32 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 Value + ) +{ + ASSERT (EndBit < 32); + ASSERT (StartBit <= EndBit); + return BitFieldAndThenOr32 (Operand, StartBit, EndBit, 0, Value); +} + +/** + Reads a bit field from a 32-bit value, performs a bitwise OR, and returns the + result. + + Performs a bitwise OR between the bit field specified by StartBit + and EndBit in Operand and the value specified by OrData. All other bits in + Operand are preserved. The new 32-bit value is returned. + + If 32-bit operations are not supported, then ASSERT(). + If StartBit is greater than 31, then ASSERT(). + If EndBit is greater than 31, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..31. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..31. + @param OrData The value to OR with the read value from the value. + + @return The new 32-bit value. + +**/ +UINT32 +EFIAPI +BitFieldOr32 ( + IN UINT32 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 OrData + ) +{ + ASSERT (EndBit < 32); + ASSERT (StartBit <= EndBit); + return (UINT32)InternalBaseLibBitFieldOrUint (Operand, StartBit, EndBit, OrData); +} + +/** + Reads a bit field from a 32-bit value, performs a bitwise AND, and returns + the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData. All other bits in Operand are + preserved. The new 32-bit value is returned. + + If 32-bit operations are not supported, then ASSERT(). + If StartBit is greater than 31, then ASSERT(). + If EndBit is greater than 31, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..31. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..31. + @param AndData The value to AND with the read value from the value. + + @return The new 32-bit value. + +**/ +UINT32 +EFIAPI +BitFieldAnd32 ( + IN UINT32 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 AndData + ) +{ + ASSERT (EndBit < 32); + ASSERT (StartBit <= EndBit); + return (UINT32)InternalBaseLibBitFieldAndUint (Operand, StartBit, EndBit, AndData); +} + +/** + Reads a bit field from a 32-bit value, performs a bitwise AND followed by a + bitwise OR, and returns the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData, followed by a bitwise + OR with value specified by OrData. All other bits in Operand are + preserved. The new 32-bit value is returned. + + If 32-bit operations are not supported, then ASSERT(). + If StartBit is greater than 31, then ASSERT(). + If EndBit is greater than 31, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..31. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..31. + @param AndData The value to AND with the read value from the value. + @param OrData The value to OR with the result of the AND operation. + + @return The new 32-bit value. + +**/ +UINT32 +EFIAPI +BitFieldAndThenOr32 ( + IN UINT32 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 AndData, + IN UINT32 OrData + ) +{ + ASSERT (EndBit < 32); + ASSERT (StartBit <= EndBit); + return BitFieldOr32 ( + BitFieldAnd32 (Operand, StartBit, EndBit, AndData), + StartBit, + EndBit, + OrData + ); +} + +/** + Returns a bit field from a 64-bit value. + + Returns the bitfield specified by the StartBit and the EndBit from Operand. + + If 64-bit operations are not supported, then ASSERT(). + If StartBit is greater than 63, then ASSERT(). + If EndBit is greater than 63, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..63. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..63. + + @return The bit field read. + +**/ +UINT64 +EFIAPI +BitFieldRead64 ( + IN UINT64 Operand, + IN UINTN StartBit, + IN UINTN EndBit + ) +{ + ASSERT (EndBit < 64); + ASSERT (StartBit <= EndBit); + return RShiftU64 (Operand & ~LShiftU64 ((UINT64)-2, EndBit), StartBit); +} + +/** + Writes a bit field to a 64-bit value, and returns the result. + + Writes Value to the bit field specified by the StartBit and the EndBit in + Operand. All other bits in Operand are preserved. The new 64-bit value is + returned. + + If 64-bit operations are not supported, then ASSERT(). + If StartBit is greater than 63, then ASSERT(). + If EndBit is greater than 63, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..63. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..63. + @param Value The new value of the bit field. + + @return The new 64-bit value. + +**/ +UINT64 +EFIAPI +BitFieldWrite64 ( + IN UINT64 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 Value + ) +{ + ASSERT (EndBit < 64); + ASSERT (StartBit <= EndBit); + return BitFieldAndThenOr64 (Operand, StartBit, EndBit, 0, Value); +} + +/** + Reads a bit field from a 64-bit value, performs a bitwise OR, and returns the + result. + + Performs a bitwise OR between the bit field specified by StartBit + and EndBit in Operand and the value specified by OrData. All other bits in + Operand are preserved. The new 64-bit value is returned. + + If 64-bit operations are not supported, then ASSERT(). + If StartBit is greater than 63, then ASSERT(). + If EndBit is greater than 63, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..63. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..63. + @param OrData The value to OR with the read value from the value + + @return The new 64-bit value. + +**/ +UINT64 +EFIAPI +BitFieldOr64 ( + IN UINT64 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 OrData + ) +{ + UINT64 Value1; + UINT64 Value2; + + ASSERT (EndBit < 64); + ASSERT (StartBit <= EndBit); + // + // Higher bits in OrData those are not used must be zero. + // + // EndBit - StartBit + 1 might be 64 while the result right shifting 64 on RShiftU64() API is invalid, + // So the logic is updated to right shift (EndBit - StartBit) bits and compare the last bit directly. + // + ASSERT (RShiftU64 (OrData, EndBit - StartBit) == (RShiftU64 (OrData, EndBit - StartBit) & 1)); + + Value1 = LShiftU64 (OrData, StartBit); + Value2 = LShiftU64 ((UINT64) - 2, EndBit); + + return Operand | (Value1 & ~Value2); +} + +/** + Reads a bit field from a 64-bit value, performs a bitwise AND, and returns + the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData. All other bits in Operand are + preserved. The new 64-bit value is returned. + + If 64-bit operations are not supported, then ASSERT(). + If StartBit is greater than 63, then ASSERT(). + If EndBit is greater than 63, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..63. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..63. + @param AndData The value to AND with the read value from the value. + + @return The new 64-bit value. + +**/ +UINT64 +EFIAPI +BitFieldAnd64 ( + IN UINT64 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 AndData + ) +{ + UINT64 Value1; + UINT64 Value2; + + ASSERT (EndBit < 64); + ASSERT (StartBit <= EndBit); + // + // Higher bits in AndData those are not used must be zero. + // + // EndBit - StartBit + 1 might be 64 while the right shifting 64 on RShiftU64() API is invalid, + // So the logic is updated to right shift (EndBit - StartBit) bits and compare the last bit directly. + // + ASSERT (RShiftU64 (AndData, EndBit - StartBit) == (RShiftU64 (AndData, EndBit - StartBit) & 1)); + + Value1 = LShiftU64 (~AndData, StartBit); + Value2 = LShiftU64 ((UINT64)-2, EndBit); + + return Operand & ~(Value1 & ~Value2); +} + +/** + Reads a bit field from a 64-bit value, performs a bitwise AND followed by a + bitwise OR, and returns the result. + + Performs a bitwise AND between the bit field specified by StartBit and EndBit + in Operand and the value specified by AndData, followed by a bitwise + OR with value specified by OrData. All other bits in Operand are + preserved. The new 64-bit value is returned. + + If 64-bit operations are not supported, then ASSERT(). + If StartBit is greater than 63, then ASSERT(). + If EndBit is greater than 63, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..63. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..63. + @param AndData The value to AND with the read value from the value. + @param OrData The value to OR with the result of the AND operation. + + @return The new 64-bit value. + +**/ +UINT64 +EFIAPI +BitFieldAndThenOr64 ( + IN UINT64 Operand, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 AndData, + IN UINT64 OrData + ) +{ + ASSERT (EndBit < 64); + ASSERT (StartBit <= EndBit); + return BitFieldOr64 ( + BitFieldAnd64 (Operand, StartBit, EndBit, AndData), + StartBit, + EndBit, + OrData + ); +} + +/** + Reads a bit field from a 32-bit value, counts and returns + the number of set bits. + + Counts the number of set bits in the bit field specified by + StartBit and EndBit in Operand. The count is returned. + + If StartBit is greater than 31, then ASSERT(). + If EndBit is greater than 31, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..31. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..31. + + @return The number of bits set between StartBit and EndBit. + +**/ +UINT8 +EFIAPI +BitFieldCountOnes32 ( + IN UINT32 Operand, + IN UINTN StartBit, + IN UINTN EndBit + ) +{ + UINT32 Count; + + ASSERT (EndBit < 32); + ASSERT (StartBit <= EndBit); + + Count = BitFieldRead32 (Operand, StartBit, EndBit); + Count -= ((Count >> 1) & 0x55555555); + Count = (Count & 0x33333333) + ((Count >> 2) & 0x33333333); + Count += Count >> 4; + Count &= 0x0F0F0F0F; + Count += Count >> 8; + Count += Count >> 16; + + return (UINT8) Count & 0x3F; +} + +/** + Reads a bit field from a 64-bit value, counts and returns + the number of set bits. + + Counts the number of set bits in the bit field specified by + StartBit and EndBit in Operand. The count is returned. + + If StartBit is greater than 63, then ASSERT(). + If EndBit is greater than 63, then ASSERT(). + If EndBit is less than StartBit, then ASSERT(). + + @param Operand Operand on which to perform the bitfield operation. + @param StartBit The ordinal of the least significant bit in the bit field. + Range 0..63. + @param EndBit The ordinal of the most significant bit in the bit field. + Range 0..63. + + @return The number of bits set between StartBit and EndBit. + +**/ +UINT8 +EFIAPI +BitFieldCountOnes64 ( + IN UINT64 Operand, + IN UINTN StartBit, + IN UINTN EndBit + ) +{ + UINT64 BitField; + UINT8 Count; + + ASSERT (EndBit < 64); + ASSERT (StartBit <= EndBit); + + BitField = BitFieldRead64 (Operand, StartBit, EndBit); + Count = BitFieldCountOnes32 ((UINT32) BitField, 0, 31); + Count += BitFieldCountOnes32 ((UINT32) RShiftU64(BitField, 32), 0, 31); + + return Count; +} + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/Cache.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Cache.c new file mode 100644 index 0000000..ff787e3 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Cache.c @@ -0,0 +1,40 @@ +/** @file + Base Library CPU Functions for all architectures. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +/** + Set CD bit and clear NW bit of CR0 followed by a WBINVD. + + Disables the caches by setting the CD bit of CR0 to 1, clearing the NW bit of CR0 to 0, + and executing a WBINVD instruction. This function is only available on IA-32 and x64. + +**/ +VOID +EFIAPI +AsmDisableCache ( + VOID + ) +{ +} + + +/** + Perform a WBINVD and clear both the CD and NW bits of CR0. + + Enables the caches by executing a WBINVD instruction and then clear both the CD and NW + bits of CR0 to 0. This function is only available on IA-32 and x64. + +**/ +VOID +EFIAPI +AsmEnableCache ( + VOID + ) +{ +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/CheckSum.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/CheckSum.c new file mode 100644 index 0000000..0dd3cc9 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/CheckSum.c @@ -0,0 +1,628 @@ +/** @file + Utility functions to generate checksum based on 2's complement + algorithm. + + Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Returns the sum of all elements in a buffer in unit of UINT8. + During calculation, the carry bits are dropped. + + This function calculates the sum of all elements in a buffer + in unit of UINT8. The carry bits in result of addition are dropped. + The result is returned as UINT8. If Length is Zero, then Zero is + returned. + + If Buffer is NULL, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to carry out the sum operation. + @param Length The size, in bytes, of Buffer. + + @return Sum The sum of Buffer with carry bits dropped during additions. + +**/ +UINT8 +EFIAPI +CalculateSum8 ( + IN CONST UINT8 *Buffer, + IN UINTN Length + ) +{ + UINT8 Sum; + UINTN Count; + + ASSERT (Buffer != NULL); + ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1)); + + for (Sum = 0, Count = 0; Count < Length; Count++) { + Sum = (UINT8) (Sum + *(Buffer + Count)); + } + + return Sum; +} + + +/** + Returns the two's complement checksum of all elements in a buffer + of 8-bit values. + + This function first calculates the sum of the 8-bit values in the + buffer specified by Buffer and Length. The carry bits in the result + of addition are dropped. Then, the two's complement of the sum is + returned. If Length is 0, then 0 is returned. + + If Buffer is NULL, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to carry out the checksum operation. + @param Length The size, in bytes, of Buffer. + + @return Checksum The 2's complement checksum of Buffer. + +**/ +UINT8 +EFIAPI +CalculateCheckSum8 ( + IN CONST UINT8 *Buffer, + IN UINTN Length + ) +{ + UINT8 CheckSum; + + CheckSum = CalculateSum8 (Buffer, Length); + + // + // Return the checksum based on 2's complement. + // + return (UINT8) (0x100 - CheckSum); +} + +/** + Returns the sum of all elements in a buffer of 16-bit values. During + calculation, the carry bits are dropped. + + This function calculates the sum of the 16-bit values in the buffer + specified by Buffer and Length. The carry bits in result of addition are dropped. + The 16-bit result is returned. If Length is 0, then 0 is returned. + + If Buffer is NULL, then ASSERT(). + If Buffer is not aligned on a 16-bit boundary, then ASSERT(). + If Length is not aligned on a 16-bit boundary, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to carry out the sum operation. + @param Length The size, in bytes, of Buffer. + + @return Sum The sum of Buffer with carry bits dropped during additions. + +**/ +UINT16 +EFIAPI +CalculateSum16 ( + IN CONST UINT16 *Buffer, + IN UINTN Length + ) +{ + UINT16 Sum; + UINTN Count; + UINTN Total; + + ASSERT (Buffer != NULL); + ASSERT (((UINTN) Buffer & 0x1) == 0); + ASSERT ((Length & 0x1) == 0); + ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1)); + + Total = Length / sizeof (*Buffer); + for (Sum = 0, Count = 0; Count < Total; Count++) { + Sum = (UINT16) (Sum + *(Buffer + Count)); + } + + return Sum; +} + + +/** + Returns the two's complement checksum of all elements in a buffer of + 16-bit values. + + This function first calculates the sum of the 16-bit values in the buffer + specified by Buffer and Length. The carry bits in the result of addition + are dropped. Then, the two's complement of the sum is returned. If Length + is 0, then 0 is returned. + + If Buffer is NULL, then ASSERT(). + If Buffer is not aligned on a 16-bit boundary, then ASSERT(). + If Length is not aligned on a 16-bit boundary, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to carry out the checksum operation. + @param Length The size, in bytes, of Buffer. + + @return Checksum The 2's complement checksum of Buffer. + +**/ +UINT16 +EFIAPI +CalculateCheckSum16 ( + IN CONST UINT16 *Buffer, + IN UINTN Length + ) +{ + UINT16 CheckSum; + + CheckSum = CalculateSum16 (Buffer, Length); + + // + // Return the checksum based on 2's complement. + // + return (UINT16) (0x10000 - CheckSum); +} + + +/** + Returns the sum of all elements in a buffer of 32-bit values. During + calculation, the carry bits are dropped. + + This function calculates the sum of the 32-bit values in the buffer + specified by Buffer and Length. The carry bits in result of addition are dropped. + The 32-bit result is returned. If Length is 0, then 0 is returned. + + If Buffer is NULL, then ASSERT(). + If Buffer is not aligned on a 32-bit boundary, then ASSERT(). + If Length is not aligned on a 32-bit boundary, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to carry out the sum operation. + @param Length The size, in bytes, of Buffer. + + @return Sum The sum of Buffer with carry bits dropped during additions. + +**/ +UINT32 +EFIAPI +CalculateSum32 ( + IN CONST UINT32 *Buffer, + IN UINTN Length + ) +{ + UINT32 Sum; + UINTN Count; + UINTN Total; + + ASSERT (Buffer != NULL); + ASSERT (((UINTN) Buffer & 0x3) == 0); + ASSERT ((Length & 0x3) == 0); + ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1)); + + Total = Length / sizeof (*Buffer); + for (Sum = 0, Count = 0; Count < Total; Count++) { + Sum = Sum + *(Buffer + Count); + } + + return Sum; +} + + +/** + Returns the two's complement checksum of all elements in a buffer of + 32-bit values. + + This function first calculates the sum of the 32-bit values in the buffer + specified by Buffer and Length. The carry bits in the result of addition + are dropped. Then, the two's complement of the sum is returned. If Length + is 0, then 0 is returned. + + If Buffer is NULL, then ASSERT(). + If Buffer is not aligned on a 32-bit boundary, then ASSERT(). + If Length is not aligned on a 32-bit boundary, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to carry out the checksum operation. + @param Length The size, in bytes, of Buffer. + + @return Checksum The 2's complement checksum of Buffer. + +**/ +UINT32 +EFIAPI +CalculateCheckSum32 ( + IN CONST UINT32 *Buffer, + IN UINTN Length + ) +{ + UINT32 CheckSum; + + CheckSum = CalculateSum32 (Buffer, Length); + + // + // Return the checksum based on 2's complement. + // + return (UINT32) ((UINT32)(-1) - CheckSum + 1); +} + + +/** + Returns the sum of all elements in a buffer of 64-bit values. During + calculation, the carry bits are dropped. + + This function calculates the sum of the 64-bit values in the buffer + specified by Buffer and Length. The carry bits in result of addition are dropped. + The 64-bit result is returned. If Length is 0, then 0 is returned. + + If Buffer is NULL, then ASSERT(). + If Buffer is not aligned on a 64-bit boundary, then ASSERT(). + If Length is not aligned on a 64-bit boundary, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to carry out the sum operation. + @param Length The size, in bytes, of Buffer. + + @return Sum The sum of Buffer with carry bits dropped during additions. + +**/ +UINT64 +EFIAPI +CalculateSum64 ( + IN CONST UINT64 *Buffer, + IN UINTN Length + ) +{ + UINT64 Sum; + UINTN Count; + UINTN Total; + + ASSERT (Buffer != NULL); + ASSERT (((UINTN) Buffer & 0x7) == 0); + ASSERT ((Length & 0x7) == 0); + ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1)); + + Total = Length / sizeof (*Buffer); + for (Sum = 0, Count = 0; Count < Total; Count++) { + Sum = Sum + *(Buffer + Count); + } + + return Sum; +} + + +/** + Returns the two's complement checksum of all elements in a buffer of + 64-bit values. + + This function first calculates the sum of the 64-bit values in the buffer + specified by Buffer and Length. The carry bits in the result of addition + are dropped. Then, the two's complement of the sum is returned. If Length + is 0, then 0 is returned. + + If Buffer is NULL, then ASSERT(). + If Buffer is not aligned on a 64-bit boundary, then ASSERT(). + If Length is not aligned on a 64-bit boundary, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to carry out the checksum operation. + @param Length The size, in bytes, of Buffer. + + @return Checksum The 2's complement checksum of Buffer. + +**/ +UINT64 +EFIAPI +CalculateCheckSum64 ( + IN CONST UINT64 *Buffer, + IN UINTN Length + ) +{ + UINT64 CheckSum; + + CheckSum = CalculateSum64 (Buffer, Length); + + // + // Return the checksum based on 2's complement. + // + return (UINT64) ((UINT64)(-1) - CheckSum + 1); +} + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 mCrcTable[256] = { + 0x00000000, + 0x77073096, + 0xEE0E612C, + 0x990951BA, + 0x076DC419, + 0x706AF48F, + 0xE963A535, + 0x9E6495A3, + 0x0EDB8832, + 0x79DCB8A4, + 0xE0D5E91E, + 0x97D2D988, + 0x09B64C2B, + 0x7EB17CBD, + 0xE7B82D07, + 0x90BF1D91, + 0x1DB71064, + 0x6AB020F2, + 0xF3B97148, + 0x84BE41DE, + 0x1ADAD47D, + 0x6DDDE4EB, + 0xF4D4B551, + 0x83D385C7, + 0x136C9856, + 0x646BA8C0, + 0xFD62F97A, + 0x8A65C9EC, + 0x14015C4F, + 0x63066CD9, + 0xFA0F3D63, + 0x8D080DF5, + 0x3B6E20C8, + 0x4C69105E, + 0xD56041E4, + 0xA2677172, + 0x3C03E4D1, + 0x4B04D447, + 0xD20D85FD, + 0xA50AB56B, + 0x35B5A8FA, + 0x42B2986C, + 0xDBBBC9D6, + 0xACBCF940, + 0x32D86CE3, + 0x45DF5C75, + 0xDCD60DCF, + 0xABD13D59, + 0x26D930AC, + 0x51DE003A, + 0xC8D75180, + 0xBFD06116, + 0x21B4F4B5, + 0x56B3C423, + 0xCFBA9599, + 0xB8BDA50F, + 0x2802B89E, + 0x5F058808, + 0xC60CD9B2, + 0xB10BE924, + 0x2F6F7C87, + 0x58684C11, + 0xC1611DAB, + 0xB6662D3D, + 0x76DC4190, + 0x01DB7106, + 0x98D220BC, + 0xEFD5102A, + 0x71B18589, + 0x06B6B51F, + 0x9FBFE4A5, + 0xE8B8D433, + 0x7807C9A2, + 0x0F00F934, + 0x9609A88E, + 0xE10E9818, + 0x7F6A0DBB, + 0x086D3D2D, + 0x91646C97, + 0xE6635C01, + 0x6B6B51F4, + 0x1C6C6162, + 0x856530D8, + 0xF262004E, + 0x6C0695ED, + 0x1B01A57B, + 0x8208F4C1, + 0xF50FC457, + 0x65B0D9C6, + 0x12B7E950, + 0x8BBEB8EA, + 0xFCB9887C, + 0x62DD1DDF, + 0x15DA2D49, + 0x8CD37CF3, + 0xFBD44C65, + 0x4DB26158, + 0x3AB551CE, + 0xA3BC0074, + 0xD4BB30E2, + 0x4ADFA541, + 0x3DD895D7, + 0xA4D1C46D, + 0xD3D6F4FB, + 0x4369E96A, + 0x346ED9FC, + 0xAD678846, + 0xDA60B8D0, + 0x44042D73, + 0x33031DE5, + 0xAA0A4C5F, + 0xDD0D7CC9, + 0x5005713C, + 0x270241AA, + 0xBE0B1010, + 0xC90C2086, + 0x5768B525, + 0x206F85B3, + 0xB966D409, + 0xCE61E49F, + 0x5EDEF90E, + 0x29D9C998, + 0xB0D09822, + 0xC7D7A8B4, + 0x59B33D17, + 0x2EB40D81, + 0xB7BD5C3B, + 0xC0BA6CAD, + 0xEDB88320, + 0x9ABFB3B6, + 0x03B6E20C, + 0x74B1D29A, + 0xEAD54739, + 0x9DD277AF, + 0x04DB2615, + 0x73DC1683, + 0xE3630B12, + 0x94643B84, + 0x0D6D6A3E, + 0x7A6A5AA8, + 0xE40ECF0B, + 0x9309FF9D, + 0x0A00AE27, + 0x7D079EB1, + 0xF00F9344, + 0x8708A3D2, + 0x1E01F268, + 0x6906C2FE, + 0xF762575D, + 0x806567CB, + 0x196C3671, + 0x6E6B06E7, + 0xFED41B76, + 0x89D32BE0, + 0x10DA7A5A, + 0x67DD4ACC, + 0xF9B9DF6F, + 0x8EBEEFF9, + 0x17B7BE43, + 0x60B08ED5, + 0xD6D6A3E8, + 0xA1D1937E, + 0x38D8C2C4, + 0x4FDFF252, + 0xD1BB67F1, + 0xA6BC5767, + 0x3FB506DD, + 0x48B2364B, + 0xD80D2BDA, + 0xAF0A1B4C, + 0x36034AF6, + 0x41047A60, + 0xDF60EFC3, + 0xA867DF55, + 0x316E8EEF, + 0x4669BE79, + 0xCB61B38C, + 0xBC66831A, + 0x256FD2A0, + 0x5268E236, + 0xCC0C7795, + 0xBB0B4703, + 0x220216B9, + 0x5505262F, + 0xC5BA3BBE, + 0xB2BD0B28, + 0x2BB45A92, + 0x5CB36A04, + 0xC2D7FFA7, + 0xB5D0CF31, + 0x2CD99E8B, + 0x5BDEAE1D, + 0x9B64C2B0, + 0xEC63F226, + 0x756AA39C, + 0x026D930A, + 0x9C0906A9, + 0xEB0E363F, + 0x72076785, + 0x05005713, + 0x95BF4A82, + 0xE2B87A14, + 0x7BB12BAE, + 0x0CB61B38, + 0x92D28E9B, + 0xE5D5BE0D, + 0x7CDCEFB7, + 0x0BDBDF21, + 0x86D3D2D4, + 0xF1D4E242, + 0x68DDB3F8, + 0x1FDA836E, + 0x81BE16CD, + 0xF6B9265B, + 0x6FB077E1, + 0x18B74777, + 0x88085AE6, + 0xFF0F6A70, + 0x66063BCA, + 0x11010B5C, + 0x8F659EFF, + 0xF862AE69, + 0x616BFFD3, + 0x166CCF45, + 0xA00AE278, + 0xD70DD2EE, + 0x4E048354, + 0x3903B3C2, + 0xA7672661, + 0xD06016F7, + 0x4969474D, + 0x3E6E77DB, + 0xAED16A4A, + 0xD9D65ADC, + 0x40DF0B66, + 0x37D83BF0, + 0xA9BCAE53, + 0xDEBB9EC5, + 0x47B2CF7F, + 0x30B5FFE9, + 0xBDBDF21C, + 0xCABAC28A, + 0x53B39330, + 0x24B4A3A6, + 0xBAD03605, + 0xCDD70693, + 0x54DE5729, + 0x23D967BF, + 0xB3667A2E, + 0xC4614AB8, + 0x5D681B02, + 0x2A6F2B94, + 0xB40BBE37, + 0xC30C8EA1, + 0x5A05DF1B, + 0x2D02EF8D +}; + +/** + Computes and returns a 32-bit CRC for a data buffer. + CRC32 value bases on ITU-T V.42. + + If Buffer is NULL, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param[in] Buffer A pointer to the buffer on which the 32-bit CRC is to be computed. + @param[in] Length The number of bytes in the buffer Data. + + @retval Crc32 The 32-bit CRC was computed for the data buffer. + +**/ +UINT32 +EFIAPI +CalculateCrc32( + IN VOID *Buffer, + IN UINTN Length + ) +{ + UINTN Index; + UINT32 Crc; + UINT8 *Ptr; + + ASSERT (Buffer != NULL); + ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1)); + + // + // Compute CRC + // + Crc = 0xffffffff; + for (Index = 0, Ptr = Buffer; Index < Length; Index++, Ptr++) { + Crc = (Crc >> 8) ^ mCrcTable[(UINT8) Crc ^ *Ptr]; + } + + return Crc ^ 0xffffffff; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/Cpu.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Cpu.c new file mode 100644 index 0000000..727fd90 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Cpu.c @@ -0,0 +1,95 @@ +/** @file + Base Library CPU Functions for all architectures. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +/** + Disables CPU interrupts and returns the interrupt state prior to the disable + operation. + + @retval TRUE CPU interrupts were enabled on entry to this call. + @retval FALSE CPU interrupts were disabled on entry to this call. + +**/ +BOOLEAN +EFIAPI +SaveAndDisableInterrupts ( + VOID + ) +{ + return FALSE; +} + +/** + Set the current CPU interrupt state. + + Sets the current CPU interrupt state to the state specified by + InterruptState. If InterruptState is TRUE, then interrupts are enabled. If + InterruptState is FALSE, then interrupts are disabled. InterruptState is + returned. + + @param InterruptState TRUE if interrupts should be enabled. FALSE if + interrupts should be disabled. + + @return InterruptState + +**/ +BOOLEAN +EFIAPI +SetInterruptState ( + IN BOOLEAN InterruptState + ) +{ + return InterruptState; +} + +/** + Uses as a barrier to stop speculative execution. + + Ensures that no later instruction will execute speculatively, until all prior + instructions have completed. + +**/ +VOID +EFIAPI +SpeculationBarrier ( + VOID + ) +{ +} + +/** + Requests CPU to pause for a short period of time. + + Requests CPU to pause for a short period of time. Typically used in MP + systems to prevent memory starvation while waiting for a spin lock. + +**/ +VOID +EFIAPI +CpuPause ( + VOID + ) +{ +} + +/** + Performs a serializing operation on all load-from-memory instructions that + were issued prior the AsmLfence function. + + Executes a LFENCE instruction. This function is only available on IA-32 and x64. + +**/ +VOID +EFIAPI +AsmLfence ( + VOID + ) +{ + return; +} \ No newline at end of file diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointGcc.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointGcc.c new file mode 100644 index 0000000..20edc0c --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointGcc.c @@ -0,0 +1,26 @@ +/** @file + CpuBreakpoint function. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + + +/** + Generates a breakpoint on the CPU. + + Generates a breakpoint on the CPU. The breakpoint must be implemented such + that code can resume normal execution after the breakpoint. + +**/ +VOID +EFIAPI +CpuBreakpoint ( + VOID + ) +{ + __asm__ __volatile__ ("int $3"); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointMsvc.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointMsvc.c new file mode 100644 index 0000000..a59da0c --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuBreakpointMsvc.c @@ -0,0 +1,35 @@ +/** @file + CpuBreakpoint function. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + + +/** + Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. +**/ + +void __debugbreak (VOID); + +#pragma intrinsic(__debugbreak) + +/** + Generates a breakpoint on the CPU. + + Generates a breakpoint on the CPU. The breakpoint must be implemented such + that code can resume normal execution after the breakpoint. + +**/ +VOID +EFIAPI +CpuBreakpoint ( + VOID + ) +{ + __debugbreak (); +} + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuDeadLoop.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuDeadLoop.c new file mode 100644 index 0000000..9e110ca --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/CpuDeadLoop.c @@ -0,0 +1,32 @@ +/** @file + Base Library CPU Functions for all architectures. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + +#include +#include + +/** + Executes an infinite loop. + + Forces the CPU to execute an infinite loop. A debugger may be used to skip + past the loop and the code that follows the loop must execute properly. This + implies that the infinite loop must not cause the code that follow it to be + optimized away. + +**/ +VOID +EFIAPI +CpuDeadLoop ( + VOID + ) +{ + volatile UINTN Index; + + for (Index = 0; Index == 0;); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivS64x64Remainder.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivS64x64Remainder.c new file mode 100644 index 0000000..3048df5 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivS64x64Remainder.c @@ -0,0 +1,54 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +INT64 +EFIAPI +InternalMathDivRemS64x64 ( + IN INT64 Dividend, + IN INT64 Divisor, + OUT INT64 *Remainder OPTIONAL + ); + +/** + Divides a 64-bit signed integer by a 64-bit signed integer and generates a + 64-bit signed result and a optional 64-bit signed remainder. + + This function divides the 64-bit signed value Dividend by the 64-bit signed + value Divisor and generates a 64-bit signed quotient. If Remainder is not + NULL, then the 64-bit signed remainder is returned in Remainder. This + function returns the 64-bit signed quotient. + + It is the caller's responsibility to not call this function with a Divisor of 0. + If Divisor is 0, then the quotient and remainder should be assumed to be + the largest negative integer. + + If Divisor is 0, then ASSERT(). + + @param Dividend A 64-bit signed value. + @param Divisor A 64-bit signed value. + @param Remainder A pointer to a 64-bit signed value. This parameter is + optional and may be NULL. + + @return Dividend / Divisor + +**/ +INT64 +EFIAPI +DivS64x64Remainder ( + IN INT64 Dividend, + IN INT64 Divisor, + OUT INT64 *Remainder OPTIONAL + ) +{ + ASSERT (Divisor != 0); + return InternalMathDivRemS64x64 (Dividend, Divisor, Remainder); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x32.c new file mode 100644 index 0000000..b63fb6d --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x32.c @@ -0,0 +1,45 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathDivU64x32 ( + IN UINT64 Dividend, + IN UINT32 Divisor + ); + +/** + Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates + a 64-bit unsigned result. + + This function divides the 64-bit unsigned value Dividend by the 32-bit + unsigned value Divisor and generates a 64-bit unsigned quotient. This + function returns the 64-bit unsigned quotient. + + If Divisor is 0, then ASSERT(). + + @param Dividend A 64-bit unsigned value. + @param Divisor A 32-bit unsigned value. + + @return Dividend / Divisor + +**/ +UINT64 +EFIAPI +DivU64x32 ( + IN UINT64 Dividend, + IN UINT32 Divisor + ) +{ + ASSERT (Divisor != 0); + return InternalMathDivU64x32 (Dividend, Divisor); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x32Remainder.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x32Remainder.c new file mode 100644 index 0000000..03ce598 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x32Remainder.c @@ -0,0 +1,50 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathDivRemU64x32 ( + IN UINT64 Dividend, + IN UINT32 Divisor, + OUT UINT32 *Remainder OPTIONAL + ); + +/** + Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates + a 64-bit unsigned result and an optional 32-bit unsigned remainder. + + This function divides the 64-bit unsigned value Dividend by the 32-bit + unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder + is not NULL, then the 32-bit unsigned remainder is returned in Remainder. + This function returns the 64-bit unsigned quotient. + + If Divisor is 0, then ASSERT(). + + @param Dividend A 64-bit unsigned value. + @param Divisor A 32-bit unsigned value. + @param Remainder A pointer to a 32-bit unsigned value. This parameter is + optional and may be NULL. + + @return Dividend / Divisor + +**/ +UINT64 +EFIAPI +DivU64x32Remainder ( + IN UINT64 Dividend, + IN UINT32 Divisor, + OUT UINT32 *Remainder OPTIONAL + ) +{ + ASSERT (Divisor != 0); + return InternalMathDivRemU64x32 (Dividend, Divisor, Remainder); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x64Remainder.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x64Remainder.c new file mode 100644 index 0000000..ee3fd26 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DivU64x64Remainder.c @@ -0,0 +1,50 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathDivRemU64x64 ( + IN UINT64 Dividend, + IN UINT64 Divisor, + OUT UINT64 *Remainder OPTIONAL + ); + +/** + Divides a 64-bit unsigned integer by a 64-bit unsigned integer and generates + a 64-bit unsigned result and an optional 64-bit unsigned remainder. + + This function divides the 64-bit unsigned value Dividend by the 64-bit + unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder + is not NULL, then the 64-bit unsigned remainder is returned in Remainder. + This function returns the 64-bit unsigned quotient. + + If Divisor is 0, then ASSERT(). + + @param Dividend A 64-bit unsigned value. + @param Divisor A 64-bit unsigned value. + @param Remainder A pointer to a 64-bit unsigned value. This parameter is + optional and may be NULL. + + @return Dividend / Divisor + +**/ +UINT64 +EFIAPI +DivU64x64Remainder ( + IN UINT64 Dividend, + IN UINT64 Divisor, + OUT UINT64 *Remainder OPTIONAL + ) +{ + ASSERT (Divisor != 0); + return InternalMathDivRemU64x64 (Dividend, Divisor, Remainder); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/DummyRdRand.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DummyRdRand.c new file mode 100644 index 0000000..1e880d5 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DummyRdRand.c @@ -0,0 +1,65 @@ +/** @file + + Copyright (c) 2016, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Generates a 16-bit random number through RDRAND instruction. + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + + **/ +BOOLEAN +EFIAPI +InternalX86RdRand16 ( + OUT UINT16 *Rand + ) +{ + return TRUE; +} + +/** + Generates a 32-bit random number through RDRAND instruction. + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + +**/ +BOOLEAN +EFIAPI +InternalX86RdRand32 ( + OUT UINT32 *Rand + ) +{ + return TRUE; +} + +/** + Generates a 64-bit random number through RDRAND instruction. + + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + +**/ +BOOLEAN +EFIAPI +InternalX86RdRand64 ( + OUT UINT64 *Rand + ) +{ + return TRUE; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/DummyReadTsc.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DummyReadTsc.c new file mode 100644 index 0000000..62650dd --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/DummyReadTsc.c @@ -0,0 +1,19 @@ +/** @file + + Copyright (c) 2016, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +AsmReadTsc ( + VOID + ) +{ + return 0; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/GetPowerOfTwo32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/GetPowerOfTwo32.c new file mode 100644 index 0000000..90e5d5f --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/GetPowerOfTwo32.c @@ -0,0 +1,37 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Returns the value of the highest bit set in a 32-bit value. Equivalent to + 1 << log2(x). + + This function computes the value of the highest bit set in the 32-bit value + specified by Operand. If Operand is zero, then zero is returned. + + @param Operand The 32-bit operand to evaluate. + + @return 1 << HighBitSet32(Operand) + @retval 0 Operand is zero. + +**/ +UINT32 +EFIAPI +GetPowerOfTwo32 ( + IN UINT32 Operand + ) +{ + if (0 == Operand) { + return 0; + } + + return 1ul << HighBitSet32 (Operand); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/GetPowerOfTwo64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/GetPowerOfTwo64.c new file mode 100644 index 0000000..680a82d --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/GetPowerOfTwo64.c @@ -0,0 +1,37 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Returns the value of the highest bit set in a 64-bit value. Equivalent to + 1 << log2(x). + + This function computes the value of the highest bit set in the 64-bit value + specified by Operand. If Operand is zero, then zero is returned. + + @param Operand The 64-bit operand to evaluate. + + @return 1 << HighBitSet64(Operand) + @retval 0 Operand is zero. + +**/ +UINT64 +EFIAPI +GetPowerOfTwo64 ( + IN UINT64 Operand + ) +{ + if (Operand == 0) { + return 0; + } + + return LShiftU64 (1, (UINTN) HighBitSet64 (Operand)); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/HighBitSet32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/HighBitSet32.c new file mode 100644 index 0000000..610de67 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/HighBitSet32.c @@ -0,0 +1,40 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Returns the bit position of the highest bit set in a 32-bit value. Equivalent + to log2(x). + + This function computes the bit position of the highest bit set in the 32-bit + value specified by Operand. If Operand is zero, then -1 is returned. + Otherwise, a value between 0 and 31 is returned. + + @param Operand The 32-bit operand to evaluate. + + @retval 0..31 Position of the highest bit set in Operand if found. + @retval -1 Operand is zero. + +**/ +INTN +EFIAPI +HighBitSet32 ( + IN UINT32 Operand + ) +{ + INTN BitIndex; + + if (Operand == 0) { + return - 1; + } + for (BitIndex = 31; (INT32)Operand > 0; BitIndex--, Operand <<= 1); + return BitIndex; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/HighBitSet64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/HighBitSet64.c new file mode 100644 index 0000000..28be7cf --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/HighBitSet64.c @@ -0,0 +1,47 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Returns the bit position of the highest bit set in a 64-bit value. Equivalent + to log2(x). + + This function computes the bit position of the highest bit set in the 64-bit + value specified by Operand. If Operand is zero, then -1 is returned. + Otherwise, a value between 0 and 63 is returned. + + @param Operand The 64-bit operand to evaluate. + + @retval 0..63 Position of the highest bit set in Operand if found. + @retval -1 Operand is zero. + +**/ +INTN +EFIAPI +HighBitSet64 ( + IN UINT64 Operand + ) +{ + if (Operand == (UINT32)Operand) { + // + // Operand is just a 32-bit integer + // + return HighBitSet32 ((UINT32)Operand); + } + + // + // Operand is really a 64-bit integer + // + if (sizeof (UINTN) == sizeof (UINT32)) { + return HighBitSet32 (((UINT32*)&Operand)[1]) + 32; + } else { + return HighBitSet32 ((UINT32)RShiftU64 (Operand, 32)) + 32; + } +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/Ia32/RdRand.nasm b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Ia32/RdRand.nasm new file mode 100644 index 0000000..e12b8e9 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Ia32/RdRand.nasm @@ -0,0 +1,84 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
    +; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; RdRand.nasm +; +; Abstract: +; +; Generates random number through CPU RdRand instruction under 32-bit platform. +; +; Notes: +; +;------------------------------------------------------------------------------ + +SECTION .text + +;------------------------------------------------------------------------------ +; Generates a 16 bit random number through RDRAND instruction. +; Return TRUE if Rand generated successfully, or FALSE if not. +; +; BOOLEAN EFIAPI InternalX86RdRand16 (UINT16 *Rand); +;------------------------------------------------------------------------------ +global ASM_PFX(InternalX86RdRand16) +ASM_PFX(InternalX86RdRand16): + ; rdrand ax ; generate a 16 bit RN into ax + ; CF=1 if RN generated ok, otherwise CF=0 + db 0xf, 0xc7, 0xf0 ; rdrand r16: "0f c7 /6 ModRM:r/m(w)" + jc rn16_ok ; jmp if CF=1 + xor eax, eax ; reg=0 if CF=0 + ret ; return with failure status +rn16_ok: + mov edx, dword [esp + 4] + mov [edx], ax + mov eax, 1 + ret + +;------------------------------------------------------------------------------ +; Generates a 32 bit random number through RDRAND instruction. +; Return TRUE if Rand generated successfully, or FALSE if not. +; +; BOOLEAN EFIAPI InternalX86RdRand32 (UINT32 *Rand); +;------------------------------------------------------------------------------ +global ASM_PFX(InternalX86RdRand32) +ASM_PFX(InternalX86RdRand32): + ; rdrand eax ; generate a 32 bit RN into eax + ; CF=1 if RN generated ok, otherwise CF=0 + db 0xf, 0xc7, 0xf0 ; rdrand r32: "0f c7 /6 ModRM:r/m(w)" + jc rn32_ok ; jmp if CF=1 + xor eax, eax ; reg=0 if CF=0 + ret ; return with failure status +rn32_ok: + mov edx, dword [esp + 4] + mov [edx], eax + mov eax, 1 + ret + +;------------------------------------------------------------------------------ +; Generates a 64 bit random number through RDRAND instruction. +; Return TRUE if Rand generated successfully, or FALSE if not. +; +; BOOLEAN EFIAPI InternalX86RdRand64 (UINT64 *Rand); +;------------------------------------------------------------------------------ +global ASM_PFX(InternalX86RdRand64) +ASM_PFX(InternalX86RdRand64): + ; rdrand eax ; generate a 32 bit RN into eax + ; CF=1 if RN generated ok, otherwise CF=0 + db 0xf, 0xc7, 0xf0 ; rdrand r32: "0f c7 /6 ModRM:r/m(w)" + jnc rn64_ret ; jmp if CF=0 + mov edx, dword [esp + 4] + mov [edx], eax + + db 0xf, 0xc7, 0xf0 ; generate another 32 bit RN + jnc rn64_ret ; jmp if CF=0 + mov [edx + 4], eax + + mov eax, 1 + ret +rn64_ret: + xor eax, eax + ret ; return with failure status + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/Ia32/ReadTsc.nasm b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Ia32/ReadTsc.nasm new file mode 100644 index 0000000..1bc875b --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Ia32/ReadTsc.nasm @@ -0,0 +1,31 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
    +; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; ReadTsc.Asm +; +; Abstract: +; +; AsmReadTsc function +; +; Notes: +; +;------------------------------------------------------------------------------ + + SECTION .text + +;------------------------------------------------------------------------------ +; UINT64 +; EFIAPI +; AsmReadTsc ( +; VOID +; ); +;------------------------------------------------------------------------------ +global ASM_PFX(AsmReadTsc) +ASM_PFX(AsmReadTsc): + rdtsc + ret + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/LRotU32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LRotU32.c new file mode 100644 index 0000000..8c18981 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LRotU32.c @@ -0,0 +1,38 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Rotates a 32-bit integer left between 0 and 31 bits, filling the low bits + with the high bits that were rotated. + + This function rotates the 32-bit value Operand to the left by Count bits. The + low Count bits are fill with the high Count bits of Operand. The rotated + value is returned. + + If Count is greater than 31, then ASSERT(). + + @param Operand The 32-bit operand to rotate left. + @param Count The number of bits to rotate left. + + @return Operand << Count + +**/ +UINT32 +EFIAPI +LRotU32 ( + IN UINT32 Operand, + IN UINTN Count + ) +{ + ASSERT (Count < 32); + return (Operand << Count) | (Operand >> (32 - Count)); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/LRotU64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LRotU64.c new file mode 100644 index 0000000..c58cdeb --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LRotU64.c @@ -0,0 +1,45 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathLRotU64 ( + IN UINT64 Operand, + IN UINTN Count + ); + +/** + Rotates a 64-bit integer left between 0 and 63 bits, filling the low bits + with the high bits that were rotated. + + This function rotates the 64-bit value Operand to the left by Count bits. The + low Count bits are fill with the high Count bits of Operand. The rotated + value is returned. + + If Count is greater than 63, then ASSERT(). + + @param Operand The 64-bit operand to rotate left. + @param Count The number of bits to rotate left. + + @return Operand << Count + +**/ +UINT64 +EFIAPI +LRotU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + ASSERT (Count < 64); + return InternalMathLRotU64 (Operand, Count); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/LShiftU64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LShiftU64.c new file mode 100644 index 0000000..220e5c1 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LShiftU64.c @@ -0,0 +1,44 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathLShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ); + +/** + Shifts a 64-bit integer left between 0 and 63 bits. The low bits are filled + with zeros. The shifted value is returned. + + This function shifts the 64-bit value Operand to the left by Count bits. The + low Count bits are set to zero. The shifted value is returned. + + If Count is greater than 63, then ASSERT(). + + @param Operand The 64-bit operand to shift left. + @param Count The number of bits to shift left. + + @return Operand << Count. + +**/ +UINT64 +EFIAPI +LShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + ASSERT (Count < 64); + return InternalMathLShiftU64 (Operand, Count); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/Lfence.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Lfence.c new file mode 100644 index 0000000..e894b4e --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Lfence.c @@ -0,0 +1,10 @@ +/** @file + + Copyright (c) 2016, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/LinkedList.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LinkedList.c new file mode 100644 index 0000000..550d5de --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LinkedList.c @@ -0,0 +1,536 @@ +/** @file + Linked List Library Functions. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +#define ASSERT_VERIFY_NODE_IN_VALID_LIST(FirstEntry, SecondEntry, InList) + +/** + Worker function that verifies the validity of this list. + + If List is NULL, then ASSERT(). + If List->ForwardLink is NULL, then ASSERT(). + If List->BackLink is NULL, then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and List contains more than + PcdMaximumLinkedListLength nodes, then ASSERT(). + + @param List A pointer to a node in a linked list. + + @retval TRUE if PcdVerifyNodeInList is FALSE + @retval TRUE if DoMembershipCheck is FALSE + @retval TRUE if PcdVerifyNodeInList is TRUE and DoMembershipCheck is TRUE + and Node is a member of List. + @retval FALSE if PcdVerifyNodeInList is TRUE and DoMembershipCheck is TRUE + and Node is in not a member of List. + +**/ +BOOLEAN +EFIAPI +InternalBaseLibIsListValid ( + IN CONST LIST_ENTRY *List + ) +{ + // + // Test the validity of List and Node + // + ASSERT (List != NULL); + ASSERT (List->ForwardLink != NULL); + ASSERT (List->BackLink != NULL); + + return TRUE; +} + +/** + Checks whether FirstEntry and SecondEntry are part of the same doubly-linked + list. + + If FirstEntry is NULL, then ASSERT(). + If FirstEntry->ForwardLink is NULL, then ASSERT(). + If FirstEntry->BackLink is NULL, then ASSERT(). + If SecondEntry is NULL, then ASSERT(); + If PcdMaximumLinkedListLength is not zero, and List contains more than + PcdMaximumLinkedListLength nodes, then ASSERT(). + + @param FirstEntry A pointer to a node in a linked list. + @param SecondEntry A pointer to the node to locate. + + @retval TRUE SecondEntry is in the same doubly-linked list as FirstEntry. + @retval FALSE SecondEntry isn't in the same doubly-linked list as FirstEntry, + or FirstEntry is invalid. + +**/ +BOOLEAN +EFIAPI +IsNodeInList ( + IN CONST LIST_ENTRY *FirstEntry, + IN CONST LIST_ENTRY *SecondEntry + ) +{ + CONST LIST_ENTRY *Ptr; + + // + // ASSERT List not too long + // + ASSERT (InternalBaseLibIsListValid (FirstEntry)); + + ASSERT (SecondEntry != NULL); + + Ptr = FirstEntry; + + // + // Check to see if SecondEntry is a member of FirstEntry. + // Exit early if the number of nodes in List >= PcdMaximumLinkedListLength + // + do { + Ptr = Ptr->ForwardLink; + if (Ptr == SecondEntry) { + return TRUE; + } + } while (Ptr != FirstEntry); + + return FALSE; +} + +/** + Initializes the head node of a doubly-linked list, and returns the pointer to + the head node of the doubly-linked list. + + Initializes the forward and backward links of a new linked list. After + initializing a linked list with this function, the other linked list + functions may be used to add and remove nodes from the linked list. It is up + to the caller of this function to allocate the memory for ListHead. + + If ListHead is NULL, then ASSERT(). + + @param ListHead A pointer to the head node of a new doubly-linked list. + + @return ListHead + +**/ +LIST_ENTRY * +EFIAPI +InitializeListHead ( + IN OUT LIST_ENTRY *ListHead + ) + +{ + ASSERT (ListHead != NULL); + + ListHead->ForwardLink = ListHead; + ListHead->BackLink = ListHead; + return ListHead; +} + +/** + Adds a node to the beginning of a doubly-linked list, and returns the pointer + to the head node of the doubly-linked list. + + Adds the node Entry at the beginning of the doubly-linked list denoted by + ListHead, and returns ListHead. + + If ListHead is NULL, then ASSERT(). + If Entry is NULL, then ASSERT(). + If ListHead was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or + InitializeListHead(), then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and prior to insertion the number + of nodes in ListHead, including the ListHead node, is greater than or + equal to PcdMaximumLinkedListLength, then ASSERT(). + + @param ListHead A pointer to the head node of a doubly-linked list. + @param Entry A pointer to a node that is to be inserted at the beginning + of a doubly-linked list. + + @return ListHead + +**/ +LIST_ENTRY * +EFIAPI +InsertHeadList ( + IN OUT LIST_ENTRY *ListHead, + IN OUT LIST_ENTRY *Entry + ) +{ + // + // ASSERT List not too long and Entry is not one of the nodes of List + // + ASSERT_VERIFY_NODE_IN_VALID_LIST (ListHead, Entry, FALSE); + + Entry->ForwardLink = ListHead->ForwardLink; + Entry->BackLink = ListHead; + Entry->ForwardLink->BackLink = Entry; + ListHead->ForwardLink = Entry; + return ListHead; +} + +/** + Adds a node to the end of a doubly-linked list, and returns the pointer to + the head node of the doubly-linked list. + + Adds the node Entry to the end of the doubly-linked list denoted by ListHead, + and returns ListHead. + + If ListHead is NULL, then ASSERT(). + If Entry is NULL, then ASSERT(). + If ListHead was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or + InitializeListHead(), then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and prior to insertion the number + of nodes in ListHead, including the ListHead node, is greater than or + equal to PcdMaximumLinkedListLength, then ASSERT(). + + @param ListHead A pointer to the head node of a doubly-linked list. + @param Entry A pointer to a node that is to be added at the end of the + doubly-linked list. + + @return ListHead + +**/ +LIST_ENTRY * +EFIAPI +InsertTailList ( + IN OUT LIST_ENTRY *ListHead, + IN OUT LIST_ENTRY *Entry + ) +{ + // + // ASSERT List not too long and Entry is not one of the nodes of List + // + ASSERT_VERIFY_NODE_IN_VALID_LIST (ListHead, Entry, FALSE); + + Entry->ForwardLink = ListHead; + Entry->BackLink = ListHead->BackLink; + Entry->BackLink->ForwardLink = Entry; + ListHead->BackLink = Entry; + return ListHead; +} + +/** + Retrieves the first node of a doubly-linked list. + + Returns the first node of a doubly-linked list. List must have been + initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead(). + If List is empty, then List is returned. + + If List is NULL, then ASSERT(). + If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or + InitializeListHead(), then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and the number of nodes + in List, including the List node, is greater than or equal to + PcdMaximumLinkedListLength, then ASSERT(). + + @param List A pointer to the head node of a doubly-linked list. + + @return The first node of a doubly-linked list. + @retval List The list is empty. + +**/ +LIST_ENTRY * +EFIAPI +GetFirstNode ( + IN CONST LIST_ENTRY *List + ) +{ + // + // ASSERT List not too long + // + ASSERT (InternalBaseLibIsListValid (List)); + + return List->ForwardLink; +} + +/** + Retrieves the next node of a doubly-linked list. + + Returns the node of a doubly-linked list that follows Node. + List must have been initialized with INTIALIZE_LIST_HEAD_VARIABLE() + or InitializeListHead(). If List is empty, then List is returned. + + If List is NULL, then ASSERT(). + If Node is NULL, then ASSERT(). + If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or + InitializeListHead(), then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and List contains more than + PcdMaximumLinkedListLength nodes, then ASSERT(). + If PcdVerifyNodeInList is TRUE and Node is not a node in List, then ASSERT(). + + @param List A pointer to the head node of a doubly-linked list. + @param Node A pointer to a node in the doubly-linked list. + + @return A pointer to the next node if one exists. Otherwise List is returned. + +**/ +LIST_ENTRY * +EFIAPI +GetNextNode ( + IN CONST LIST_ENTRY *List, + IN CONST LIST_ENTRY *Node + ) +{ + // + // ASSERT List not too long and Node is one of the nodes of List + // + ASSERT_VERIFY_NODE_IN_VALID_LIST (List, Node, TRUE); + + return Node->ForwardLink; +} + +/** + Retrieves the previous node of a doubly-linked list. + + Returns the node of a doubly-linked list that precedes Node. + List must have been initialized with INTIALIZE_LIST_HEAD_VARIABLE() + or InitializeListHead(). If List is empty, then List is returned. + + If List is NULL, then ASSERT(). + If Node is NULL, then ASSERT(). + If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or + InitializeListHead(), then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and List contains more than + PcdMaximumLinkedListLength nodes, then ASSERT(). + If PcdVerifyNodeInList is TRUE and Node is not a node in List, then ASSERT(). + + @param List A pointer to the head node of a doubly-linked list. + @param Node A pointer to a node in the doubly-linked list. + + @return A pointer to the previous node if one exists. Otherwise List is returned. + +**/ +LIST_ENTRY * +EFIAPI +GetPreviousNode ( + IN CONST LIST_ENTRY *List, + IN CONST LIST_ENTRY *Node + ) +{ + // + // ASSERT List not too long and Node is one of the nodes of List + // + ASSERT_VERIFY_NODE_IN_VALID_LIST (List, Node, TRUE); + + return Node->BackLink; +} + +/** + Checks to see if a doubly-linked list is empty or not. + + Checks to see if the doubly-linked list is empty. If the linked list contains + zero nodes, this function returns TRUE. Otherwise, it returns FALSE. + + If ListHead is NULL, then ASSERT(). + If ListHead was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or + InitializeListHead(), then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and the number of nodes + in List, including the List node, is greater than or equal to + PcdMaximumLinkedListLength, then ASSERT(). + + @param ListHead A pointer to the head node of a doubly-linked list. + + @retval TRUE The linked list is empty. + @retval FALSE The linked list is not empty. + +**/ +BOOLEAN +EFIAPI +IsListEmpty ( + IN CONST LIST_ENTRY *ListHead + ) +{ + // + // ASSERT List not too long + // + ASSERT (InternalBaseLibIsListValid (ListHead)); + + return (BOOLEAN)(ListHead->ForwardLink == ListHead); +} + +/** + Determines if a node in a doubly-linked list is the head node of a the same + doubly-linked list. This function is typically used to terminate a loop that + traverses all the nodes in a doubly-linked list starting with the head node. + + Returns TRUE if Node is equal to List. Returns FALSE if Node is one of the + nodes in the doubly-linked list specified by List. List must have been + initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead(). + + If List is NULL, then ASSERT(). + If Node is NULL, then ASSERT(). + If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead(), + then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and the number of nodes + in List, including the List node, is greater than or equal to + PcdMaximumLinkedListLength, then ASSERT(). + If PcdVerifyNodeInList is TRUE and Node is not a node in List and Node is not + equal to List, then ASSERT(). + + @param List A pointer to the head node of a doubly-linked list. + @param Node A pointer to a node in the doubly-linked list. + + @retval TRUE Node is the head of the doubly-linked list pointed by List. + @retval FALSE Node is not the head of the doubly-linked list pointed by List. + +**/ +BOOLEAN +EFIAPI +IsNull ( + IN CONST LIST_ENTRY *List, + IN CONST LIST_ENTRY *Node + ) +{ + // + // ASSERT List not too long and Node is one of the nodes of List + // + ASSERT_VERIFY_NODE_IN_VALID_LIST (List, Node, TRUE); + + return (BOOLEAN)(Node == List); +} + +/** + Determines if a node the last node in a doubly-linked list. + + Returns TRUE if Node is the last node in the doubly-linked list specified by + List. Otherwise, FALSE is returned. List must have been initialized with + INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead(). + + If List is NULL, then ASSERT(). + If Node is NULL, then ASSERT(). + If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or + InitializeListHead(), then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and the number of nodes + in List, including the List node, is greater than or equal to + PcdMaximumLinkedListLength, then ASSERT(). + If PcdVerifyNodeInList is TRUE and Node is not a node in List, then ASSERT(). + + @param List A pointer to the head node of a doubly-linked list. + @param Node A pointer to a node in the doubly-linked list. + + @retval TRUE Node is the last node in the linked list. + @retval FALSE Node is not the last node in the linked list. + +**/ +BOOLEAN +EFIAPI +IsNodeAtEnd ( + IN CONST LIST_ENTRY *List, + IN CONST LIST_ENTRY *Node + ) +{ + // + // ASSERT List not too long and Node is one of the nodes of List + // + ASSERT_VERIFY_NODE_IN_VALID_LIST (List, Node, TRUE); + + return (BOOLEAN)(!IsNull (List, Node) && List->BackLink == Node); +} + +/** + Swaps the location of two nodes in a doubly-linked list, and returns the + first node after the swap. + + If FirstEntry is identical to SecondEntry, then SecondEntry is returned. + Otherwise, the location of the FirstEntry node is swapped with the location + of the SecondEntry node in a doubly-linked list. SecondEntry must be in the + same double linked list as FirstEntry and that double linked list must have + been initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead(). + SecondEntry is returned after the nodes are swapped. + + If FirstEntry is NULL, then ASSERT(). + If SecondEntry is NULL, then ASSERT(). + If PcdVerifyNodeInList is TRUE and SecondEntry and FirstEntry are not in the + same linked list, then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and the number of nodes in the + linked list containing the FirstEntry and SecondEntry nodes, including + the FirstEntry and SecondEntry nodes, is greater than or equal to + PcdMaximumLinkedListLength, then ASSERT(). + + @param FirstEntry A pointer to a node in a linked list. + @param SecondEntry A pointer to another node in the same linked list. + + @return SecondEntry. + +**/ +LIST_ENTRY * +EFIAPI +SwapListEntries ( + IN OUT LIST_ENTRY *FirstEntry, + IN OUT LIST_ENTRY *SecondEntry + ) +{ + LIST_ENTRY *Ptr; + + if (FirstEntry == SecondEntry) { + return SecondEntry; + } + + // + // ASSERT Entry1 and Entry2 are in the same linked list + // + ASSERT_VERIFY_NODE_IN_VALID_LIST (FirstEntry, SecondEntry, TRUE); + + // + // Ptr is the node pointed to by FirstEntry->ForwardLink + // + Ptr = RemoveEntryList (FirstEntry); + + // + // If FirstEntry immediately follows SecondEntry, FirstEntry will be placed + // immediately in front of SecondEntry + // + if (Ptr->BackLink == SecondEntry) { + return InsertTailList (SecondEntry, FirstEntry); + } + + // + // Ptr == SecondEntry means SecondEntry immediately follows FirstEntry, + // then there are no further steps necessary + // + if (Ptr == InsertHeadList (SecondEntry, FirstEntry)) { + return Ptr; + } + + // + // Move SecondEntry to the front of Ptr + // + RemoveEntryList (SecondEntry); + InsertTailList (Ptr, SecondEntry); + return SecondEntry; +} + +/** + Removes a node from a doubly-linked list, and returns the node that follows + the removed node. + + Removes the node Entry from a doubly-linked list. It is up to the caller of + this function to release the memory used by this node if that is required. On + exit, the node following Entry in the doubly-linked list is returned. If + Entry is the only node in the linked list, then the head node of the linked + list is returned. + + If Entry is NULL, then ASSERT(). + If Entry is the head node of an empty list, then ASSERT(). + If PcdMaximumLinkedListLength is not zero, and the number of nodes in the + linked list containing Entry, including the Entry node, is greater than + or equal to PcdMaximumLinkedListLength, then ASSERT(). + + @param Entry A pointer to a node in a linked list. + + @return Entry. + +**/ +LIST_ENTRY * +EFIAPI +RemoveEntryList ( + IN CONST LIST_ENTRY *Entry + ) +{ + ASSERT (!IsListEmpty (Entry)); + + Entry->ForwardLink->BackLink = Entry->BackLink; + Entry->BackLink->ForwardLink = Entry->ForwardLink; + return Entry->ForwardLink; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/LongJump.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LongJump.c new file mode 100644 index 0000000..fec7056 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LongJump.c @@ -0,0 +1,46 @@ +/** @file + Long Jump functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include +#include +#include +#include +#include + +/** + Restores the CPU context that was saved with SetJump(). + + Restores the CPU context from the buffer specified by JumpBuffer. This + function never returns to the caller. Instead is resumes execution based on + the state of JumpBuffer. + + If JumpBuffer is NULL, then ASSERT(). + For Itanium processors, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT(). + If Value is 0, then ASSERT(). + + @param JumpBuffer A pointer to CPU context buffer. + @param Value The value to return when the SetJump() context is + restored and must be non-zero. + +**/ +VOID +EFIAPI +LongJump ( + IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer, + IN UINTN Value + ) +{ + jmp_buf local_buf; + jmp_buf *buf; + + buf = *(VOID **)JumpBuffer; + memcpy (&local_buf, buf, sizeof(jmp_buf)); + free (buf); + longjmp (local_buf, (int)Value); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/LowBitSet32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LowBitSet32.c new file mode 100644 index 0000000..bb7f49d --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LowBitSet32.c @@ -0,0 +1,40 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Returns the bit position of the lowest bit set in a 32-bit value. + + This function computes the bit position of the lowest bit set in the 32-bit + value specified by Operand. If Operand is zero, then -1 is returned. + Otherwise, a value between 0 and 31 is returned. + + @param Operand The 32-bit operand to evaluate. + + @retval 0..31 The lowest bit set in Operand was found. + @retval -1 Operand is zero. + +**/ +INTN +EFIAPI +LowBitSet32 ( + IN UINT32 Operand + ) +{ + INTN BitIndex; + + if (Operand == 0) { + return -1; + } + + for (BitIndex = 0; 0 == (Operand & 1); BitIndex++, Operand >>= 1); + return BitIndex; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/LowBitSet64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LowBitSet64.c new file mode 100644 index 0000000..860670f --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/LowBitSet64.c @@ -0,0 +1,43 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Returns the bit position of the lowest bit set in a 64-bit value. + + This function computes the bit position of the lowest bit set in the 64-bit + value specified by Operand. If Operand is zero, then -1 is returned. + Otherwise, a value between 0 and 63 is returned. + + @param Operand The 64-bit operand to evaluate. + + @retval 0..63 The lowest bit set in Operand was found. + @retval -1 Operand is zero. + + +**/ +INTN +EFIAPI +LowBitSet64 ( + IN UINT64 Operand + ) +{ + INTN BitIndex; + + if (Operand == 0) { + return -1; + } + + for (BitIndex = 0; + (Operand & 1) == 0; + BitIndex++, Operand = RShiftU64 (Operand, 1)); + return BitIndex; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/Math64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Math64.c new file mode 100644 index 0000000..7308dec --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Math64.c @@ -0,0 +1,364 @@ +/** @file + Leaf math worker functions that require 64-bit arithmetic support from the + compiler. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Shifts a 64-bit integer left between 0 and 63 bits. The low bits + are filled with zeros. The shifted value is returned. + + This function shifts the 64-bit value Operand to the left by Count bits. The + low Count bits are set to zero. The shifted value is returned. + + @param Operand The 64-bit operand to shift left. + @param Count The number of bits to shift left. + + @return Operand << Count. + +**/ +UINT64 +EFIAPI +InternalMathLShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + return Operand << Count; +} + +/** + Shifts a 64-bit integer right between 0 and 63 bits. This high bits + are filled with zeros. The shifted value is returned. + + This function shifts the 64-bit value Operand to the right by Count bits. The + high Count bits are set to zero. The shifted value is returned. + + @param Operand The 64-bit operand to shift right. + @param Count The number of bits to shift right. + + @return Operand >> Count. + +**/ +UINT64 +EFIAPI +InternalMathRShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + return Operand >> Count; +} + +/** + Shifts a 64-bit integer right between 0 and 63 bits. The high bits + are filled with original integer's bit 63. The shifted value is returned. + + This function shifts the 64-bit value Operand to the right by Count bits. The + high Count bits are set to bit 63 of Operand. The shifted value is returned. + + @param Operand The 64-bit operand to shift right. + @param Count The number of bits to shift right. + + @return Operand arithmetically shifted right by Count. + +**/ +UINT64 +EFIAPI +InternalMathARShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + INTN TestValue; + + // + // Test if this compiler supports arithmetic shift + // + TestValue = (INTN)((INT64)(1ULL << 63) >> 63); + if (TestValue == -1) { + // + // Arithmetic shift is supported + // + return (UINT64)((INT64)Operand >> Count); + } + + // + // Arithmetic is not supported + // + return (Operand >> Count) | + ((INTN)Operand < 0 ? ~((UINTN)-1 >> Count) : 0); +} + + +/** + Rotates a 64-bit integer left between 0 and 63 bits, filling + the low bits with the high bits that were rotated. + + This function rotates the 64-bit value Operand to the left by Count bits. The + low Count bits are fill with the high Count bits of Operand. The rotated + value is returned. + + @param Operand The 64-bit operand to rotate left. + @param Count The number of bits to rotate left. + + @return Operand <<< Count. + +**/ +UINT64 +EFIAPI +InternalMathLRotU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + return (Operand << Count) | (Operand >> (64 - Count)); +} + +/** + Rotates a 64-bit integer right between 0 and 63 bits, filling + the high bits with the high low bits that were rotated. + + This function rotates the 64-bit value Operand to the right by Count bits. + The high Count bits are fill with the low Count bits of Operand. The rotated + value is returned. + + @param Operand The 64-bit operand to rotate right. + @param Count The number of bits to rotate right. + + @return Operand >>> Count. + +**/ +UINT64 +EFIAPI +InternalMathRRotU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + return (Operand >> Count) | (Operand << (64 - Count)); +} + +/** + Switches the endianess of a 64-bit integer. + + This function swaps the bytes in a 64-bit unsigned value to switch the value + from little endian to big endian or vice versa. The byte swapped value is + returned. + + @param Operand A 64-bit unsigned value. + + @return The byte swapped Operand. + +**/ +UINT64 +EFIAPI +InternalMathSwapBytes64 ( + IN UINT64 Operand + ) +{ + UINT64 LowerBytes; + UINT64 HigherBytes; + + LowerBytes = (UINT64) SwapBytes32 ((UINT32) Operand); + HigherBytes = (UINT64) SwapBytes32 ((UINT32) (Operand >> 32)); + + return (LowerBytes << 32 | HigherBytes); +} + +/** + Multiplies a 64-bit unsigned integer by a 32-bit unsigned integer + and generates a 64-bit unsigned result. + + This function multiplies the 64-bit unsigned value Multiplicand by the 32-bit + unsigned value Multiplier and generates a 64-bit unsigned result. This 64- + bit unsigned result is returned. + + @param Multiplicand A 64-bit unsigned value. + @param Multiplier A 32-bit unsigned value. + + @return Multiplicand * Multiplier + +**/ +UINT64 +EFIAPI +InternalMathMultU64x32 ( + IN UINT64 Multiplicand, + IN UINT32 Multiplier + ) +{ + return Multiplicand * Multiplier; +} + + +/** + Multiplies a 64-bit unsigned integer by a 64-bit unsigned integer + and generates a 64-bit unsigned result. + + This function multiplies the 64-bit unsigned value Multiplicand by the 64-bit + unsigned value Multiplier and generates a 64-bit unsigned result. This 64- + bit unsigned result is returned. + + @param Multiplicand A 64-bit unsigned value. + @param Multiplier A 64-bit unsigned value. + + @return Multiplicand * Multiplier. + +**/ +UINT64 +EFIAPI +InternalMathMultU64x64 ( + IN UINT64 Multiplicand, + IN UINT64 Multiplier + ) +{ + return Multiplicand * Multiplier; +} + +/** + Divides a 64-bit unsigned integer by a 32-bit unsigned integer and + generates a 64-bit unsigned result. + + This function divides the 64-bit unsigned value Dividend by the 32-bit + unsigned value Divisor and generates a 64-bit unsigned quotient. This + function returns the 64-bit unsigned quotient. + + @param Dividend A 64-bit unsigned value. + @param Divisor A 32-bit unsigned value. + + @return Dividend / Divisor. + +**/ +UINT64 +EFIAPI +InternalMathDivU64x32 ( + IN UINT64 Dividend, + IN UINT32 Divisor + ) +{ + return Dividend / Divisor; +} + +/** + Divides a 64-bit unsigned integer by a 32-bit unsigned integer and + generates a 32-bit unsigned remainder. + + This function divides the 64-bit unsigned value Dividend by the 32-bit + unsigned value Divisor and generates a 32-bit remainder. This function + returns the 32-bit unsigned remainder. + + @param Dividend A 64-bit unsigned value. + @param Divisor A 32-bit unsigned value. + + @return Dividend % Divisor. + +**/ +UINT32 +EFIAPI +InternalMathModU64x32 ( + IN UINT64 Dividend, + IN UINT32 Divisor + ) +{ + return (UINT32)(Dividend % Divisor); +} + +/** + Divides a 64-bit unsigned integer by a 32-bit unsigned integer and + generates a 64-bit unsigned result and an optional 32-bit unsigned remainder. + + This function divides the 64-bit unsigned value Dividend by the 32-bit + unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder + is not NULL, then the 32-bit unsigned remainder is returned in Remainder. + This function returns the 64-bit unsigned quotient. + + @param Dividend A 64-bit unsigned value. + @param Divisor A 32-bit unsigned value. + @param Remainder A pointer to a 32-bit unsigned value. This parameter is + optional and may be NULL. + + @return Dividend / Divisor. + +**/ +UINT64 +EFIAPI +InternalMathDivRemU64x32 ( + IN UINT64 Dividend, + IN UINT32 Divisor, + OUT UINT32 *Remainder OPTIONAL + ) +{ + if (Remainder != NULL) { + *Remainder = (UINT32)(Dividend % Divisor); + } + return Dividend / Divisor; +} + +/** + Divides a 64-bit unsigned integer by a 64-bit unsigned integer and + generates a 64-bit unsigned result and an optional 64-bit unsigned remainder. + + This function divides the 64-bit unsigned value Dividend by the 64-bit + unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder + is not NULL, then the 64-bit unsigned remainder is returned in Remainder. + This function returns the 64-bit unsigned quotient. + + @param Dividend A 64-bit unsigned value. + @param Divisor A 64-bit unsigned value. + @param Remainder A pointer to a 64-bit unsigned value. This parameter is + optional and may be NULL. + + @return Dividend / Divisor + +**/ +UINT64 +EFIAPI +InternalMathDivRemU64x64 ( + IN UINT64 Dividend, + IN UINT64 Divisor, + OUT UINT64 *Remainder OPTIONAL + ) +{ + if (Remainder != NULL) { + *Remainder = Dividend % Divisor; + } + return Dividend / Divisor; +} + +/** + Divides a 64-bit signed integer by a 64-bit signed integer and + generates a 64-bit signed result and an optional 64-bit signed remainder. + + This function divides the 64-bit signed value Dividend by the 64-bit + signed value Divisor and generates a 64-bit signed quotient. If Remainder + is not NULL, then the 64-bit signed remainder is returned in Remainder. + This function returns the 64-bit signed quotient. + + @param Dividend A 64-bit signed value. + @param Divisor A 64-bit signed value. + @param Remainder A pointer to a 64-bit signed value. This parameter is + optional and may be NULL. + + @return Dividend / Divisor. + +**/ +INT64 +EFIAPI +InternalMathDivRemS64x64 ( + IN INT64 Dividend, + IN INT64 Divisor, + OUT INT64 *Remainder OPTIONAL + ) +{ + if (Remainder != NULL) { + *Remainder = Dividend % Divisor; + } + return Dividend / Divisor; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/ModU64x32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/ModU64x32.c new file mode 100644 index 0000000..b64a1fc --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/ModU64x32.c @@ -0,0 +1,45 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT32 +EFIAPI +InternalMathModU64x32 ( + IN UINT64 Dividend, + IN UINT32 Divisor + ); + +/** + Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates + a 32-bit unsigned remainder. + + This function divides the 64-bit unsigned value Dividend by the 32-bit + unsigned value Divisor and generates a 32-bit remainder. This function + returns the 32-bit unsigned remainder. + + If Divisor is 0, then ASSERT(). + + @param Dividend A 64-bit unsigned value. + @param Divisor A 32-bit unsigned value. + + @return Dividend % Divisor. + +**/ +UINT32 +EFIAPI +ModU64x32 ( + IN UINT64 Dividend, + IN UINT32 Divisor + ) +{ + ASSERT (Divisor != 0); + return InternalMathModU64x32 (Dividend, Divisor); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultS64x64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultS64x64.c new file mode 100644 index 0000000..a64790f --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultS64x64.c @@ -0,0 +1,35 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Multiplies a 64-bit signed integer by a 64-bit signed integer and generates a + 64-bit signed result. + + This function multiplies the 64-bit signed value Multiplicand by the 64-bit + signed value Multiplier and generates a 64-bit signed result. This 64-bit + signed result is returned. + + @param Multiplicand A 64-bit signed value. + @param Multiplier A 64-bit signed value. + + @return Multiplicand * Multiplier. + +**/ +INT64 +EFIAPI +MultS64x64 ( + IN INT64 Multiplicand, + IN INT64 Multiplier + ) +{ + return (INT64)MultU64x64 ((UINT64) Multiplicand, (UINT64) Multiplier); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x32.c new file mode 100644 index 0000000..ba56b3a --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x32.c @@ -0,0 +1,46 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathMultU64x32 ( + IN UINT64 Multiplicand, + IN UINT32 Multiplier + ); + +/** + Multiplies a 64-bit unsigned integer by a 32-bit unsigned integer and + generates a 64-bit unsigned result. + + This function multiplies the 64-bit unsigned value Multiplicand by the 32-bit + unsigned value Multiplier and generates a 64-bit unsigned result. This 64- + bit unsigned result is returned. + + @param Multiplicand A 64-bit unsigned value. + @param Multiplier A 32-bit unsigned value. + + @return Multiplicand * Multiplier. + +**/ +UINT64 +EFIAPI +MultU64x32 ( + IN UINT64 Multiplicand, + IN UINT32 Multiplier + ) +{ + UINT64 Result; + + Result = InternalMathMultU64x32 (Multiplicand, Multiplier); + + return Result; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x64.c new file mode 100644 index 0000000..0d30efe --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/MultU64x64.c @@ -0,0 +1,46 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathMultU64x64 ( + IN UINT64 Multiplicand, + IN UINT64 Multiplier + ); + +/** + Multiplies a 64-bit unsigned integer by a 64-bit unsigned integer and + generates a 64-bit unsigned result. + + This function multiplies the 64-bit unsigned value Multiplicand by the 64-bit + unsigned value Multiplier and generates a 64-bit unsigned result. This 64- + bit unsigned result is returned. + + @param Multiplicand A 64-bit unsigned value. + @param Multiplier A 64-bit unsigned value. + + @return Multiplicand * Multiplier. + +**/ +UINT64 +EFIAPI +MultU64x64 ( + IN UINT64 Multiplicand, + IN UINT64 Multiplier + ) +{ + UINT64 Result; + + Result = InternalMathMultU64x64 (Multiplicand, Multiplier); + + return Result; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/RRotU32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/RRotU32.c new file mode 100644 index 0000000..8dddf95 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/RRotU32.c @@ -0,0 +1,38 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Rotates a 32-bit integer right between 0 and 31 bits, filling the high bits + with the low bits that were rotated. + + This function rotates the 32-bit value Operand to the right by Count bits. + The high Count bits are fill with the low Count bits of Operand. The rotated + value is returned. + + If Count is greater than 31, then ASSERT(). + + @param Operand The 32-bit operand to rotate right. + @param Count The number of bits to rotate right. + + @return Operand >> Count. + +**/ +UINT32 +EFIAPI +RRotU32 ( + IN UINT32 Operand, + IN UINTN Count + ) +{ + ASSERT (Count < 32); + return (Operand >> Count) | (Operand << (32 - Count)); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/RRotU64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/RRotU64.c new file mode 100644 index 0000000..88fe762 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/RRotU64.c @@ -0,0 +1,45 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathRRotU64 ( + IN UINT64 Operand, + IN UINTN Count + ); + +/** + Rotates a 64-bit integer right between 0 and 63 bits, filling the high bits + with the high low bits that were rotated. + + This function rotates the 64-bit value Operand to the right by Count bits. + The high Count bits are fill with the low Count bits of Operand. The rotated + value is returned. + + If Count is greater than 63, then ASSERT(). + + @param Operand The 64-bit operand to rotate right. + @param Count The number of bits to rotate right. + + @return Operand >> Count. + +**/ +UINT64 +EFIAPI +RRotU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + ASSERT (Count < 64); + return InternalMathRRotU64 (Operand, Count); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/RShiftU64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/RShiftU64.c new file mode 100644 index 0000000..0a081b3 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/RShiftU64.c @@ -0,0 +1,44 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +InternalMathRShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ); + +/** + Shifts a 64-bit integer right between 0 and 63 bits. This high bits are + filled with zeros. The shifted value is returned. + + This function shifts the 64-bit value Operand to the right by Count bits. The + high Count bits are set to zero. The shifted value is returned. + + If Count is greater than 63, then ASSERT(). + + @param Operand The 64-bit operand to shift right. + @param Count The number of bits to shift right. + + @return Operand >> Count. + +**/ +UINT64 +EFIAPI +RShiftU64 ( + IN UINT64 Operand, + IN UINTN Count + ) +{ + ASSERT (Count < 64); + return InternalMathRShiftU64 (Operand, Count); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/SafeString.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SafeString.c new file mode 100644 index 0000000..954cf2c --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SafeString.c @@ -0,0 +1,3693 @@ +/** @file + Safe String functions. + + Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#ifndef RSIZE_MAX +#define RSIZE_MAX (0x1000000) +#endif + +#ifndef ASCII_RSIZE_MAX +#define ASCII_RSIZE_MAX (0x1000000) +#endif + +#define SAFE_STRING_CONSTRAINT_CHECK(Expression, Status) \ + do { \ + ASSERT (Expression); \ + if (!(Expression)) { \ + return Status; \ + } \ + } while (FALSE) + +BOOLEAN +EFIAPI +InternalIsDecimalDigitCharacter ( + IN CHAR16 Char + ); +CHAR16 +EFIAPI +InternalCharToUpper ( + IN CHAR16 Char + ); +BOOLEAN +EFIAPI +InternalIsHexaDecimalDigitCharacter ( + IN CHAR16 Char + ); +UINTN +EFIAPI +InternalHexCharToUintn ( + IN CHAR16 Char + ); +BOOLEAN +EFIAPI +InternalAsciiIsDecimalDigitCharacter ( + IN CHAR8 Char + ); +CHAR8 +EFIAPI +InternalBaseLibAsciiToUpper ( + IN CHAR8 Chr + ); +BOOLEAN +EFIAPI +InternalAsciiIsHexaDecimalDigitCharacter ( + IN CHAR8 Char + ); +UINTN +EFIAPI +InternalAsciiHexCharToUintn ( + IN CHAR8 Char + ); + + +/** + Returns if 2 memory blocks are overlapped. + + @param Base1 Base address of 1st memory block. + @param Size1 Size of 1st memory block. + @param Base2 Base address of 2nd memory block. + @param Size2 Size of 2nd memory block. + + @retval TRUE 2 memory blocks are overlapped. + @retval FALSE 2 memory blocks are not overlapped. +**/ +BOOLEAN +InternalSafeStringIsOverlap ( + IN VOID *Base1, + IN UINTN Size1, + IN VOID *Base2, + IN UINTN Size2 + ) +{ + if ((((UINTN)Base1 >= (UINTN)Base2) && ((UINTN)Base1 < (UINTN)Base2 + Size2)) || + (((UINTN)Base2 >= (UINTN)Base1) && ((UINTN)Base2 < (UINTN)Base1 + Size1))) { + return TRUE; + } + return FALSE; +} + +/** + Returns if 2 Unicode strings are not overlapped. + + @param Str1 Start address of 1st Unicode string. + @param Size1 The number of char in 1st Unicode string, + including terminating null char. + @param Str2 Start address of 2nd Unicode string. + @param Size2 The number of char in 2nd Unicode string, + including terminating null char. + + @retval TRUE 2 Unicode strings are NOT overlapped. + @retval FALSE 2 Unicode strings are overlapped. +**/ +BOOLEAN +InternalSafeStringNoStrOverlap ( + IN CHAR16 *Str1, + IN UINTN Size1, + IN CHAR16 *Str2, + IN UINTN Size2 + ) +{ + return !InternalSafeStringIsOverlap (Str1, Size1 * sizeof(CHAR16), Str2, Size2 * sizeof(CHAR16)); +} + +/** + Returns if 2 Ascii strings are not overlapped. + + @param Str1 Start address of 1st Ascii string. + @param Size1 The number of char in 1st Ascii string, + including terminating null char. + @param Str2 Start address of 2nd Ascii string. + @param Size2 The number of char in 2nd Ascii string, + including terminating null char. + + @retval TRUE 2 Ascii strings are NOT overlapped. + @retval FALSE 2 Ascii strings are overlapped. +**/ +BOOLEAN +InternalSafeStringNoAsciiStrOverlap ( + IN CHAR8 *Str1, + IN UINTN Size1, + IN CHAR8 *Str2, + IN UINTN Size2 + ) +{ + return !InternalSafeStringIsOverlap (Str1, Size1, Str2, Size2); +} + +/** + Returns the length of a Null-terminated Unicode string. + + This function is similar as strlen_s defined in C11. + + If String is not aligned on a 16-bit boundary, then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + @param MaxSize The maximum number of Destination Unicode + char, including terminating null char. + + @retval 0 If String is NULL. + @retval MaxSize If there is no null character in the first MaxSize characters of String. + @return The number of characters that percede the terminating null character. + +**/ +UINTN +EFIAPI +StrnLenS ( + IN CONST CHAR16 *String, + IN UINTN MaxSize + ) +{ + UINTN Length; + + ASSERT (((UINTN) String & BIT0) == 0); + + // + // If String is a null pointer or MaxSize is 0, then the StrnLenS function returns zero. + // + if ((String == NULL) || (MaxSize == 0)) { + return 0; + } + + // + // Otherwise, the StrnLenS function returns the number of characters that precede the + // terminating null character. If there is no null character in the first MaxSize characters of + // String then StrnLenS returns MaxSize. At most the first MaxSize characters of String shall + // be accessed by StrnLenS. + // + Length = 0; + while (String[Length] != 0) { + if (Length >= MaxSize - 1) { + return MaxSize; + } + Length++; + } + return Length; +} + +/** + Returns the size of a Null-terminated Unicode string in bytes, including the + Null terminator. + + This function returns the size of the Null-terminated Unicode string + specified by String in bytes, including the Null terminator. + + If String is not aligned on a 16-bit boundary, then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + @param MaxSize The maximum number of Destination Unicode + char, including the Null terminator. + + @retval 0 If String is NULL. + @retval (sizeof (CHAR16) * (MaxSize + 1)) + If there is no Null terminator in the first MaxSize characters of + String. + @return The size of the Null-terminated Unicode string in bytes, including + the Null terminator. + +**/ +UINTN +EFIAPI +StrnSizeS ( + IN CONST CHAR16 *String, + IN UINTN MaxSize + ) +{ + // + // If String is a null pointer, then the StrnSizeS function returns zero. + // + if (String == NULL) { + return 0; + } + + // + // Otherwise, the StrnSizeS function returns the size of the Null-terminated + // Unicode string in bytes, including the Null terminator. If there is no + // Null terminator in the first MaxSize characters of String, then StrnSizeS + // returns (sizeof (CHAR16) * (MaxSize + 1)) to keep a consistent map with + // the StrnLenS function. + // + return (StrnLenS (String, MaxSize) + 1) * sizeof (*String); +} + +/** + Copies the string pointed to by Source (including the terminating null char) + to the array pointed to by Destination. + + This function is similar as strcpy_s defined in C11. + + If Destination is not aligned on a 16-bit boundary, then ASSERT(). + If Source is not aligned on a 16-bit boundary, then ASSERT(). + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Destination A pointer to a Null-terminated Unicode string. + @param DestMax The maximum number of Destination Unicode + char, including terminating null char. + @param Source A pointer to a Null-terminated Unicode string. + + @retval RETURN_SUCCESS String is copied. + @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than StrLen(Source). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumUnicodeStringLength is not zero, + and DestMax is greater than + PcdMaximumUnicodeStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. +**/ +RETURN_STATUS +EFIAPI +StrCpyS ( + OUT CHAR16 *Destination, + IN UINTN DestMax, + IN CONST CHAR16 *Source + ) +{ + UINTN SourceLen; + + ASSERT (((UINTN) Destination & BIT0) == 0); + ASSERT (((UINTN) Source & BIT0) == 0); + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. DestMax shall not be greater than RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. DestMax shall be greater than StrnLenS(Source, DestMax). + // + SourceLen = StrnLenS (Source, DestMax); + SAFE_STRING_CONSTRAINT_CHECK ((DestMax > SourceLen), RETURN_BUFFER_TOO_SMALL); + + // + // 5. Copying shall not take place between objects that overlap. + // + SAFE_STRING_CONSTRAINT_CHECK (InternalSafeStringNoStrOverlap (Destination, DestMax, (CHAR16 *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // The StrCpyS function copies the string pointed to by Source (including the terminating + // null character) into the array pointed to by Destination. + // + while (*Source != 0) { + *(Destination++) = *(Source++); + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Copies not more than Length successive char from the string pointed to by + Source to the array pointed to by Destination. If no null char is copied from + Source, then Destination[Length] is always set to null. + + This function is similar as strncpy_s defined in C11. + + If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT(). + If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT(). + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Destination A pointer to a Null-terminated Unicode string. + @param DestMax The maximum number of Destination Unicode + char, including terminating null char. + @param Source A pointer to a Null-terminated Unicode string. + @param Length The maximum number of Unicode characters to copy. + + @retval RETURN_SUCCESS String is copied. + @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than + MIN(StrLen(Source), Length). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumUnicodeStringLength is not zero, + and DestMax is greater than + PcdMaximumUnicodeStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. +**/ +RETURN_STATUS +EFIAPI +StrnCpyS ( + OUT CHAR16 *Destination, + IN UINTN DestMax, + IN CONST CHAR16 *Source, + IN UINTN Length + ) +{ + UINTN SourceLen; + + ASSERT (((UINTN) Destination & BIT0) == 0); + ASSERT (((UINTN) Source & BIT0) == 0); + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. Neither DestMax nor Length shall be greater than RSIZE_MAX + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Length <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. If Length is not less than DestMax, then DestMax shall be greater than StrnLenS(Source, DestMax). + // + SourceLen = StrnLenS (Source, MIN (DestMax, Length)); + if (Length >= DestMax) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax > SourceLen), RETURN_BUFFER_TOO_SMALL); + } + + // + // 5. Copying shall not take place between objects that overlap. + // + if (SourceLen > Length) { + SourceLen = Length; + } + SAFE_STRING_CONSTRAINT_CHECK (InternalSafeStringNoStrOverlap (Destination, DestMax, (CHAR16 *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // The StrnCpyS function copies not more than Length successive characters (characters that + // follow a null character are not copied) from the array pointed to by Source to the array + // pointed to by Destination. If no null character was copied from Source, then Destination[Length] is set to a null + // character. + // + while ((SourceLen > 0) && (*Source != 0)) { + *(Destination++) = *(Source++); + SourceLen--; + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Appends a copy of the string pointed to by Source (including the terminating + null char) to the end of the string pointed to by Destination. + + This function is similar as strcat_s defined in C11. + + If Destination is not aligned on a 16-bit boundary, then ASSERT(). + If Source is not aligned on a 16-bit boundary, then ASSERT(). + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Destination A pointer to a Null-terminated Unicode string. + @param DestMax The maximum number of Destination Unicode + char, including terminating null char. + @param Source A pointer to a Null-terminated Unicode string. + + @retval RETURN_SUCCESS String is appended. + @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than + StrLen(Destination). + @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT + greater than StrLen(Source). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumUnicodeStringLength is not zero, + and DestMax is greater than + PcdMaximumUnicodeStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. +**/ +RETURN_STATUS +EFIAPI +StrCatS ( + IN OUT CHAR16 *Destination, + IN UINTN DestMax, + IN CONST CHAR16 *Source + ) +{ + UINTN DestLen; + UINTN CopyLen; + UINTN SourceLen; + + ASSERT (((UINTN) Destination & BIT0) == 0); + ASSERT (((UINTN) Source & BIT0) == 0); + + // + // Let CopyLen denote the value DestMax - StrnLenS(Destination, DestMax) upon entry to StrCatS. + // + DestLen = StrnLenS (Destination, DestMax); + CopyLen = DestMax - DestLen; + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. DestMax shall not be greater than RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. CopyLen shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((CopyLen != 0), RETURN_BAD_BUFFER_SIZE); + + // + // 5. CopyLen shall be greater than StrnLenS(Source, CopyLen). + // + SourceLen = StrnLenS (Source, CopyLen); + SAFE_STRING_CONSTRAINT_CHECK ((CopyLen > SourceLen), RETURN_BUFFER_TOO_SMALL); + + // + // 6. Copying shall not take place between objects that overlap. + // + SAFE_STRING_CONSTRAINT_CHECK (InternalSafeStringNoStrOverlap (Destination, DestMax, (CHAR16 *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // The StrCatS function appends a copy of the string pointed to by Source (including the + // terminating null character) to the end of the string pointed to by Destination. The initial character + // from Source overwrites the null character at the end of Destination. + // + Destination = Destination + DestLen; + while (*Source != 0) { + *(Destination++) = *(Source++); + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Appends not more than Length successive char from the string pointed to by + Source to the end of the string pointed to by Destination. If no null char is + copied from Source, then Destination[StrLen(Destination) + Length] is always + set to null. + + This function is similar as strncat_s defined in C11. + + If Destination is not aligned on a 16-bit boundary, then ASSERT(). + If Source is not aligned on a 16-bit boundary, then ASSERT(). + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Destination A pointer to a Null-terminated Unicode string. + @param DestMax The maximum number of Destination Unicode + char, including terminating null char. + @param Source A pointer to a Null-terminated Unicode string. + @param Length The maximum number of Unicode characters to copy. + + @retval RETURN_SUCCESS String is appended. + @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than + StrLen(Destination). + @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT + greater than MIN(StrLen(Source), Length). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumUnicodeStringLength is not zero, + and DestMax is greater than + PcdMaximumUnicodeStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. +**/ +RETURN_STATUS +EFIAPI +StrnCatS ( + IN OUT CHAR16 *Destination, + IN UINTN DestMax, + IN CONST CHAR16 *Source, + IN UINTN Length + ) +{ + UINTN DestLen; + UINTN CopyLen; + UINTN SourceLen; + + ASSERT (((UINTN) Destination & BIT0) == 0); + ASSERT (((UINTN) Source & BIT0) == 0); + + // + // Let CopyLen denote the value DestMax - StrnLenS(Destination, DestMax) upon entry to StrnCatS. + // + DestLen = StrnLenS (Destination, DestMax); + CopyLen = DestMax - DestLen; + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. Neither DestMax nor Length shall be greater than RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Length <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. CopyLen shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((CopyLen != 0), RETURN_BAD_BUFFER_SIZE); + + // + // 5. If Length is not less than CopyLen, then CopyLen shall be greater than StrnLenS(Source, CopyLen). + // + SourceLen = StrnLenS (Source, MIN (CopyLen, Length)); + if (Length >= CopyLen) { + SAFE_STRING_CONSTRAINT_CHECK ((CopyLen > SourceLen), RETURN_BUFFER_TOO_SMALL); + } + + // + // 6. Copying shall not take place between objects that overlap. + // + if (SourceLen > Length) { + SourceLen = Length; + } + SAFE_STRING_CONSTRAINT_CHECK (InternalSafeStringNoStrOverlap (Destination, DestMax, (CHAR16 *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // The StrnCatS function appends not more than Length successive characters (characters + // that follow a null character are not copied) from the array pointed to by Source to the end of + // the string pointed to by Destination. The initial character from Source overwrites the null character at + // the end of Destination. If no null character was copied from Source, then Destination[DestMax-CopyLen+Length] is set to + // a null character. + // + Destination = Destination + DestLen; + while ((SourceLen > 0) && (*Source != 0)) { + *(Destination++) = *(Source++); + SourceLen--; + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode decimal string to a value of type UINTN. + + This function outputs a value of type UINTN by interpreting the contents of + the Unicode string specified by String as a decimal number. The format of the + input Unicode string String is: + + [spaces] [decimal digits]. + + The valid decimal digit character is in the range [0-9]. The function will + ignore the pad space, which includes spaces or tab characters, before + [decimal digits]. The running zero in the beginning of [decimal digits] will + be ignored. Then, the function stops at the first character that is a not a + valid decimal character or a Null-terminator, whichever one comes first. + + If String is NULL, then ASSERT(). + If Data is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + If String has no valid decimal digits in the above format, then 0 is stored + at the location pointed to by Data. + If the number represented by String exceeds the range defined by UINTN, then + MAX_UINTN is stored at the location pointed to by Data. + + If EndPointer is not NULL, a pointer to the character that stopped the scan + is stored at the location pointed to by EndPointer. If String has no valid + decimal digits right after the optional pad spaces, the value of String is + stored at the location pointed to by EndPointer. + + @param String Pointer to a Null-terminated Unicode string. + @param EndPointer Pointer to character that stops scan. + @param Data Pointer to the converted value. + + @retval RETURN_SUCCESS Value is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If PcdMaximumUnicodeStringLength is not + zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode + characters, not including the + Null-terminator. + @retval RETURN_UNSUPPORTED If the number represented by String exceeds + the range defined by UINTN. + +**/ +RETURN_STATUS +EFIAPI +StrDecimalToUintnS ( + IN CONST CHAR16 *String, + OUT CHAR16 **EndPointer, OPTIONAL + OUT UINTN *Data + ) +{ + ASSERT (((UINTN) String & BIT0) == 0); + + // + // 1. Neither String nor Data shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Data != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. The length of String shall not be greater than RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((StrnLenS (String, RSIZE_MAX + 1) <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + + // + // Ignore the pad spaces (space or tab) + // + while ((*String == L' ') || (*String == L'\t')) { + String++; + } + + // + // Ignore leading Zeros after the spaces + // + while (*String == L'0') { + String++; + } + + *Data = 0; + + while (InternalIsDecimalDigitCharacter (*String)) { + // + // If the number represented by String overflows according to the range + // defined by UINTN, then MAX_UINTN is stored in *Data and + // RETURN_UNSUPPORTED is returned. + // + if (*Data > ((MAX_UINTN - (*String - L'0')) / 10)) { + *Data = MAX_UINTN; + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + return RETURN_UNSUPPORTED; + } + + *Data = *Data * 10 + (*String - L'0'); + String++; + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode decimal string to a value of type UINT64. + + This function outputs a value of type UINT64 by interpreting the contents of + the Unicode string specified by String as a decimal number. The format of the + input Unicode string String is: + + [spaces] [decimal digits]. + + The valid decimal digit character is in the range [0-9]. The function will + ignore the pad space, which includes spaces or tab characters, before + [decimal digits]. The running zero in the beginning of [decimal digits] will + be ignored. Then, the function stops at the first character that is a not a + valid decimal character or a Null-terminator, whichever one comes first. + + If String is NULL, then ASSERT(). + If Data is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + If String has no valid decimal digits in the above format, then 0 is stored + at the location pointed to by Data. + If the number represented by String exceeds the range defined by UINT64, then + MAX_UINT64 is stored at the location pointed to by Data. + + If EndPointer is not NULL, a pointer to the character that stopped the scan + is stored at the location pointed to by EndPointer. If String has no valid + decimal digits right after the optional pad spaces, the value of String is + stored at the location pointed to by EndPointer. + + @param String Pointer to a Null-terminated Unicode string. + @param EndPointer Pointer to character that stops scan. + @param Data Pointer to the converted value. + + @retval RETURN_SUCCESS Value is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If PcdMaximumUnicodeStringLength is not + zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode + characters, not including the + Null-terminator. + @retval RETURN_UNSUPPORTED If the number represented by String exceeds + the range defined by UINT64. + +**/ +RETURN_STATUS +EFIAPI +StrDecimalToUint64S ( + IN CONST CHAR16 *String, + OUT CHAR16 **EndPointer, OPTIONAL + OUT UINT64 *Data + ) +{ + ASSERT (((UINTN) String & BIT0) == 0); + + // + // 1. Neither String nor Data shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Data != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. The length of String shall not be greater than RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((StrnLenS (String, RSIZE_MAX + 1) <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + + // + // Ignore the pad spaces (space or tab) + // + while ((*String == L' ') || (*String == L'\t')) { + String++; + } + + // + // Ignore leading Zeros after the spaces + // + while (*String == L'0') { + String++; + } + + *Data = 0; + + while (InternalIsDecimalDigitCharacter (*String)) { + // + // If the number represented by String overflows according to the range + // defined by UINT64, then MAX_UINT64 is stored in *Data and + // RETURN_UNSUPPORTED is returned. + // + if (*Data > DivU64x32 (MAX_UINT64 - (*String - L'0'), 10)) { + *Data = MAX_UINT64; + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + return RETURN_UNSUPPORTED; + } + + *Data = MultU64x32 (*Data, 10) + (*String - L'0'); + String++; + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode hexadecimal string to a value of type + UINTN. + + This function outputs a value of type UINTN by interpreting the contents of + the Unicode string specified by String as a hexadecimal number. The format of + the input Unicode string String is: + + [spaces][zeros][x][hexadecimal digits]. + + The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F]. + The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. + If "x" appears in the input string, it must be prefixed with at least one 0. + The function will ignore the pad space, which includes spaces or tab + characters, before [zeros], [x] or [hexadecimal digit]. The running zero + before [x] or [hexadecimal digit] will be ignored. Then, the decoding starts + after [x] or the first valid hexadecimal digit. Then, the function stops at + the first character that is a not a valid hexadecimal character or NULL, + whichever one comes first. + + If String is NULL, then ASSERT(). + If Data is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + If String has no valid hexadecimal digits in the above format, then 0 is + stored at the location pointed to by Data. + If the number represented by String exceeds the range defined by UINTN, then + MAX_UINTN is stored at the location pointed to by Data. + + If EndPointer is not NULL, a pointer to the character that stopped the scan + is stored at the location pointed to by EndPointer. If String has no valid + hexadecimal digits right after the optional pad spaces, the value of String + is stored at the location pointed to by EndPointer. + + @param String Pointer to a Null-terminated Unicode string. + @param EndPointer Pointer to character that stops scan. + @param Data Pointer to the converted value. + + @retval RETURN_SUCCESS Value is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If PcdMaximumUnicodeStringLength is not + zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode + characters, not including the + Null-terminator. + @retval RETURN_UNSUPPORTED If the number represented by String exceeds + the range defined by UINTN. + +**/ +RETURN_STATUS +EFIAPI +StrHexToUintnS ( + IN CONST CHAR16 *String, + OUT CHAR16 **EndPointer, OPTIONAL + OUT UINTN *Data + ) +{ + ASSERT (((UINTN) String & BIT0) == 0); + + // + // 1. Neither String nor Data shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Data != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. The length of String shall not be greater than RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((StrnLenS (String, RSIZE_MAX + 1) <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + + // + // Ignore the pad spaces (space or tab) + // + while ((*String == L' ') || (*String == L'\t')) { + String++; + } + + // + // Ignore leading Zeros after the spaces + // + while (*String == L'0') { + String++; + } + + if (InternalCharToUpper (*String) == L'X') { + if (*(String - 1) != L'0') { + *Data = 0; + return RETURN_SUCCESS; + } + // + // Skip the 'X' + // + String++; + } + + *Data = 0; + + while (InternalIsHexaDecimalDigitCharacter (*String)) { + // + // If the number represented by String overflows according to the range + // defined by UINTN, then MAX_UINTN is stored in *Data and + // RETURN_UNSUPPORTED is returned. + // + if (*Data > ((MAX_UINTN - InternalHexCharToUintn (*String)) >> 4)) { + *Data = MAX_UINTN; + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + return RETURN_UNSUPPORTED; + } + + *Data = (*Data << 4) + InternalHexCharToUintn (*String); + String++; + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode hexadecimal string to a value of type + UINT64. + + This function outputs a value of type UINT64 by interpreting the contents of + the Unicode string specified by String as a hexadecimal number. The format of + the input Unicode string String is: + + [spaces][zeros][x][hexadecimal digits]. + + The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F]. + The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. + If "x" appears in the input string, it must be prefixed with at least one 0. + The function will ignore the pad space, which includes spaces or tab + characters, before [zeros], [x] or [hexadecimal digit]. The running zero + before [x] or [hexadecimal digit] will be ignored. Then, the decoding starts + after [x] or the first valid hexadecimal digit. Then, the function stops at + the first character that is a not a valid hexadecimal character or NULL, + whichever one comes first. + + If String is NULL, then ASSERT(). + If Data is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + If String has no valid hexadecimal digits in the above format, then 0 is + stored at the location pointed to by Data. + If the number represented by String exceeds the range defined by UINT64, then + MAX_UINT64 is stored at the location pointed to by Data. + + If EndPointer is not NULL, a pointer to the character that stopped the scan + is stored at the location pointed to by EndPointer. If String has no valid + hexadecimal digits right after the optional pad spaces, the value of String + is stored at the location pointed to by EndPointer. + + @param String Pointer to a Null-terminated Unicode string. + @param EndPointer Pointer to character that stops scan. + @param Data Pointer to the converted value. + + @retval RETURN_SUCCESS Value is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If PcdMaximumUnicodeStringLength is not + zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode + characters, not including the + Null-terminator. + @retval RETURN_UNSUPPORTED If the number represented by String exceeds + the range defined by UINT64. + +**/ +RETURN_STATUS +EFIAPI +StrHexToUint64S ( + IN CONST CHAR16 *String, + OUT CHAR16 **EndPointer, OPTIONAL + OUT UINT64 *Data + ) +{ + ASSERT (((UINTN) String & BIT0) == 0); + + // + // 1. Neither String nor Data shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Data != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. The length of String shall not be greater than RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((StrnLenS (String, RSIZE_MAX + 1) <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + + // + // Ignore the pad spaces (space or tab) + // + while ((*String == L' ') || (*String == L'\t')) { + String++; + } + + // + // Ignore leading Zeros after the spaces + // + while (*String == L'0') { + String++; + } + + if (InternalCharToUpper (*String) == L'X') { + if (*(String - 1) != L'0') { + *Data = 0; + return RETURN_SUCCESS; + } + // + // Skip the 'X' + // + String++; + } + + *Data = 0; + + while (InternalIsHexaDecimalDigitCharacter (*String)) { + // + // If the number represented by String overflows according to the range + // defined by UINT64, then MAX_UINT64 is stored in *Data and + // RETURN_UNSUPPORTED is returned. + // + if (*Data > RShiftU64 (MAX_UINT64 - InternalHexCharToUintn (*String), 4)) { + *Data = MAX_UINT64; + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + return RETURN_UNSUPPORTED; + } + + *Data = LShiftU64 (*Data, 4) + InternalHexCharToUintn (*String); + String++; + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) String; + } + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode string to IPv6 address and prefix length. + + This function outputs a value of type IPv6_ADDRESS and may output a value + of type UINT8 by interpreting the contents of the Unicode string specified + by String. The format of the input Unicode string String is as follows: + + X:X:X:X:X:X:X:X[/P] + + X contains one to four hexadecimal digit characters in the range [0-9], [a-f] and + [A-F]. X is converted to a value of type UINT16, whose low byte is stored in low + memory address and high byte is stored in high memory address. P contains decimal + digit characters in the range [0-9]. The running zero in the beginning of P will + be ignored. /P is optional. + + When /P is not in the String, the function stops at the first character that is + not a valid hexadecimal digit character after eight X's are converted. + + When /P is in the String, the function stops at the first character that is not + a valid decimal digit character after P is converted. + + "::" can be used to compress one or more groups of X when X contains only 0. + The "::" can only appear once in the String. + + If String is NULL, then ASSERT(). + + If Address is NULL, then ASSERT(). + + If String is not aligned in a 16-bit boundary, then ASSERT(). + + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + If EndPointer is not NULL and Address is translated from String, a pointer + to the character that stopped the scan is stored at the location pointed to + by EndPointer. + + @param String Pointer to a Null-terminated Unicode string. + @param EndPointer Pointer to character that stops scan. + @param Address Pointer to the converted IPv6 address. + @param PrefixLength Pointer to the converted IPv6 address prefix + length. MAX_UINT8 is returned when /P is + not in the String. + + @retval RETURN_SUCCESS Address is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + @retval RETURN_UNSUPPORTED If X contains more than four hexadecimal + digit characters. + If String contains "::" and number of X + is not less than 8. + If P starts with character that is not a + valid decimal digit character. + If the decimal number converted from P + exceeds 128. + +**/ +RETURN_STATUS +EFIAPI +StrToIpv6Address ( + IN CONST CHAR16 *String, + OUT CHAR16 **EndPointer, OPTIONAL + OUT IPv6_ADDRESS *Address, + OUT UINT8 *PrefixLength OPTIONAL + ) +{ + RETURN_STATUS Status; + UINTN AddressIndex; + UINTN Uintn; + IPv6_ADDRESS LocalAddress; + UINT8 LocalPrefixLength; + CONST CHAR16 *Pointer; + CHAR16 *End; + UINTN CompressStart; + BOOLEAN ExpectPrefix; + + LocalPrefixLength = MAX_UINT8; + CompressStart = ARRAY_SIZE (Address->Addr); + ExpectPrefix = FALSE; + + ASSERT (((UINTN) String & BIT0) == 0); + + // + // 1. None of String or Guid shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Address != NULL), RETURN_INVALID_PARAMETER); + + for (Pointer = String, AddressIndex = 0; AddressIndex < ARRAY_SIZE (Address->Addr) + 1;) { + if (!InternalIsHexaDecimalDigitCharacter (*Pointer)) { + if (*Pointer != L':') { + // + // ":" or "/" should be followed by digit characters. + // + return RETURN_UNSUPPORTED; + } + + // + // Meet second ":" after previous ":" or "/" + // or meet first ":" in the beginning of String. + // + if (ExpectPrefix) { + // + // ":" shall not be after "/" + // + return RETURN_UNSUPPORTED; + } + + if (CompressStart != ARRAY_SIZE (Address->Addr) || AddressIndex == ARRAY_SIZE (Address->Addr)) { + // + // "::" can only appear once. + // "::" can only appear when address is not full length. + // + return RETURN_UNSUPPORTED; + } else { + // + // Remember the start of zero compressing. + // + CompressStart = AddressIndex; + Pointer++; + + if (CompressStart == 0) { + if (*Pointer != L':') { + // + // Single ":" shall not be in the beginning of String. + // + return RETURN_UNSUPPORTED; + } + Pointer++; + } + } + } + + if (!InternalIsHexaDecimalDigitCharacter (*Pointer)) { + if (*Pointer == L'/') { + // + // Might be optional "/P" after "::". + // + if (CompressStart != AddressIndex) { + return RETURN_UNSUPPORTED; + } + } else { + break; + } + } else { + if (!ExpectPrefix) { + // + // Get X. + // + Status = StrHexToUintnS (Pointer, &End, &Uintn); + if (RETURN_ERROR (Status) || End - Pointer > 4) { + // + // Number of hexadecimal digit characters is no more than 4. + // + return RETURN_UNSUPPORTED; + } + Pointer = End; + // + // Uintn won't exceed MAX_UINT16 if number of hexadecimal digit characters is no more than 4. + // + ASSERT (AddressIndex + 1 < ARRAY_SIZE (Address->Addr)); + LocalAddress.Addr[AddressIndex] = (UINT8) ((UINT16) Uintn >> 8); + LocalAddress.Addr[AddressIndex + 1] = (UINT8) Uintn; + AddressIndex += 2; + } else { + // + // Get P, then exit the loop. + // + Status = StrDecimalToUintnS (Pointer, &End, &Uintn); + if (RETURN_ERROR (Status) || End == Pointer || Uintn > 128) { + // + // Prefix length should not exceed 128. + // + return RETURN_UNSUPPORTED; + } + LocalPrefixLength = (UINT8) Uintn; + Pointer = End; + break; + } + } + + // + // Skip ':' or "/" + // + if (*Pointer == L'/') { + ExpectPrefix = TRUE; + } else if (*Pointer == L':') { + if (AddressIndex == ARRAY_SIZE (Address->Addr)) { + // + // Meet additional ":" after all 8 16-bit address + // + break; + } + } else { + // + // Meet other character that is not "/" or ":" after all 8 16-bit address + // + break; + } + Pointer++; + } + + if ((AddressIndex == ARRAY_SIZE (Address->Addr) && CompressStart != ARRAY_SIZE (Address->Addr)) || + (AddressIndex != ARRAY_SIZE (Address->Addr) && CompressStart == ARRAY_SIZE (Address->Addr)) + ) { + // + // Full length of address shall not have compressing zeros. + // Non-full length of address shall have compressing zeros. + // + return RETURN_UNSUPPORTED; + } + CopyMem (&Address->Addr[0], &LocalAddress.Addr[0], CompressStart); + ZeroMem (&Address->Addr[CompressStart], ARRAY_SIZE (Address->Addr) - AddressIndex); + if (AddressIndex > CompressStart) { + CopyMem ( + &Address->Addr[CompressStart + ARRAY_SIZE (Address->Addr) - AddressIndex], + &LocalAddress.Addr[CompressStart], + AddressIndex - CompressStart + ); + } + + if (PrefixLength != NULL) { + *PrefixLength = LocalPrefixLength; + } + if (EndPointer != NULL) { + *EndPointer = (CHAR16 *) Pointer; + } + + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode string to IPv4 address and prefix length. + + This function outputs a value of type IPv4_ADDRESS and may output a value + of type UINT8 by interpreting the contents of the Unicode string specified + by String. The format of the input Unicode string String is as follows: + + D.D.D.D[/P] + + D and P are decimal digit characters in the range [0-9]. The running zero in + the beginning of D and P will be ignored. /P is optional. + + When /P is not in the String, the function stops at the first character that is + not a valid decimal digit character after four D's are converted. + + When /P is in the String, the function stops at the first character that is not + a valid decimal digit character after P is converted. + + If String is NULL, then ASSERT(). + + If Address is NULL, then ASSERT(). + + If String is not aligned in a 16-bit boundary, then ASSERT(). + + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + If EndPointer is not NULL and Address is translated from String, a pointer + to the character that stopped the scan is stored at the location pointed to + by EndPointer. + + @param String Pointer to a Null-terminated Unicode string. + @param EndPointer Pointer to character that stops scan. + @param Address Pointer to the converted IPv4 address. + @param PrefixLength Pointer to the converted IPv4 address prefix + length. MAX_UINT8 is returned when /P is + not in the String. + + @retval RETURN_SUCCESS Address is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + @retval RETURN_UNSUPPORTED If String is not in the correct format. + If any decimal number converted from D + exceeds 255. + If the decimal number converted from P + exceeds 32. + +**/ +RETURN_STATUS +EFIAPI +StrToIpv4Address ( + IN CONST CHAR16 *String, + OUT CHAR16 **EndPointer, OPTIONAL + OUT IPv4_ADDRESS *Address, + OUT UINT8 *PrefixLength OPTIONAL + ) +{ + RETURN_STATUS Status; + UINTN AddressIndex; + UINTN Uintn; + IPv4_ADDRESS LocalAddress; + UINT8 LocalPrefixLength; + CHAR16 *Pointer; + + LocalPrefixLength = MAX_UINT8; + + ASSERT (((UINTN) String & BIT0) == 0); + + // + // 1. None of String or Guid shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Address != NULL), RETURN_INVALID_PARAMETER); + + for (Pointer = (CHAR16 *) String, AddressIndex = 0; AddressIndex < ARRAY_SIZE (Address->Addr) + 1;) { + if (!InternalIsDecimalDigitCharacter (*Pointer)) { + // + // D or P contains invalid characters. + // + break; + } + + // + // Get D or P. + // + Status = StrDecimalToUintnS ((CONST CHAR16 *) Pointer, &Pointer, &Uintn); + if (RETURN_ERROR (Status)) { + return RETURN_UNSUPPORTED; + } + if (AddressIndex == ARRAY_SIZE (Address->Addr)) { + // + // It's P. + // + if (Uintn > 32) { + return RETURN_UNSUPPORTED; + } + LocalPrefixLength = (UINT8) Uintn; + } else { + // + // It's D. + // + if (Uintn > MAX_UINT8) { + return RETURN_UNSUPPORTED; + } + LocalAddress.Addr[AddressIndex] = (UINT8) Uintn; + AddressIndex++; + } + + // + // Check the '.' or '/', depending on the AddressIndex. + // + if (AddressIndex == ARRAY_SIZE (Address->Addr)) { + if (*Pointer == L'/') { + // + // '/P' is in the String. + // Skip "/" and get P in next loop. + // + Pointer++; + } else { + // + // '/P' is not in the String. + // + break; + } + } else if (AddressIndex < ARRAY_SIZE (Address->Addr)) { + if (*Pointer == L'.') { + // + // D should be followed by '.' + // + Pointer++; + } else { + return RETURN_UNSUPPORTED; + } + } + } + + if (AddressIndex < ARRAY_SIZE (Address->Addr)) { + return RETURN_UNSUPPORTED; + } + + CopyMem (Address, &LocalAddress, sizeof (*Address)); + if (PrefixLength != NULL) { + *PrefixLength = LocalPrefixLength; + } + if (EndPointer != NULL) { + *EndPointer = Pointer; + } + + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode GUID string to a value of type + EFI_GUID. + + This function outputs a GUID value by interpreting the contents of + the Unicode string specified by String. The format of the input + Unicode string String consists of 36 characters, as follows: + + aabbccdd-eeff-gghh-iijj-kkllmmnnoopp + + The pairs aa - pp are two characters in the range [0-9], [a-f] and + [A-F], with each pair representing a single byte hexadecimal value. + + The mapping between String and the EFI_GUID structure is as follows: + aa Data1[24:31] + bb Data1[16:23] + cc Data1[8:15] + dd Data1[0:7] + ee Data2[8:15] + ff Data2[0:7] + gg Data3[8:15] + hh Data3[0:7] + ii Data4[0:7] + jj Data4[8:15] + kk Data4[16:23] + ll Data4[24:31] + mm Data4[32:39] + nn Data4[40:47] + oo Data4[48:55] + pp Data4[56:63] + + If String is NULL, then ASSERT(). + If Guid is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + + @param String Pointer to a Null-terminated Unicode string. + @param Guid Pointer to the converted GUID. + + @retval RETURN_SUCCESS Guid is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + @retval RETURN_UNSUPPORTED If String is not as the above format. + +**/ +RETURN_STATUS +EFIAPI +StrToGuid ( + IN CONST CHAR16 *String, + OUT GUID *Guid + ) +{ + RETURN_STATUS Status; + GUID LocalGuid; + + ASSERT (((UINTN) String & BIT0) == 0); + + // + // 1. None of String or Guid shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Guid != NULL), RETURN_INVALID_PARAMETER); + + // + // Get aabbccdd in big-endian. + // + Status = StrHexToBytes (String, 2 * sizeof (LocalGuid.Data1), (UINT8 *) &LocalGuid.Data1, sizeof (LocalGuid.Data1)); + if (RETURN_ERROR (Status) || String[2 * sizeof (LocalGuid.Data1)] != L'-') { + return RETURN_UNSUPPORTED; + } + // + // Convert big-endian to little-endian. + // + LocalGuid.Data1 = SwapBytes32 (LocalGuid.Data1); + String += 2 * sizeof (LocalGuid.Data1) + 1; + + // + // Get eeff in big-endian. + // + Status = StrHexToBytes (String, 2 * sizeof (LocalGuid.Data2), (UINT8 *) &LocalGuid.Data2, sizeof (LocalGuid.Data2)); + if (RETURN_ERROR (Status) || String[2 * sizeof (LocalGuid.Data2)] != L'-') { + return RETURN_UNSUPPORTED; + } + // + // Convert big-endian to little-endian. + // + LocalGuid.Data2 = SwapBytes16 (LocalGuid.Data2); + String += 2 * sizeof (LocalGuid.Data2) + 1; + + // + // Get gghh in big-endian. + // + Status = StrHexToBytes (String, 2 * sizeof (LocalGuid.Data3), (UINT8 *) &LocalGuid.Data3, sizeof (LocalGuid.Data3)); + if (RETURN_ERROR (Status) || String[2 * sizeof (LocalGuid.Data3)] != L'-') { + return RETURN_UNSUPPORTED; + } + // + // Convert big-endian to little-endian. + // + LocalGuid.Data3 = SwapBytes16 (LocalGuid.Data3); + String += 2 * sizeof (LocalGuid.Data3) + 1; + + // + // Get iijj. + // + Status = StrHexToBytes (String, 2 * 2, &LocalGuid.Data4[0], 2); + if (RETURN_ERROR (Status) || String[2 * 2] != L'-') { + return RETURN_UNSUPPORTED; + } + String += 2 * 2 + 1; + + // + // Get kkllmmnnoopp. + // + Status = StrHexToBytes (String, 2 * 6, &LocalGuid.Data4[2], 6); + if (RETURN_ERROR (Status)) { + return RETURN_UNSUPPORTED; + } + + CopyGuid (Guid, &LocalGuid); + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode hexadecimal string to a byte array. + + This function outputs a byte array by interpreting the contents of + the Unicode string specified by String in hexadecimal format. The format of + the input Unicode string String is: + + [XX]* + + X is a hexadecimal digit character in the range [0-9], [a-f] and [A-F]. + The function decodes every two hexadecimal digit characters as one byte. The + decoding stops after Length of characters and outputs Buffer containing + (Length / 2) bytes. + + If String is not aligned in a 16-bit boundary, then ASSERT(). + + If String is NULL, then ASSERT(). + + If Buffer is NULL, then ASSERT(). + + If Length is not multiple of 2, then ASSERT(). + + If PcdMaximumUnicodeStringLength is not zero and Length is greater than + PcdMaximumUnicodeStringLength, then ASSERT(). + + If MaxBufferSize is less than (Length / 2), then ASSERT(). + + @param String Pointer to a Null-terminated Unicode string. + @param Length The number of Unicode characters to decode. + @param Buffer Pointer to the converted bytes array. + @param MaxBufferSize The maximum size of Buffer. + + @retval RETURN_SUCCESS Buffer is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If Length is not multiple of 2. + If PcdMaximumUnicodeStringLength is not zero, + and Length is greater than + PcdMaximumUnicodeStringLength. + @retval RETURN_UNSUPPORTED If Length of characters from String contain + a character that is not valid hexadecimal + digit characters, or a Null-terminator. + @retval RETURN_BUFFER_TOO_SMALL If MaxBufferSize is less than (Length / 2). +**/ +RETURN_STATUS +EFIAPI +StrHexToBytes ( + IN CONST CHAR16 *String, + IN UINTN Length, + OUT UINT8 *Buffer, + IN UINTN MaxBufferSize + ) +{ + UINTN Index; + + ASSERT (((UINTN) String & BIT0) == 0); + + // + // 1. None of String or Buffer shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Buffer != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. Length shall not be greater than RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((Length <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. Length shall not be odd. + // + SAFE_STRING_CONSTRAINT_CHECK (((Length & BIT0) == 0), RETURN_INVALID_PARAMETER); + + // + // 4. MaxBufferSize shall equal to or greater than Length / 2. + // + SAFE_STRING_CONSTRAINT_CHECK ((MaxBufferSize >= Length / 2), RETURN_BUFFER_TOO_SMALL); + + // + // 5. String shall not contains invalid hexadecimal digits. + // + for (Index = 0; Index < Length; Index++) { + if (!InternalIsHexaDecimalDigitCharacter (String[Index])) { + break; + } + } + if (Index != Length) { + return RETURN_UNSUPPORTED; + } + + // + // Convert the hex string to bytes. + // + for(Index = 0; Index < Length; Index++) { + + // + // For even characters, write the upper nibble for each buffer byte, + // and for even characters, the lower nibble. + // + if ((Index & BIT0) == 0) { + Buffer[Index / 2] = (UINT8) InternalHexCharToUintn (String[Index]) << 4; + } else { + Buffer[Index / 2] |= (UINT8) InternalHexCharToUintn (String[Index]); + } + } + return RETURN_SUCCESS; +} + +/** + Returns the length of a Null-terminated Ascii string. + + This function is similar as strlen_s defined in C11. + + @param String A pointer to a Null-terminated Ascii string. + @param MaxSize The maximum number of Destination Ascii + char, including terminating null char. + + @retval 0 If String is NULL. + @retval MaxSize If there is no null character in the first MaxSize characters of String. + @return The number of characters that percede the terminating null character. + +**/ +UINTN +EFIAPI +AsciiStrnLenS ( + IN CONST CHAR8 *String, + IN UINTN MaxSize + ) +{ + UINTN Length; + + // + // If String is a null pointer or MaxSize is 0, then the AsciiStrnLenS function returns zero. + // + if ((String == NULL) || (MaxSize == 0)) { + return 0; + } + + // + // Otherwise, the AsciiStrnLenS function returns the number of characters that precede the + // terminating null character. If there is no null character in the first MaxSize characters of + // String then AsciiStrnLenS returns MaxSize. At most the first MaxSize characters of String shall + // be accessed by AsciiStrnLenS. + // + Length = 0; + while (String[Length] != 0) { + if (Length >= MaxSize - 1) { + return MaxSize; + } + Length++; + } + return Length; +} + +/** + Returns the size of a Null-terminated Ascii string in bytes, including the + Null terminator. + + This function returns the size of the Null-terminated Ascii string specified + by String in bytes, including the Null terminator. + + @param String A pointer to a Null-terminated Ascii string. + @param MaxSize The maximum number of Destination Ascii + char, including the Null terminator. + + @retval 0 If String is NULL. + @retval (sizeof (CHAR8) * (MaxSize + 1)) + If there is no Null terminator in the first MaxSize characters of + String. + @return The size of the Null-terminated Ascii string in bytes, including the + Null terminator. + +**/ +UINTN +EFIAPI +AsciiStrnSizeS ( + IN CONST CHAR8 *String, + IN UINTN MaxSize + ) +{ + // + // If String is a null pointer, then the AsciiStrnSizeS function returns + // zero. + // + if (String == NULL) { + return 0; + } + + // + // Otherwise, the AsciiStrnSizeS function returns the size of the + // Null-terminated Ascii string in bytes, including the Null terminator. If + // there is no Null terminator in the first MaxSize characters of String, + // then AsciiStrnSizeS returns (sizeof (CHAR8) * (MaxSize + 1)) to keep a + // consistent map with the AsciiStrnLenS function. + // + return (AsciiStrnLenS (String, MaxSize) + 1) * sizeof (*String); +} + +/** + Copies the string pointed to by Source (including the terminating null char) + to the array pointed to by Destination. + + This function is similar as strcpy_s defined in C11. + + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Destination A pointer to a Null-terminated Ascii string. + @param DestMax The maximum number of Destination Ascii + char, including terminating null char. + @param Source A pointer to a Null-terminated Ascii string. + + @retval RETURN_SUCCESS String is copied. + @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than StrLen(Source). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumAsciiStringLength is not zero, + and DestMax is greater than + PcdMaximumAsciiStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. +**/ +RETURN_STATUS +EFIAPI +AsciiStrCpyS ( + OUT CHAR8 *Destination, + IN UINTN DestMax, + IN CONST CHAR8 *Source + ) +{ + UINTN SourceLen; + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. DestMax shall not be greater than ASCII_RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. DestMax shall be greater than AsciiStrnLenS(Source, DestMax). + // + SourceLen = AsciiStrnLenS (Source, DestMax); + SAFE_STRING_CONSTRAINT_CHECK ((DestMax > SourceLen), RETURN_BUFFER_TOO_SMALL); + + // + // 5. Copying shall not take place between objects that overlap. + // + SAFE_STRING_CONSTRAINT_CHECK (InternalSafeStringNoAsciiStrOverlap (Destination, DestMax, (CHAR8 *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // The AsciiStrCpyS function copies the string pointed to by Source (including the terminating + // null character) into the array pointed to by Destination. + // + while (*Source != 0) { + *(Destination++) = *(Source++); + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Copies not more than Length successive char from the string pointed to by + Source to the array pointed to by Destination. If no null char is copied from + Source, then Destination[Length] is always set to null. + + This function is similar as strncpy_s defined in C11. + + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Destination A pointer to a Null-terminated Ascii string. + @param DestMax The maximum number of Destination Ascii + char, including terminating null char. + @param Source A pointer to a Null-terminated Ascii string. + @param Length The maximum number of Ascii characters to copy. + + @retval RETURN_SUCCESS String is copied. + @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than + MIN(StrLen(Source), Length). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumAsciiStringLength is not zero, + and DestMax is greater than + PcdMaximumAsciiStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. +**/ +RETURN_STATUS +EFIAPI +AsciiStrnCpyS ( + OUT CHAR8 *Destination, + IN UINTN DestMax, + IN CONST CHAR8 *Source, + IN UINTN Length + ) +{ + UINTN SourceLen; + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. Neither DestMax nor Length shall be greater than ASCII_RSIZE_MAX + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Length <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. If Length is not less than DestMax, then DestMax shall be greater than AsciiStrnLenS(Source, DestMax). + // + SourceLen = AsciiStrnLenS (Source, MIN (DestMax, Length)); + if (Length >= DestMax) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax > SourceLen), RETURN_BUFFER_TOO_SMALL); + } + + // + // 5. Copying shall not take place between objects that overlap. + // + if (SourceLen > Length) { + SourceLen = Length; + } + SAFE_STRING_CONSTRAINT_CHECK (InternalSafeStringNoAsciiStrOverlap (Destination, DestMax, (CHAR8 *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // The AsciiStrnCpyS function copies not more than Length successive characters (characters that + // follow a null character are not copied) from the array pointed to by Source to the array + // pointed to by Destination. If no null character was copied from Source, then Destination[Length] is set to a null + // character. + // + while ((SourceLen > 0) && (*Source != 0)) { + *(Destination++) = *(Source++); + SourceLen--; + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Appends a copy of the string pointed to by Source (including the terminating + null char) to the end of the string pointed to by Destination. + + This function is similar as strcat_s defined in C11. + + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Destination A pointer to a Null-terminated Ascii string. + @param DestMax The maximum number of Destination Ascii + char, including terminating null char. + @param Source A pointer to a Null-terminated Ascii string. + + @retval RETURN_SUCCESS String is appended. + @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than + StrLen(Destination). + @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT + greater than StrLen(Source). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumAsciiStringLength is not zero, + and DestMax is greater than + PcdMaximumAsciiStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. +**/ +RETURN_STATUS +EFIAPI +AsciiStrCatS ( + IN OUT CHAR8 *Destination, + IN UINTN DestMax, + IN CONST CHAR8 *Source + ) +{ + UINTN DestLen; + UINTN CopyLen; + UINTN SourceLen; + + // + // Let CopyLen denote the value DestMax - AsciiStrnLenS(Destination, DestMax) upon entry to AsciiStrCatS. + // + DestLen = AsciiStrnLenS (Destination, DestMax); + CopyLen = DestMax - DestLen; + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. DestMax shall not be greater than ASCII_RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. CopyLen shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((CopyLen != 0), RETURN_BAD_BUFFER_SIZE); + + // + // 5. CopyLen shall be greater than AsciiStrnLenS(Source, CopyLen). + // + SourceLen = AsciiStrnLenS (Source, CopyLen); + SAFE_STRING_CONSTRAINT_CHECK ((CopyLen > SourceLen), RETURN_BUFFER_TOO_SMALL); + + // + // 6. Copying shall not take place between objects that overlap. + // + SAFE_STRING_CONSTRAINT_CHECK (InternalSafeStringNoAsciiStrOverlap (Destination, DestMax, (CHAR8 *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // The AsciiStrCatS function appends a copy of the string pointed to by Source (including the + // terminating null character) to the end of the string pointed to by Destination. The initial character + // from Source overwrites the null character at the end of Destination. + // + Destination = Destination + DestLen; + while (*Source != 0) { + *(Destination++) = *(Source++); + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Appends not more than Length successive char from the string pointed to by + Source to the end of the string pointed to by Destination. If no null char is + copied from Source, then Destination[StrLen(Destination) + Length] is always + set to null. + + This function is similar as strncat_s defined in C11. + + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Destination A pointer to a Null-terminated Ascii string. + @param DestMax The maximum number of Destination Ascii + char, including terminating null char. + @param Source A pointer to a Null-terminated Ascii string. + @param Length The maximum number of Ascii characters to copy. + + @retval RETURN_SUCCESS String is appended. + @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than + StrLen(Destination). + @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT + greater than MIN(StrLen(Source), Length). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumAsciiStringLength is not zero, + and DestMax is greater than + PcdMaximumAsciiStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. +**/ +RETURN_STATUS +EFIAPI +AsciiStrnCatS ( + IN OUT CHAR8 *Destination, + IN UINTN DestMax, + IN CONST CHAR8 *Source, + IN UINTN Length + ) +{ + UINTN DestLen; + UINTN CopyLen; + UINTN SourceLen; + + // + // Let CopyLen denote the value DestMax - AsciiStrnLenS(Destination, DestMax) upon entry to AsciiStrnCatS. + // + DestLen = AsciiStrnLenS (Destination, DestMax); + CopyLen = DestMax - DestLen; + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. Neither DestMax nor Length shall be greater than ASCII_RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Length <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. CopyLen shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((CopyLen != 0), RETURN_BAD_BUFFER_SIZE); + + // + // 5. If Length is not less than CopyLen, then CopyLen shall be greater than AsciiStrnLenS(Source, CopyLen). + // + SourceLen = AsciiStrnLenS (Source, MIN (CopyLen, Length)); + if (Length >= CopyLen) { + SAFE_STRING_CONSTRAINT_CHECK ((CopyLen > SourceLen), RETURN_BUFFER_TOO_SMALL); + } + + // + // 6. Copying shall not take place between objects that overlap. + // + if (SourceLen > Length) { + SourceLen = Length; + } + SAFE_STRING_CONSTRAINT_CHECK (InternalSafeStringNoAsciiStrOverlap (Destination, DestMax, (CHAR8 *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // The AsciiStrnCatS function appends not more than Length successive characters (characters + // that follow a null character are not copied) from the array pointed to by Source to the end of + // the string pointed to by Destination. The initial character from Source overwrites the null character at + // the end of Destination. If no null character was copied from Source, then Destination[DestMax-CopyLen+Length] is set to + // a null character. + // + Destination = Destination + DestLen; + while ((SourceLen > 0) && (*Source != 0)) { + *(Destination++) = *(Source++); + SourceLen--; + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Ascii decimal string to a value of type UINTN. + + This function outputs a value of type UINTN by interpreting the contents of + the Ascii string specified by String as a decimal number. The format of the + input Ascii string String is: + + [spaces] [decimal digits]. + + The valid decimal digit character is in the range [0-9]. The function will + ignore the pad space, which includes spaces or tab characters, before + [decimal digits]. The running zero in the beginning of [decimal digits] will + be ignored. Then, the function stops at the first character that is a not a + valid decimal character or a Null-terminator, whichever one comes first. + + If String is NULL, then ASSERT(). + If Data is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and String contains more than + PcdMaximumAsciiStringLength Ascii characters, not including the + Null-terminator, then ASSERT(). + + If String has no valid decimal digits in the above format, then 0 is stored + at the location pointed to by Data. + If the number represented by String exceeds the range defined by UINTN, then + MAX_UINTN is stored at the location pointed to by Data. + + If EndPointer is not NULL, a pointer to the character that stopped the scan + is stored at the location pointed to by EndPointer. If String has no valid + decimal digits right after the optional pad spaces, the value of String is + stored at the location pointed to by EndPointer. + + @param String Pointer to a Null-terminated Ascii string. + @param EndPointer Pointer to character that stops scan. + @param Data Pointer to the converted value. + + @retval RETURN_SUCCESS Value is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If PcdMaximumAsciiStringLength is not zero, + and String contains more than + PcdMaximumAsciiStringLength Ascii + characters, not including the + Null-terminator. + @retval RETURN_UNSUPPORTED If the number represented by String exceeds + the range defined by UINTN. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrDecimalToUintnS ( + IN CONST CHAR8 *String, + OUT CHAR8 **EndPointer, OPTIONAL + OUT UINTN *Data + ) +{ + // + // 1. Neither String nor Data shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Data != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. The length of String shall not be greater than ASCII_RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((AsciiStrnLenS (String, ASCII_RSIZE_MAX + 1) <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + + // + // Ignore the pad spaces (space or tab) + // + while ((*String == ' ') || (*String == '\t')) { + String++; + } + + // + // Ignore leading Zeros after the spaces + // + while (*String == '0') { + String++; + } + + *Data = 0; + + while (InternalAsciiIsDecimalDigitCharacter (*String)) { + // + // If the number represented by String overflows according to the range + // defined by UINTN, then MAX_UINTN is stored in *Data and + // RETURN_UNSUPPORTED is returned. + // + if (*Data > ((MAX_UINTN - (*String - '0')) / 10)) { + *Data = MAX_UINTN; + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + return RETURN_UNSUPPORTED; + } + + *Data = *Data * 10 + (*String - '0'); + String++; + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Ascii decimal string to a value of type UINT64. + + This function outputs a value of type UINT64 by interpreting the contents of + the Ascii string specified by String as a decimal number. The format of the + input Ascii string String is: + + [spaces] [decimal digits]. + + The valid decimal digit character is in the range [0-9]. The function will + ignore the pad space, which includes spaces or tab characters, before + [decimal digits]. The running zero in the beginning of [decimal digits] will + be ignored. Then, the function stops at the first character that is a not a + valid decimal character or a Null-terminator, whichever one comes first. + + If String is NULL, then ASSERT(). + If Data is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and String contains more than + PcdMaximumAsciiStringLength Ascii characters, not including the + Null-terminator, then ASSERT(). + + If String has no valid decimal digits in the above format, then 0 is stored + at the location pointed to by Data. + If the number represented by String exceeds the range defined by UINT64, then + MAX_UINT64 is stored at the location pointed to by Data. + + If EndPointer is not NULL, a pointer to the character that stopped the scan + is stored at the location pointed to by EndPointer. If String has no valid + decimal digits right after the optional pad spaces, the value of String is + stored at the location pointed to by EndPointer. + + @param String Pointer to a Null-terminated Ascii string. + @param EndPointer Pointer to character that stops scan. + @param Data Pointer to the converted value. + + @retval RETURN_SUCCESS Value is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If PcdMaximumAsciiStringLength is not zero, + and String contains more than + PcdMaximumAsciiStringLength Ascii + characters, not including the + Null-terminator. + @retval RETURN_UNSUPPORTED If the number represented by String exceeds + the range defined by UINT64. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrDecimalToUint64S ( + IN CONST CHAR8 *String, + OUT CHAR8 **EndPointer, OPTIONAL + OUT UINT64 *Data + ) +{ + // + // 1. Neither String nor Data shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Data != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. The length of String shall not be greater than ASCII_RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((AsciiStrnLenS (String, ASCII_RSIZE_MAX + 1) <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + + // + // Ignore the pad spaces (space or tab) + // + while ((*String == ' ') || (*String == '\t')) { + String++; + } + + // + // Ignore leading Zeros after the spaces + // + while (*String == '0') { + String++; + } + + *Data = 0; + + while (InternalAsciiIsDecimalDigitCharacter (*String)) { + // + // If the number represented by String overflows according to the range + // defined by UINT64, then MAX_UINT64 is stored in *Data and + // RETURN_UNSUPPORTED is returned. + // + if (*Data > DivU64x32 (MAX_UINT64 - (*String - '0'), 10)) { + *Data = MAX_UINT64; + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + return RETURN_UNSUPPORTED; + } + + *Data = MultU64x32 (*Data, 10) + (*String - '0'); + String++; + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Ascii hexadecimal string to a value of type UINTN. + + This function outputs a value of type UINTN by interpreting the contents of + the Ascii string specified by String as a hexadecimal number. The format of + the input Ascii string String is: + + [spaces][zeros][x][hexadecimal digits]. + + The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F]. + The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. If + "x" appears in the input string, it must be prefixed with at least one 0. The + function will ignore the pad space, which includes spaces or tab characters, + before [zeros], [x] or [hexadecimal digits]. The running zero before [x] or + [hexadecimal digits] will be ignored. Then, the decoding starts after [x] or + the first valid hexadecimal digit. Then, the function stops at the first + character that is a not a valid hexadecimal character or Null-terminator, + whichever on comes first. + + If String is NULL, then ASSERT(). + If Data is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and String contains more than + PcdMaximumAsciiStringLength Ascii characters, not including the + Null-terminator, then ASSERT(). + + If String has no valid hexadecimal digits in the above format, then 0 is + stored at the location pointed to by Data. + If the number represented by String exceeds the range defined by UINTN, then + MAX_UINTN is stored at the location pointed to by Data. + + If EndPointer is not NULL, a pointer to the character that stopped the scan + is stored at the location pointed to by EndPointer. If String has no valid + hexadecimal digits right after the optional pad spaces, the value of String + is stored at the location pointed to by EndPointer. + + @param String Pointer to a Null-terminated Ascii string. + @param EndPointer Pointer to character that stops scan. + @param Data Pointer to the converted value. + + @retval RETURN_SUCCESS Value is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If PcdMaximumAsciiStringLength is not zero, + and String contains more than + PcdMaximumAsciiStringLength Ascii + characters, not including the + Null-terminator. + @retval RETURN_UNSUPPORTED If the number represented by String exceeds + the range defined by UINTN. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrHexToUintnS ( + IN CONST CHAR8 *String, + OUT CHAR8 **EndPointer, OPTIONAL + OUT UINTN *Data + ) +{ + // + // 1. Neither String nor Data shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Data != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. The length of String shall not be greater than ASCII_RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((AsciiStrnLenS (String, ASCII_RSIZE_MAX + 1) <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + + // + // Ignore the pad spaces (space or tab) + // + while ((*String == ' ') || (*String == '\t')) { + String++; + } + + // + // Ignore leading Zeros after the spaces + // + while (*String == '0') { + String++; + } + + if (InternalBaseLibAsciiToUpper (*String) == 'X') { + if (*(String - 1) != '0') { + *Data = 0; + return RETURN_SUCCESS; + } + // + // Skip the 'X' + // + String++; + } + + *Data = 0; + + while (InternalAsciiIsHexaDecimalDigitCharacter (*String)) { + // + // If the number represented by String overflows according to the range + // defined by UINTN, then MAX_UINTN is stored in *Data and + // RETURN_UNSUPPORTED is returned. + // + if (*Data > ((MAX_UINTN - InternalAsciiHexCharToUintn (*String)) >> 4)) { + *Data = MAX_UINTN; + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + return RETURN_UNSUPPORTED; + } + + *Data = (*Data << 4) + InternalAsciiHexCharToUintn (*String); + String++; + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Ascii hexadecimal string to a value of type UINT64. + + This function outputs a value of type UINT64 by interpreting the contents of + the Ascii string specified by String as a hexadecimal number. The format of + the input Ascii string String is: + + [spaces][zeros][x][hexadecimal digits]. + + The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F]. + The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. If + "x" appears in the input string, it must be prefixed with at least one 0. The + function will ignore the pad space, which includes spaces or tab characters, + before [zeros], [x] or [hexadecimal digits]. The running zero before [x] or + [hexadecimal digits] will be ignored. Then, the decoding starts after [x] or + the first valid hexadecimal digit. Then, the function stops at the first + character that is a not a valid hexadecimal character or Null-terminator, + whichever on comes first. + + If String is NULL, then ASSERT(). + If Data is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and String contains more than + PcdMaximumAsciiStringLength Ascii characters, not including the + Null-terminator, then ASSERT(). + + If String has no valid hexadecimal digits in the above format, then 0 is + stored at the location pointed to by Data. + If the number represented by String exceeds the range defined by UINT64, then + MAX_UINT64 is stored at the location pointed to by Data. + + If EndPointer is not NULL, a pointer to the character that stopped the scan + is stored at the location pointed to by EndPointer. If String has no valid + hexadecimal digits right after the optional pad spaces, the value of String + is stored at the location pointed to by EndPointer. + + @param String Pointer to a Null-terminated Ascii string. + @param EndPointer Pointer to character that stops scan. + @param Data Pointer to the converted value. + + @retval RETURN_SUCCESS Value is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If PcdMaximumAsciiStringLength is not zero, + and String contains more than + PcdMaximumAsciiStringLength Ascii + characters, not including the + Null-terminator. + @retval RETURN_UNSUPPORTED If the number represented by String exceeds + the range defined by UINT64. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrHexToUint64S ( + IN CONST CHAR8 *String, + OUT CHAR8 **EndPointer, OPTIONAL + OUT UINT64 *Data + ) +{ + // + // 1. Neither String nor Data shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Data != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. The length of String shall not be greater than ASCII_RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((AsciiStrnLenS (String, ASCII_RSIZE_MAX + 1) <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + + // + // Ignore the pad spaces (space or tab) + // + while ((*String == ' ') || (*String == '\t')) { + String++; + } + + // + // Ignore leading Zeros after the spaces + // + while (*String == '0') { + String++; + } + + if (InternalBaseLibAsciiToUpper (*String) == 'X') { + if (*(String - 1) != '0') { + *Data = 0; + return RETURN_SUCCESS; + } + // + // Skip the 'X' + // + String++; + } + + *Data = 0; + + while (InternalAsciiIsHexaDecimalDigitCharacter (*String)) { + // + // If the number represented by String overflows according to the range + // defined by UINT64, then MAX_UINT64 is stored in *Data and + // RETURN_UNSUPPORTED is returned. + // + if (*Data > RShiftU64 (MAX_UINT64 - InternalAsciiHexCharToUintn (*String), 4)) { + *Data = MAX_UINT64; + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + return RETURN_UNSUPPORTED; + } + + *Data = LShiftU64 (*Data, 4) + InternalAsciiHexCharToUintn (*String); + String++; + } + + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) String; + } + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated Unicode string to a Null-terminated + ASCII string. + + This function is similar to AsciiStrCpyS. + + This function converts the content of the Unicode string Source + to the ASCII string Destination by copying the lower 8 bits of + each Unicode character. The function terminates the ASCII string + Destination by appending a Null-terminator character at the end. + + The caller is responsible to make sure Destination points to a buffer with size + equal or greater than ((StrLen (Source) + 1) * sizeof (CHAR8)) in bytes. + + If any Unicode characters in Source contain non-zero value in + the upper 8 bits, then ASSERT(). + + If Source is not aligned on a 16-bit boundary, then ASSERT(). + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Source The pointer to a Null-terminated Unicode string. + @param Destination The pointer to a Null-terminated ASCII string. + @param DestMax The maximum number of Destination Ascii + char, including terminating null char. + + @retval RETURN_SUCCESS String is converted. + @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than StrLen(Source). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumAsciiStringLength is not zero, + and DestMax is greater than + PcdMaximumAsciiStringLength. + If PcdMaximumUnicodeStringLength is not zero, + and DestMax is greater than + PcdMaximumUnicodeStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. + +**/ +RETURN_STATUS +EFIAPI +UnicodeStrToAsciiStrS ( + IN CONST CHAR16 *Source, + OUT CHAR8 *Destination, + IN UINTN DestMax + ) +{ + UINTN SourceLen; + + ASSERT (((UINTN) Source & BIT0) == 0); + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. DestMax shall not be greater than ASCII_RSIZE_MAX or RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. DestMax shall be greater than StrnLenS (Source, DestMax). + // + SourceLen = StrnLenS (Source, DestMax); + SAFE_STRING_CONSTRAINT_CHECK ((DestMax > SourceLen), RETURN_BUFFER_TOO_SMALL); + + // + // 5. Copying shall not take place between objects that overlap. + // + SAFE_STRING_CONSTRAINT_CHECK (!InternalSafeStringIsOverlap (Destination, DestMax, (VOID *)Source, (SourceLen + 1) * sizeof(CHAR16)), RETURN_ACCESS_DENIED); + + // + // convert string + // + while (*Source != '\0') { + // + // If any Unicode characters in Source contain + // non-zero value in the upper 8 bits, then ASSERT(). + // + ASSERT (*Source < 0x100); + *(Destination++) = (CHAR8) *(Source++); + } + *Destination = '\0'; + + return RETURN_SUCCESS; +} + +/** + Convert not more than Length successive characters from a Null-terminated + Unicode string to a Null-terminated Ascii string. If no null char is copied + from Source, then Destination[Length] is always set to null. + + This function converts not more than Length successive characters from the + Unicode string Source to the Ascii string Destination by copying the lower 8 + bits of each Unicode character. The function terminates the Ascii string + Destination by appending a Null-terminator character at the end. + + The caller is responsible to make sure Destination points to a buffer with + size not smaller than ((MIN(StrLen(Source), Length) + 1) * sizeof (CHAR8)) + in bytes. + + If any Unicode characters in Source contain non-zero value in the upper 8 + bits, then ASSERT(). + If Source is not aligned on a 16-bit boundary, then ASSERT(). + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then Destination and DestinationLength are + unmodified. + + @param Source The pointer to a Null-terminated Unicode string. + @param Length The maximum number of Unicode characters to + convert. + @param Destination The pointer to a Null-terminated Ascii string. + @param DestMax The maximum number of Destination Ascii char, + including terminating null char. + @param DestinationLength The number of Unicode characters converted. + + @retval RETURN_SUCCESS String is converted. + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If DestinationLength is NULL. + If PcdMaximumAsciiStringLength is not zero, + and Length or DestMax is greater than + PcdMaximumAsciiStringLength. + If PcdMaximumUnicodeStringLength is not + zero, and Length or DestMax is greater than + PcdMaximumUnicodeStringLength. + If DestMax is 0. + @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than + MIN(StrLen(Source), Length). + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. + +**/ +RETURN_STATUS +EFIAPI +UnicodeStrnToAsciiStrS ( + IN CONST CHAR16 *Source, + IN UINTN Length, + OUT CHAR8 *Destination, + IN UINTN DestMax, + OUT UINTN *DestinationLength + ) +{ + UINTN SourceLen; + + ASSERT (((UINTN) Source & BIT0) == 0); + + // + // 1. None of Destination, Source or DestinationLength shall be a null + // pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((DestinationLength != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. Neither Length nor DestMax shall be greater than ASCII_RSIZE_MAX or + // RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((Length <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((Length <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. If Length is not less than DestMax, then DestMax shall be greater than + // StrnLenS(Source, DestMax). + // + SourceLen = StrnLenS (Source, DestMax); + if (Length >= DestMax) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax > SourceLen), RETURN_BUFFER_TOO_SMALL); + } + + // + // 5. Copying shall not take place between objects that overlap. + // + if (SourceLen > Length) { + SourceLen = Length; + } + SAFE_STRING_CONSTRAINT_CHECK (!InternalSafeStringIsOverlap (Destination, DestMax, (VOID *)Source, (SourceLen + 1) * sizeof(CHAR16)), RETURN_ACCESS_DENIED); + + *DestinationLength = 0; + + // + // Convert string + // + while ((*Source != 0) && (SourceLen > 0)) { + // + // If any Unicode characters in Source contain non-zero value in the upper + // 8 bits, then ASSERT(). + // + ASSERT (*Source < 0x100); + *(Destination++) = (CHAR8) *(Source++); + SourceLen--; + (*DestinationLength)++; + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Convert one Null-terminated ASCII string to a Null-terminated + Unicode string. + + This function is similar to StrCpyS. + + This function converts the contents of the ASCII string Source to the Unicode + string Destination. The function terminates the Unicode string Destination by + appending a Null-terminator character at the end. + + The caller is responsible to make sure Destination points to a buffer with size + equal or greater than ((AsciiStrLen (Source) + 1) * sizeof (CHAR16)) in bytes. + + If Destination is not aligned on a 16-bit boundary, then ASSERT(). + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then the Destination is unmodified. + + @param Source The pointer to a Null-terminated ASCII string. + @param Destination The pointer to a Null-terminated Unicode string. + @param DestMax The maximum number of Destination Unicode + char, including terminating null char. + + @retval RETURN_SUCCESS String is converted. + @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than StrLen(Source). + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If PcdMaximumUnicodeStringLength is not zero, + and DestMax is greater than + PcdMaximumUnicodeStringLength. + If PcdMaximumAsciiStringLength is not zero, + and DestMax is greater than + PcdMaximumAsciiStringLength. + If DestMax is 0. + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrToUnicodeStrS ( + IN CONST CHAR8 *Source, + OUT CHAR16 *Destination, + IN UINTN DestMax + ) +{ + UINTN SourceLen; + + ASSERT (((UINTN) Destination & BIT0) == 0); + + // + // 1. Neither Destination nor Source shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. DestMax shall not be greater than RSIZE_MAX or ASCII_RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. DestMax shall be greater than AsciiStrnLenS(Source, DestMax). + // + SourceLen = AsciiStrnLenS (Source, DestMax); + SAFE_STRING_CONSTRAINT_CHECK ((DestMax > SourceLen), RETURN_BUFFER_TOO_SMALL); + + // + // 5. Copying shall not take place between objects that overlap. + // + SAFE_STRING_CONSTRAINT_CHECK (!InternalSafeStringIsOverlap (Destination, DestMax * sizeof(CHAR16), (VOID *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + // + // Convert string + // + while (*Source != '\0') { + *(Destination++) = (CHAR16)*(Source++); + } + *Destination = '\0'; + + return RETURN_SUCCESS; +} + +/** + Convert not more than Length successive characters from a Null-terminated + Ascii string to a Null-terminated Unicode string. If no null char is copied + from Source, then Destination[Length] is always set to null. + + This function converts not more than Length successive characters from the + Ascii string Source to the Unicode string Destination. The function + terminates the Unicode string Destination by appending a Null-terminator + character at the end. + + The caller is responsible to make sure Destination points to a buffer with + size not smaller than + ((MIN(AsciiStrLen(Source), Length) + 1) * sizeof (CHAR8)) in bytes. + + If Destination is not aligned on a 16-bit boundary, then ASSERT(). + If an error would be returned, then the function will also ASSERT(). + + If an error is returned, then Destination and DestinationLength are + unmodified. + + @param Source The pointer to a Null-terminated Ascii string. + @param Length The maximum number of Ascii characters to convert. + @param Destination The pointer to a Null-terminated Unicode string. + @param DestMax The maximum number of Destination Unicode char, + including terminating null char. + @param DestinationLength The number of Ascii characters converted. + + @retval RETURN_SUCCESS String is converted. + @retval RETURN_INVALID_PARAMETER If Destination is NULL. + If Source is NULL. + If DestinationLength is NULL. + If PcdMaximumUnicodeStringLength is not + zero, and Length or DestMax is greater than + PcdMaximumUnicodeStringLength. + If PcdMaximumAsciiStringLength is not zero, + and Length or DestMax is greater than + PcdMaximumAsciiStringLength. + If DestMax is 0. + @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than + MIN(AsciiStrLen(Source), Length). + @retval RETURN_ACCESS_DENIED If Source and Destination overlap. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrnToUnicodeStrS ( + IN CONST CHAR8 *Source, + IN UINTN Length, + OUT CHAR16 *Destination, + IN UINTN DestMax, + OUT UINTN *DestinationLength + ) +{ + UINTN SourceLen; + + ASSERT (((UINTN) Destination & BIT0) == 0); + + // + // 1. None of Destination, Source or DestinationLength shall be a null + // pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((Destination != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Source != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((DestinationLength != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. Neither Length nor DestMax shall be greater than ASCII_RSIZE_MAX or + // RSIZE_MAX. + // + if (RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((Length <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((Length <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((DestMax <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. DestMax shall not equal zero. + // + SAFE_STRING_CONSTRAINT_CHECK ((DestMax != 0), RETURN_INVALID_PARAMETER); + + // + // 4. If Length is not less than DestMax, then DestMax shall be greater than + // AsciiStrnLenS(Source, DestMax). + // + SourceLen = AsciiStrnLenS (Source, DestMax); + if (Length >= DestMax) { + SAFE_STRING_CONSTRAINT_CHECK ((DestMax > SourceLen), RETURN_BUFFER_TOO_SMALL); + } + + // + // 5. Copying shall not take place between objects that overlap. + // + if (SourceLen > Length) { + SourceLen = Length; + } + SAFE_STRING_CONSTRAINT_CHECK (!InternalSafeStringIsOverlap (Destination, DestMax * sizeof(CHAR16), (VOID *)Source, SourceLen + 1), RETURN_ACCESS_DENIED); + + *DestinationLength = 0; + + // + // Convert string + // + while ((*Source != 0) && (SourceLen > 0)) { + *(Destination++) = (CHAR16)*(Source++); + SourceLen--; + (*DestinationLength)++; + } + *Destination = 0; + + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated ASCII string to IPv6 address and prefix length. + + This function outputs a value of type IPv6_ADDRESS and may output a value + of type UINT8 by interpreting the contents of the ASCII string specified + by String. The format of the input ASCII string String is as follows: + + X:X:X:X:X:X:X:X[/P] + + X contains one to four hexadecimal digit characters in the range [0-9], [a-f] and + [A-F]. X is converted to a value of type UINT16, whose low byte is stored in low + memory address and high byte is stored in high memory address. P contains decimal + digit characters in the range [0-9]. The running zero in the beginning of P will + be ignored. /P is optional. + + When /P is not in the String, the function stops at the first character that is + not a valid hexadecimal digit character after eight X's are converted. + + When /P is in the String, the function stops at the first character that is not + a valid decimal digit character after P is converted. + + "::" can be used to compress one or more groups of X when X contains only 0. + The "::" can only appear once in the String. + + If String is NULL, then ASSERT(). + + If Address is NULL, then ASSERT(). + + If EndPointer is not NULL and Address is translated from String, a pointer + to the character that stopped the scan is stored at the location pointed to + by EndPointer. + + @param String Pointer to a Null-terminated ASCII string. + @param EndPointer Pointer to character that stops scan. + @param Address Pointer to the converted IPv6 address. + @param PrefixLength Pointer to the converted IPv6 address prefix + length. MAX_UINT8 is returned when /P is + not in the String. + + @retval RETURN_SUCCESS Address is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + @retval RETURN_UNSUPPORTED If X contains more than four hexadecimal + digit characters. + If String contains "::" and number of X + is not less than 8. + If P starts with character that is not a + valid decimal digit character. + If the decimal number converted from P + exceeds 128. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrToIpv6Address ( + IN CONST CHAR8 *String, + OUT CHAR8 **EndPointer, OPTIONAL + OUT IPv6_ADDRESS *Address, + OUT UINT8 *PrefixLength OPTIONAL + ) +{ + RETURN_STATUS Status; + UINTN AddressIndex; + UINTN Uintn; + IPv6_ADDRESS LocalAddress; + UINT8 LocalPrefixLength; + CONST CHAR8 *Pointer; + CHAR8 *End; + UINTN CompressStart; + BOOLEAN ExpectPrefix; + + LocalPrefixLength = MAX_UINT8; + CompressStart = ARRAY_SIZE (Address->Addr); + ExpectPrefix = FALSE; + + // + // None of String or Address shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Address != NULL), RETURN_INVALID_PARAMETER); + + for (Pointer = String, AddressIndex = 0; AddressIndex < ARRAY_SIZE (Address->Addr) + 1;) { + if (!InternalAsciiIsHexaDecimalDigitCharacter (*Pointer)) { + if (*Pointer != ':') { + // + // ":" or "/" should be followed by digit characters. + // + return RETURN_UNSUPPORTED; + } + + // + // Meet second ":" after previous ":" or "/" + // or meet first ":" in the beginning of String. + // + if (ExpectPrefix) { + // + // ":" shall not be after "/" + // + return RETURN_UNSUPPORTED; + } + + if (CompressStart != ARRAY_SIZE (Address->Addr) || AddressIndex == ARRAY_SIZE (Address->Addr)) { + // + // "::" can only appear once. + // "::" can only appear when address is not full length. + // + return RETURN_UNSUPPORTED; + } else { + // + // Remember the start of zero compressing. + // + CompressStart = AddressIndex; + Pointer++; + + if (CompressStart == 0) { + if (*Pointer != ':') { + // + // Single ":" shall not be in the beginning of String. + // + return RETURN_UNSUPPORTED; + } + Pointer++; + } + } + } + + if (!InternalAsciiIsHexaDecimalDigitCharacter (*Pointer)) { + if (*Pointer == '/') { + // + // Might be optional "/P" after "::". + // + if (CompressStart != AddressIndex) { + return RETURN_UNSUPPORTED; + } + } else { + break; + } + } else { + if (!ExpectPrefix) { + // + // Get X. + // + Status = AsciiStrHexToUintnS (Pointer, &End, &Uintn); + if (RETURN_ERROR (Status) || End - Pointer > 4) { + // + // Number of hexadecimal digit characters is no more than 4. + // + return RETURN_UNSUPPORTED; + } + Pointer = End; + // + // Uintn won't exceed MAX_UINT16 if number of hexadecimal digit characters is no more than 4. + // + ASSERT (AddressIndex + 1 < ARRAY_SIZE (Address->Addr)); + LocalAddress.Addr[AddressIndex] = (UINT8) ((UINT16) Uintn >> 8); + LocalAddress.Addr[AddressIndex + 1] = (UINT8) Uintn; + AddressIndex += 2; + } else { + // + // Get P, then exit the loop. + // + Status = AsciiStrDecimalToUintnS (Pointer, &End, &Uintn); + if (RETURN_ERROR (Status) || End == Pointer || Uintn > 128) { + // + // Prefix length should not exceed 128. + // + return RETURN_UNSUPPORTED; + } + LocalPrefixLength = (UINT8) Uintn; + Pointer = End; + break; + } + } + + // + // Skip ':' or "/" + // + if (*Pointer == '/') { + ExpectPrefix = TRUE; + } else if (*Pointer == ':') { + if (AddressIndex == ARRAY_SIZE (Address->Addr)) { + // + // Meet additional ":" after all 8 16-bit address + // + break; + } + } else { + // + // Meet other character that is not "/" or ":" after all 8 16-bit address + // + break; + } + Pointer++; + } + + if ((AddressIndex == ARRAY_SIZE (Address->Addr) && CompressStart != ARRAY_SIZE (Address->Addr)) || + (AddressIndex != ARRAY_SIZE (Address->Addr) && CompressStart == ARRAY_SIZE (Address->Addr)) + ) { + // + // Full length of address shall not have compressing zeros. + // Non-full length of address shall have compressing zeros. + // + return RETURN_UNSUPPORTED; + } + CopyMem (&Address->Addr[0], &LocalAddress.Addr[0], CompressStart); + ZeroMem (&Address->Addr[CompressStart], ARRAY_SIZE (Address->Addr) - AddressIndex); + if (AddressIndex > CompressStart) { + CopyMem ( + &Address->Addr[CompressStart + ARRAY_SIZE (Address->Addr) - AddressIndex], + &LocalAddress.Addr[CompressStart], + AddressIndex - CompressStart + ); + + } + + if (PrefixLength != NULL) { + *PrefixLength = LocalPrefixLength; + } + if (EndPointer != NULL) { + *EndPointer = (CHAR8 *) Pointer; + } + + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated ASCII string to IPv4 address and prefix length. + + This function outputs a value of type IPv4_ADDRESS and may output a value + of type UINT8 by interpreting the contents of the ASCII string specified + by String. The format of the input ASCII string String is as follows: + + D.D.D.D[/P] + + D and P are decimal digit characters in the range [0-9]. The running zero in + the beginning of D and P will be ignored. /P is optional. + + When /P is not in the String, the function stops at the first character that is + not a valid decimal digit character after four D's are converted. + + When /P is in the String, the function stops at the first character that is not + a valid decimal digit character after P is converted. + + If String is NULL, then ASSERT(). + + If Address is NULL, then ASSERT(). + + If EndPointer is not NULL and Address is translated from String, a pointer + to the character that stopped the scan is stored at the location pointed to + by EndPointer. + + @param String Pointer to a Null-terminated ASCII string. + @param EndPointer Pointer to character that stops scan. + @param Address Pointer to the converted IPv4 address. + @param PrefixLength Pointer to the converted IPv4 address prefix + length. MAX_UINT8 is returned when /P is + not in the String. + + @retval RETURN_SUCCESS Address is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + @retval RETURN_UNSUPPORTED If String is not in the correct format. + If any decimal number converted from D + exceeds 255. + If the decimal number converted from P + exceeds 32. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrToIpv4Address ( + IN CONST CHAR8 *String, + OUT CHAR8 **EndPointer, OPTIONAL + OUT IPv4_ADDRESS *Address, + OUT UINT8 *PrefixLength OPTIONAL + ) +{ + RETURN_STATUS Status; + UINTN AddressIndex; + UINTN Uintn; + IPv4_ADDRESS LocalAddress; + UINT8 LocalPrefixLength; + CHAR8 *Pointer; + + LocalPrefixLength = MAX_UINT8; + + // + // None of String or Address shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Address != NULL), RETURN_INVALID_PARAMETER); + + for (Pointer = (CHAR8 *) String, AddressIndex = 0; AddressIndex < ARRAY_SIZE (Address->Addr) + 1;) { + if (!InternalAsciiIsDecimalDigitCharacter (*Pointer)) { + // + // D or P contains invalid characters. + // + break; + } + + // + // Get D or P. + // + Status = AsciiStrDecimalToUintnS ((CONST CHAR8 *) Pointer, &Pointer, &Uintn); + if (RETURN_ERROR (Status)) { + return RETURN_UNSUPPORTED; + } + if (AddressIndex == ARRAY_SIZE (Address->Addr)) { + // + // It's P. + // + if (Uintn > 32) { + return RETURN_UNSUPPORTED; + } + LocalPrefixLength = (UINT8) Uintn; + } else { + // + // It's D. + // + if (Uintn > MAX_UINT8) { + return RETURN_UNSUPPORTED; + } + LocalAddress.Addr[AddressIndex] = (UINT8) Uintn; + AddressIndex++; + } + + // + // Check the '.' or '/', depending on the AddressIndex. + // + if (AddressIndex == ARRAY_SIZE (Address->Addr)) { + if (*Pointer == '/') { + // + // '/P' is in the String. + // Skip "/" and get P in next loop. + // + Pointer++; + } else { + // + // '/P' is not in the String. + // + break; + } + } else if (AddressIndex < ARRAY_SIZE (Address->Addr)) { + if (*Pointer == '.') { + // + // D should be followed by '.' + // + Pointer++; + } else { + return RETURN_UNSUPPORTED; + } + } + } + + if (AddressIndex < ARRAY_SIZE (Address->Addr)) { + return RETURN_UNSUPPORTED; + } + + CopyMem (Address, &LocalAddress, sizeof (*Address)); + if (PrefixLength != NULL) { + *PrefixLength = LocalPrefixLength; + } + if (EndPointer != NULL) { + *EndPointer = Pointer; + } + + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated ASCII GUID string to a value of type + EFI_GUID. + + This function outputs a GUID value by interpreting the contents of + the ASCII string specified by String. The format of the input + ASCII string String consists of 36 characters, as follows: + + aabbccdd-eeff-gghh-iijj-kkllmmnnoopp + + The pairs aa - pp are two characters in the range [0-9], [a-f] and + [A-F], with each pair representing a single byte hexadecimal value. + + The mapping between String and the EFI_GUID structure is as follows: + aa Data1[24:31] + bb Data1[16:23] + cc Data1[8:15] + dd Data1[0:7] + ee Data2[8:15] + ff Data2[0:7] + gg Data3[8:15] + hh Data3[0:7] + ii Data4[0:7] + jj Data4[8:15] + kk Data4[16:23] + ll Data4[24:31] + mm Data4[32:39] + nn Data4[40:47] + oo Data4[48:55] + pp Data4[56:63] + + If String is NULL, then ASSERT(). + If Guid is NULL, then ASSERT(). + + @param String Pointer to a Null-terminated ASCII string. + @param Guid Pointer to the converted GUID. + + @retval RETURN_SUCCESS Guid is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + @retval RETURN_UNSUPPORTED If String is not as the above format. + +**/ +RETURN_STATUS +EFIAPI +AsciiStrToGuid ( + IN CONST CHAR8 *String, + OUT GUID *Guid + ) +{ + RETURN_STATUS Status; + GUID LocalGuid; + + // + // None of String or Guid shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Guid != NULL), RETURN_INVALID_PARAMETER); + + // + // Get aabbccdd in big-endian. + // + Status = AsciiStrHexToBytes (String, 2 * sizeof (LocalGuid.Data1), (UINT8 *) &LocalGuid.Data1, sizeof (LocalGuid.Data1)); + if (RETURN_ERROR (Status) || String[2 * sizeof (LocalGuid.Data1)] != '-') { + return RETURN_UNSUPPORTED; + } + // + // Convert big-endian to little-endian. + // + LocalGuid.Data1 = SwapBytes32 (LocalGuid.Data1); + String += 2 * sizeof (LocalGuid.Data1) + 1; + + // + // Get eeff in big-endian. + // + Status = AsciiStrHexToBytes (String, 2 * sizeof (LocalGuid.Data2), (UINT8 *) &LocalGuid.Data2, sizeof (LocalGuid.Data2)); + if (RETURN_ERROR (Status) || String[2 * sizeof (LocalGuid.Data2)] != '-') { + return RETURN_UNSUPPORTED; + } + // + // Convert big-endian to little-endian. + // + LocalGuid.Data2 = SwapBytes16 (LocalGuid.Data2); + String += 2 * sizeof (LocalGuid.Data2) + 1; + + // + // Get gghh in big-endian. + // + Status = AsciiStrHexToBytes (String, 2 * sizeof (LocalGuid.Data3), (UINT8 *) &LocalGuid.Data3, sizeof (LocalGuid.Data3)); + if (RETURN_ERROR (Status) || String[2 * sizeof (LocalGuid.Data3)] != '-') { + return RETURN_UNSUPPORTED; + } + // + // Convert big-endian to little-endian. + // + LocalGuid.Data3 = SwapBytes16 (LocalGuid.Data3); + String += 2 * sizeof (LocalGuid.Data3) + 1; + + // + // Get iijj. + // + Status = AsciiStrHexToBytes (String, 2 * 2, &LocalGuid.Data4[0], 2); + if (RETURN_ERROR (Status) || String[2 * 2] != '-') { + return RETURN_UNSUPPORTED; + } + String += 2 * 2 + 1; + + // + // Get kkllmmnnoopp. + // + Status = AsciiStrHexToBytes (String, 2 * 6, &LocalGuid.Data4[2], 6); + if (RETURN_ERROR (Status)) { + return RETURN_UNSUPPORTED; + } + + CopyGuid (Guid, &LocalGuid); + return RETURN_SUCCESS; +} + +/** + Convert a Null-terminated ASCII hexadecimal string to a byte array. + + This function outputs a byte array by interpreting the contents of + the ASCII string specified by String in hexadecimal format. The format of + the input ASCII string String is: + + [XX]* + + X is a hexadecimal digit character in the range [0-9], [a-f] and [A-F]. + The function decodes every two hexadecimal digit characters as one byte. The + decoding stops after Length of characters and outputs Buffer containing + (Length / 2) bytes. + + If String is NULL, then ASSERT(). + + If Buffer is NULL, then ASSERT(). + + If Length is not multiple of 2, then ASSERT(). + + If PcdMaximumAsciiStringLength is not zero and Length is greater than + PcdMaximumAsciiStringLength, then ASSERT(). + + If MaxBufferSize is less than (Length / 2), then ASSERT(). + + @param String Pointer to a Null-terminated ASCII string. + @param Length The number of ASCII characters to decode. + @param Buffer Pointer to the converted bytes array. + @param MaxBufferSize The maximum size of Buffer. + + @retval RETURN_SUCCESS Buffer is translated from String. + @retval RETURN_INVALID_PARAMETER If String is NULL. + If Data is NULL. + If Length is not multiple of 2. + If PcdMaximumAsciiStringLength is not zero, + and Length is greater than + PcdMaximumAsciiStringLength. + @retval RETURN_UNSUPPORTED If Length of characters from String contain + a character that is not valid hexadecimal + digit characters, or a Null-terminator. + @retval RETURN_BUFFER_TOO_SMALL If MaxBufferSize is less than (Length / 2). +**/ +RETURN_STATUS +EFIAPI +AsciiStrHexToBytes ( + IN CONST CHAR8 *String, + IN UINTN Length, + OUT UINT8 *Buffer, + IN UINTN MaxBufferSize + ) +{ + UINTN Index; + + // + // 1. None of String or Buffer shall be a null pointer. + // + SAFE_STRING_CONSTRAINT_CHECK ((String != NULL), RETURN_INVALID_PARAMETER); + SAFE_STRING_CONSTRAINT_CHECK ((Buffer != NULL), RETURN_INVALID_PARAMETER); + + // + // 2. Length shall not be greater than ASCII_RSIZE_MAX. + // + if (ASCII_RSIZE_MAX != 0) { + SAFE_STRING_CONSTRAINT_CHECK ((Length <= ASCII_RSIZE_MAX), RETURN_INVALID_PARAMETER); + } + + // + // 3. Length shall not be odd. + // + SAFE_STRING_CONSTRAINT_CHECK (((Length & BIT0) == 0), RETURN_INVALID_PARAMETER); + + // + // 4. MaxBufferSize shall equal to or greater than Length / 2. + // + SAFE_STRING_CONSTRAINT_CHECK ((MaxBufferSize >= Length / 2), RETURN_BUFFER_TOO_SMALL); + + // + // 5. String shall not contains invalid hexadecimal digits. + // + for (Index = 0; Index < Length; Index++) { + if (!InternalAsciiIsHexaDecimalDigitCharacter (String[Index])) { + break; + } + } + if (Index != Length) { + return RETURN_UNSUPPORTED; + } + + // + // Convert the hex string to bytes. + // + for(Index = 0; Index < Length; Index++) { + + // + // For even characters, write the upper nibble for each buffer byte, + // and for even characters, the lower nibble. + // + if ((Index & BIT0) == 0) { + Buffer[Index / 2] = (UINT8) InternalAsciiHexCharToUintn (String[Index]) << 4; + } else { + Buffer[Index / 2] |= (UINT8) InternalAsciiHexCharToUintn (String[Index]); + } + } + return RETURN_SUCCESS; +} + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/SetJump.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SetJump.c new file mode 100644 index 0000000..6d61e93 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SetJump.c @@ -0,0 +1,54 @@ +/** @file + Internal ASSERT () functions for SetJump. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include +#include +#include +#include +#include + +/** + Saves the current CPU context that can be restored with a call to LongJump() + and returns 0. + + Saves the current CPU context in the buffer specified by JumpBuffer and + returns 0. The initial call to SetJump() must always return 0. Subsequent + calls to LongJump() cause a non-zero value to be returned by SetJump(). + + If JumpBuffer is NULL, then ASSERT(). + For Itanium processors, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT(). + + NOTE: The structure BASE_LIBRARY_JUMP_BUFFER is CPU architecture specific. + The same structure must never be used for more than one CPU architecture context. + For example, a BASE_LIBRARY_JUMP_BUFFER allocated by an IA-32 module must never be used from an x64 module. + SetJump()/LongJump() is not currently supported for the EBC processor type. + + @param JumpBuffer A pointer to CPU context buffer. + + @retval 0 Indicates a return from SetJump(). + +**/ +UINTN +EFIAPI +SetJump ( + OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer + ) +{ + jmp_buf local_buf; + jmp_buf *buf; + UINTN Value; + + buf = malloc (sizeof(jmp_buf)); + *(VOID **)JumpBuffer = buf; + Value = setjmp (local_buf); + if (Value == 0) { + memcpy (buf, &local_buf, sizeof(jmp_buf)); + } + return Value; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/String.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/String.c new file mode 100644 index 0000000..4f5fa47 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/String.c @@ -0,0 +1,1163 @@ +/** @file + Unicode and ASCII string primitives. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Returns the length of a Null-terminated Unicode string. + + This function returns the number of Unicode characters in the Null-terminated + Unicode string specified by String. + + If String is NULL, then ASSERT(). + If String is not aligned on a 16-bit boundary, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + + @return The length of String. + +**/ +UINTN +EFIAPI +StrLen ( + IN CONST CHAR16 *String + ) +{ + UINTN Length; + + ASSERT (String != NULL); + ASSERT (((UINTN) String & BIT0) == 0); + + for (Length = 0; *String != L'\0'; String++, Length++) { + // + // If PcdMaximumUnicodeStringLength is not zero, + // length should not more than PcdMaximumUnicodeStringLength + // + } + return Length; +} + +/** + Returns the size of a Null-terminated Unicode string in bytes, including the + Null terminator. + + This function returns the size, in bytes, of the Null-terminated Unicode string + specified by String. + + If String is NULL, then ASSERT(). + If String is not aligned on a 16-bit boundary, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + + @return The size of String. + +**/ +UINTN +EFIAPI +StrSize ( + IN CONST CHAR16 *String + ) +{ + return (StrLen (String) + 1) * sizeof (*String); +} + +/** + Compares two Null-terminated Unicode strings, and returns the difference + between the first mismatched Unicode characters. + + This function compares the Null-terminated Unicode string FirstString to the + Null-terminated Unicode string SecondString. If FirstString is identical to + SecondString, then 0 is returned. Otherwise, the value returned is the first + mismatched Unicode character in SecondString subtracted from the first + mismatched Unicode character in FirstString. + + If FirstString is NULL, then ASSERT(). + If FirstString is not aligned on a 16-bit boundary, then ASSERT(). + If SecondString is NULL, then ASSERT(). + If SecondString is not aligned on a 16-bit boundary, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more + than PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and SecondString contains more + than PcdMaximumUnicodeStringLength Unicode characters, not including the + Null-terminator, then ASSERT(). + + @param FirstString A pointer to a Null-terminated Unicode string. + @param SecondString A pointer to a Null-terminated Unicode string. + + @retval 0 FirstString is identical to SecondString. + @return others FirstString is not identical to SecondString. + +**/ +INTN +EFIAPI +StrCmp ( + IN CONST CHAR16 *FirstString, + IN CONST CHAR16 *SecondString + ) +{ + // + // ASSERT both strings are less long than PcdMaximumUnicodeStringLength + // + ASSERT (StrSize (FirstString) != 0); + ASSERT (StrSize (SecondString) != 0); + + while ((*FirstString != L'\0') && (*FirstString == *SecondString)) { + FirstString++; + SecondString++; + } + return *FirstString - *SecondString; +} + +/** + Compares up to a specified length the contents of two Null-terminated Unicode strings, + and returns the difference between the first mismatched Unicode characters. + + This function compares the Null-terminated Unicode string FirstString to the + Null-terminated Unicode string SecondString. At most, Length Unicode + characters will be compared. If Length is 0, then 0 is returned. If + FirstString is identical to SecondString, then 0 is returned. Otherwise, the + value returned is the first mismatched Unicode character in SecondString + subtracted from the first mismatched Unicode character in FirstString. + + If Length > 0 and FirstString is NULL, then ASSERT(). + If Length > 0 and FirstString is not aligned on a 16-bit boundary, then ASSERT(). + If Length > 0 and SecondString is NULL, then ASSERT(). + If Length > 0 and SecondString is not aligned on a 16-bit boundary, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and Length is greater than + PcdMaximumUnicodeStringLength, then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator, + then ASSERT(). + If PcdMaximumUnicodeStringLength is not zero, and SecondString contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator, + then ASSERT(). + + @param FirstString A pointer to a Null-terminated Unicode string. + @param SecondString A pointer to a Null-terminated Unicode string. + @param Length The maximum number of Unicode characters to compare. + + @retval 0 FirstString is identical to SecondString. + @return others FirstString is not identical to SecondString. + +**/ +INTN +EFIAPI +StrnCmp ( + IN CONST CHAR16 *FirstString, + IN CONST CHAR16 *SecondString, + IN UINTN Length + ) +{ + if (Length == 0) { + return 0; + } + + // + // ASSERT both strings are less long than PcdMaximumUnicodeStringLength. + // Length tests are performed inside StrLen(). + // + ASSERT (StrSize (FirstString) != 0); + ASSERT (StrSize (SecondString) != 0); + + while ((*FirstString != L'\0') && + (*SecondString != L'\0') && + (*FirstString == *SecondString) && + (Length > 1)) { + FirstString++; + SecondString++; + Length--; + } + + return *FirstString - *SecondString; +} + +/** + Returns the first occurrence of a Null-terminated Unicode sub-string + in a Null-terminated Unicode string. + + This function scans the contents of the Null-terminated Unicode string + specified by String and returns the first occurrence of SearchString. + If SearchString is not found in String, then NULL is returned. If + the length of SearchString is zero, then String is + returned. + + If String is NULL, then ASSERT(). + If String is not aligned on a 16-bit boundary, then ASSERT(). + If SearchString is NULL, then ASSERT(). + If SearchString is not aligned on a 16-bit boundary, then ASSERT(). + + If PcdMaximumUnicodeStringLength is not zero, and SearchString + or String contains more than PcdMaximumUnicodeStringLength Unicode + characters, not including the Null-terminator, then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + @param SearchString A pointer to a Null-terminated Unicode string to search for. + + @retval NULL If the SearchString does not appear in String. + @return others If there is a match. + +**/ +CHAR16 * +EFIAPI +StrStr ( + IN CONST CHAR16 *String, + IN CONST CHAR16 *SearchString + ) +{ + CONST CHAR16 *FirstMatch; + CONST CHAR16 *SearchStringTmp; + + // + // ASSERT both strings are less long than PcdMaximumUnicodeStringLength. + // Length tests are performed inside StrLen(). + // + ASSERT (StrSize (String) != 0); + ASSERT (StrSize (SearchString) != 0); + + if (*SearchString == L'\0') { + return (CHAR16 *) String; + } + + while (*String != L'\0') { + SearchStringTmp = SearchString; + FirstMatch = String; + + while ((*String == *SearchStringTmp) + && (*String != L'\0')) { + String++; + SearchStringTmp++; + } + + if (*SearchStringTmp == L'\0') { + return (CHAR16 *) FirstMatch; + } + + if (*String == L'\0') { + return NULL; + } + + String = FirstMatch + 1; + } + + return NULL; +} + +/** + Check if a Unicode character is a decimal character. + + This internal function checks if a Unicode character is a + decimal character. The valid decimal character is from + L'0' to L'9'. + + @param Char The character to check against. + + @retval TRUE If the Char is a decmial character. + @retval FALSE If the Char is not a decmial character. + +**/ +BOOLEAN +EFIAPI +InternalIsDecimalDigitCharacter ( + IN CHAR16 Char + ) +{ + return (BOOLEAN) (Char >= L'0' && Char <= L'9'); +} + +/** + Convert a Unicode character to upper case only if + it maps to a valid small-case ASCII character. + + This internal function only deal with Unicode character + which maps to a valid small-case ASCII character, i.e. + L'a' to L'z'. For other Unicode character, the input character + is returned directly. + + @param Char The character to convert. + + @retval LowerCharacter If the Char is with range L'a' to L'z'. + @retval Unchanged Otherwise. + +**/ +CHAR16 +EFIAPI +InternalCharToUpper ( + IN CHAR16 Char + ) +{ + if (Char >= L'a' && Char <= L'z') { + return (CHAR16) (Char - (L'a' - L'A')); + } + + return Char; +} + +/** + Convert a Unicode character to numerical value. + + This internal function only deal with Unicode character + which maps to a valid hexadecimal ASII character, i.e. + L'0' to L'9', L'a' to L'f' or L'A' to L'F'. For other + Unicode character, the value returned does not make sense. + + @param Char The character to convert. + + @return The numerical value converted. + +**/ +UINTN +EFIAPI +InternalHexCharToUintn ( + IN CHAR16 Char + ) +{ + if (InternalIsDecimalDigitCharacter (Char)) { + return Char - L'0'; + } + + return (10 + InternalCharToUpper (Char) - L'A'); +} + +/** + Check if a Unicode character is a hexadecimal character. + + This internal function checks if a Unicode character is a + decimal character. The valid hexadecimal character is + L'0' to L'9', L'a' to L'f', or L'A' to L'F'. + + + @param Char The character to check against. + + @retval TRUE If the Char is a hexadecmial character. + @retval FALSE If the Char is not a hexadecmial character. + +**/ +BOOLEAN +EFIAPI +InternalIsHexaDecimalDigitCharacter ( + IN CHAR16 Char + ) +{ + + return (BOOLEAN) (InternalIsDecimalDigitCharacter (Char) || + (Char >= L'A' && Char <= L'F') || + (Char >= L'a' && Char <= L'f')); +} + +/** + Convert a Null-terminated Unicode decimal string to a value of + type UINTN. + + This function returns a value of type UINTN by interpreting the contents + of the Unicode string specified by String as a decimal number. The format + of the input Unicode string String is: + + [spaces] [decimal digits]. + + The valid decimal digit character is in the range [0-9]. The + function will ignore the pad space, which includes spaces or + tab characters, before [decimal digits]. The running zero in the + beginning of [decimal digits] will be ignored. Then, the function + stops at the first character that is a not a valid decimal character + or a Null-terminator, whichever one comes first. + + If String is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + If String has only pad spaces, then 0 is returned. + If String has no pad spaces or valid decimal digits, + then 0 is returned. + If the number represented by String overflows according + to the range defined by UINTN, then MAX_UINTN is returned. + + If PcdMaximumUnicodeStringLength is not zero, and String contains + more than PcdMaximumUnicodeStringLength Unicode characters, not including + the Null-terminator, then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + + @retval Value translated from String. + +**/ +UINTN +EFIAPI +StrDecimalToUintn ( + IN CONST CHAR16 *String + ) +{ + UINTN Result; + + StrDecimalToUintnS (String, (CHAR16 **) NULL, &Result); + return Result; +} + + +/** + Convert a Null-terminated Unicode decimal string to a value of + type UINT64. + + This function returns a value of type UINT64 by interpreting the contents + of the Unicode string specified by String as a decimal number. The format + of the input Unicode string String is: + + [spaces] [decimal digits]. + + The valid decimal digit character is in the range [0-9]. The + function will ignore the pad space, which includes spaces or + tab characters, before [decimal digits]. The running zero in the + beginning of [decimal digits] will be ignored. Then, the function + stops at the first character that is a not a valid decimal character + or a Null-terminator, whichever one comes first. + + If String is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + If String has only pad spaces, then 0 is returned. + If String has no pad spaces or valid decimal digits, + then 0 is returned. + If the number represented by String overflows according + to the range defined by UINT64, then MAX_UINT64 is returned. + + If PcdMaximumUnicodeStringLength is not zero, and String contains + more than PcdMaximumUnicodeStringLength Unicode characters, not including + the Null-terminator, then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + + @retval Value translated from String. + +**/ +UINT64 +EFIAPI +StrDecimalToUint64 ( + IN CONST CHAR16 *String + ) +{ + UINT64 Result; + + StrDecimalToUint64S (String, (CHAR16 **) NULL, &Result); + return Result; +} + +/** + Convert a Null-terminated Unicode hexadecimal string to a value of type UINTN. + + This function returns a value of type UINTN by interpreting the contents + of the Unicode string specified by String as a hexadecimal number. + The format of the input Unicode string String is: + + [spaces][zeros][x][hexadecimal digits]. + + The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F]. + The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. + If "x" appears in the input string, it must be prefixed with at least one 0. + The function will ignore the pad space, which includes spaces or tab characters, + before [zeros], [x] or [hexadecimal digit]. The running zero before [x] or + [hexadecimal digit] will be ignored. Then, the decoding starts after [x] or the + first valid hexadecimal digit. Then, the function stops at the first character that is + a not a valid hexadecimal character or NULL, whichever one comes first. + + If String is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + If String has only pad spaces, then zero is returned. + If String has no leading pad spaces, leading zeros or valid hexadecimal digits, + then zero is returned. + If the number represented by String overflows according to the range defined by + UINTN, then MAX_UINTN is returned. + + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator, + then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + + @retval Value translated from String. + +**/ +UINTN +EFIAPI +StrHexToUintn ( + IN CONST CHAR16 *String + ) +{ + UINTN Result; + + StrHexToUintnS (String, (CHAR16 **) NULL, &Result); + return Result; +} + + +/** + Convert a Null-terminated Unicode hexadecimal string to a value of type UINT64. + + This function returns a value of type UINT64 by interpreting the contents + of the Unicode string specified by String as a hexadecimal number. + The format of the input Unicode string String is + + [spaces][zeros][x][hexadecimal digits]. + + The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F]. + The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. + If "x" appears in the input string, it must be prefixed with at least one 0. + The function will ignore the pad space, which includes spaces or tab characters, + before [zeros], [x] or [hexadecimal digit]. The running zero before [x] or + [hexadecimal digit] will be ignored. Then, the decoding starts after [x] or the + first valid hexadecimal digit. Then, the function stops at the first character that is + a not a valid hexadecimal character or NULL, whichever one comes first. + + If String is NULL, then ASSERT(). + If String is not aligned in a 16-bit boundary, then ASSERT(). + If String has only pad spaces, then zero is returned. + If String has no leading pad spaces, leading zeros or valid hexadecimal digits, + then zero is returned. + If the number represented by String overflows according to the range defined by + UINT64, then MAX_UINT64 is returned. + + If PcdMaximumUnicodeStringLength is not zero, and String contains more than + PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator, + then ASSERT(). + + @param String A pointer to a Null-terminated Unicode string. + + @retval Value translated from String. + +**/ +UINT64 +EFIAPI +StrHexToUint64 ( + IN CONST CHAR16 *String + ) +{ + UINT64 Result; + + StrHexToUint64S (String, (CHAR16 **) NULL, &Result); + return Result; +} + +/** + Check if a ASCII character is a decimal character. + + This internal function checks if a Unicode character is a + decimal character. The valid decimal character is from + '0' to '9'. + + @param Char The character to check against. + + @retval TRUE If the Char is a decmial character. + @retval FALSE If the Char is not a decmial character. + +**/ +BOOLEAN +EFIAPI +InternalAsciiIsDecimalDigitCharacter ( + IN CHAR8 Char + ) +{ + return (BOOLEAN) (Char >= '0' && Char <= '9'); +} + +/** + Check if a ASCII character is a hexadecimal character. + + This internal function checks if a ASCII character is a + decimal character. The valid hexadecimal character is + L'0' to L'9', L'a' to L'f', or L'A' to L'F'. + + + @param Char The character to check against. + + @retval TRUE If the Char is a hexadecmial character. + @retval FALSE If the Char is not a hexadecmial character. + +**/ +BOOLEAN +EFIAPI +InternalAsciiIsHexaDecimalDigitCharacter ( + IN CHAR8 Char + ) +{ + + return (BOOLEAN) (InternalAsciiIsDecimalDigitCharacter (Char) || + (Char >= 'A' && Char <= 'F') || + (Char >= 'a' && Char <= 'f')); +} + +/** + Returns the length of a Null-terminated ASCII string. + + This function returns the number of ASCII characters in the Null-terminated + ASCII string specified by String. + + If Length > 0 and Destination is NULL, then ASSERT(). + If Length > 0 and Source is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero and String contains more than + PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator, + then ASSERT(). + + @param String A pointer to a Null-terminated ASCII string. + + @return The length of String. + +**/ +UINTN +EFIAPI +AsciiStrLen ( + IN CONST CHAR8 *String + ) +{ + UINTN Length; + + ASSERT (String != NULL); + + for (Length = 0; *String != '\0'; String++, Length++) { + // + // If PcdMaximumUnicodeStringLength is not zero, + // length should not more than PcdMaximumUnicodeStringLength + // + } + return Length; +} + +/** + Returns the size of a Null-terminated ASCII string in bytes, including the + Null terminator. + + This function returns the size, in bytes, of the Null-terminated ASCII string + specified by String. + + If String is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero and String contains more than + PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator, + then ASSERT(). + + @param String A pointer to a Null-terminated ASCII string. + + @return The size of String. + +**/ +UINTN +EFIAPI +AsciiStrSize ( + IN CONST CHAR8 *String + ) +{ + return (AsciiStrLen (String) + 1) * sizeof (*String); +} + +/** + Compares two Null-terminated ASCII strings, and returns the difference + between the first mismatched ASCII characters. + + This function compares the Null-terminated ASCII string FirstString to the + Null-terminated ASCII string SecondString. If FirstString is identical to + SecondString, then 0 is returned. Otherwise, the value returned is the first + mismatched ASCII character in SecondString subtracted from the first + mismatched ASCII character in FirstString. + + If FirstString is NULL, then ASSERT(). + If SecondString is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero and FirstString contains more than + PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator, + then ASSERT(). + If PcdMaximumAsciiStringLength is not zero and SecondString contains more + than PcdMaximumAsciiStringLength ASCII characters, not including the + Null-terminator, then ASSERT(). + + @param FirstString A pointer to a Null-terminated ASCII string. + @param SecondString A pointer to a Null-terminated ASCII string. + + @retval ==0 FirstString is identical to SecondString. + @retval !=0 FirstString is not identical to SecondString. + +**/ +INTN +EFIAPI +AsciiStrCmp ( + IN CONST CHAR8 *FirstString, + IN CONST CHAR8 *SecondString + ) +{ + // + // ASSERT both strings are less long than PcdMaximumAsciiStringLength + // + ASSERT (AsciiStrSize (FirstString)); + ASSERT (AsciiStrSize (SecondString)); + + while ((*FirstString != '\0') && (*FirstString == *SecondString)) { + FirstString++; + SecondString++; + } + + return *FirstString - *SecondString; +} + +/** + Converts a lowercase Ascii character to upper one. + + If Chr is lowercase Ascii character, then converts it to upper one. + + If Value >= 0xA0, then ASSERT(). + If (Value & 0x0F) >= 0x0A, then ASSERT(). + + @param Chr one Ascii character + + @return The uppercase value of Ascii character + +**/ +CHAR8 +EFIAPI +InternalBaseLibAsciiToUpper ( + IN CHAR8 Chr + ) +{ + return (UINT8) ((Chr >= 'a' && Chr <= 'z') ? Chr - ('a' - 'A') : Chr); +} + +/** + Convert a ASCII character to numerical value. + + This internal function only deal with Unicode character + which maps to a valid hexadecimal ASII character, i.e. + '0' to '9', 'a' to 'f' or 'A' to 'F'. For other + ASCII character, the value returned does not make sense. + + @param Char The character to convert. + + @return The numerical value converted. + +**/ +UINTN +EFIAPI +InternalAsciiHexCharToUintn ( + IN CHAR8 Char + ) +{ + if (InternalIsDecimalDigitCharacter (Char)) { + return Char - '0'; + } + + return (10 + InternalBaseLibAsciiToUpper (Char) - 'A'); +} + + +/** + Performs a case insensitive comparison of two Null-terminated ASCII strings, + and returns the difference between the first mismatched ASCII characters. + + This function performs a case insensitive comparison of the Null-terminated + ASCII string FirstString to the Null-terminated ASCII string SecondString. If + FirstString is identical to SecondString, then 0 is returned. Otherwise, the + value returned is the first mismatched lower case ASCII character in + SecondString subtracted from the first mismatched lower case ASCII character + in FirstString. + + If FirstString is NULL, then ASSERT(). + If SecondString is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero and FirstString contains more than + PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator, + then ASSERT(). + If PcdMaximumAsciiStringLength is not zero and SecondString contains more + than PcdMaximumAsciiStringLength ASCII characters, not including the + Null-terminator, then ASSERT(). + + @param FirstString A pointer to a Null-terminated ASCII string. + @param SecondString A pointer to a Null-terminated ASCII string. + + @retval ==0 FirstString is identical to SecondString using case insensitive + comparisons. + @retval !=0 FirstString is not identical to SecondString using case + insensitive comparisons. + +**/ +INTN +EFIAPI +AsciiStriCmp ( + IN CONST CHAR8 *FirstString, + IN CONST CHAR8 *SecondString + ) +{ + CHAR8 UpperFirstString; + CHAR8 UpperSecondString; + + // + // ASSERT both strings are less long than PcdMaximumAsciiStringLength + // + ASSERT (AsciiStrSize (FirstString)); + ASSERT (AsciiStrSize (SecondString)); + + UpperFirstString = InternalBaseLibAsciiToUpper (*FirstString); + UpperSecondString = InternalBaseLibAsciiToUpper (*SecondString); + while ((*FirstString != '\0') && (*SecondString != '\0') && (UpperFirstString == UpperSecondString)) { + FirstString++; + SecondString++; + UpperFirstString = InternalBaseLibAsciiToUpper (*FirstString); + UpperSecondString = InternalBaseLibAsciiToUpper (*SecondString); + } + + return UpperFirstString - UpperSecondString; +} + +/** + Compares two Null-terminated ASCII strings with maximum lengths, and returns + the difference between the first mismatched ASCII characters. + + This function compares the Null-terminated ASCII string FirstString to the + Null-terminated ASCII string SecondString. At most, Length ASCII characters + will be compared. If Length is 0, then 0 is returned. If FirstString is + identical to SecondString, then 0 is returned. Otherwise, the value returned + is the first mismatched ASCII character in SecondString subtracted from the + first mismatched ASCII character in FirstString. + + If Length > 0 and FirstString is NULL, then ASSERT(). + If Length > 0 and SecondString is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and Length is greater than + PcdMaximumAsciiStringLength, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and FirstString contains more than + PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator, + then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and SecondString contains more than + PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator, + then ASSERT(). + + @param FirstString A pointer to a Null-terminated ASCII string. + @param SecondString A pointer to a Null-terminated ASCII string. + @param Length The maximum number of ASCII characters for compare. + + @retval ==0 FirstString is identical to SecondString. + @retval !=0 FirstString is not identical to SecondString. + +**/ +INTN +EFIAPI +AsciiStrnCmp ( + IN CONST CHAR8 *FirstString, + IN CONST CHAR8 *SecondString, + IN UINTN Length + ) +{ + if (Length == 0) { + return 0; + } + + // + // ASSERT both strings are less long than PcdMaximumAsciiStringLength + // + ASSERT (AsciiStrSize (FirstString)); + ASSERT (AsciiStrSize (SecondString)); + + while ((*FirstString != '\0') && + (*SecondString != '\0') && + (*FirstString == *SecondString) && + (Length > 1)) { + FirstString++; + SecondString++; + Length--; + } + return *FirstString - *SecondString; +} + +/** + Returns the first occurrence of a Null-terminated ASCII sub-string + in a Null-terminated ASCII string. + + This function scans the contents of the ASCII string specified by String + and returns the first occurrence of SearchString. If SearchString is not + found in String, then NULL is returned. If the length of SearchString is zero, + then String is returned. + + If String is NULL, then ASSERT(). + If SearchString is NULL, then ASSERT(). + + If PcdMaximumAsciiStringLength is not zero, and SearchString or + String contains more than PcdMaximumAsciiStringLength Unicode characters + not including the Null-terminator, then ASSERT(). + + @param String A pointer to a Null-terminated ASCII string. + @param SearchString A pointer to a Null-terminated ASCII string to search for. + + @retval NULL If the SearchString does not appear in String. + @retval others If there is a match return the first occurrence of SearchingString. + If the length of SearchString is zero,return String. + +**/ +CHAR8 * +EFIAPI +AsciiStrStr ( + IN CONST CHAR8 *String, + IN CONST CHAR8 *SearchString + ) +{ + CONST CHAR8 *FirstMatch; + CONST CHAR8 *SearchStringTmp; + + // + // ASSERT both strings are less long than PcdMaximumAsciiStringLength + // + ASSERT (AsciiStrSize (String) != 0); + ASSERT (AsciiStrSize (SearchString) != 0); + + if (*SearchString == '\0') { + return (CHAR8 *) String; + } + + while (*String != '\0') { + SearchStringTmp = SearchString; + FirstMatch = String; + + while ((*String == *SearchStringTmp) + && (*String != '\0')) { + String++; + SearchStringTmp++; + } + + if (*SearchStringTmp == '\0') { + return (CHAR8 *) FirstMatch; + } + + if (*String == '\0') { + return NULL; + } + + String = FirstMatch + 1; + } + + return NULL; +} + +/** + Convert a Null-terminated ASCII decimal string to a value of type + UINTN. + + This function returns a value of type UINTN by interpreting the contents + of the ASCII string String as a decimal number. The format of the input + ASCII string String is: + + [spaces] [decimal digits]. + + The valid decimal digit character is in the range [0-9]. The function will + ignore the pad space, which includes spaces or tab characters, before the digits. + The running zero in the beginning of [decimal digits] will be ignored. Then, the + function stops at the first character that is a not a valid decimal character or + Null-terminator, whichever on comes first. + + If String has only pad spaces, then 0 is returned. + If String has no pad spaces or valid decimal digits, then 0 is returned. + If the number represented by String overflows according to the range defined by + UINTN, then MAX_UINTN is returned. + If String is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and String contains more than + PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator, + then ASSERT(). + + @param String A pointer to a Null-terminated ASCII string. + + @retval Value translated from String. + +**/ +UINTN +EFIAPI +AsciiStrDecimalToUintn ( + IN CONST CHAR8 *String + ) +{ + UINTN Result; + + AsciiStrDecimalToUintnS (String, (CHAR8 **) NULL, &Result); + return Result; +} + + +/** + Convert a Null-terminated ASCII decimal string to a value of type + UINT64. + + This function returns a value of type UINT64 by interpreting the contents + of the ASCII string String as a decimal number. The format of the input + ASCII string String is: + + [spaces] [decimal digits]. + + The valid decimal digit character is in the range [0-9]. The function will + ignore the pad space, which includes spaces or tab characters, before the digits. + The running zero in the beginning of [decimal digits] will be ignored. Then, the + function stops at the first character that is a not a valid decimal character or + Null-terminator, whichever on comes first. + + If String has only pad spaces, then 0 is returned. + If String has no pad spaces or valid decimal digits, then 0 is returned. + If the number represented by String overflows according to the range defined by + UINT64, then MAX_UINT64 is returned. + If String is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, and String contains more than + PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator, + then ASSERT(). + + @param String A pointer to a Null-terminated ASCII string. + + @retval Value translated from String. + +**/ +UINT64 +EFIAPI +AsciiStrDecimalToUint64 ( + IN CONST CHAR8 *String + ) +{ + UINT64 Result; + + AsciiStrDecimalToUint64S (String, (CHAR8 **) NULL, &Result); + return Result; +} + +/** + Convert a Null-terminated ASCII hexadecimal string to a value of type UINTN. + + This function returns a value of type UINTN by interpreting the contents of + the ASCII string String as a hexadecimal number. The format of the input ASCII + string String is: + + [spaces][zeros][x][hexadecimal digits]. + + The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F]. + The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. If "x" + appears in the input string, it must be prefixed with at least one 0. The function + will ignore the pad space, which includes spaces or tab characters, before [zeros], + [x] or [hexadecimal digits]. The running zero before [x] or [hexadecimal digits] + will be ignored. Then, the decoding starts after [x] or the first valid hexadecimal + digit. Then, the function stops at the first character that is a not a valid + hexadecimal character or Null-terminator, whichever on comes first. + + If String has only pad spaces, then 0 is returned. + If String has no leading pad spaces, leading zeros or valid hexadecimal digits, then + 0 is returned. + + If the number represented by String overflows according to the range defined by UINTN, + then MAX_UINTN is returned. + If String is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, + and String contains more than PcdMaximumAsciiStringLength ASCII characters not including + the Null-terminator, then ASSERT(). + + @param String A pointer to a Null-terminated ASCII string. + + @retval Value translated from String. + +**/ +UINTN +EFIAPI +AsciiStrHexToUintn ( + IN CONST CHAR8 *String + ) +{ + UINTN Result; + + AsciiStrHexToUintnS (String, (CHAR8 **) NULL, &Result); + return Result; +} + + +/** + Convert a Null-terminated ASCII hexadecimal string to a value of type UINT64. + + This function returns a value of type UINT64 by interpreting the contents of + the ASCII string String as a hexadecimal number. The format of the input ASCII + string String is: + + [spaces][zeros][x][hexadecimal digits]. + + The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F]. + The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. If "x" + appears in the input string, it must be prefixed with at least one 0. The function + will ignore the pad space, which includes spaces or tab characters, before [zeros], + [x] or [hexadecimal digits]. The running zero before [x] or [hexadecimal digits] + will be ignored. Then, the decoding starts after [x] or the first valid hexadecimal + digit. Then, the function stops at the first character that is a not a valid + hexadecimal character or Null-terminator, whichever on comes first. + + If String has only pad spaces, then 0 is returned. + If String has no leading pad spaces, leading zeros or valid hexadecimal digits, then + 0 is returned. + + If the number represented by String overflows according to the range defined by UINT64, + then MAX_UINT64 is returned. + If String is NULL, then ASSERT(). + If PcdMaximumAsciiStringLength is not zero, + and String contains more than PcdMaximumAsciiStringLength ASCII characters not including + the Null-terminator, then ASSERT(). + + @param String A pointer to a Null-terminated ASCII string. + + @retval Value translated from String. + +**/ +UINT64 +EFIAPI +AsciiStrHexToUint64 ( + IN CONST CHAR8 *String + ) +{ + UINT64 Result; + + AsciiStrHexToUint64S (String, (CHAR8 **) NULL, &Result); + return Result; +} + +/** + Converts an 8-bit value to an 8-bit BCD value. + + Converts the 8-bit value specified by Value to BCD. The BCD value is + returned. + + If Value >= 100, then ASSERT(). + + @param Value The 8-bit value to convert to BCD. Range 0..99. + + @return The BCD value. + +**/ +UINT8 +EFIAPI +DecimalToBcd8 ( + IN UINT8 Value + ) +{ + ASSERT (Value < 100); + return (UINT8) (((Value / 10) << 4) | (Value % 10)); +} + +/** + Converts an 8-bit BCD value to an 8-bit value. + + Converts the 8-bit BCD value specified by Value to an 8-bit value. The 8-bit + value is returned. + + If Value >= 0xA0, then ASSERT(). + If (Value & 0x0F) >= 0x0A, then ASSERT(). + + @param Value The 8-bit BCD value to convert to an 8-bit value. + + @return The 8-bit value is returned. + +**/ +UINT8 +EFIAPI +BcdToDecimal8 ( + IN UINT8 Value + ) +{ + ASSERT (Value < 0xa0); + ASSERT ((Value & 0xf) < 0xa); + return (UINT8) ((Value >> 4) * 10 + (Value & 0xf)); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes16.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes16.c new file mode 100644 index 0000000..c044447 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes16.c @@ -0,0 +1,31 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Switches the endianess of a 16-bit integer. + + This function swaps the bytes in a 16-bit unsigned value to switch the value + from little endian to big endian or vice versa. The byte swapped value is + returned. + + @param Value A 16-bit unsigned value. + + @return The byte swapped Value. + +**/ +UINT16 +EFIAPI +SwapBytes16 ( + IN UINT16 Value + ) +{ + return (UINT16) ((Value<< 8) | (Value>> 8)); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes32.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes32.c new file mode 100644 index 0000000..5e2d0ed --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes32.c @@ -0,0 +1,37 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Switches the endianess of a 32-bit integer. + + This function swaps the bytes in a 32-bit unsigned value to switch the value + from little endian to big endian or vice versa. The byte swapped value is + returned. + + @param Value A 32-bit unsigned value. + + @return The byte swapped Value. + +**/ +UINT32 +EFIAPI +SwapBytes32 ( + IN UINT32 Value + ) +{ + UINT32 LowerBytes; + UINT32 HigherBytes; + + LowerBytes = (UINT32) SwapBytes16 ((UINT16) Value); + HigherBytes = (UINT32) SwapBytes16 ((UINT16) (Value >> 16)); + + return (LowerBytes << 16 | HigherBytes); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes64.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes64.c new file mode 100644 index 0000000..f565801 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwapBytes64.c @@ -0,0 +1,37 @@ +/** @file + Math worker functions. + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +UINT64 +EFIAPI +InternalMathSwapBytes64 ( + IN UINT64 Operand + ); + +/** + Switches the endianess of a 64-bit integer. + + This function swaps the bytes in a 64-bit unsigned value to switch the value + from little endian to big endian or vice versa. The byte swapped value is + returned. + + @param Value A 64-bit unsigned value. + + @return The byte swapped Value. + +**/ +UINT64 +EFIAPI +SwapBytes64 ( + IN UINT64 Value + ) +{ + return InternalMathSwapBytes64 (Value); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwitchStackNull.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwitchStackNull.c new file mode 100644 index 0000000..b011c14 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/SwitchStackNull.c @@ -0,0 +1,52 @@ +/** @file + Switch Stack functions. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Transfers control to a function starting with a new stack. + + Transfers control to the function specified by EntryPoint using the + new stack specified by NewStack and passing in the parameters specified + by Context1 and Context2. Context1 and Context2 are optional and may + be NULL. The function EntryPoint must never return. This function + supports a variable number of arguments following the NewStack parameter. + These additional arguments are ignored on IA-32, x64, and EBC. + IPF CPUs expect one additional parameter of type VOID * that specifies + the new backing store pointer. + + If EntryPoint is NULL, then ASSERT(). + If NewStack is NULL, then ASSERT(). + + @param EntryPoint A pointer to function to call with the new stack. + @param Context1 A pointer to the context to pass into the EntryPoint + function. + @param Context2 A pointer to the context to pass into the EntryPoint + function. + @param NewStack A pointer to the new stack to use for the EntryPoint + function. + @param ... This variable argument list is ignored for IA32, x64, and EBC. + For IPF, this variable argument list is expected to contain + a single parameter of type VOID * that specifies the new backing + store pointer. + + +**/ +VOID +EFIAPI +SwitchStack ( + IN SWITCH_STACK_ENTRY_POINT EntryPoint, + IN VOID *Context1, OPTIONAL + IN VOID *Context2, OPTIONAL + IN VOID *NewStack, + ... + ) +{ + ASSERT (FALSE); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/Unaligned.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Unaligned.c new file mode 100644 index 0000000..fda732b --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/Unaligned.c @@ -0,0 +1,216 @@ +/** @file + Unaligned access functions of BaseLib. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Reads a 16-bit value from memory that may be unaligned. + + This function returns the 16-bit value pointed to by Buffer. The function + guarantees that the read operation does not produce an alignment fault. + + If the Buffer is NULL, then ASSERT(). + + @param Buffer A pointer to a 16-bit value that may be unaligned. + + @return The 16-bit value read from Buffer. + +**/ +UINT16 +EFIAPI +ReadUnaligned16 ( + IN CONST UINT16 *Buffer + ) +{ + ASSERT (Buffer != NULL); + + return *Buffer; +} + +/** + Writes a 16-bit value to memory that may be unaligned. + + This function writes the 16-bit value specified by Value to Buffer. Value is + returned. The function guarantees that the write operation does not produce + an alignment fault. + + If the Buffer is NULL, then ASSERT(). + + @param Buffer A pointer to a 16-bit value that may be unaligned. + @param Value 16-bit value to write to Buffer. + + @return The 16-bit value to write to Buffer. + +**/ +UINT16 +EFIAPI +WriteUnaligned16 ( + OUT UINT16 *Buffer, + IN UINT16 Value + ) +{ + ASSERT (Buffer != NULL); + + return *Buffer = Value; +} + +/** + Reads a 24-bit value from memory that may be unaligned. + + This function returns the 24-bit value pointed to by Buffer. The function + guarantees that the read operation does not produce an alignment fault. + + If the Buffer is NULL, then ASSERT(). + + @param Buffer A pointer to a 24-bit value that may be unaligned. + + @return The 24-bit value read from Buffer. + +**/ +UINT32 +EFIAPI +ReadUnaligned24 ( + IN CONST UINT32 *Buffer + ) +{ + ASSERT (Buffer != NULL); + + return *Buffer & 0xffffff; +} + +/** + Writes a 24-bit value to memory that may be unaligned. + + This function writes the 24-bit value specified by Value to Buffer. Value is + returned. The function guarantees that the write operation does not produce + an alignment fault. + + If the Buffer is NULL, then ASSERT(). + + @param Buffer A pointer to a 24-bit value that may be unaligned. + @param Value 24-bit value to write to Buffer. + + @return The 24-bit value to write to Buffer. + +**/ +UINT32 +EFIAPI +WriteUnaligned24 ( + OUT UINT32 *Buffer, + IN UINT32 Value + ) +{ + ASSERT (Buffer != NULL); + + *Buffer = BitFieldWrite32 (*Buffer, 0, 23, Value); + return Value; +} + +/** + Reads a 32-bit value from memory that may be unaligned. + + This function returns the 32-bit value pointed to by Buffer. The function + guarantees that the read operation does not produce an alignment fault. + + If the Buffer is NULL, then ASSERT(). + + @param Buffer A pointer to a 32-bit value that may be unaligned. + + @return The 32-bit value read from Buffer. + +**/ +UINT32 +EFIAPI +ReadUnaligned32 ( + IN CONST UINT32 *Buffer + ) +{ + ASSERT (Buffer != NULL); + + return *Buffer; +} + +/** + Writes a 32-bit value to memory that may be unaligned. + + This function writes the 32-bit value specified by Value to Buffer. Value is + returned. The function guarantees that the write operation does not produce + an alignment fault. + + If the Buffer is NULL, then ASSERT(). + + @param Buffer A pointer to a 32-bit value that may be unaligned. + @param Value The 32-bit value to write to Buffer. + + @return The 32-bit value to write to Buffer. + +**/ +UINT32 +EFIAPI +WriteUnaligned32 ( + OUT UINT32 *Buffer, + IN UINT32 Value + ) +{ + ASSERT (Buffer != NULL); + + return *Buffer = Value; +} + +/** + Reads a 64-bit value from memory that may be unaligned. + + This function returns the 64-bit value pointed to by Buffer. The function + guarantees that the read operation does not produce an alignment fault. + + If the Buffer is NULL, then ASSERT(). + + @param Buffer A pointer to a 64-bit value that may be unaligned. + + @return The 64-bit value read from Buffer. + +**/ +UINT64 +EFIAPI +ReadUnaligned64 ( + IN CONST UINT64 *Buffer + ) +{ + ASSERT (Buffer != NULL); + + return *Buffer; +} + +/** + Writes a 64-bit value to memory that may be unaligned. + + This function writes the 64-bit value specified by Value to Buffer. Value is + returned. The function guarantees that the write operation does not produce + an alignment fault. + + If the Buffer is NULL, then ASSERT(). + + @param Buffer A pointer to a 64-bit value that may be unaligned. + @param Value The 64-bit value to write to Buffer. + + @return The 64-bit value to write to Buffer. + +**/ +UINT64 +EFIAPI +WriteUnaligned64 ( + OUT UINT64 *Buffer, + IN UINT64 Value + ) +{ + ASSERT (Buffer != NULL); + + return *Buffer = Value; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X64/RdRand.nasm b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X64/RdRand.nasm new file mode 100644 index 0000000..7e7fe99 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X64/RdRand.nasm @@ -0,0 +1,77 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
    +; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; RdRand.nasm +; +; Abstract: +; +; Generates random number through CPU RdRand instruction under 64-bit platform. +; +; Notes: +; +;------------------------------------------------------------------------------ + + DEFAULT REL + SECTION .text + +;------------------------------------------------------------------------------ +; Generates a 16 bit random number through RDRAND instruction. +; Return TRUE if Rand generated successfully, or FALSE if not. +; +; BOOLEAN EFIAPI InternalX86RdRand16 (UINT16 *Rand); +;------------------------------------------------------------------------------ +global ASM_PFX(InternalX86RdRand16) +ASM_PFX(InternalX86RdRand16): + ; rdrand ax ; generate a 16 bit RN into eax, + ; CF=1 if RN generated ok, otherwise CF=0 + db 0xf, 0xc7, 0xf0 ; rdrand r16: "0f c7 /6 ModRM:r/m(w)" + jc rn16_ok ; jmp if CF=1 + xor rax, rax ; reg=0 if CF=0 + ret ; return with failure status +rn16_ok: + mov [rcx], ax + mov rax, 1 + ret + +;------------------------------------------------------------------------------ +; Generates a 32 bit random number through RDRAND instruction. +; Return TRUE if Rand generated successfully, or FALSE if not. +; +; BOOLEAN EFIAPI InternalX86RdRand32 (UINT32 *Rand); +;------------------------------------------------------------------------------ +global ASM_PFX(InternalX86RdRand32) +ASM_PFX(InternalX86RdRand32): + ; rdrand eax ; generate a 32 bit RN into eax, + ; CF=1 if RN generated ok, otherwise CF=0 + db 0xf, 0xc7, 0xf0 ; rdrand r32: "0f c7 /6 ModRM:r/m(w)" + jc rn32_ok ; jmp if CF=1 + xor rax, rax ; reg=0 if CF=0 + ret ; return with failure status +rn32_ok: + mov [rcx], eax + mov rax, 1 + ret + +;------------------------------------------------------------------------------ +; Generates a 64 bit random number through one RDRAND instruction. +; Return TRUE if Rand generated successfully, or FALSE if not. +; +; BOOLEAN EFIAPI InternalX86RdRand64 (UINT64 *Random); +;------------------------------------------------------------------------------ +global ASM_PFX(InternalX86RdRand64) +ASM_PFX(InternalX86RdRand64): + ; rdrand rax ; generate a 64 bit RN into rax, + ; CF=1 if RN generated ok, otherwise CF=0 + db 0x48, 0xf, 0xc7, 0xf0 ; rdrand r64: "REX.W + 0f c7 /6 ModRM:r/m(w)" + jc rn64_ok ; jmp if CF=1 + xor rax, rax ; reg=0 if CF=0 + ret ; return with failure status +rn64_ok: + mov [rcx], rax + mov rax, 1 + ret + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X64/ReadTsc.nasm b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X64/ReadTsc.nasm new file mode 100644 index 0000000..45672d6 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X64/ReadTsc.nasm @@ -0,0 +1,34 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
    +; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; ReadTsc.Asm +; +; Abstract: +; +; AsmReadTsc function +; +; Notes: +; +;------------------------------------------------------------------------------ + + DEFAULT REL + SECTION .text + +;------------------------------------------------------------------------------ +; UINT64 +; EFIAPI +; AsmReadTsc ( +; VOID +; ); +;------------------------------------------------------------------------------ +global ASM_PFX(AsmReadTsc) +ASM_PFX(AsmReadTsc): + rdtsc + shl rdx, 0x20 + or rax, rdx + ret + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86Cr.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86Cr.c new file mode 100644 index 0000000..ab16ca6 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86Cr.c @@ -0,0 +1,180 @@ +/** @file + Base Library CPU Functions for all architectures. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +UINTN gCr0; +UINTN gCr2; +UINTN gCr3; +UINTN gCr4; + +/** + Reads the current value of the Control Register 0 (CR0). + + Reads and returns the current value of CR0. This function is only available + on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on + x64. + + @return The value of the Control Register 0 (CR0). + +**/ +UINTN +EFIAPI +AsmReadCr0 ( + VOID + ) +{ + return gCr0; +} + + +/** + Reads the current value of the Control Register 2 (CR2). + + Reads and returns the current value of CR2. This function is only available + on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on + x64. + + @return The value of the Control Register 2 (CR2). + +**/ +UINTN +EFIAPI +AsmReadCr2 ( + VOID + ) +{ + return gCr2; +} + + +/** + Reads the current value of the Control Register 3 (CR3). + + Reads and returns the current value of CR3. This function is only available + on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on + x64. + + @return The value of the Control Register 3 (CR3). + +**/ +UINTN +EFIAPI +AsmReadCr3 ( + VOID + ) +{ + return gCr3; +} + + +/** + Reads the current value of the Control Register 4 (CR4). + + Reads and returns the current value of CR4. This function is only available + on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on + x64. + + @return The value of the Control Register 4 (CR4). + +**/ +UINTN +EFIAPI +AsmReadCr4 ( + VOID + ) +{ + return gCr4; +} + + +/** + Writes a value to Control Register 0 (CR0). + + Writes and returns a new value to CR0. This function is only available on + IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64. + + @param Cr0 The value to write to CR0. + + @return The value written to CR0. + +**/ +UINTN +EFIAPI +AsmWriteCr0 ( + UINTN Cr0 + ) +{ + gCr0 = Cr0; + return Cr0; +} + +/** + Writes a value to Control Register 2 (CR2). + + Writes and returns a new value to CR2. This function is only available on + IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64. + + @param Cr2 The value to write to CR2. + + @return The value written to CR2. + +**/ +UINTN +EFIAPI +AsmWriteCr2 ( + UINTN Cr2 + ) +{ + gCr2 = Cr2; + return Cr2; +} + + +/** + Writes a value to Control Register 3 (CR3). + + Writes and returns a new value to CR3. This function is only available on + IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64. + + @param Cr3 The value to write to CR3. + + @return The value written to CR3. + +**/ +UINTN +EFIAPI +AsmWriteCr3 ( + UINTN Cr3 + ) +{ + gCr3 = Cr3; + return Cr3; +} + + +/** + Writes a value to Control Register 4 (CR4). + + Writes and returns a new value to CR4. This function is only available on + IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64. + + @param Cr4 The value to write to CR4. + + @return The value written to CR4. + +**/ +UINTN +EFIAPI +AsmWriteCr4 ( + UINTN Cr4 + ) +{ + gCr4 = Cr4; + return Cr4; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86DisablePaging64Null.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86DisablePaging64Null.c new file mode 100644 index 0000000..255264f --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86DisablePaging64Null.c @@ -0,0 +1,53 @@ +/** @file + IA-32/x64 AsmDisablePaging64() + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Disables the 64-bit paging mode on the CPU. + + Disables the 64-bit paging mode on the CPU and returns to 32-bit protected + mode. This function assumes the current execution mode is 64-paging mode. + This function is only available on x64. After the 64-bit paging mode is + disabled, control is transferred to the function specified by EntryPoint + using the new stack specified by NewStack and passing in the parameters + specified by Context1 and Context2. Context1 and Context2 are optional and + may be 0. The function EntryPoint must never return. + + If the current execution mode is not 64-bit paged mode, then ASSERT(). + If EntryPoint is 0, then ASSERT(). + If NewStack is 0, then ASSERT(). + + @param Cs The 16-bit selector to load in the CS before EntryPoint + is called. The descriptor in the GDT that this selector + references must be setup for 32-bit protected mode. + @param EntryPoint The 64-bit virtual address of the function to call with + the new stack after paging is disabled. + @param Context1 The 64-bit virtual address of the context to pass into + the EntryPoint function as the first parameter after + paging is disabled. + @param Context2 The 64-bit virtual address of the context to pass into + the EntryPoint function as the second parameter after + paging is disabled. + @param NewStack The 64-bit virtual address of the new stack to use for + the EntryPoint function after paging is disabled. + +**/ +VOID +EFIAPI +AsmDisablePaging64 ( + IN UINT16 Cs, + IN UINT32 EntryPoint, + IN UINT32 Context1, OPTIONAL + IN UINT32 Context2, OPTIONAL + IN UINT32 NewStack + ) +{ + ASSERT (FALSE); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86Dr.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86Dr.c new file mode 100644 index 0000000..057ec97 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86Dr.c @@ -0,0 +1,170 @@ +/** @file + Base Library CPU Functions for all architectures. + + Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +UINTN gDr0; +UINTN gDr1; +UINTN gDr2; +UINTN gDr3; +UINTN gDr4; +UINTN gDr5; +UINTN gDr6; +UINTN gDr7; + +UINTN +EFIAPI +AsmReadDr0 ( + VOID + ) +{ + return gDr0; +} + +UINTN +EFIAPI +AsmReadDr1 ( + VOID + ) +{ + return gDr1; +} + +UINTN +EFIAPI +AsmReadDr2 ( + VOID + ) +{ + return gDr2; +} + +UINTN +EFIAPI +AsmReadDr3 ( + VOID + ) +{ + return gDr3; +} + +UINTN +EFIAPI +AsmReadDr4 ( + VOID + ) +{ + return gDr4; +} + +UINTN +EFIAPI +AsmReadDr5 ( + VOID + ) +{ + return gDr5; +} + +UINTN +EFIAPI +AsmReadDr6 ( + VOID + ) +{ + return gDr6; +} + +UINTN +EFIAPI +AsmReadDr7 ( + VOID + ) +{ + return gDr7; +} + +UINTN +EFIAPI +AsmWriteDr0 ( + UINTN Dr0 + ) +{ + gDr0 = Dr0; + return Dr0; +} + +UINTN +EFIAPI +AsmWriteDr1 ( + UINTN Dr1 + ) +{ + gDr1 = Dr1; + return Dr1; +} + +UINTN +EFIAPI +AsmWriteDr2 ( + UINTN Dr2 + ) +{ + gDr2 = Dr2; + return Dr2; +} + +UINTN +EFIAPI +AsmWriteDr3 ( + UINTN Dr3 + ) +{ + gDr3 = Dr3; + return Dr3; +} + +UINTN +EFIAPI +AsmWriteDr4 ( + UINTN Dr4 + ) +{ + gDr4 = Dr4; + return Dr4; +} + +UINTN +EFIAPI +AsmWriteDr5 ( + UINTN Dr5 + ) +{ + gDr5 = Dr5; + return Dr5; +} + +UINTN +EFIAPI +AsmWriteDr6 ( + UINTN Dr6 + ) +{ + gDr6 = Dr6; + return Dr6; +} + +UINTN +EFIAPI +AsmWriteDr7 ( + UINTN Dr7 + ) +{ + gDr7 = Dr7; + return Dr7; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86GdtrNull.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86GdtrNull.c new file mode 100644 index 0000000..9a7a7da --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86GdtrNull.c @@ -0,0 +1,50 @@ +/** @file + IA-32/x64 AsmReadGdtr() + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Reads the current Global Descriptor Table Register(GDTR) descriptor. + + Reads and returns the current GDTR descriptor and returns it in Gdtr. This + function is only available on IA-32 and x64. + + If Gdtr is NULL, then ASSERT(). + + @param Gdtr The pointer to a GDTR descriptor. + +**/ +VOID +EFIAPI +AsmReadGdtr ( + OUT IA32_DESCRIPTOR *Gdtr + ) +{ + ASSERT (FALSE); +} + +/** + Writes the current Global Descriptor Table Register (GDTR) descriptor. + + Writes and the current GDTR descriptor specified by Gdtr. This function is + only available on IA-32 and x64. + + If Gdtr is NULL, then ASSERT(). + + @param Gdtr The pointer to a GDTR descriptor. + +**/ +VOID +EFIAPI +AsmWriteGdtr ( + IN CONST IA32_DESCRIPTOR *Gdtr + ) +{ + ASSERT (FALSE); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86IdtrNull.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86IdtrNull.c new file mode 100644 index 0000000..3fb1aa8 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86IdtrNull.c @@ -0,0 +1,50 @@ +/** @file + IA-32/x64 AsmReadIdtr() + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Reads the current Interrupt Descriptor Table Register(IDTR) descriptor. + + Reads and returns the current IDTR descriptor and returns it in Idtr. This + function is only available on IA-32 and x64. + + If Idtr is NULL, then ASSERT(). + + @param Idtr The pointer to a IDTR descriptor. + +**/ +VOID +EFIAPI +AsmReadIdtr ( + OUT IA32_DESCRIPTOR *Idtr + ) +{ + ASSERT (FALSE); +} + +/** + Writes the current Interrupt Descriptor Table Register(IDTR) descriptor. + + Writes the current IDTR descriptor and returns it in Idtr. This function is + only available on IA-32 and x64. + + If Idtr is NULL, then ASSERT(). + + @param Idtr The pointer to a IDTR descriptor. + +**/ +VOID +EFIAPI +AsmWriteIdtr ( + IN CONST IA32_DESCRIPTOR *Idtr + ) +{ + ASSERT (FALSE); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86MemoryFenceGcc.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86MemoryFenceGcc.c new file mode 100644 index 0000000..da85c1b --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86MemoryFenceGcc.c @@ -0,0 +1,29 @@ +/** @file + GCC inline implementation of BaseLib processor specific functions. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +/** + Used to serialize load and store operations. + + All loads and stores that proceed calls to this function are guaranteed to be + globally visible when this function returns. + +**/ +VOID +EFIAPI +MemoryFence ( + VOID + ) +{ + // This is a little bit of overkill and it is more about the compiler that it is + // actually processor synchronization. This is like the _ReadWriteBarrier + // Microsoft specific intrinsic + __asm__ __volatile__ ("":::"memory"); +} + diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86MemoryFenceMsvc.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86MemoryFenceMsvc.c new file mode 100644 index 0000000..5e61a4a --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86MemoryFenceMsvc.c @@ -0,0 +1,27 @@ +/** @file + IA-32/x64 MemoryFence(). + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +void _ReadWriteBarrier (void); +#pragma intrinsic(_ReadWriteBarrier) + +/** + Used to serialize load and store operations. + + All loads and stores that proceed calls to this function are guaranteed to be + globally visible when this function returns. + +**/ +VOID +EFIAPI +MemoryFence ( + VOID + ) +{ + _ReadWriteBarrier (); + return; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86PatchInstruction.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86PatchInstruction.c new file mode 100644 index 0000000..e833afb --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86PatchInstruction.c @@ -0,0 +1,84 @@ +/** @file + IA-32/x64 PatchInstructionX86() + + Copyright (C) 2018, Intel Corporation. All rights reserved.
    + Copyright (C) 2018, Red Hat, Inc. + + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include +#include + +/** + Patch the immediate operand of an IA32 or X64 instruction such that the byte, + word, dword or qword operand is encoded at the end of the instruction's + binary representation. + + This function should be used to update object code that was compiled with + NASM from assembly source code. Example: + + NASM source code: + + mov eax, strict dword 0 ; the imm32 zero operand will be patched + ASM_PFX(gPatchCr3): + mov cr3, eax + + C source code: + + X86_ASSEMBLY_PATCH_LABEL gPatchCr3; + PatchInstructionX86 (gPatchCr3, AsmReadCr3 (), 4); + + @param[out] InstructionEnd Pointer right past the instruction to patch. The + immediate operand to patch is expected to + comprise the trailing bytes of the instruction. + If InstructionEnd is closer to address 0 than + ValueSize permits, then ASSERT(). + + @param[in] PatchValue The constant to write to the immediate operand. + The caller is responsible for ensuring that + PatchValue can be represented in the byte, word, + dword or qword operand (as indicated through + ValueSize); otherwise ASSERT(). + + @param[in] ValueSize The size of the operand in bytes; must be 1, 2, + 4, or 8. ASSERT() otherwise. +**/ +VOID +EFIAPI +PatchInstructionX86 ( + OUT X86_ASSEMBLY_PATCH_LABEL *InstructionEnd, + IN UINT64 PatchValue, + IN UINTN ValueSize + ) +{ + // + // The equality ((UINTN)InstructionEnd == ValueSize) would assume a zero-size + // instruction at address 0; forbid it. + // + ASSERT ((UINTN)InstructionEnd > ValueSize); + + switch (ValueSize) { + case 1: + ASSERT (PatchValue <= MAX_UINT8); + *((UINT8 *)(UINTN)InstructionEnd - 1) = (UINT8)PatchValue; + break; + + case 2: + ASSERT (PatchValue <= MAX_UINT16); + WriteUnaligned16 ((UINT16 *)(UINTN)InstructionEnd - 1, (UINT16)PatchValue); + break; + + case 4: + ASSERT (PatchValue <= MAX_UINT32); + WriteUnaligned32 ((UINT32 *)(UINTN)InstructionEnd - 1, (UINT32)PatchValue); + break; + + case 8: + WriteUnaligned64 ((UINT64 *)(UINTN)InstructionEnd - 1, PatchValue); + break; + + default: + ASSERT (FALSE); + } +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86RdRand.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86RdRand.c new file mode 100644 index 0000000..5f5fa85 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86RdRand.c @@ -0,0 +1,121 @@ +/** @file + IA-32/x64 AsmRdRandxx() + Generates random number through CPU RdRand instruction. + + Copyright (c) 2016, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Generates a 16-bit random number through RDRAND instruction. + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + + **/ +BOOLEAN +EFIAPI +InternalX86RdRand16 ( + OUT UINT16 *Rand + ); + +/** + Generates a 32-bit random number through RDRAND instruction. + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + +**/ +BOOLEAN +EFIAPI +InternalX86RdRand32 ( + OUT UINT32 *Rand + ); + +/** + Generates a 64-bit random number through RDRAND instruction. + + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + +**/ +BOOLEAN +EFIAPI +InternalX86RdRand64 ( + OUT UINT64 *Rand + ); + +/** + Generates a 16-bit random number through RDRAND instruction. + + if Rand is NULL, then ASSERT(). + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + + **/ +BOOLEAN +EFIAPI +AsmRdRand16 ( + OUT UINT16 *Rand + ) +{ + ASSERT (Rand != NULL); + return InternalX86RdRand16 (Rand); +} + +/** + Generates a 32-bit random number through RDRAND instruction. + + if Rand is NULL, then ASSERT(). + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + +**/ +BOOLEAN +EFIAPI +AsmRdRand32 ( + OUT UINT32 *Rand + ) +{ + ASSERT (Rand != NULL); + return InternalX86RdRand32 (Rand); +} + +/** + Generates a 64-bit random number through RDRAND instruction. + + if Rand is NULL, then ASSERT(). + + @param[out] Rand Buffer pointer to store the random result. + + @retval TRUE RDRAND call was successful. + @retval FALSE Failed attempts to call RDRAND. + +**/ +BOOLEAN +EFIAPI +AsmRdRand64 ( + OUT UINT64 *Rand + ) +{ + ASSERT (Rand != NULL); + return InternalX86RdRand64 (Rand); +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86SegmentNull.c b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86SegmentNull.c new file mode 100644 index 0000000..b369095 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibHost/X86SegmentNull.c @@ -0,0 +1,163 @@ +/** @file + IA-32/x64 AsmReadGdtr() + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Reads the current value of Code Segment Register (CS). + + Reads and returns the current value of CS. This function is only available on + IA-32 and x64. + + @return The current value of CS. + +**/ +UINT16 +EFIAPI +AsmReadCs ( + VOID + ) +{ + ASSERT (FALSE); + return 0; +} + + +/** + Reads the current value of Data Segment Register (DS). + + Reads and returns the current value of DS. This function is only available on + IA-32 and x64. + + @return The current value of DS. + +**/ +UINT16 +EFIAPI +AsmReadDs ( + VOID + ) +{ + ASSERT (FALSE); + return 0; +} + + +/** + Reads the current value of Extra Segment Register (ES). + + Reads and returns the current value of ES. This function is only available on + IA-32 and x64. + + @return The current value of ES. + +**/ +UINT16 +EFIAPI +AsmReadEs ( + VOID + ) +{ + ASSERT (FALSE); + return 0; +} + + +/** + Reads the current value of FS Data Segment Register (FS). + + Reads and returns the current value of FS. This function is only available on + IA-32 and x64. + + @return The current value of FS. + +**/ +UINT16 +EFIAPI +AsmReadFs ( + VOID + ) +{ + ASSERT (FALSE); + return 0; +} + + +/** + Reads the current value of GS Data Segment Register (GS). + + Reads and returns the current value of GS. This function is only available on + IA-32 and x64. + + @return The current value of GS. + +**/ +UINT16 +EFIAPI +AsmReadGs ( + VOID + ) +{ + ASSERT (FALSE); + return 0; +} + + +/** + Reads the current value of Stack Segment Register (SS). + + Reads and returns the current value of SS. This function is only available on + IA-32 and x64. + + @return The current value of SS. + +**/ +UINT16 +EFIAPI +AsmReadSs ( + VOID + ) +{ + ASSERT (FALSE); + return 0; +} + + +/** + Reads the current value of Task Register (TR). + + Reads and returns the current value of TR. This function is only available on + IA-32 and x64. + + @return The current value of TR. + +**/ +UINT16 +EFIAPI +AsmReadTr ( + VOID + ) +{ + ASSERT (FALSE); + return 0; +} + +/** + Load given selector into TR register. + + @param[in] Selector Task segment selector +**/ +VOID +EFIAPI +AsmWriteTr ( + IN UINT16 Selector + ) +{ + ASSERT (FALSE); +} \ No newline at end of file diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.c b/HBFA/UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.c new file mode 100644 index 0000000..785ca95 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.c @@ -0,0 +1,39 @@ +/** @file + + Copyright (c) 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT32 +EFIAPI +AsmCpuidEx ( + IN UINT32 Index, + IN UINT32 SubIndex, + OUT UINT32 *RegisterEax, OPTIONAL + OUT UINT32 *RegisterEbx, OPTIONAL + OUT UINT32 *RegisterEcx, OPTIONAL + OUT UINT32 *RegisterEdx OPTIONAL + ) +{ + ASSERT (FALSE); + return 0; +} + +UINT32 +EFIAPI +AsmCpuid ( + IN UINT32 Index, + OUT UINT32 *RegisterEax, OPTIONAL + OUT UINT32 *RegisterEbx, OPTIONAL + OUT UINT32 *RegisterEcx, OPTIONAL + OUT UINT32 *RegisterEdx OPTIONAL + ) +{ + ASSERT (FALSE); + return 0; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.inf b/HBFA/UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.inf new file mode 100644 index 0000000..fdbde90 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.inf @@ -0,0 +1,31 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseLibNullCpuid + FILE_GUID = 9099E2A7-8A28-4115-9F8E-B2865AECEF8A + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = NULL + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + BaseLibNullCpuid.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + BaseLib + DebugLib diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.c b/HBFA/UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.c new file mode 100644 index 0000000..585d4c7 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.c @@ -0,0 +1,99 @@ +/** @file + + Copyright (c) 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +UINT64 +EFIAPI +AsmReadMsr64 ( + IN UINT32 Index + ) +{ + ASSERT (FALSE); + return 0; +} + +UINT32 +EFIAPI +AsmReadMsr32 ( + IN UINT32 Index + ) +{ + ASSERT (FALSE); + return 0; +} + +UINT64 +EFIAPI +AsmWriteMsr64 ( + IN UINT32 Index, + IN UINT64 Value + ) +{ + ASSERT (FALSE); + return 0; +} + +UINT32 +EFIAPI +AsmWriteMsr32 ( + IN UINT32 Index, + IN UINT32 Value + ) +{ + ASSERT (FALSE); + return 0; +} + +UINT64 +EFIAPI +AsmMsrOr64 ( + IN UINT32 Index, + IN UINT64 OrData + ) +{ + ASSERT (FALSE); + return 0; +} + +UINT64 +EFIAPI +AsmMsrAnd64 ( + IN UINT32 Index, + IN UINT64 AndData + ) +{ + ASSERT (FALSE); + return 0; +} + +UINT64 +EFIAPI +AsmMsrAndThenOr64 ( + IN UINT32 Index, + IN UINT64 AndData, + IN UINT64 OrData + ) +{ + ASSERT (FALSE); + return 0; +} + +UINT64 +EFIAPI +AsmMsrBitFieldWrite64 ( + IN UINT32 Index, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 Value + ) +{ + ASSERT (FALSE); + return 0; +} \ No newline at end of file diff --git a/HBFA/UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.inf b/HBFA/UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.inf new file mode 100644 index 0000000..f990e8b --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.inf @@ -0,0 +1,31 @@ +## @file +# Component description file for TestUdf module. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseLibNullMsr + FILE_GUID = 24DFBE26-ED67-47F3-B4FC-F23C59C7AAD3 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = NULL + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + BaseLibNullMsr.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + BaseLib + DebugLib diff --git a/HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.c b/HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.c new file mode 100644 index 0000000..abb6345 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.c @@ -0,0 +1,232 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFFULL +VOID * +EFIAPI +SetMem ( + OUT VOID *Buffer, + IN UINTN Length, + IN UINT8 Value + ) +{ + memset (Buffer, Value, Length); + return Buffer; +} + +VOID * +EFIAPI +SetMem16 ( + OUT VOID *Buffer, + IN UINTN Length, + IN UINT16 Value + ) +{ + for (; Length != 0; Length--) { + ((UINT16*)Buffer)[Length - 1] = Value; + } + return Buffer; +} + +VOID * +EFIAPI +SetMem32 ( + OUT VOID *Buffer, + IN UINTN Length, + IN UINT32 Value + ) +{ + for (; Length != 0; Length--) { + ((UINT32*)Buffer)[Length - 1] = Value; + } + return Buffer; +} + +VOID * +EFIAPI +SetMem64 ( + OUT VOID *Buffer, + IN UINTN Length, + IN UINT64 Value + ) +{ + for (; Length != 0; Length--) { + ((UINT64*)Buffer)[Length - 1] = Value; + } + return Buffer; +} + +VOID * +EFIAPI +SetMemN ( + OUT VOID *Buffer, + IN UINTN Length, + IN UINTN Value + ) +{ + if (sizeof (UINTN) == sizeof (UINT64)) { + return SetMem64 (Buffer, Length, (UINT64)Value); + } else { + return SetMem32 (Buffer, Length, (UINT32)Value); + } +} + +VOID * +EFIAPI +ZeroMem ( + OUT VOID *Buffer, + IN UINTN Length + ) +{ + memset (Buffer, 0, Length); + return Buffer; +} + +VOID * +EFIAPI +CopyMem ( + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) +{ + memmove (DestinationBuffer, SourceBuffer, Length); + return DestinationBuffer; +} + +INTN +EFIAPI +CompareMem ( + IN CONST VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) +{ + return memcmp (DestinationBuffer, SourceBuffer, Length); +} + +BOOLEAN +EFIAPI +CompareGuid ( + IN CONST GUID *Guid1, + IN CONST GUID *Guid2 + ) +{ + return ((BOOLEAN)(memcmp (Guid1, Guid2, sizeof (GUID)) == 0)); +} + +GUID * +EFIAPI +CopyGuid ( + OUT GUID *DestinationGuid, + IN CONST GUID *SourceGuid + ) +{ + memmove (DestinationGuid, SourceGuid, sizeof(GUID)); + return DestinationGuid; +} + +UINT8 mZeroGuid[sizeof(GUID)] = {0}; + +BOOLEAN +EFIAPI +IsZeroGuid ( + IN CONST GUID *Guid + ) +{ + return ((BOOLEAN)(memcmp (Guid, mZeroGuid, sizeof (GUID)) == 0)); +} + +VOID * +EFIAPI +ScanMem8 ( + IN CONST VOID *Buffer, + IN UINTN Length, + IN UINT8 Value + ) +{ + return memchr (Buffer, Value, Length); +} + +VOID +EFIAPI +CpuBreakpoint ( + VOID + ); +/** + Checks whether the contents of a buffer are all zeros. + + @param Buffer The pointer to the buffer to be checked. + @param Length The size of the buffer (in bytes) to be checked. + + @retval TRUE Contents of the buffer are all zeros. + @retval FALSE Contents of the buffer are not all zeros. + +**/ +BOOLEAN +EFIAPI +InternalMemIsZeroBuffer ( + IN CONST VOID *Buffer, + IN UINTN Length + ) +{ + CONST UINT8 *BufferData; + UINTN Index; + + if ((Buffer == NULL || Length <= 0)) { + printf ("ASSERT: Buffer is null or length <=0\n"); + CpuBreakpoint (); + } + BufferData = Buffer; + for (Index = 0; Index < Length; Index++) { + if (BufferData[Index] != 0) { + return FALSE; + } + } + return TRUE; +} + +/** + Checks if the contents of a buffer are all zeros. + + This function checks whether the contents of a buffer are all zeros. If the + contents are all zeros, return TRUE. Otherwise, return FALSE. + + If Length > 0 and Buffer is NULL, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param Buffer The pointer to the buffer to be checked. + @param Length The size of the buffer (in bytes) to be checked. + + @retval TRUE Contents of the buffer are all zeros. + @retval FALSE Contents of the buffer are not all zeros. + +**/ +BOOLEAN +EFIAPI +IsZeroBuffer ( + IN CONST VOID *Buffer, + IN UINTN Length + ) +{ + if ((Buffer == NULL || Length <= 0)) + { + printf ("ASSERT: Buffer is null or length <=0\n"); + CpuBreakpoint (); + } + if ((Length - 1) > (MAX_ADDRESS - (UINTN)Buffer)){ + printf ("ASSERT: Buffer address is out of Max Address limilation\n"); + CpuBreakpoint (); + } + return InternalMemIsZeroBuffer (Buffer, Length); +} \ No newline at end of file diff --git a/HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf b/HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf new file mode 100644 index 0000000..de9c944 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf @@ -0,0 +1,25 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseMemoryLibHost + FILE_GUID = 90B7948B-DFED-46FB-BABE-770A5A464BA5 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = BaseMemoryLib + +[Sources] + BaseMemoryLibHost.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + diff --git a/HBFA/UefiHostTestPkg/Library/BasePcdLibHost/BasePcdLibHost.c b/HBFA/UefiHostTestPkg/Library/BasePcdLibHost/BasePcdLibHost.c new file mode 100644 index 0000000..a1cb7ea --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BasePcdLibHost/BasePcdLibHost.c @@ -0,0 +1,1456 @@ +/** @file + A emptry template implementation of PCD Library. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +#include +#include +#include +#include +#include + +#define PCD_INFO_PRIVATE_SIGNATURE SIGNATURE_32 ('P', 'I', 'P', 'S') + +typedef enum { + PcdTypeUnknown, + PcdTypeBool, + PcdTypeUint8, + PcdTypeUint16, + PcdTypeUint32, + PcdTypeUint64, + PcdTypePtr, +} PCD_TYPE_PRIVATE; + +typedef struct { + UINTN Signature; + LIST_ENTRY Link; + + UINTN TokenNumber; + GUID Guid; + PCD_TYPE_PRIVATE Type; + UINTN Size; + UINT8 *Buffer; +} PCD_INFO_PRIVATE; + +#define PCD_INFO_PRIVATE_FROM_LINK(a) CR (a, PCD_INFO_PRIVATE, Link, PCD_INFO_PRIVATE_SIGNATURE) + +LIST_ENTRY mPcdListEntry = INITIALIZE_LIST_HEAD_VARIABLE(mPcdListEntry); +LIST_ENTRY mPcdExListEntry = INITIALIZE_LIST_HEAD_VARIABLE(mPcdExListEntry); + +LIST_ENTRY * +FindPcdList ( + IN LIST_ENTRY *StorageListHead, + IN GUID *Guid, + IN UINTN TokenNumber, + IN PCD_TYPE_PRIVATE Type + ) +{ + LIST_ENTRY *Link; + PCD_INFO_PRIVATE *Storage; + + if (StorageListHead->ForwardLink != NULL) { + Link = GetFirstNode (StorageListHead); + while (!IsNull (StorageListHead, Link)) { + Storage = PCD_INFO_PRIVATE_FROM_LINK (Link); + if ((Storage->TokenNumber == TokenNumber) && + ((Guid == NULL) || (CompareGuid (&Storage->Guid, Guid))) ) { + if (Type != PcdTypeUnknown) { + ASSERT (Storage->Type == Type); + if (Storage->Type != Type) { + return NULL; + } + } + return Link; + } + Link = GetNextNode (StorageListHead, Link); + } + } + return NULL; +} + +PCD_INFO_PRIVATE* +FindPcdInfoPtr( + IN UINTN TokenNumber, + IN PCD_TYPE_PRIVATE Type + ) +{ + LIST_ENTRY *ListEntry; + + // + // Try to get auth variable by name and GUID. + // + ListEntry = FindPcdList (&mPcdListEntry, NULL, TokenNumber, Type); + if (ListEntry != NULL) { + return PCD_INFO_PRIVATE_FROM_LINK (ListEntry); + } + + return NULL; +} + +PCD_INFO_PRIVATE* +FindPcdExInfoPtr( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN PCD_TYPE_PRIVATE Type + ) +{ + LIST_ENTRY *ListEntry; + + // + // Try to get auth variable by name and GUID. + // + ListEntry = FindPcdList (&mPcdExListEntry, (GUID *)Guid, TokenNumber, Type); + if (ListEntry != NULL) { + return PCD_INFO_PRIVATE_FROM_LINK (ListEntry); + } + + return NULL; +} + +RETURN_STATUS +CreatePcdInfo ( + IN GUID *Guid, + IN UINTN TokenNumber, + IN PCD_TYPE_PRIVATE Type, + IN VOID *Buffer, + IN UINTN Size, + OUT PCD_INFO_PRIVATE **PcdInfoPrivate + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + switch (Type) { + case PcdTypeUnknown: + default: + ASSERT(FALSE); + return RETURN_INVALID_PARAMETER; + break; + case PcdTypeUint8: + case PcdTypeBool: + ASSERT(Size == sizeof(UINT8)); + if (Size != sizeof(UINT8)) { + return RETURN_INVALID_PARAMETER; + } + break; + case PcdTypeUint16: + ASSERT(Size == sizeof(UINT16)); + if (Size != sizeof(UINT16)) { + return RETURN_INVALID_PARAMETER; + } + break; + case PcdTypeUint32: + ASSERT(Size == sizeof(UINT32)); + if (Size != sizeof(UINT32)) { + return RETURN_INVALID_PARAMETER; + } + break; + case PcdTypeUint64: + ASSERT(Size == sizeof(UINT64)); + if (Size != sizeof(UINT64)) { + return RETURN_INVALID_PARAMETER; + } + break; + case PcdTypePtr: + break; + } + + if (Guid == NULL) { + PcdInfo = FindPcdInfoPtr(TokenNumber, Type); + } else { + PcdInfo = FindPcdExInfoPtr(Guid, TokenNumber, Type); + } + + if (PcdInfo == NULL) { + PcdInfo = malloc (sizeof(PCD_INFO_PRIVATE)); + if (PcdInfo == NULL) { + return RETURN_OUT_OF_RESOURCES; + } + ZeroMem (PcdInfo, sizeof(PCD_INFO_PRIVATE)); + PcdInfo->Signature = PCD_INFO_PRIVATE_SIGNATURE; + if (Guid != NULL) { + CopyMem (&PcdInfo->Guid, Guid, sizeof(GUID)); + } + PcdInfo->TokenNumber = TokenNumber; + PcdInfo->Type = Type; + PcdInfo->Size = Size; + PcdInfo->Buffer = malloc(Size); + if (PcdInfo->Buffer == NULL) { + free (PcdInfo); + return RETURN_OUT_OF_RESOURCES; + } + CopyMem (PcdInfo->Buffer, Buffer, Size); + *PcdInfoPrivate = PcdInfo; + return RETURN_SUCCESS; + } else { + if (Type != PcdInfo->Type) { + ASSERT(FALSE); + return RETURN_INVALID_PARAMETER; + } + if (Type != PcdTypePtr && (Size != PcdInfo->Size)) { + ASSERT(FALSE); + return RETURN_INVALID_PARAMETER; + } + if (Type == PcdTypePtr) { + VOID *NewBuf; + NewBuf = malloc(Size); + if (NewBuf == NULL) { + return RETURN_OUT_OF_RESOURCES; + } + free (PcdInfo->Buffer); + PcdInfo->Buffer = NewBuf; + PcdInfo->Size = Size; + } + CopyMem (PcdInfo->Buffer, Buffer, Size); + *PcdInfoPrivate = NULL; + return RETURN_SUCCESS; + } +} + +RETURN_STATUS +InsertPcd ( + IN UINTN TokenNumber, + IN PCD_TYPE_PRIVATE Type, + IN VOID *Buffer, + IN UINTN Size + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + RETURN_STATUS Status; + + Status = CreatePcdInfo (NULL, TokenNumber, Type, Buffer, Size, &PcdInfo); + if (Status != RETURN_SUCCESS) { + ASSERT(FALSE); + return Status; + } + if (PcdInfo != NULL) { + InsertTailList(&mPcdListEntry, &PcdInfo->Link); + } + + return RETURN_SUCCESS; +} + +RETURN_STATUS +InsertPcdEx ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN PCD_TYPE_PRIVATE Type, + IN VOID *Buffer, + IN UINTN Size + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + RETURN_STATUS Status; + + Status = CreatePcdInfo ((GUID *)Guid, TokenNumber, Type, Buffer, Size, &PcdInfo); + if (Status != RETURN_SUCCESS) { + ASSERT(FALSE); + return RETURN_OUT_OF_RESOURCES; + } + if (PcdInfo != NULL) { + InsertTailList(&mPcdExListEntry, &PcdInfo->Link); + } + + return RETURN_SUCCESS; +} + +/** + This function provides a means by which SKU support can be established in the PCD infrastructure. + + Sets the current SKU in the PCD database to the value specified by SkuId. SkuId is returned. + + @param[in] SkuId The SKU value that will be used when the PCD service will retrieve and + set values associated with a PCD token. + + @return Return the SKU ID that just be set. + +**/ +UINTN +EFIAPI +LibPcdSetSku ( + IN UINTN SkuId + ) +{ + ASSERT (FALSE); + + return 0; +} + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the 8-bit value for the token specified by TokenNumber. + + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Returns the 8-bit value for the token specified by TokenNumber. + +**/ +UINT8 +EFIAPI +LibPcdGet8 ( + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdInfoPtr (TokenNumber, PcdTypeUint8); + if (PcdInfo != NULL) { + return *(UINT8 *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the 16-bit value for the token specified by TokenNumber. + + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Returns the 16-bit value for the token specified by TokenNumber. + +**/ +UINT16 +EFIAPI +LibPcdGet16 ( + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdInfoPtr (TokenNumber, PcdTypeUint16); + if (PcdInfo != NULL) { + return *(UINT16 *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the 32-bit value for the token specified by TokenNumber. + + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Returns the 32-bit value for the token specified by TokenNumber. + +**/ +UINT32 +EFIAPI +LibPcdGet32 ( + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdInfoPtr (TokenNumber, PcdTypeUint32); + if (PcdInfo != NULL) { + return *(UINT32 *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the 64-bit value for the token specified by TokenNumber. + + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Returns the 64-bit value for the token specified by TokenNumber. + +**/ +UINT64 +EFIAPI +LibPcdGet64 ( + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdInfoPtr (TokenNumber, PcdTypeUint64); + if (PcdInfo != NULL) { + return *(UINT64 *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the pointer to the buffer of the token specified by TokenNumber. + + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Returns the pointer to the token specified by TokenNumber. + +**/ +VOID * +EFIAPI +LibPcdGetPtr ( + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdInfoPtr (TokenNumber, PcdTypePtr); + if (PcdInfo != NULL) { + return PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the Boolean value of the token specified by TokenNumber. + + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Returns the Boolean value of the token specified by TokenNumber. + +**/ +BOOLEAN +EFIAPI +LibPcdGetBool ( + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdInfoPtr (TokenNumber, PcdTypeBool); + if (PcdInfo != NULL) { + return *(BOOLEAN *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve the size of a given PCD token. + + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Returns the size of the token specified by TokenNumber. + +**/ +UINTN +EFIAPI +LibPcdGetSize ( + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdInfoPtr (TokenNumber, PcdTypeUnknown); + if (PcdInfo != NULL) { + return PcdInfo->Size; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the 8-bit value for the token specified by TokenNumber and Guid. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates + which namespace to retrieve a value from. + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Return the UINT8. + +**/ +UINT8 +EFIAPI +LibPcdGetEx8 ( + IN CONST GUID *Guid, + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdExInfoPtr (Guid, TokenNumber, PcdTypeUint8); + if (PcdInfo != NULL) { + return *(UINT8 *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the 16-bit value for the token specified by TokenNumber and Guid. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates + which namespace to retrieve a value from. + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Return the UINT16. + +**/ +UINT16 +EFIAPI +LibPcdGetEx16 ( + IN CONST GUID *Guid, + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdExInfoPtr (Guid, TokenNumber, PcdTypeUint16); + if (PcdInfo != NULL) { + return *(UINT16 *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + Returns the 32-bit value for the token specified by TokenNumber and Guid. + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates + which namespace to retrieve a value from. + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Return the UINT32. + +**/ +UINT32 +EFIAPI +LibPcdGetEx32 ( + IN CONST GUID *Guid, + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdExInfoPtr (Guid, TokenNumber, PcdTypeUint32); + if (PcdInfo != NULL) { + return *(UINT32 *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the 64-bit value for the token specified by TokenNumber and Guid. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates + which namespace to retrieve a value from. + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Return the UINT64. + +**/ +UINT64 +EFIAPI +LibPcdGetEx64 ( + IN CONST GUID *Guid, + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdExInfoPtr (Guid, TokenNumber, PcdTypeUint64); + if (PcdInfo != NULL) { + return *(UINT64 *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the pointer to the buffer of token specified by TokenNumber and Guid. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates + which namespace to retrieve a value from. + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Return the VOID* pointer. + +**/ +VOID * +EFIAPI +LibPcdGetExPtr ( + IN CONST GUID *Guid, + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdExInfoPtr (Guid, TokenNumber, PcdTypePtr); + if (PcdInfo != NULL) { + return PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve a value for a given PCD token. + + Returns the Boolean value of the token specified by TokenNumber and Guid. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates + which namespace to retrieve a value from. + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Return the BOOLEAN. + +**/ +BOOLEAN +EFIAPI +LibPcdGetExBool ( + IN CONST GUID *Guid, + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdExInfoPtr (Guid, TokenNumber, PcdTypeBool); + if (PcdInfo != NULL) { + return *(BOOLEAN *)PcdInfo->Buffer; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to retrieve the size of a given PCD token. + + Returns the size of the token specified by TokenNumber and Guid. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates + which namespace to retrieve a value from. + @param[in] TokenNumber The PCD token number to retrieve a current value for. + + @return Return the size. + +**/ +UINTN +EFIAPI +LibPcdGetExSize ( + IN CONST GUID *Guid, + IN UINTN TokenNumber + ) +{ + PCD_INFO_PRIVATE *PcdInfo; + + PcdInfo = FindPcdExInfoPtr (Guid, TokenNumber, PcdTypeUnknown); + if (PcdInfo != NULL) { + return PcdInfo->Size; + } + + ASSERT (PcdInfo != NULL); + return 0; +} + + + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 8-bit value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 8-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSet8S ( + IN UINTN TokenNumber, + IN UINT8 Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcd (TokenNumber, PcdTypeUint8, &Value, sizeof(UINT8)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 16-bit value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 16-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSet16S ( + IN UINTN TokenNumber, + IN UINT16 Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcd (TokenNumber, PcdTypeUint16, &Value, sizeof(UINT16)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 32-bit value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 32-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSet32S ( + IN UINTN TokenNumber, + IN UINT32 Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcd (TokenNumber, PcdTypeUint32, &Value, sizeof(UINT32)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 64-bit value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 64-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSet64S ( + IN UINTN TokenNumber, + IN UINT64 Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcd (TokenNumber, PcdTypeUint64, &Value, sizeof(UINT64)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets a buffer for the token specified by TokenNumber to the value specified + by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size + support by TokenNumber, then set SizeOfBuffer to the maximum size supported by + TokenNumber and return EFI_INVALID_PARAMETER to indicate that the set operation + was not actually performed. + + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the + maximum size supported by TokenName and EFI_INVALID_PARAMETER must be returned. + + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in, out] SizeOfBuffer The size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetPtrS ( + IN UINTN TokenNumber, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + RETURN_STATUS Status; + + Status = InsertPcd (TokenNumber, PcdTypePtr, (VOID *)Buffer, *SizeOfBuffer); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the boolean value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The boolean value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetBoolS ( + IN UINTN TokenNumber, + IN BOOLEAN Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcd (TokenNumber, PcdTypeBool, &Value, sizeof(BOOLEAN)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 8-bit value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 8-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetEx8S ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN UINT8 Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcdEx (Guid, TokenNumber, PcdTypeUint8, &Value, sizeof(UINT8)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 16-bit value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 16-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetEx16S ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN UINT16 Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcdEx (Guid, TokenNumber, PcdTypeUint16, &Value, sizeof(UINT16)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 32-bit value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 32-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetEx32S ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN UINT32 Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcdEx (Guid, TokenNumber, PcdTypeUint32, &Value, sizeof(UINT32)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 64-bit value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 64-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetEx64S ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN UINT64 Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcdEx (Guid, TokenNumber, PcdTypeUint64, &Value, sizeof(UINT64)); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets a buffer for the token specified by TokenNumber to the value specified by + Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size + support by TokenNumber, then set SizeOfBuffer to the maximum size supported by + TokenNumber and return EFI_INVALID_PARAMETER to indicate that the set operation + was not actually performed. + + If Guid is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[in] Guid Pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in, out] SizeOfBuffer The size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetExPtrS ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN OUT UINTN *SizeOfBuffer, + IN VOID *Buffer + ) +{ + RETURN_STATUS Status; + + Status = InsertPcdEx (Guid, TokenNumber, PcdTypePtr, Buffer, *SizeOfBuffer); + return Status; +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the boolean value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The boolean value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetExBoolS ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN BOOLEAN Value + ) +{ + RETURN_STATUS Status; + + Status = InsertPcdEx (Guid, TokenNumber, PcdTypeBool, &Value, sizeof(BOOLEAN)); + return Status; +} + +/** + Set up a notification function that is called when a specified token is set. + + When the token specified by TokenNumber and Guid is set, + then notification function specified by NotificationFunction is called. + If Guid is NULL, then the default token space is used. + + If NotificationFunction is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates which + namespace to set a value from. If NULL, then the default + token space is used. + @param[in] TokenNumber The PCD token number to monitor. + @param[in] NotificationFunction The function to call when the token + specified by Guid and TokenNumber is set. + +**/ +VOID +EFIAPI +LibPcdCallbackOnSet ( + IN CONST GUID *Guid, OPTIONAL + IN UINTN TokenNumber, + IN PCD_CALLBACK NotificationFunction + ) +{ + ASSERT (FALSE); +} + + + +/** + Disable a notification function that was established with LibPcdCallbackonSet(). + + Disable a notification function that was previously established with LibPcdCallbackOnSet(). + + If NotificationFunction is NULL, then ASSERT(). + If LibPcdCallbackOnSet() was not previously called with Guid, TokenNumber, + and NotificationFunction, then ASSERT(). + + @param[in] Guid Specify the GUID token space. + @param[in] TokenNumber Specify the token number. + @param[in] NotificationFunction The callback function to be unregistered. + +**/ +VOID +EFIAPI +LibPcdCancelCallback ( + IN CONST GUID *Guid, OPTIONAL + IN UINTN TokenNumber, + IN PCD_CALLBACK NotificationFunction + ) +{ + ASSERT (FALSE); +} + + + +/** + Retrieves the next token in a token space. + + Retrieves the next PCD token number from the token space specified by Guid. + If Guid is NULL, then the default token space is used. If TokenNumber is 0, + then the first token number is returned. Otherwise, the token number that + follows TokenNumber in the token space is returned. If TokenNumber is the last + token number in the token space, then 0 is returned. + + If TokenNumber is not 0 and is not in the token space specified by Guid, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace + to set a value from. If NULL, then the default token space is used. + @param[in] TokenNumber The previous PCD token number. If 0, then retrieves the first PCD + token number. + + @return The next valid token number. + +**/ +UINTN +EFIAPI +LibPcdGetNextToken ( + IN CONST GUID *Guid, OPTIONAL + IN UINTN TokenNumber + ) +{ + ASSERT (FALSE); + + return 0; +} + + + +/** + Used to retrieve the list of available PCD token space GUIDs. + + Returns the PCD token space GUID that follows TokenSpaceGuid in the list of token spaces + in the platform. + If TokenSpaceGuid is NULL, then a pointer to the first PCD token spaces returned. + If TokenSpaceGuid is the last PCD token space GUID in the list, then NULL is returned. + + @param TokenSpaceGuid The pointer to a PCD token space GUID. + + @return The next valid token namespace. + +**/ +GUID * +EFIAPI +LibPcdGetNextTokenSpace ( + IN CONST GUID *TokenSpaceGuid + ) +{ + ASSERT (FALSE); + + return NULL; +} + + +/** + Sets a value of a patchable PCD entry that is type pointer. + + Sets the PCD entry specified by PatchVariable to the value specified by Buffer + and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than + MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return + NULL to indicate that the set operation was not actually performed. + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to + MaximumDatumSize and NULL must be returned. + + If PatchVariable is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[out] PatchVariable A pointer to the global variable in a module that is + the target of the set operation. + @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable. + @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to used to set the target variable. + + @return Return the pointer to the buffer that was set. + +**/ +VOID * +EFIAPI +LibPatchPcdSetPtr ( + OUT VOID *PatchVariable, + IN UINTN MaximumDatumSize, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + ASSERT (PatchVariable != NULL); + ASSERT (SizeOfBuffer != NULL); + + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + if ((*SizeOfBuffer > MaximumDatumSize) || + (*SizeOfBuffer == MAX_ADDRESS)) { + *SizeOfBuffer = MaximumDatumSize; + return NULL; + } + + CopyMem (PatchVariable, Buffer, *SizeOfBuffer); + + return (VOID *) Buffer; +} + +/** + Sets a value of a patchable PCD entry that is type pointer. + + Sets the PCD entry specified by PatchVariable to the value specified + by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize, + then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER + to indicate that the set operation was not actually performed. + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to + MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned. + + If PatchVariable is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[out] PatchVariable A pointer to the global variable in a module that is + the target of the set operation. + @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable. + @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to used to set the target variable. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPatchPcdSetPtrS ( + OUT VOID *PatchVariable, + IN UINTN MaximumDatumSize, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + ASSERT (PatchVariable != NULL); + ASSERT (SizeOfBuffer != NULL); + + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + if ((*SizeOfBuffer > MaximumDatumSize) || + (*SizeOfBuffer == MAX_ADDRESS)) { + *SizeOfBuffer = MaximumDatumSize; + return RETURN_INVALID_PARAMETER; + } + + CopyMem (PatchVariable, Buffer, *SizeOfBuffer); + + return RETURN_SUCCESS; +} + +/** + Sets a value and size of a patchable PCD entry that is type pointer. + + Sets the PCD entry specified by PatchVariable to the value specified by Buffer + and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than + MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return + NULL to indicate that the set operation was not actually performed. + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to + MaximumDatumSize and NULL must be returned. + + If PatchVariable is NULL, then ASSERT(). + If SizeOfPatchVariable is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[out] PatchVariable A pointer to the global variable in a module that is + the target of the set operation. + @param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable. + @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable. + @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to used to set the target variable. + + @return Return the pointer to the buffer been set. + +**/ +VOID * +EFIAPI +LibPatchPcdSetPtrAndSize ( + OUT VOID *PatchVariable, + OUT UINTN *SizeOfPatchVariable, + IN UINTN MaximumDatumSize, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + ASSERT (PatchVariable != NULL); + ASSERT (SizeOfPatchVariable != NULL); + ASSERT (SizeOfBuffer != NULL); + + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + if ((*SizeOfBuffer > MaximumDatumSize) || + (*SizeOfBuffer == MAX_ADDRESS)) { + *SizeOfBuffer = MaximumDatumSize; + return NULL; + } + + CopyMem (PatchVariable, Buffer, *SizeOfBuffer); + *SizeOfPatchVariable = *SizeOfBuffer; + + return (VOID *) Buffer; +} + +/** + Sets a value and size of a patchable PCD entry that is type pointer. + + Sets the PCD entry specified by PatchVariable to the value specified + by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize, + then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER + to indicate that the set operation was not actually performed. + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to + MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned. + + If PatchVariable is NULL, then ASSERT(). + If SizeOfPatchVariable is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[out] PatchVariable A pointer to the global variable in a module that is + the target of the set operation. + @param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable. + @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable. + @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to used to set the target variable. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPatchPcdSetPtrAndSizeS ( + OUT VOID *PatchVariable, + OUT UINTN *SizeOfPatchVariable, + IN UINTN MaximumDatumSize, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + ASSERT (PatchVariable != NULL); + ASSERT (SizeOfPatchVariable != NULL); + ASSERT (SizeOfBuffer != NULL); + + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + if ((*SizeOfBuffer > MaximumDatumSize) || + (*SizeOfBuffer == MAX_ADDRESS)) { + *SizeOfBuffer = MaximumDatumSize; + return RETURN_INVALID_PARAMETER; + } + + CopyMem (PatchVariable, Buffer, *SizeOfBuffer); + *SizeOfPatchVariable = *SizeOfBuffer; + + return RETURN_SUCCESS; +} + +/** + Retrieve additional information associated with a PCD token. + + This includes information such as the type of value the TokenNumber is associated with as well as possible + human readable name that is associated with the token. + + If TokenNumber is not in the default token space specified, then ASSERT(). + + @param[in] TokenNumber The PCD token number. + @param[out] PcdInfo The returned information associated with the requested TokenNumber. + The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName. +**/ +VOID +EFIAPI +LibPcdGetInfo ( + IN UINTN TokenNumber, + OUT PCD_INFO *PcdInfo + ) +{ + ASSERT (FALSE); +} + +/** + Retrieve additional information associated with a PCD token. + + This includes information such as the type of value the TokenNumber is associated with as well as possible + human readable name that is associated with the token. + + If TokenNumber is not in the token space specified by Guid, then ASSERT(). + + @param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value. + @param[in] TokenNumber The PCD token number. + @param[out] PcdInfo The returned information associated with the requested TokenNumber. + The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName. +**/ +VOID +EFIAPI +LibPcdGetInfoEx ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + OUT PCD_INFO *PcdInfo + ) +{ + ASSERT (FALSE); +} + +/** + Retrieve the currently set SKU Id. + + @return The currently set SKU Id. If the platform has not set at a SKU Id, then the + default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU + Id is returned. +**/ +UINTN +EFIAPI +LibPcdGetSku ( + VOID + ) +{ + ASSERT (FALSE); + + return 0; +} + diff --git a/HBFA/UefiHostTestPkg/Library/BasePcdLibHost/BasePcdLibHost.inf b/HBFA/UefiHostTestPkg/Library/BasePcdLibHost/BasePcdLibHost.inf new file mode 100644 index 0000000..ae5ed26 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BasePcdLibHost/BasePcdLibHost.inf @@ -0,0 +1,35 @@ +## @file +# Instance of PCD Library without support of dynamic PCD entries. +# +# PCD Library that only provides access to Feature Flag, Fixed At Build, +# and Binary Patch typed PCD entries. Access to Dynamic PCD entries is ignored. +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BasePcdLibHost + FILE_GUID = 388756FE-4860-44D2-81DB-1DD4E712F1BD + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = PcdLib + +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + BasePcdLibHost.c + +[LibraryClasses] + DebugLib + BaseMemoryLib + +[Packages] + MdePkg/MdePkg.dec + diff --git a/HBFA/UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.c b/HBFA/UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.c new file mode 100644 index 0000000..5bca559 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.c @@ -0,0 +1,121 @@ +/** @file + + Copyright (c) 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Stalls the CPU for at least the given number of microseconds. + + Stalls the CPU for the number of microseconds specified by MicroSeconds. + + @param MicroSeconds The minimum number of microseconds to delay. + + @return The value of MicroSeconds inputted. + +**/ +UINTN +EFIAPI +MicroSecondDelay ( + IN UINTN MicroSeconds + ) +{ + return MicroSeconds; +} + +/** + Stalls the CPU for at least the given number of nanoseconds. + + Stalls the CPU for the number of nanoseconds specified by NanoSeconds. + + @param NanoSeconds The minimum number of nanoseconds to delay. + + @return The value of NanoSeconds inputted. + +**/ +UINTN +EFIAPI +NanoSecondDelay ( + IN UINTN NanoSeconds + ) +{ + return 0; +} + +/** + Retrieves the current value of a 64-bit free running performance counter. + + The counter can either count up by 1 or count down by 1. If the physical + performance counter counts by a larger increment, then the counter values + must be translated. The properties of the counter can be retrieved from + GetPerformanceCounterProperties(). + + @return The current value of the free running performance counter. + +**/ +UINT64 +EFIAPI +GetPerformanceCounter ( + VOID + ) +{ + return 0; +} + +/** + Retrieves the 64-bit frequency in Hz and the range of performance counter + values. + + If StartValue is not NULL, then the value that the performance counter starts + with immediately after is it rolls over is returned in StartValue. If + EndValue is not NULL, then the value that the performance counter end with + immediately before it rolls over is returned in EndValue. The 64-bit + frequency of the performance counter in Hz is always returned. If StartValue + is less than EndValue, then the performance counter counts up. If StartValue + is greater than EndValue, then the performance counter counts down. For + example, a 64-bit free running counter that counts up would have a StartValue + of 0 and an EndValue of 0xFFFFFFFFFFFFFFFF. A 24-bit free running counter + that counts down would have a StartValue of 0xFFFFFF and an EndValue of 0. + + @param StartValue The value the performance counter starts with when it + rolls over. + @param EndValue The value that the performance counter ends with before + it rolls over. + + @return The frequency in Hz. + +**/ +UINT64 +EFIAPI +GetPerformanceCounterProperties ( + OUT UINT64 *StartValue, OPTIONAL + OUT UINT64 *EndValue OPTIONAL + ) +{ + return (UINT64)(-1); +} + +/** + Converts elapsed ticks of performance counter to time in nanoseconds. + + This function converts the elapsed ticks of running performance counter to + time value in unit of nanoseconds. + + @param Ticks The number of elapsed ticks of running performance counter. + + @return The elapsed time in nanoseconds. + +**/ +UINT64 +EFIAPI +GetTimeInNanoSecond ( + IN UINT64 Ticks + ) +{ + return 0; +} diff --git a/HBFA/UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.inf b/HBFA/UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.inf new file mode 100644 index 0000000..69939a3 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.inf @@ -0,0 +1,33 @@ +## @file +# Base Timer Library +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BaseTimerLibHost + FILE_GUID = 5E659347-D32A-4E8F-9299-7FEE78E645E9 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = TimerLib + +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources] + BaseTimerLibHost.c + + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + DebugLib + diff --git a/HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.c b/HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.c new file mode 100644 index 0000000..1bc306c --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.c @@ -0,0 +1,182 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifndef HOST_DEBUG_MESSAGE +#define HOST_DEBUG_MESSAGE 0 +#endif + +// +// Define the maximum debug and assert message length that this library supports +// +#define MAX_DEBUG_MESSAGE_LENGTH 0x100 + +VOID +EFIAPI +DebugAssert ( + IN CONST CHAR8 *FileName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description + ) +{ +#ifndef TEST_WITH_KLEE + printf ("ASSERT: %s(%d): %s\n", FileName, (INT32)(UINT32)LineNumber, Description); + CpuBreakpoint (); +#endif +} + +BOOLEAN +EFIAPI +DebugAssertEnabled ( + VOID + ) +{ + return TRUE; +} + +VOID +PatchFormat ( + IN CONST CHAR8 *Format, + IN CHAR8 *MyFormat + ) +{ + UINTN Index; + UINTN MyIndex; + + Index = 0; + MyIndex = 0; + while (Format[Index] != 0) { + MyFormat[MyIndex] = Format[Index]; + if (Format[Index] == '%') { + Index++; + MyIndex++; + switch (Format[Index]) { + case 'a': + MyFormat[MyIndex] = 's'; + break; + case 's': + MyFormat[MyIndex] = 'w'; + MyIndex++; + MyFormat[MyIndex] = 's'; + break; + case 'g': + case 't': + MyFormat[MyIndex] = 'p'; + break; + case 'r': + MyFormat[MyIndex] = 'x'; + break; + case 'L': + case 'l': + MyFormat[MyIndex] = 'I'; + MyIndex++; + MyFormat[MyIndex] = '6'; + MyIndex++; + MyFormat[MyIndex] = '4'; + break; + case '0': + MyFormat[MyIndex] = Format[Index]; + if (Format[Index + 1] == '1') { + Index++; + MyIndex++; + MyFormat[MyIndex] = Format[Index]; + } + case '1': + MyFormat[MyIndex] = Format[Index]; + if (Format[Index + 1] == '6') { + Index++; + MyIndex++; + MyFormat[MyIndex] = Format[Index]; + } + if (Format[Index + 1] == 'l') { + Index++; + MyIndex++; + MyFormat[MyIndex] = 'I'; + MyIndex++; + MyFormat[MyIndex] = '6'; + MyIndex++; + MyFormat[MyIndex] = '4'; + } + if (Format[Index + 1] == 'l') { + Index++; + } + break; + default: + MyFormat[MyIndex] = Format[Index]; + break; + } + } + Index++; + MyIndex++; + } + MyFormat[MyIndex] = 0; +} + +VOID +EFIAPI +DebugPrint ( + IN UINTN ErrorLevel, + IN CONST CHAR8 *Format, + ... + ) +{ +#ifndef TEST_WITH_KLEE +#if HOST_DEBUG_MESSAGE + CHAR8 Buffer[MAX_DEBUG_MESSAGE_LENGTH]; + CHAR8 MyFormat[MAX_DEBUG_MESSAGE_LENGTH]; + VA_LIST Marker; + + VA_START (Marker, Format); + + if (0) { + PatchFormat (Format, MyFormat); + vsprintf (Buffer, MyFormat, Marker); + } else { + AsciiVSPrint (Buffer, sizeof (Buffer), Format, Marker); + } + VA_END (Marker); + + printf ("%s", Buffer); +#endif +#endif +} + +BOOLEAN +EFIAPI +DebugPrintEnabled ( + VOID + ) +{ + return TRUE; +} + +BOOLEAN +EFIAPI +DebugPrintLevelEnabled ( + IN CONST UINTN ErrorLevel + ) +{ + return TRUE; +} + +BOOLEAN +EFIAPI +DebugCodeEnabled ( + VOID + ) +{ + return TRUE; +} diff --git a/HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf b/HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf new file mode 100644 index 0000000..292c8b5 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf @@ -0,0 +1,31 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = DebugLibHost + FILE_GUID = 6A77CE89-C1B6-4A6B-9561-07D7127514A7 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = DebugLib + +[Sources] + DebugLibHost.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + PrintLib + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /D _CRT_SECURE_NO_WARNINGS + GCC:*_KLEE_*_CC_FLAGS = "-DTEST_WITH_KLEE=TRUE" + + diff --git a/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.c b/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.c new file mode 100644 index 0000000..0eb6009 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.c @@ -0,0 +1,192 @@ +/** @file + This library implement library class DxeServiceTableLib. + It produce EFI_DXE_SERVICE pointer in global variable gDS in library's constructure. + + A DXE driver can use gDS pointer to access services in EFI_DXE_SERVICE, if this + DXE driver declare that use DxeServicesTableLib library class and link to this + library instance. + + Please attention this library instance can not be used util EFI_SYSTEM_TABLE was + initialized. + + This library contains contruct function to retrieve EFI_DXE_SERIVCE, this construct + function will be invoked in DXE driver's autogen file. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "Gcd.h" + +EFI_STATUS +CoreInitializeGcdServices ( + IN UINT8 SizeOfMemorySpace, + IN UINT8 SizeOfIoSpace + ); + +extern EFI_DXE_SERVICES mDxeServices; + +// +// Cache copy of the DXE Services Table +// +EFI_DXE_SERVICES *gDS = &mDxeServices; + +BOOLEAN mOnGuarding = FALSE; +EFI_CPU_ARCH_PROTOCOL *gCpu = NULL; + +/** + This is the main Dispatcher for DXE and it exits when there are no more + drivers to run. Drain the mScheduledQueue and load and start a PE + image for each driver. Search the mDiscoveredList to see if any driver can + be placed on the mScheduledQueue. If no drivers are placed on the + mScheduledQueue exit the function. On exit it is assumed the Bds() + will be called, and when the Bds() exits the Dispatcher will be called + again. + + @retval EFI_ALREADY_STARTED The DXE Dispatcher is already running + @retval EFI_NOT_FOUND No DXE Drivers were dispatched + @retval EFI_SUCCESS One or more DXE Drivers were dispatched + +**/ +EFI_STATUS +EFIAPI +CoreDispatcher ( + VOID + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +/** + Check every driver and locate a matching one. If the driver is found, the Unrequested + state flag is cleared. + + @param FirmwareVolumeHandle The handle of the Firmware Volume that contains + the firmware file specified by DriverName. + @param DriverName The Driver name to put in the Dependent state. + + @retval EFI_SUCCESS The DriverName was found and it's SOR bit was + cleared + @retval EFI_NOT_FOUND The DriverName does not exist or it's SOR bit was + not set. + +**/ +EFI_STATUS +EFIAPI +CoreSchedule ( + IN EFI_HANDLE FirmwareVolumeHandle, + IN EFI_GUID *DriverName + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + + +/** + Convert a driver from the Untrused back to the Scheduled state. + + @param FirmwareVolumeHandle The handle of the Firmware Volume that contains + the firmware file specified by DriverName. + @param DriverName The Driver name to put in the Scheduled state + + @retval EFI_SUCCESS The file was found in the untrusted state, and it + was promoted to the trusted state. + @retval EFI_NOT_FOUND The file was not found in the untrusted state. + +**/ +EFI_STATUS +EFIAPI +CoreTrust ( + IN EFI_HANDLE FirmwareVolumeHandle, + IN EFI_GUID *DriverName + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +/** + This DXE service routine is used to process a firmware volume. In + particular, it can be called by BDS to process a single firmware + volume found in a capsule. + + @param FvHeader pointer to a firmware volume header + @param Size the size of the buffer pointed to by FvHeader + @param FVProtocolHandle the handle on which a firmware volume protocol + was produced for the firmware volume passed in. + + @retval EFI_OUT_OF_RESOURCES if an FVB could not be produced due to lack of + system resources + @retval EFI_VOLUME_CORRUPTED if the volume was corrupted + @retval EFI_SUCCESS a firmware volume protocol was produced for the + firmware volume + +**/ +EFI_STATUS +EFIAPI +CoreProcessFirmwareVolume ( + IN VOID *FvHeader, + IN UINTN Size, + OUT EFI_HANDLE *FVProtocolHandle + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +/** + Called to initialize the memory map and add descriptors to + the current descriptor list. + The first descriptor that is added must be general usable + memory as the addition allocates heap. + + @param Type The type of memory to add + @param Start The starting address in the memory range Must be + page aligned + @param NumberOfPages The number of pages in the range + @param Attribute Attributes of the memory to add + + @return None. The range is added to the memory map + +**/ +VOID +CoreAddMemoryDescriptor ( + IN EFI_MEMORY_TYPE Type, + IN EFI_PHYSICAL_ADDRESS Start, + IN UINT64 NumberOfPages, + IN UINT64 Attribute + ) +{ + ASSERT(FALSE); +} + +/** + Internal function. Converts a memory range to use new attributes. + + @param Start The first address of the range Must be page + aligned + @param NumberOfPages The number of pages to convert + @param NewAttributes The new attributes value for the range. + +**/ +VOID +CoreUpdateMemoryAttributes ( + IN EFI_PHYSICAL_ADDRESS Start, + IN UINT64 NumberOfPages, + IN UINT64 NewAttributes + ) +{ + ASSERT(FALSE); +} + +EFI_STATUS +EFIAPI +DxeServicesTableLibConstructor ( + VOID + ) +{ + return CoreInitializeGcdServices (48, 36); +} \ No newline at end of file diff --git a/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.inf b/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.inf new file mode 100644 index 0000000..0eb3194 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.inf @@ -0,0 +1,40 @@ +## @file +# Instance of DXE Services Table Library using EFI Configuration Table. +# +# DXE Services Table Library that retrieves a pointer to the DXE Services +# Table from the Configuration Table in the EFI System Table. +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = DxeServicesTableLib + FILE_GUID = 3F614DC7-4B8B-4181-9AEF-995427F4E0A1 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = DxeServicesTableLib + CONSTRUCTOR = DxeServicesTableLibConstructor + +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + DxeServicesTableLibHost.c + Gcd.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + UefiBootServicesTableLib + diff --git a/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/Gcd.c b/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/Gcd.c new file mode 100644 index 0000000..ed9c935 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/Gcd.c @@ -0,0 +1,2158 @@ +/** @file + The file contains the GCD related services in the EFI Boot Services Table. + The GCD services are used to manage the memory and I/O regions that + are accessible to the CPU that is executing the DXE core. + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "Gcd.h" + +#define MEMORY_ATTRIBUTE_MASK (EFI_RESOURCE_ATTRIBUTE_PRESENT | \ + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | \ + EFI_RESOURCE_ATTRIBUTE_TESTED | \ + EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED | \ + EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED | \ + EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED | \ + EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED | \ + EFI_RESOURCE_ATTRIBUTE_16_BIT_IO | \ + EFI_RESOURCE_ATTRIBUTE_32_BIT_IO | \ + EFI_RESOURCE_ATTRIBUTE_64_BIT_IO | \ + EFI_RESOURCE_ATTRIBUTE_PERSISTENT ) + +#define TESTED_MEMORY_ATTRIBUTES (EFI_RESOURCE_ATTRIBUTE_PRESENT | \ + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | \ + EFI_RESOURCE_ATTRIBUTE_TESTED ) + +#define INITIALIZED_MEMORY_ATTRIBUTES (EFI_RESOURCE_ATTRIBUTE_PRESENT | \ + EFI_RESOURCE_ATTRIBUTE_INITIALIZED ) + +#define PRESENT_MEMORY_ATTRIBUTES (EFI_RESOURCE_ATTRIBUTE_PRESENT) + +#define EXCLUSIVE_MEMORY_ATTRIBUTES (EFI_MEMORY_UC | EFI_MEMORY_WC | \ + EFI_MEMORY_WT | EFI_MEMORY_WB | \ + EFI_MEMORY_WP | EFI_MEMORY_UCE) + +#define NONEXCLUSIVE_MEMORY_ATTRIBUTES (EFI_MEMORY_XP | EFI_MEMORY_RP | \ + EFI_MEMORY_RO) + +// +// Module Variables +// +EFI_LOCK mGcdMemorySpaceLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY); +EFI_LOCK mGcdIoSpaceLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY); +LIST_ENTRY mGcdMemorySpaceMap = INITIALIZE_LIST_HEAD_VARIABLE (mGcdMemorySpaceMap); +LIST_ENTRY mGcdIoSpaceMap = INITIALIZE_LIST_HEAD_VARIABLE (mGcdIoSpaceMap); + +EFI_GCD_MAP_ENTRY mGcdMemorySpaceMapEntryTemplate = { + EFI_GCD_MAP_SIGNATURE, + { + NULL, + NULL + }, + 0, + 0, + 0, + 0, + EfiGcdMemoryTypeNonExistent, + (EFI_GCD_IO_TYPE) 0, + NULL, + NULL +}; + +EFI_GCD_MAP_ENTRY mGcdIoSpaceMapEntryTemplate = { + EFI_GCD_MAP_SIGNATURE, + { + NULL, + NULL + }, + 0, + 0, + 0, + 0, + (EFI_GCD_MEMORY_TYPE) 0, + EfiGcdIoTypeNonExistent, + NULL, + NULL +}; + +GCD_ATTRIBUTE_CONVERSION_ENTRY mAttributeConversionTable[] = { + { EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, EFI_MEMORY_UC, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED, EFI_MEMORY_UCE, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE, EFI_MEMORY_WC, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE, EFI_MEMORY_WT, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE, EFI_MEMORY_WB, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_READ_PROTECTABLE, EFI_MEMORY_RP, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE, EFI_MEMORY_WP, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE, EFI_MEMORY_XP, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE, EFI_MEMORY_RO, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_PRESENT, EFI_MEMORY_PRESENT, FALSE }, + { EFI_RESOURCE_ATTRIBUTE_INITIALIZED, EFI_MEMORY_INITIALIZED, FALSE }, + { EFI_RESOURCE_ATTRIBUTE_TESTED, EFI_MEMORY_TESTED, FALSE }, + { EFI_RESOURCE_ATTRIBUTE_PERSISTABLE, EFI_MEMORY_NV, TRUE }, + { EFI_RESOURCE_ATTRIBUTE_MORE_RELIABLE, EFI_MEMORY_MORE_RELIABLE, TRUE }, + { 0, 0, FALSE } +}; + +/// +/// Lookup table used to print GCD Memory Space Map +/// +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mGcdMemoryTypeNames[] = { + "NonExist ", // EfiGcdMemoryTypeNonExistent + "Reserved ", // EfiGcdMemoryTypeReserved + "SystemMem", // EfiGcdMemoryTypeSystemMemory + "MMIO ", // EfiGcdMemoryTypeMemoryMappedIo + "PersisMem", // EfiGcdMemoryTypePersistent + "MoreRelia", // EfiGcdMemoryTypeMoreReliable + "Unknown " // EfiGcdMemoryTypeMaximum +}; + +/// +/// Lookup table used to print GCD I/O Space Map +/// +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mGcdIoTypeNames[] = { + "NonExist", // EfiGcdIoTypeNonExistent + "Reserved", // EfiGcdIoTypeReserved + "I/O ", // EfiGcdIoTypeIo + "Unknown " // EfiGcdIoTypeMaximum +}; + +/// +/// Lookup table used to print GCD Allocation Types +/// +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mGcdAllocationTypeNames[] = { + "AnySearchBottomUp ", // EfiGcdAllocateAnySearchBottomUp + "MaxAddressSearchBottomUp ", // EfiGcdAllocateMaxAddressSearchBottomUp + "AtAddress ", // EfiGcdAllocateAddress + "AnySearchTopDown ", // EfiGcdAllocateAnySearchTopDown + "MaxAddressSearchTopDown ", // EfiGcdAllocateMaxAddressSearchTopDown + "Unknown " // EfiGcdMaxAllocateType +}; + +/** + Dump the entire contents if the GCD Memory Space Map using DEBUG() macros when + PcdDebugPrintErrorLevel has the DEBUG_GCD bit set. + + @param InitialMap TRUE if the initial GCD Memory Map is being dumped. Otherwise, FALSE. + +**/ +VOID +EFIAPI +CoreDumpGcdMemorySpaceMap ( + BOOLEAN InitialMap + ) +{ + DEBUG_CODE ( + EFI_STATUS Status; + UINTN NumberOfDescriptors; + EFI_GCD_MEMORY_SPACE_DESCRIPTOR *MemorySpaceMap; + UINTN Index; + + Status = CoreGetMemorySpaceMap (&NumberOfDescriptors, &MemorySpaceMap); + ASSERT (Status == EFI_SUCCESS && MemorySpaceMap != NULL); + + if (InitialMap) { + DEBUG ((DEBUG_GCD, "GCD:Initial GCD Memory Space Map\n")); + } + DEBUG ((DEBUG_GCD, "GCDMemType Range Capabilities Attributes \n")); + DEBUG ((DEBUG_GCD, "========== ================================= ================ ================\n")); + for (Index = 0; Index < NumberOfDescriptors; Index++) { + DEBUG ((DEBUG_GCD, "%a %016lx-%016lx %016lx %016lx%c\n", + mGcdMemoryTypeNames[MIN (MemorySpaceMap[Index].GcdMemoryType, EfiGcdMemoryTypeMaximum-1)], + MemorySpaceMap[Index].BaseAddress, + MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - 1, + MemorySpaceMap[Index].Capabilities, + MemorySpaceMap[Index].Attributes, + MemorySpaceMap[Index].ImageHandle == NULL ? ' ' : '*' + )); + } + DEBUG ((DEBUG_GCD, "\n")); + FreePool (MemorySpaceMap); + ); +} + +/** + Dump the entire contents if the GCD I/O Space Map using DEBUG() macros when + PcdDebugPrintErrorLevel has the DEBUG_GCD bit set. + + @param InitialMap TRUE if the initial GCD I/O Map is being dumped. Otherwise, FALSE. + +**/ +VOID +EFIAPI +CoreDumpGcdIoSpaceMap ( + BOOLEAN InitialMap + ) +{ + DEBUG_CODE ( + EFI_STATUS Status; + UINTN NumberOfDescriptors; + EFI_GCD_IO_SPACE_DESCRIPTOR *IoSpaceMap; + UINTN Index; + + Status = CoreGetIoSpaceMap (&NumberOfDescriptors, &IoSpaceMap); + ASSERT (Status == EFI_SUCCESS && IoSpaceMap != NULL); + + if (InitialMap) { + DEBUG ((DEBUG_GCD, "GCD:Initial GCD I/O Space Map\n")); + } + + DEBUG ((DEBUG_GCD, "GCDIoType Range \n")); + DEBUG ((DEBUG_GCD, "========== =================================\n")); + for (Index = 0; Index < NumberOfDescriptors; Index++) { + DEBUG ((DEBUG_GCD, "%a %016lx-%016lx%c\n", + mGcdIoTypeNames[MIN (IoSpaceMap[Index].GcdIoType, EfiGcdIoTypeMaximum)], + IoSpaceMap[Index].BaseAddress, + IoSpaceMap[Index].BaseAddress + IoSpaceMap[Index].Length - 1, + IoSpaceMap[Index].ImageHandle == NULL ? ' ' : '*' + )); + } + DEBUG ((DEBUG_GCD, "\n")); + FreePool (IoSpaceMap); + ); +} + +/** + Validate resource descriptor HOB's attributes. + + If Attributes includes some memory resource's settings, it should include + the corresponding capabilites also. + + @param Attributes Resource descriptor HOB attributes. + +**/ +VOID +CoreValidateResourceDescriptorHobAttributes ( + IN UINT64 Attributes + ) +{ + ASSERT (((Attributes & EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED) == 0) || + ((Attributes & EFI_RESOURCE_ATTRIBUTE_READ_PROTECTABLE) != 0)); + ASSERT (((Attributes & EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED) == 0) || + ((Attributes & EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE) != 0)); + ASSERT (((Attributes & EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED) == 0) || + ((Attributes & EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE) != 0)); + ASSERT (((Attributes & EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED) == 0) || + ((Attributes & EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE) != 0)); + ASSERT (((Attributes & EFI_RESOURCE_ATTRIBUTE_PERSISTENT) == 0) || + ((Attributes & EFI_RESOURCE_ATTRIBUTE_PERSISTABLE) != 0)); +} + +/** + Acquire memory lock on mGcdMemorySpaceLock. + +**/ +VOID +CoreAcquireGcdMemoryLock ( + VOID + ) +{ + CoreAcquireLock (&mGcdMemorySpaceLock); +} + + + +/** + Release memory lock on mGcdMemorySpaceLock. + +**/ +VOID +CoreReleaseGcdMemoryLock ( + VOID + ) +{ + CoreReleaseLock (&mGcdMemorySpaceLock); +} + + + +/** + Acquire memory lock on mGcdIoSpaceLock. + +**/ +VOID +CoreAcquireGcdIoLock ( + VOID + ) +{ + CoreAcquireLock (&mGcdIoSpaceLock); +} + + +/** + Release memory lock on mGcdIoSpaceLock. + +**/ +VOID +CoreReleaseGcdIoLock ( + VOID + ) +{ + CoreReleaseLock (&mGcdIoSpaceLock); +} + + + +// +// GCD Initialization Worker Functions +// +/** + Aligns a value to the specified boundary. + + @param Value 64 bit value to align + @param Alignment Log base 2 of the boundary to align Value to + @param RoundUp TRUE if Value is to be rounded up to the nearest + aligned boundary. FALSE is Value is to be + rounded down to the nearest aligned boundary. + + @return A 64 bit value is the aligned to the value nearest Value with an alignment by Alignment. + +**/ +UINT64 +AlignValue ( + IN UINT64 Value, + IN UINTN Alignment, + IN BOOLEAN RoundUp + ) +{ + UINT64 AlignmentMask; + + AlignmentMask = LShiftU64 (1, Alignment) - 1; + if (RoundUp) { + Value += AlignmentMask; + } + return Value & (~AlignmentMask); +} + + +/** + Aligns address to the page boundary. + + @param Value 64 bit address to align + + @return A 64 bit value is the aligned to the value nearest Value with an alignment by Alignment. + +**/ +UINT64 +PageAlignAddress ( + IN UINT64 Value + ) +{ + return AlignValue (Value, EFI_PAGE_SHIFT, TRUE); +} + + +/** + Aligns length to the page boundary. + + @param Value 64 bit length to align + + @return A 64 bit value is the aligned to the value nearest Value with an alignment by Alignment. + +**/ +UINT64 +PageAlignLength ( + IN UINT64 Value + ) +{ + return AlignValue (Value, EFI_PAGE_SHIFT, FALSE); +} + +// +// GCD Memory Space Worker Functions +// + +/** + Allocate pool for two entries. + + @param TopEntry An entry of GCD map + @param BottomEntry An entry of GCD map + + @retval EFI_OUT_OF_RESOURCES No enough buffer to be allocated. + @retval EFI_SUCCESS Both entries successfully allocated. + +**/ +EFI_STATUS +CoreAllocateGcdMapEntry ( + IN OUT EFI_GCD_MAP_ENTRY **TopEntry, + IN OUT EFI_GCD_MAP_ENTRY **BottomEntry + ) +{ + // + // Set to mOnGuarding to TRUE before memory allocation. This will make sure + // that the entry memory is not "guarded" by HeapGuard. Otherwise it might + // cause problem when it's freed (if HeapGuard is enabled). + // + mOnGuarding = TRUE; + *TopEntry = AllocateZeroPool (sizeof (EFI_GCD_MAP_ENTRY)); + mOnGuarding = FALSE; + if (*TopEntry == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + mOnGuarding = TRUE; + *BottomEntry = AllocateZeroPool (sizeof (EFI_GCD_MAP_ENTRY)); + mOnGuarding = FALSE; + if (*BottomEntry == NULL) { + CoreFreePool (*TopEntry); + return EFI_OUT_OF_RESOURCES; + } + + return EFI_SUCCESS; +} + + +/** + Internal function. Inserts a new descriptor into a sorted list + + @param Link The linked list to insert the range BaseAddress + and Length into + @param Entry A pointer to the entry that is inserted + @param BaseAddress The base address of the new range + @param Length The length of the new range in bytes + @param TopEntry Top pad entry to insert if needed. + @param BottomEntry Bottom pad entry to insert if needed. + + @retval EFI_SUCCESS The new range was inserted into the linked list + +**/ +EFI_STATUS +CoreInsertGcdMapEntry ( + IN LIST_ENTRY *Link, + IN EFI_GCD_MAP_ENTRY *Entry, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN EFI_GCD_MAP_ENTRY *TopEntry, + IN EFI_GCD_MAP_ENTRY *BottomEntry + ) +{ + ASSERT (Length != 0); + + if (BaseAddress > Entry->BaseAddress) { + ASSERT (BottomEntry->Signature == 0); + + CopyMem (BottomEntry, Entry, sizeof (EFI_GCD_MAP_ENTRY)); + Entry->BaseAddress = BaseAddress; + BottomEntry->EndAddress = BaseAddress - 1; + InsertTailList (Link, &BottomEntry->Link); + } + + if ((BaseAddress + Length - 1) < Entry->EndAddress) { + ASSERT (TopEntry->Signature == 0); + + CopyMem (TopEntry, Entry, sizeof (EFI_GCD_MAP_ENTRY)); + TopEntry->BaseAddress = BaseAddress + Length; + Entry->EndAddress = BaseAddress + Length - 1; + InsertHeadList (Link, &TopEntry->Link); + } + + return EFI_SUCCESS; +} + + +/** + Merge the Gcd region specified by Link and its adjacent entry. + + @param Link Specify the entry to be merged (with its + adjacent entry). + @param Forward Direction (forward or backward). + @param Map Boundary. + + @retval EFI_SUCCESS Successfully returned. + @retval EFI_UNSUPPORTED These adjacent regions could not merge. + +**/ +EFI_STATUS +CoreMergeGcdMapEntry ( + IN LIST_ENTRY *Link, + IN BOOLEAN Forward, + IN LIST_ENTRY *Map + ) +{ + LIST_ENTRY *AdjacentLink; + EFI_GCD_MAP_ENTRY *Entry; + EFI_GCD_MAP_ENTRY *AdjacentEntry; + + // + // Get adjacent entry + // + if (Forward) { + AdjacentLink = Link->ForwardLink; + } else { + AdjacentLink = Link->BackLink; + } + + // + // If AdjacentLink is the head of the list, then no merge can be performed + // + if (AdjacentLink == Map) { + return EFI_SUCCESS; + } + + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + AdjacentEntry = CR (AdjacentLink, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + + if (Entry->Capabilities != AdjacentEntry->Capabilities) { + return EFI_UNSUPPORTED; + } + if (Entry->Attributes != AdjacentEntry->Attributes) { + return EFI_UNSUPPORTED; + } + if (Entry->GcdMemoryType != AdjacentEntry->GcdMemoryType) { + return EFI_UNSUPPORTED; + } + if (Entry->GcdIoType != AdjacentEntry->GcdIoType) { + return EFI_UNSUPPORTED; + } + if (Entry->ImageHandle != AdjacentEntry->ImageHandle) { + return EFI_UNSUPPORTED; + } + if (Entry->DeviceHandle != AdjacentEntry->DeviceHandle) { + return EFI_UNSUPPORTED; + } + + if (Forward) { + Entry->EndAddress = AdjacentEntry->EndAddress; + } else { + Entry->BaseAddress = AdjacentEntry->BaseAddress; + } + RemoveEntryList (AdjacentLink); + CoreFreePool (AdjacentEntry); + + return EFI_SUCCESS; +} + + +/** + Merge adjacent entries on total chain. + + @param TopEntry Top entry of GCD map. + @param BottomEntry Bottom entry of GCD map. + @param StartLink Start link of the list for this loop. + @param EndLink End link of the list for this loop. + @param Map Boundary. + + @retval EFI_SUCCESS GCD map successfully cleaned up. + +**/ +EFI_STATUS +CoreCleanupGcdMapEntry ( + IN EFI_GCD_MAP_ENTRY *TopEntry, + IN EFI_GCD_MAP_ENTRY *BottomEntry, + IN LIST_ENTRY *StartLink, + IN LIST_ENTRY *EndLink, + IN LIST_ENTRY *Map + ) +{ + LIST_ENTRY *Link; + + if (TopEntry->Signature == 0) { + CoreFreePool (TopEntry); + } + if (BottomEntry->Signature == 0) { + CoreFreePool (BottomEntry); + } + + Link = StartLink; + while (Link != EndLink->ForwardLink) { + CoreMergeGcdMapEntry (Link, FALSE, Map); + Link = Link->ForwardLink; + } + CoreMergeGcdMapEntry (EndLink, TRUE, Map); + + return EFI_SUCCESS; +} + + +/** + Search a segment of memory space in GCD map. The result is a range of GCD entry list. + + @param BaseAddress The start address of the segment. + @param Length The length of the segment. + @param StartLink The first GCD entry involves this segment of + memory space. + @param EndLink The first GCD entry involves this segment of + memory space. + @param Map Points to the start entry to search. + + @retval EFI_SUCCESS Successfully found the entry. + @retval EFI_NOT_FOUND Not found. + +**/ +EFI_STATUS +CoreSearchGcdMapEntry ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + OUT LIST_ENTRY **StartLink, + OUT LIST_ENTRY **EndLink, + IN LIST_ENTRY *Map + ) +{ + LIST_ENTRY *Link; + EFI_GCD_MAP_ENTRY *Entry; + + ASSERT (Length != 0); + if ((Map == NULL) || (Length == 0)) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_INVALID_PARAMETER)); + return EFI_INVALID_PARAMETER; + } + + *StartLink = NULL; + *EndLink = NULL; + + Link = Map->ForwardLink; + while (Link != Map) { + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + if (BaseAddress >= Entry->BaseAddress && BaseAddress <= Entry->EndAddress) { + *StartLink = Link; + } + if (*StartLink != NULL) { + if ((BaseAddress + Length - 1) >= Entry->BaseAddress && + (BaseAddress + Length - 1) <= Entry->EndAddress ) { + *EndLink = Link; + return EFI_SUCCESS; + } + } + Link = Link->ForwardLink; + } + + return EFI_NOT_FOUND; +} + + +/** + Count the amount of GCD map entries. + + @param Map Points to the start entry to do the count loop. + + @return The count. + +**/ +UINTN +CoreCountGcdMapEntry ( + IN LIST_ENTRY *Map + ) +{ + UINTN Count; + LIST_ENTRY *Link; + + Count = 0; + Link = Map->ForwardLink; + while (Link != Map) { + Count++; + Link = Link->ForwardLink; + } + + return Count; +} + + + +/** + Return the memory attribute specified by Attributes + + @param Attributes A num with some attribute bits on. + + @return The enum value of memory attribute. + +**/ +UINT64 +ConverToCpuArchAttributes ( + UINT64 Attributes + ) +{ + UINT64 CpuArchAttributes; + + CpuArchAttributes = Attributes & NONEXCLUSIVE_MEMORY_ATTRIBUTES; + + if ( (Attributes & EFI_MEMORY_UC) == EFI_MEMORY_UC) { + CpuArchAttributes |= EFI_MEMORY_UC; + } else if ( (Attributes & EFI_MEMORY_WC ) == EFI_MEMORY_WC) { + CpuArchAttributes |= EFI_MEMORY_WC; + } else if ( (Attributes & EFI_MEMORY_WT ) == EFI_MEMORY_WT) { + CpuArchAttributes |= EFI_MEMORY_WT; + } else if ( (Attributes & EFI_MEMORY_WB) == EFI_MEMORY_WB) { + CpuArchAttributes |= EFI_MEMORY_WB; + } else if ( (Attributes & EFI_MEMORY_UCE) == EFI_MEMORY_UCE) { + CpuArchAttributes |= EFI_MEMORY_UCE; + } else if ( (Attributes & EFI_MEMORY_WP) == EFI_MEMORY_WP) { + CpuArchAttributes |= EFI_MEMORY_WP; + } + + return CpuArchAttributes; +} + + +/** + Do operation on a segment of memory space specified (add, free, remove, change attribute ...). + + @param Operation The type of the operation + @param GcdMemoryType Additional information for the operation + @param GcdIoType Additional information for the operation + @param BaseAddress Start address of the segment + @param Length length of the segment + @param Capabilities The alterable attributes of a newly added entry + @param Attributes The attributes needs to be set + + @retval EFI_INVALID_PARAMETER Length is 0 or address (length) not aligned when + setting attribute. + @retval EFI_SUCCESS Action successfully done. + @retval EFI_UNSUPPORTED Could not find the proper descriptor on this + segment or set an upsupported attribute. + @retval EFI_ACCESS_DENIED Operate on an space non-exist or is used for an + image. + @retval EFI_NOT_FOUND Free a non-using space or remove a non-exist + space, and so on. + @retval EFI_OUT_OF_RESOURCES No buffer could be allocated. + @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol + is not available yet. +**/ +EFI_STATUS +CoreConvertSpace ( + IN UINTN Operation, + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN EFI_GCD_IO_TYPE GcdIoType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities, + IN UINT64 Attributes + ) +{ + EFI_STATUS Status; + LIST_ENTRY *Map; + LIST_ENTRY *Link; + EFI_GCD_MAP_ENTRY *Entry; + EFI_GCD_MAP_ENTRY *TopEntry; + EFI_GCD_MAP_ENTRY *BottomEntry; + LIST_ENTRY *StartLink; + LIST_ENTRY *EndLink; + UINT64 CpuArchAttributes; + + if (Length == 0) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_INVALID_PARAMETER)); + return EFI_INVALID_PARAMETER; + } + + Map = NULL; + if ((Operation & GCD_MEMORY_SPACE_OPERATION) != 0) { + CoreAcquireGcdMemoryLock (); + Map = &mGcdMemorySpaceMap; + } else if ((Operation & GCD_IO_SPACE_OPERATION) != 0) { + CoreAcquireGcdIoLock (); + Map = &mGcdIoSpaceMap; + } else { + ASSERT (FALSE); + } + + // + // Search for the list of descriptors that cover the range BaseAddress to BaseAddress+Length + // + Status = CoreSearchGcdMapEntry (BaseAddress, Length, &StartLink, &EndLink, Map); + if (EFI_ERROR (Status)) { + Status = EFI_UNSUPPORTED; + + goto Done; + } + ASSERT (StartLink != NULL && EndLink != NULL); + + // + // Verify that the list of descriptors are unallocated non-existent memory. + // + Link = StartLink; + while (Link != EndLink->ForwardLink) { + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + switch (Operation) { + // + // Add operations + // + case GCD_ADD_MEMORY_OPERATION: + if (Entry->GcdMemoryType != EfiGcdMemoryTypeNonExistent || + Entry->ImageHandle != NULL ) { + Status = EFI_ACCESS_DENIED; + goto Done; + } + break; + case GCD_ADD_IO_OPERATION: + if (Entry->GcdIoType != EfiGcdIoTypeNonExistent || + Entry->ImageHandle != NULL ) { + Status = EFI_ACCESS_DENIED; + goto Done; + } + break; + // + // Free operations + // + case GCD_FREE_MEMORY_OPERATION: + case GCD_FREE_IO_OPERATION: + if (Entry->ImageHandle == NULL) { + Status = EFI_NOT_FOUND; + goto Done; + } + break; + // + // Remove operations + // + case GCD_REMOVE_MEMORY_OPERATION: + if (Entry->GcdMemoryType == EfiGcdMemoryTypeNonExistent) { + Status = EFI_NOT_FOUND; + goto Done; + } + if (Entry->ImageHandle != NULL) { + Status = EFI_ACCESS_DENIED; + goto Done; + } + break; + case GCD_REMOVE_IO_OPERATION: + if (Entry->GcdIoType == EfiGcdIoTypeNonExistent) { + Status = EFI_NOT_FOUND; + goto Done; + } + if (Entry->ImageHandle != NULL) { + Status = EFI_ACCESS_DENIED; + goto Done; + } + break; + // + // Set attributes operation + // + case GCD_SET_ATTRIBUTES_MEMORY_OPERATION: + if ((Attributes & EFI_MEMORY_RUNTIME) != 0) { + if ((BaseAddress & EFI_PAGE_MASK) != 0 || (Length & EFI_PAGE_MASK) != 0) { + Status = EFI_INVALID_PARAMETER; + goto Done; + } + } + if ((Entry->Capabilities & Attributes) != Attributes) { + Status = EFI_UNSUPPORTED; + goto Done; + } + break; + // + // Set capabilities operation + // + case GCD_SET_CAPABILITIES_MEMORY_OPERATION: + if ((BaseAddress & EFI_PAGE_MASK) != 0 || (Length & EFI_PAGE_MASK) != 0) { + Status = EFI_INVALID_PARAMETER; + + goto Done; + } + // + // Current attributes must still be supported with new capabilities + // + if ((Capabilities & Entry->Attributes) != Entry->Attributes) { + Status = EFI_UNSUPPORTED; + goto Done; + } + break; + } + Link = Link->ForwardLink; + } + + // + // Allocate work space to perform this operation + // + Status = CoreAllocateGcdMapEntry (&TopEntry, &BottomEntry); + if (EFI_ERROR (Status)) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + ASSERT (TopEntry != NULL && BottomEntry != NULL); + + // + // Initialize CpuArchAttributes to suppress incorrect compiler/analyzer warnings. + // + CpuArchAttributes = 0; + if (Operation == GCD_SET_ATTRIBUTES_MEMORY_OPERATION) { + // + // Call CPU Arch Protocol to attempt to set attributes on the range + // + CpuArchAttributes = ConverToCpuArchAttributes (Attributes); + // + // CPU arch attributes include page attributes and cache attributes. + // Only page attributes supports to be cleared, but not cache attributes. + // Caller is expected to use GetMemorySpaceDescriptor() to get the current + // attributes, AND/OR attributes, and then calls SetMemorySpaceAttributes() + // to set the new attributes. + // So 0 CPU arch attributes should not happen as memory should always have + // a cache attribute (no matter UC or WB, etc). + // + // Here, 0 CPU arch attributes will be filtered to be compatible with the + // case that caller just calls SetMemorySpaceAttributes() with none CPU + // arch attributes (for example, RUNTIME) as the purpose of the case is not + // to clear CPU arch attributes. + // + if (CpuArchAttributes != 0) { + if (gCpu == NULL) { + Status = EFI_NOT_AVAILABLE_YET; + } else { + Status = gCpu->SetMemoryAttributes ( + gCpu, + BaseAddress, + Length, + CpuArchAttributes + ); + } + if (EFI_ERROR (Status)) { + CoreFreePool (TopEntry); + CoreFreePool (BottomEntry); + goto Done; + } + } + } + + // + // Convert/Insert the list of descriptors from StartLink to EndLink + // + Link = StartLink; + while (Link != EndLink->ForwardLink) { + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + CoreInsertGcdMapEntry (Link, Entry, BaseAddress, Length, TopEntry, BottomEntry); + switch (Operation) { + // + // Add operations + // + case GCD_ADD_MEMORY_OPERATION: + Entry->GcdMemoryType = GcdMemoryType; + if (GcdMemoryType == EfiGcdMemoryTypeMemoryMappedIo) { + Entry->Capabilities = Capabilities | EFI_MEMORY_RUNTIME | EFI_MEMORY_PORT_IO; + } else { + Entry->Capabilities = Capabilities | EFI_MEMORY_RUNTIME; + } + break; + case GCD_ADD_IO_OPERATION: + Entry->GcdIoType = GcdIoType; + break; + // + // Free operations + // + case GCD_FREE_MEMORY_OPERATION: + case GCD_FREE_IO_OPERATION: + Entry->ImageHandle = NULL; + Entry->DeviceHandle = NULL; + break; + // + // Remove operations + // + case GCD_REMOVE_MEMORY_OPERATION: + Entry->GcdMemoryType = EfiGcdMemoryTypeNonExistent; + Entry->Capabilities = 0; + break; + case GCD_REMOVE_IO_OPERATION: + Entry->GcdIoType = EfiGcdIoTypeNonExistent; + break; + // + // Set attributes operation + // + case GCD_SET_ATTRIBUTES_MEMORY_OPERATION: + if (CpuArchAttributes == 0) { + // + // Keep original CPU arch attributes when caller just calls + // SetMemorySpaceAttributes() with none CPU arch attributes (for example, RUNTIME). + // + Attributes |= (Entry->Attributes & (EXCLUSIVE_MEMORY_ATTRIBUTES | NONEXCLUSIVE_MEMORY_ATTRIBUTES)); + } + Entry->Attributes = Attributes; + break; + // + // Set capabilities operation + // + case GCD_SET_CAPABILITIES_MEMORY_OPERATION: + Entry->Capabilities = Capabilities; + break; + } + Link = Link->ForwardLink; + } + + // + // Cleanup + // + Status = CoreCleanupGcdMapEntry (TopEntry, BottomEntry, StartLink, EndLink, Map); + +Done: + DEBUG ((DEBUG_GCD, " Status = %r\n", Status)); + + if ((Operation & GCD_MEMORY_SPACE_OPERATION) != 0) { + CoreReleaseGcdMemoryLock (); + CoreDumpGcdMemorySpaceMap (FALSE); + } + if ((Operation & GCD_IO_SPACE_OPERATION) != 0) { + CoreReleaseGcdIoLock (); + CoreDumpGcdIoSpaceMap (FALSE); + } + + return Status; +} + + +/** + Check whether an entry could be used to allocate space. + + @param Operation Allocate memory or IO + @param Entry The entry to be tested + @param GcdMemoryType The desired memory type + @param GcdIoType The desired IO type + + @retval EFI_NOT_FOUND The memory type does not match or there's an + image handle on the entry. + @retval EFI_UNSUPPORTED The operation unsupported. + @retval EFI_SUCCESS It's ok for this entry to be used to allocate + space. + +**/ +EFI_STATUS +CoreAllocateSpaceCheckEntry ( + IN UINTN Operation, + IN EFI_GCD_MAP_ENTRY *Entry, + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN EFI_GCD_IO_TYPE GcdIoType + ) +{ + if (Entry->ImageHandle != NULL) { + return EFI_NOT_FOUND; + } + switch (Operation) { + case GCD_ALLOCATE_MEMORY_OPERATION: + if (Entry->GcdMemoryType != GcdMemoryType) { + return EFI_NOT_FOUND; + } + break; + case GCD_ALLOCATE_IO_OPERATION: + if (Entry->GcdIoType != GcdIoType) { + return EFI_NOT_FOUND; + } + break; + default: + return EFI_UNSUPPORTED; + } + return EFI_SUCCESS; +} + + +/** + Allocate space on specified address and length. + + @param Operation The type of operation (memory or IO) + @param GcdAllocateType The type of allocate operation + @param GcdMemoryType The desired memory type + @param GcdIoType The desired IO type + @param Alignment Align with 2^Alignment + @param Length Length to allocate + @param BaseAddress Base address to allocate + @param ImageHandle The image handle consume the allocated space. + @param DeviceHandle The device handle consume the allocated space. + + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_NOT_FOUND No descriptor for the desired space exists. + @retval EFI_SUCCESS Space successfully allocated. + +**/ +EFI_STATUS +CoreAllocateSpace ( + IN UINTN Operation, + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN EFI_GCD_IO_TYPE GcdIoType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ) +{ + EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS AlignmentMask; + EFI_PHYSICAL_ADDRESS MaxAddress; + LIST_ENTRY *Map; + LIST_ENTRY *Link; + LIST_ENTRY *SubLink; + EFI_GCD_MAP_ENTRY *Entry; + EFI_GCD_MAP_ENTRY *TopEntry; + EFI_GCD_MAP_ENTRY *BottomEntry; + LIST_ENTRY *StartLink; + LIST_ENTRY *EndLink; + BOOLEAN Found; + + // + // Make sure parameters are valid + // + if ((UINT32)GcdAllocateType >= EfiGcdMaxAllocateType) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_INVALID_PARAMETER)); + return EFI_INVALID_PARAMETER; + } + if ((UINT32)GcdMemoryType >= EfiGcdMemoryTypeMaximum) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_INVALID_PARAMETER)); + return EFI_INVALID_PARAMETER; + } + if ((UINT32)GcdIoType >= EfiGcdIoTypeMaximum) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_INVALID_PARAMETER)); + return EFI_INVALID_PARAMETER; + } + if (BaseAddress == NULL) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_INVALID_PARAMETER)); + return EFI_INVALID_PARAMETER; + } + if (ImageHandle == NULL) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_INVALID_PARAMETER)); + return EFI_INVALID_PARAMETER; + } + if (Alignment >= 64) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_NOT_FOUND)); + return EFI_NOT_FOUND; + } + if (Length == 0) { + DEBUG ((DEBUG_GCD, " Status = %r\n", EFI_INVALID_PARAMETER)); + return EFI_INVALID_PARAMETER; + } + + Map = NULL; + if ((Operation & GCD_MEMORY_SPACE_OPERATION) != 0) { + CoreAcquireGcdMemoryLock (); + Map = &mGcdMemorySpaceMap; + } else if ((Operation & GCD_IO_SPACE_OPERATION) != 0) { + CoreAcquireGcdIoLock (); + Map = &mGcdIoSpaceMap; + } else { + ASSERT (FALSE); + } + + Found = FALSE; + StartLink = NULL; + EndLink = NULL; + // + // Compute alignment bit mask + // + AlignmentMask = LShiftU64 (1, Alignment) - 1; + + if (GcdAllocateType == EfiGcdAllocateAddress) { + // + // Verify that the BaseAddress passed in is aligned correctly + // + if ((*BaseAddress & AlignmentMask) != 0) { + Status = EFI_NOT_FOUND; + goto Done; + } + + // + // Search for the list of descriptors that cover the range BaseAddress to BaseAddress+Length + // + Status = CoreSearchGcdMapEntry (*BaseAddress, Length, &StartLink, &EndLink, Map); + if (EFI_ERROR (Status)) { + Status = EFI_NOT_FOUND; + goto Done; + } + ASSERT (StartLink != NULL && EndLink != NULL); + + // + // Verify that the list of descriptors are unallocated memory matching GcdMemoryType. + // + Link = StartLink; + while (Link != EndLink->ForwardLink) { + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + Link = Link->ForwardLink; + Status = CoreAllocateSpaceCheckEntry (Operation, Entry, GcdMemoryType, GcdIoType); + if (EFI_ERROR (Status)) { + goto Done; + } + } + Found = TRUE; + } else { + + Entry = CR (Map->BackLink, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + + // + // Compute the maximum address to use in the search algorithm + // + if (GcdAllocateType == EfiGcdAllocateMaxAddressSearchBottomUp || + GcdAllocateType == EfiGcdAllocateMaxAddressSearchTopDown ) { + MaxAddress = *BaseAddress; + } else { + MaxAddress = Entry->EndAddress; + } + + // + // Verify that the list of descriptors are unallocated memory matching GcdMemoryType. + // + if (GcdAllocateType == EfiGcdAllocateMaxAddressSearchTopDown || + GcdAllocateType == EfiGcdAllocateAnySearchTopDown ) { + Link = Map->BackLink; + } else { + Link = Map->ForwardLink; + } + while (Link != Map) { + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + + if (GcdAllocateType == EfiGcdAllocateMaxAddressSearchTopDown || + GcdAllocateType == EfiGcdAllocateAnySearchTopDown ) { + Link = Link->BackLink; + } else { + Link = Link->ForwardLink; + } + + Status = CoreAllocateSpaceCheckEntry (Operation, Entry, GcdMemoryType, GcdIoType); + if (EFI_ERROR (Status)) { + continue; + } + + if (GcdAllocateType == EfiGcdAllocateMaxAddressSearchTopDown || + GcdAllocateType == EfiGcdAllocateAnySearchTopDown) { + if ((Entry->BaseAddress + Length) > MaxAddress) { + continue; + } + if (Length > (Entry->EndAddress + 1)) { + Status = EFI_NOT_FOUND; + goto Done; + } + if (Entry->EndAddress > MaxAddress) { + *BaseAddress = MaxAddress; + } else { + *BaseAddress = Entry->EndAddress; + } + *BaseAddress = (*BaseAddress + 1 - Length) & (~AlignmentMask); + } else { + *BaseAddress = (Entry->BaseAddress + AlignmentMask) & (~AlignmentMask); + if ((*BaseAddress + Length - 1) > MaxAddress) { + Status = EFI_NOT_FOUND; + goto Done; + } + } + + // + // Search for the list of descriptors that cover the range BaseAddress to BaseAddress+Length + // + Status = CoreSearchGcdMapEntry (*BaseAddress, Length, &StartLink, &EndLink, Map); + if (EFI_ERROR (Status)) { + Status = EFI_NOT_FOUND; + goto Done; + } + ASSERT (StartLink != NULL && EndLink != NULL); + + Link = StartLink; + // + // Verify that the list of descriptors are unallocated memory matching GcdMemoryType. + // + Found = TRUE; + SubLink = StartLink; + while (SubLink != EndLink->ForwardLink) { + Entry = CR (SubLink, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + Status = CoreAllocateSpaceCheckEntry (Operation, Entry, GcdMemoryType, GcdIoType); + if (EFI_ERROR (Status)) { + Link = SubLink; + Found = FALSE; + break; + } + SubLink = SubLink->ForwardLink; + } + if (Found) { + break; + } + } + } + if (!Found) { + Status = EFI_NOT_FOUND; + goto Done; + } + + // + // Allocate work space to perform this operation + // + Status = CoreAllocateGcdMapEntry (&TopEntry, &BottomEntry); + if (EFI_ERROR (Status)) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + ASSERT (TopEntry != NULL && BottomEntry != NULL); + + // + // Convert/Insert the list of descriptors from StartLink to EndLink + // + Link = StartLink; + while (Link != EndLink->ForwardLink) { + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + CoreInsertGcdMapEntry (Link, Entry, *BaseAddress, Length, TopEntry, BottomEntry); + Entry->ImageHandle = ImageHandle; + Entry->DeviceHandle = DeviceHandle; + Link = Link->ForwardLink; + } + + // + // Cleanup + // + Status = CoreCleanupGcdMapEntry (TopEntry, BottomEntry, StartLink, EndLink, Map); + +Done: + DEBUG ((DEBUG_GCD, " Status = %r", Status)); + if (!EFI_ERROR (Status)) { + DEBUG ((DEBUG_GCD, " (BaseAddress = %016lx)", *BaseAddress)); + } + DEBUG ((DEBUG_GCD, "\n")); + + if ((Operation & GCD_MEMORY_SPACE_OPERATION) != 0) { + CoreReleaseGcdMemoryLock (); + CoreDumpGcdMemorySpaceMap (FALSE); + } + if ((Operation & GCD_IO_SPACE_OPERATION) !=0) { + CoreReleaseGcdIoLock (); + CoreDumpGcdIoSpaceMap (FALSE); + } + + return Status; +} + + +/** + Add a segment of memory to GCD map. + + @param GcdMemoryType Memory type of the segment. + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + @param Capabilities alterable attributes of the segment. + + @retval EFI_INVALID_PARAMETER Invalid parameters. + @retval EFI_SUCCESS Successfully add a segment of memory space. + +**/ +EFI_STATUS +CoreInternalAddMemorySpace ( + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities + ) +{ + DEBUG ((DEBUG_GCD, "GCD:AddMemorySpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length)); + DEBUG ((DEBUG_GCD, " GcdMemoryType = %a\n", mGcdMemoryTypeNames[MIN (GcdMemoryType, EfiGcdMemoryTypeMaximum-1)])); + DEBUG ((DEBUG_GCD, " Capabilities = %016lx\n", Capabilities)); + + // + // Make sure parameters are valid + // + if (GcdMemoryType <= EfiGcdMemoryTypeNonExistent || GcdMemoryType >= EfiGcdMemoryTypeMaximum) { + return EFI_INVALID_PARAMETER; + } + + return CoreConvertSpace (GCD_ADD_MEMORY_OPERATION, GcdMemoryType, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, Capabilities, 0); +} + +// +// GCD Core Services +// + +/** + Allocates nonexistent memory, reserved memory, system memory, or memorymapped + I/O resources from the global coherency domain of the processor. + + @param GcdAllocateType The type of allocate operation + @param GcdMemoryType The desired memory type + @param Alignment Align with 2^Alignment + @param Length Length to allocate + @param BaseAddress Base address to allocate + @param ImageHandle The image handle consume the allocated space. + @param DeviceHandle The device handle consume the allocated space. + + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_NOT_FOUND No descriptor contains the desired space. + @retval EFI_SUCCESS Memory space successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreAllocateMemorySpace ( + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ) +{ + if (BaseAddress != NULL) { + DEBUG ((DEBUG_GCD, "GCD:AllocateMemorySpace(Base=%016lx,Length=%016lx)\n", *BaseAddress, Length)); + } else { + DEBUG ((DEBUG_GCD, "GCD:AllocateMemorySpace(Base=,Length=%016lx)\n", Length)); + } + DEBUG ((DEBUG_GCD, " GcdAllocateType = %a\n", mGcdAllocationTypeNames[MIN (GcdAllocateType, EfiGcdMaxAllocateType)])); + DEBUG ((DEBUG_GCD, " GcdMemoryType = %a\n", mGcdMemoryTypeNames[MIN (GcdMemoryType, EfiGcdMemoryTypeMaximum-1)])); + DEBUG ((DEBUG_GCD, " Alignment = %016lx\n", LShiftU64 (1, Alignment))); + DEBUG ((DEBUG_GCD, " ImageHandle = %p\n", ImageHandle)); + DEBUG ((DEBUG_GCD, " DeviceHandle = %p\n", DeviceHandle)); + + return CoreAllocateSpace ( + GCD_ALLOCATE_MEMORY_OPERATION, + GcdAllocateType, + GcdMemoryType, + (EFI_GCD_IO_TYPE) 0, + Alignment, + Length, + BaseAddress, + ImageHandle, + DeviceHandle + ); +} + + +/** + Adds reserved memory, system memory, or memory-mapped I/O resources to the + global coherency domain of the processor. + + @param GcdMemoryType Memory type of the memory space. + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + @param Capabilities alterable attributes of the memory space. + + @retval EFI_SUCCESS Merged this memory space into GCD map. + +**/ +EFI_STATUS +EFIAPI +CoreAddMemorySpace ( + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities + ) +{ + EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS PageBaseAddress; + UINT64 PageLength; + + Status = CoreInternalAddMemorySpace (GcdMemoryType, BaseAddress, Length, Capabilities); + + if (!EFI_ERROR (Status) && ((GcdMemoryType == EfiGcdMemoryTypeSystemMemory) || (GcdMemoryType == EfiGcdMemoryTypeMoreReliable))) { + + PageBaseAddress = PageAlignAddress (BaseAddress); + PageLength = PageAlignLength (BaseAddress + Length - PageBaseAddress); + + Status = CoreAllocateMemorySpace ( + EfiGcdAllocateAddress, + GcdMemoryType, + EFI_PAGE_SHIFT, + PageLength, + &PageBaseAddress, + gDxeCoreImageHandle, + NULL + ); + + if (!EFI_ERROR (Status)) { + CoreAddMemoryDescriptor ( + EfiConventionalMemory, + PageBaseAddress, + RShiftU64 (PageLength, EFI_PAGE_SHIFT), + Capabilities + ); + } else { + for (; PageLength != 0; PageLength -= EFI_PAGE_SIZE, PageBaseAddress += EFI_PAGE_SIZE) { + Status = CoreAllocateMemorySpace ( + EfiGcdAllocateAddress, + GcdMemoryType, + EFI_PAGE_SHIFT, + EFI_PAGE_SIZE, + &PageBaseAddress, + gDxeCoreImageHandle, + NULL + ); + + if (!EFI_ERROR (Status)) { + CoreAddMemoryDescriptor ( + EfiConventionalMemory, + PageBaseAddress, + 1, + Capabilities + ); + } + } + } + } + return Status; +} + + +/** + Frees nonexistent memory, reserved memory, system memory, or memory-mapped + I/O resources from the global coherency domain of the processor. + + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + + @retval EFI_SUCCESS Space successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreeMemorySpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +{ + DEBUG ((DEBUG_GCD, "GCD:FreeMemorySpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length)); + + return CoreConvertSpace (GCD_FREE_MEMORY_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, 0, 0); +} + + +/** + Removes reserved memory, system memory, or memory-mapped I/O resources from + the global coherency domain of the processor. + + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + + @retval EFI_SUCCESS Successfully remove a segment of memory space. + +**/ +EFI_STATUS +EFIAPI +CoreRemoveMemorySpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +{ + DEBUG ((DEBUG_GCD, "GCD:RemoveMemorySpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length)); + + return CoreConvertSpace (GCD_REMOVE_MEMORY_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, 0, 0); +} + + +/** + Build a memory descriptor according to an entry. + + @param Descriptor The descriptor to be built + @param Entry According to this entry + +**/ +VOID +BuildMemoryDescriptor ( + IN OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor, + IN EFI_GCD_MAP_ENTRY *Entry + ) +{ + Descriptor->BaseAddress = Entry->BaseAddress; + Descriptor->Length = Entry->EndAddress - Entry->BaseAddress + 1; + Descriptor->Capabilities = Entry->Capabilities; + Descriptor->Attributes = Entry->Attributes; + Descriptor->GcdMemoryType = Entry->GcdMemoryType; + Descriptor->ImageHandle = Entry->ImageHandle; + Descriptor->DeviceHandle = Entry->DeviceHandle; +} + + +/** + Retrieves the descriptor for a memory region containing a specified address. + + @param BaseAddress Specified start address + @param Descriptor Specified length + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully get memory space descriptor. + +**/ +EFI_STATUS +EFIAPI +CoreGetMemorySpaceDescriptor ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor + ) +{ + EFI_STATUS Status; + LIST_ENTRY *StartLink; + LIST_ENTRY *EndLink; + EFI_GCD_MAP_ENTRY *Entry; + + // + // Make sure parameters are valid + // + if (Descriptor == NULL) { + return EFI_INVALID_PARAMETER; + } + + CoreAcquireGcdMemoryLock (); + + // + // Search for the list of descriptors that contain BaseAddress + // + Status = CoreSearchGcdMapEntry (BaseAddress, 1, &StartLink, &EndLink, &mGcdMemorySpaceMap); + if (EFI_ERROR (Status)) { + Status = EFI_NOT_FOUND; + } else { + ASSERT (StartLink != NULL && EndLink != NULL); + // + // Copy the contents of the found descriptor into Descriptor + // + Entry = CR (StartLink, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + BuildMemoryDescriptor (Descriptor, Entry); + } + + CoreReleaseGcdMemoryLock (); + + return Status; +} + + +/** + Modifies the attributes for a memory region in the global coherency domain of the + processor. + + @param BaseAddress Specified start address + @param Length Specified length + @param Attributes Specified attributes + + @retval EFI_SUCCESS The attributes were set for the memory region. + @retval EFI_INVALID_PARAMETER Length is zero. + @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory + resource range specified by BaseAddress and Length. + @retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource + range specified by BaseAddress and Length. + @retval EFI_ACCESS_DEFINED The attributes for the memory resource range specified by + BaseAddress and Length cannot be modified. + @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the attributes of + the memory resource range. + @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol is + not available yet. + +**/ +EFI_STATUS +EFIAPI +CoreSetMemorySpaceAttributes ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Attributes + ) +{ + DEBUG ((DEBUG_GCD, "GCD:SetMemorySpaceAttributes(Base=%016lx,Length=%016lx)\n", BaseAddress, Length)); + DEBUG ((DEBUG_GCD, " Attributes = %016lx\n", Attributes)); + + return CoreConvertSpace (GCD_SET_ATTRIBUTES_MEMORY_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, 0, Attributes); +} + + +/** + Modifies the capabilities for a memory region in the global coherency domain of the + processor. + + @param BaseAddress The physical address that is the start address of a memory region. + @param Length The size in bytes of the memory region. + @param Capabilities The bit mask of capabilities that the memory region supports. + + @retval EFI_SUCCESS The capabilities were set for the memory region. + @retval EFI_INVALID_PARAMETER Length is zero. + @retval EFI_UNSUPPORTED The capabilities specified by Capabilities do not include the + memory region attributes currently in use. + @retval EFI_ACCESS_DENIED The capabilities for the memory resource range specified by + BaseAddress and Length cannot be modified. + @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the capabilities + of the memory resource range. +**/ +EFI_STATUS +EFIAPI +CoreSetMemorySpaceCapabilities ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities + ) +{ + EFI_STATUS Status; + + DEBUG ((DEBUG_GCD, "GCD:CoreSetMemorySpaceCapabilities(Base=%016lx,Length=%016lx)\n", BaseAddress, Length)); + DEBUG ((DEBUG_GCD, " Capabilities = %016lx\n", Capabilities)); + + Status = CoreConvertSpace (GCD_SET_CAPABILITIES_MEMORY_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, Capabilities, 0); + if (!EFI_ERROR(Status)) { + CoreUpdateMemoryAttributes(BaseAddress, RShiftU64(Length, EFI_PAGE_SHIFT), Capabilities & (~EFI_MEMORY_RUNTIME)); + } + + return Status; +} + + +/** + Returns a map of the memory resources in the global coherency domain of the + processor. + + @param NumberOfDescriptors Number of descriptors. + @param MemorySpaceMap Descriptor array + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Successfully get memory space map. + +**/ +EFI_STATUS +EFIAPI +CoreGetMemorySpaceMap ( + OUT UINTN *NumberOfDescriptors, + OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap + ) +{ + LIST_ENTRY *Link; + EFI_GCD_MAP_ENTRY *Entry; + EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor; + UINTN DescriptorCount; + + // + // Make sure parameters are valid + // + if (NumberOfDescriptors == NULL) { + return EFI_INVALID_PARAMETER; + } + if (MemorySpaceMap == NULL) { + return EFI_INVALID_PARAMETER; + } + + *NumberOfDescriptors = 0; + *MemorySpaceMap = NULL; + + // + // Take the lock, for entering the loop with the lock held. + // + CoreAcquireGcdMemoryLock (); + while (TRUE) { + // + // Count descriptors. It might be done more than once because the + // AllocatePool() called below has to be running outside the GCD lock. + // + DescriptorCount = CoreCountGcdMapEntry (&mGcdMemorySpaceMap); + if (DescriptorCount == *NumberOfDescriptors) { + // + // Fill in the MemorySpaceMap if no memory space map change. + // + Descriptor = *MemorySpaceMap; + Link = mGcdMemorySpaceMap.ForwardLink; + while (Link != &mGcdMemorySpaceMap) { + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + BuildMemoryDescriptor (Descriptor, Entry); + Descriptor++; + Link = Link->ForwardLink; + } + // + // We're done; exit the loop with the lock held. + // + break; + } + + // + // Release the lock before memory allocation, because it might cause + // GCD lock conflict in one of calling path in AllocatPool(). + // + CoreReleaseGcdMemoryLock (); + + // + // Allocate memory to store the MemorySpaceMap. Note it might be already + // allocated if there's map descriptor change during memory allocation at + // last time. + // + if (*MemorySpaceMap != NULL) { + FreePool (*MemorySpaceMap); + } + + *MemorySpaceMap = AllocatePool (DescriptorCount * + sizeof (EFI_GCD_MEMORY_SPACE_DESCRIPTOR)); + if (*MemorySpaceMap == NULL) { + *NumberOfDescriptors = 0; + return EFI_OUT_OF_RESOURCES; + } + + // + // Save the descriptor count got before for another round of check to make + // sure we won't miss any, since we have code running outside the GCD lock. + // + *NumberOfDescriptors = DescriptorCount; + // + // Re-acquire the lock, for the next iteration. + // + CoreAcquireGcdMemoryLock (); + } + // + // We exited the loop with the lock held, release it. + // + CoreReleaseGcdMemoryLock (); + + return EFI_SUCCESS; +} + + +/** + Adds reserved I/O or I/O resources to the global coherency domain of the processor. + + @param GcdIoType IO type of the segment. + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Merged this segment into GCD map. + @retval EFI_INVALID_PARAMETER Parameter not valid + +**/ +EFI_STATUS +EFIAPI +CoreAddIoSpace ( + IN EFI_GCD_IO_TYPE GcdIoType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +{ + DEBUG ((DEBUG_GCD, "GCD:AddIoSpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length)); + DEBUG ((DEBUG_GCD, " GcdIoType = %a\n", mGcdIoTypeNames[MIN (GcdIoType, EfiGcdIoTypeMaximum)])); + + // + // Make sure parameters are valid + // + if (GcdIoType <= EfiGcdIoTypeNonExistent || GcdIoType >= EfiGcdIoTypeMaximum) { + return EFI_INVALID_PARAMETER; + } + return CoreConvertSpace (GCD_ADD_IO_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, GcdIoType, BaseAddress, Length, 0, 0); +} + + +/** + Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency + domain of the processor. + + @param GcdAllocateType The type of allocate operation + @param GcdIoType The desired IO type + @param Alignment Align with 2^Alignment + @param Length Length to allocate + @param BaseAddress Base address to allocate + @param ImageHandle The image handle consume the allocated space. + @param DeviceHandle The device handle consume the allocated space. + + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_NOT_FOUND No descriptor contains the desired space. + @retval EFI_SUCCESS IO space successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreAllocateIoSpace ( + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_IO_TYPE GcdIoType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ) +{ + if (BaseAddress != NULL) { + DEBUG ((DEBUG_GCD, "GCD:AllocateIoSpace(Base=%016lx,Length=%016lx)\n", *BaseAddress, Length)); + } else { + DEBUG ((DEBUG_GCD, "GCD:AllocateIoSpace(Base=,Length=%016lx)\n", Length)); + } + DEBUG ((DEBUG_GCD, " GcdAllocateType = %a\n", mGcdAllocationTypeNames[MIN (GcdAllocateType, EfiGcdMaxAllocateType)])); + DEBUG ((DEBUG_GCD, " GcdIoType = %a\n", mGcdIoTypeNames[MIN (GcdIoType, EfiGcdIoTypeMaximum)])); + DEBUG ((DEBUG_GCD, " Alignment = %016lx\n", LShiftU64 (1, Alignment))); + DEBUG ((DEBUG_GCD, " ImageHandle = %p\n", ImageHandle)); + DEBUG ((DEBUG_GCD, " DeviceHandle = %p\n", DeviceHandle)); + + return CoreAllocateSpace ( + GCD_ALLOCATE_IO_OPERATION, + GcdAllocateType, + (EFI_GCD_MEMORY_TYPE) 0, + GcdIoType, + Alignment, + Length, + BaseAddress, + ImageHandle, + DeviceHandle + ); +} + + +/** + Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency + domain of the processor. + + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Space successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreeIoSpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +{ + DEBUG ((DEBUG_GCD, "GCD:FreeIoSpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length)); + + return CoreConvertSpace (GCD_FREE_IO_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, 0, 0); +} + + +/** + Removes reserved I/O or I/O resources from the global coherency domain of the + processor. + + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Successfully removed a segment of IO space. + +**/ +EFI_STATUS +EFIAPI +CoreRemoveIoSpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +{ + DEBUG ((DEBUG_GCD, "GCD:RemoveIoSpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length)); + + return CoreConvertSpace (GCD_REMOVE_IO_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, 0, 0); +} + + +/** + Build a IO descriptor according to an entry. + + @param Descriptor The descriptor to be built + @param Entry According to this entry + +**/ +VOID +BuildIoDescriptor ( + IN EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor, + IN EFI_GCD_MAP_ENTRY *Entry + ) +{ + Descriptor->BaseAddress = Entry->BaseAddress; + Descriptor->Length = Entry->EndAddress - Entry->BaseAddress + 1; + Descriptor->GcdIoType = Entry->GcdIoType; + Descriptor->ImageHandle = Entry->ImageHandle; + Descriptor->DeviceHandle = Entry->DeviceHandle; +} + + +/** + Retrieves the descriptor for an I/O region containing a specified address. + + @param BaseAddress Specified start address + @param Descriptor Specified length + + @retval EFI_INVALID_PARAMETER Descriptor is NULL. + @retval EFI_SUCCESS Successfully get the IO space descriptor. + +**/ +EFI_STATUS +EFIAPI +CoreGetIoSpaceDescriptor ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor + ) +{ + EFI_STATUS Status; + LIST_ENTRY *StartLink; + LIST_ENTRY *EndLink; + EFI_GCD_MAP_ENTRY *Entry; + + // + // Make sure parameters are valid + // + if (Descriptor == NULL) { + return EFI_INVALID_PARAMETER; + } + + CoreAcquireGcdIoLock (); + + // + // Search for the list of descriptors that contain BaseAddress + // + Status = CoreSearchGcdMapEntry (BaseAddress, 1, &StartLink, &EndLink, &mGcdIoSpaceMap); + if (EFI_ERROR (Status)) { + Status = EFI_NOT_FOUND; + } else { + ASSERT (StartLink != NULL && EndLink != NULL); + // + // Copy the contents of the found descriptor into Descriptor + // + Entry = CR (StartLink, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + BuildIoDescriptor (Descriptor, Entry); + } + + CoreReleaseGcdIoLock (); + + return Status; +} + + +/** + Returns a map of the I/O resources in the global coherency domain of the processor. + + @param NumberOfDescriptors Number of descriptors. + @param IoSpaceMap Descriptor array + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Successfully get IO space map. + +**/ +EFI_STATUS +EFIAPI +CoreGetIoSpaceMap ( + OUT UINTN *NumberOfDescriptors, + OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap + ) +{ + EFI_STATUS Status; + LIST_ENTRY *Link; + EFI_GCD_MAP_ENTRY *Entry; + EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor; + + // + // Make sure parameters are valid + // + if (NumberOfDescriptors == NULL) { + return EFI_INVALID_PARAMETER; + } + if (IoSpaceMap == NULL) { + return EFI_INVALID_PARAMETER; + } + + CoreAcquireGcdIoLock (); + + // + // Count the number of descriptors + // + *NumberOfDescriptors = CoreCountGcdMapEntry (&mGcdIoSpaceMap); + + // + // Allocate the IoSpaceMap + // + *IoSpaceMap = AllocatePool (*NumberOfDescriptors * sizeof (EFI_GCD_IO_SPACE_DESCRIPTOR)); + if (*IoSpaceMap == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + // + // Fill in the IoSpaceMap + // + Descriptor = *IoSpaceMap; + Link = mGcdIoSpaceMap.ForwardLink; + while (Link != &mGcdIoSpaceMap) { + Entry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE); + BuildIoDescriptor (Descriptor, Entry); + Descriptor++; + Link = Link->ForwardLink; + } + Status = EFI_SUCCESS; + +Done: + CoreReleaseGcdIoLock (); + return Status; +} + + +/** + Converts a Resource Descriptor HOB attributes mask to an EFI Memory Descriptor + capabilities mask + + @param GcdMemoryType Type of resource in the GCD memory map. + @param Attributes The attribute mask in the Resource Descriptor + HOB. + + @return The capabilities mask for an EFI Memory Descriptor. + +**/ +UINT64 +CoreConvertResourceDescriptorHobAttributesToCapabilities ( + EFI_GCD_MEMORY_TYPE GcdMemoryType, + UINT64 Attributes + ) +{ + UINT64 Capabilities; + GCD_ATTRIBUTE_CONVERSION_ENTRY *Conversion; + + // + // Convert the Resource HOB Attributes to an EFI Memory Capabilities mask + // + for (Capabilities = 0, Conversion = mAttributeConversionTable; Conversion->Attribute != 0; Conversion++) { + if (Conversion->Memory || ((GcdMemoryType != EfiGcdMemoryTypeSystemMemory) && (GcdMemoryType != EfiGcdMemoryTypeMoreReliable))) { + if (Attributes & Conversion->Attribute) { + Capabilities |= Conversion->Capability; + } + } + } + + return Capabilities; +} + + +/** + External function. Initializes the GCD and memory services based on the memory + descriptor HOBs. This function is responsible for priming the GCD map and the + memory map, so memory allocations and resource allocations can be made. The + HobStart will be relocated to a pool buffer. + + @param HobStart The start address of the HOB + @param MemoryBaseAddress Start address of memory region found to init DXE + core. + @param MemoryLength Length of memory region found to init DXE core. + + @retval EFI_SUCCESS GCD services successfully initialized. + +**/ +EFI_STATUS +CoreInitializeGcdServices ( + IN UINT8 SizeOfMemorySpace, + IN UINT8 SizeOfIoSpace + ) +{ + EFI_GCD_MAP_ENTRY *Entry; + + // + // Initialize the GCD Memory Space Map + // + Entry = AllocateCopyPool (sizeof (EFI_GCD_MAP_ENTRY), &mGcdMemorySpaceMapEntryTemplate); + ASSERT (Entry != NULL); + + Entry->EndAddress = LShiftU64 (1, SizeOfMemorySpace) - 1; + + InsertHeadList (&mGcdMemorySpaceMap, &Entry->Link); + + CoreDumpGcdMemorySpaceMap (TRUE); + + // + // Initialize the GCD I/O Space Map + // + Entry = AllocateCopyPool (sizeof (EFI_GCD_MAP_ENTRY), &mGcdIoSpaceMapEntryTemplate); + ASSERT (Entry != NULL); + + Entry->EndAddress = LShiftU64 (1, SizeOfIoSpace) - 1; + + InsertHeadList (&mGcdIoSpaceMap, &Entry->Link); + + CoreDumpGcdIoSpaceMap (TRUE); + + return EFI_SUCCESS; +} + +EFI_DXE_SERVICES mDxeServices = { + { + DXE_SERVICES_SIGNATURE, // Signature + DXE_SERVICES_REVISION, // Revision + sizeof (DXE_SERVICES), // HeaderSize + 0, // CRC32 + 0 // Reserved + }, + (EFI_ADD_MEMORY_SPACE) CoreAddMemorySpace, // AddMemorySpace + (EFI_ALLOCATE_MEMORY_SPACE) CoreAllocateMemorySpace, // AllocateMemorySpace + (EFI_FREE_MEMORY_SPACE) CoreFreeMemorySpace, // FreeMemorySpace + (EFI_REMOVE_MEMORY_SPACE) CoreRemoveMemorySpace, // RemoveMemorySpace + (EFI_GET_MEMORY_SPACE_DESCRIPTOR) CoreGetMemorySpaceDescriptor, // GetMemorySpaceDescriptor + (EFI_SET_MEMORY_SPACE_ATTRIBUTES) CoreSetMemorySpaceAttributes, // SetMemorySpaceAttributes + (EFI_GET_MEMORY_SPACE_MAP) CoreGetMemorySpaceMap, // GetMemorySpaceMap + (EFI_ADD_IO_SPACE) CoreAddIoSpace, // AddIoSpace + (EFI_ALLOCATE_IO_SPACE) CoreAllocateIoSpace, // AllocateIoSpace + (EFI_FREE_IO_SPACE) CoreFreeIoSpace, // FreeIoSpace + (EFI_REMOVE_IO_SPACE) CoreRemoveIoSpace, // RemoveIoSpace + (EFI_GET_IO_SPACE_DESCRIPTOR) CoreGetIoSpaceDescriptor, // GetIoSpaceDescriptor + (EFI_GET_IO_SPACE_MAP) CoreGetIoSpaceMap, // GetIoSpaceMap + (EFI_DISPATCH) CoreDispatcher, // Dispatch + (EFI_SCHEDULE) CoreSchedule, // Schedule + (EFI_TRUST) CoreTrust, // Trust + (EFI_PROCESS_FIRMWARE_VOLUME) CoreProcessFirmwareVolume, // ProcessFirmwareVolume + (EFI_SET_MEMORY_SPACE_CAPABILITIES)CoreSetMemorySpaceCapabilities, // SetMemorySpaceCapabilities +}; diff --git a/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/Gcd.h b/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/Gcd.h new file mode 100644 index 0000000..9b06767 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/DxeServicesTableLibHost/Gcd.h @@ -0,0 +1,588 @@ +/** @file + GCD Operations and data structure used to + convert from GCD attributes to EFI Memory Map attributes. + +Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _GCD_H_ +#define _GCD_H_ + +#include +#include +#include +#include +#include +#include +#include + +// +// GCD Operations +// +#define GCD_MEMORY_SPACE_OPERATION 0x20 +#define GCD_IO_SPACE_OPERATION 0x40 + +#define GCD_ADD_MEMORY_OPERATION (GCD_MEMORY_SPACE_OPERATION | 0) +#define GCD_ALLOCATE_MEMORY_OPERATION (GCD_MEMORY_SPACE_OPERATION | 1) +#define GCD_FREE_MEMORY_OPERATION (GCD_MEMORY_SPACE_OPERATION | 2) +#define GCD_REMOVE_MEMORY_OPERATION (GCD_MEMORY_SPACE_OPERATION | 3) +#define GCD_SET_ATTRIBUTES_MEMORY_OPERATION (GCD_MEMORY_SPACE_OPERATION | 4) +#define GCD_SET_CAPABILITIES_MEMORY_OPERATION (GCD_MEMORY_SPACE_OPERATION | 5) + +#define GCD_ADD_IO_OPERATION (GCD_IO_SPACE_OPERATION | 0) +#define GCD_ALLOCATE_IO_OPERATION (GCD_IO_SPACE_OPERATION | 1) +#define GCD_FREE_IO_OPERATION (GCD_IO_SPACE_OPERATION | 2) +#define GCD_REMOVE_IO_OPERATION (GCD_IO_SPACE_OPERATION | 3) + +// +// The data structure used to convert from GCD attributes to EFI Memory Map attributes +// +typedef struct { + UINT64 Attribute; + UINT64 Capability; + BOOLEAN Memory; +} GCD_ATTRIBUTE_CONVERSION_ENTRY; + +// From DxeMain.h + +// +//The data structure of GCD memory map entry +// +#define EFI_GCD_MAP_SIGNATURE SIGNATURE_32('g','c','d','m') +typedef struct { + UINTN Signature; + LIST_ENTRY Link; + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 EndAddress; + UINT64 Capabilities; + UINT64 Attributes; + EFI_GCD_MEMORY_TYPE GcdMemoryType; + EFI_GCD_IO_TYPE GcdIoType; + EFI_HANDLE ImageHandle; + EFI_HANDLE DeviceHandle; +} EFI_GCD_MAP_ENTRY; + + +// +// attributes for reserved memory before it is promoted to system memory +// +#define EFI_MEMORY_PRESENT 0x0100000000000000ULL +#define EFI_MEMORY_INITIALIZED 0x0200000000000000ULL +#define EFI_MEMORY_TESTED 0x0400000000000000ULL + +// +// range for memory mapped port I/O on IPF +// +#define EFI_MEMORY_PORT_IO 0x4000000000000000ULL + + +/** + Adds reserved memory, system memory, or memory-mapped I/O resources to the + global coherency domain of the processor. + + @param GcdMemoryType Memory type of the memory space. + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + @param Capabilities alterable attributes of the memory space. + + @retval EFI_SUCCESS Merged this memory space into GCD map. + +**/ +EFI_STATUS +EFIAPI +CoreAddMemorySpace ( + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities + ); + + +/** + Allocates nonexistent memory, reserved memory, system memory, or memorymapped + I/O resources from the global coherency domain of the processor. + + @param GcdAllocateType The type of allocate operation + @param GcdMemoryType The desired memory type + @param Alignment Align with 2^Alignment + @param Length Length to allocate + @param BaseAddress Base address to allocate + @param ImageHandle The image handle consume the allocated space. + @param DeviceHandle The device handle consume the allocated space. + + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_NOT_FOUND No descriptor contains the desired space. + @retval EFI_SUCCESS Memory space successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreAllocateMemorySpace ( + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ); + + +/** + Frees nonexistent memory, reserved memory, system memory, or memory-mapped + I/O resources from the global coherency domain of the processor. + + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + + @retval EFI_SUCCESS Space successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreeMemorySpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Removes reserved memory, system memory, or memory-mapped I/O resources from + the global coherency domain of the processor. + + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + + @retval EFI_SUCCESS Successfully remove a segment of memory space. + +**/ +EFI_STATUS +EFIAPI +CoreRemoveMemorySpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Retrieves the descriptor for a memory region containing a specified address. + + @param BaseAddress Specified start address + @param Descriptor Specified length + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully get memory space descriptor. + +**/ +EFI_STATUS +EFIAPI +CoreGetMemorySpaceDescriptor ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor + ); + + +/** + Modifies the attributes for a memory region in the global coherency domain of the + processor. + + @param BaseAddress Specified start address + @param Length Specified length + @param Attributes Specified attributes + + @retval EFI_SUCCESS The attributes were set for the memory region. + @retval EFI_INVALID_PARAMETER Length is zero. + @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory + resource range specified by BaseAddress and Length. + @retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource + range specified by BaseAddress and Length. + @retval EFI_ACCESS_DENIED The attributes for the memory resource range specified by + BaseAddress and Length cannot be modified. + @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the attributes of + the memory resource range. + @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol is + not available yet. + +**/ +EFI_STATUS +EFIAPI +CoreSetMemorySpaceAttributes ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Attributes + ); + + +/** + Modifies the capabilities for a memory region in the global coherency domain of the + processor. + + @param BaseAddress The physical address that is the start address of a memory region. + @param Length The size in bytes of the memory region. + @param Capabilities The bit mask of capabilities that the memory region supports. + + @retval EFI_SUCCESS The capabilities were set for the memory region. + @retval EFI_INVALID_PARAMETER Length is zero. + @retval EFI_UNSUPPORTED The capabilities specified by Capabilities do not include the + memory region attributes currently in use. + @retval EFI_ACCESS_DENIED The capabilities for the memory resource range specified by + BaseAddress and Length cannot be modified. + @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the capabilities + of the memory resource range. +**/ +EFI_STATUS +EFIAPI +CoreSetMemorySpaceCapabilities ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities + ); + + +/** + Returns a map of the memory resources in the global coherency domain of the + processor. + + @param NumberOfDescriptors Number of descriptors. + @param MemorySpaceMap Descriptor array + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Successfully get memory space map. + +**/ +EFI_STATUS +EFIAPI +CoreGetMemorySpaceMap ( + OUT UINTN *NumberOfDescriptors, + OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap + ); + + +/** + Adds reserved I/O or I/O resources to the global coherency domain of the processor. + + @param GcdIoType IO type of the segment. + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Merged this segment into GCD map. + @retval EFI_INVALID_PARAMETER Parameter not valid + +**/ +EFI_STATUS +EFIAPI +CoreAddIoSpace ( + IN EFI_GCD_IO_TYPE GcdIoType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency + domain of the processor. + + @param GcdAllocateType The type of allocate operation + @param GcdIoType The desired IO type + @param Alignment Align with 2^Alignment + @param Length Length to allocate + @param BaseAddress Base address to allocate + @param ImageHandle The image handle consume the allocated space. + @param DeviceHandle The device handle consume the allocated space. + + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_NOT_FOUND No descriptor contains the desired space. + @retval EFI_SUCCESS IO space successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreAllocateIoSpace ( + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_IO_TYPE GcdIoType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ); + + +/** + Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency + domain of the processor. + + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Space successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreeIoSpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Removes reserved I/O or I/O resources from the global coherency domain of the + processor. + + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Successfully removed a segment of IO space. + +**/ +EFI_STATUS +EFIAPI +CoreRemoveIoSpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Retrieves the descriptor for an I/O region containing a specified address. + + @param BaseAddress Specified start address + @param Descriptor Specified length + + @retval EFI_INVALID_PARAMETER Descriptor is NULL. + @retval EFI_SUCCESS Successfully get the IO space descriptor. + +**/ +EFI_STATUS +EFIAPI +CoreGetIoSpaceDescriptor ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor + ); + + +/** + Returns a map of the I/O resources in the global coherency domain of the processor. + + @param NumberOfDescriptors Number of descriptors. + @param IoSpaceMap Descriptor array + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Successfully get IO space map. + +**/ +EFI_STATUS +EFIAPI +CoreGetIoSpaceMap ( + OUT UINTN *NumberOfDescriptors, + OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap + ); + +/** + This is the main Dispatcher for DXE and it exits when there are no more + drivers to run. Drain the mScheduledQueue and load and start a PE + image for each driver. Search the mDiscoveredList to see if any driver can + be placed on the mScheduledQueue. If no drivers are placed on the + mScheduledQueue exit the function. On exit it is assumed the Bds() + will be called, and when the Bds() exits the Dispatcher will be called + again. + + @retval EFI_ALREADY_STARTED The DXE Dispatcher is already running + @retval EFI_NOT_FOUND No DXE Drivers were dispatched + @retval EFI_SUCCESS One or more DXE Drivers were dispatched + +**/ +EFI_STATUS +EFIAPI +CoreDispatcher ( + VOID + ); + +/** + Check every driver and locate a matching one. If the driver is found, the Unrequested + state flag is cleared. + + @param FirmwareVolumeHandle The handle of the Firmware Volume that contains + the firmware file specified by DriverName. + @param DriverName The Driver name to put in the Dependent state. + + @retval EFI_SUCCESS The DriverName was found and it's SOR bit was + cleared + @retval EFI_NOT_FOUND The DriverName does not exist or it's SOR bit was + not set. + +**/ +EFI_STATUS +EFIAPI +CoreSchedule ( + IN EFI_HANDLE FirmwareVolumeHandle, + IN EFI_GUID *DriverName + ); + + +/** + Convert a driver from the Untrused back to the Scheduled state. + + @param FirmwareVolumeHandle The handle of the Firmware Volume that contains + the firmware file specified by DriverName. + @param DriverName The Driver name to put in the Scheduled state + + @retval EFI_SUCCESS The file was found in the untrusted state, and it + was promoted to the trusted state. + @retval EFI_NOT_FOUND The file was not found in the untrusted state. + +**/ +EFI_STATUS +EFIAPI +CoreTrust ( + IN EFI_HANDLE FirmwareVolumeHandle, + IN EFI_GUID *DriverName + ); + +/** + This DXE service routine is used to process a firmware volume. In + particular, it can be called by BDS to process a single firmware + volume found in a capsule. + + @param FvHeader pointer to a firmware volume header + @param Size the size of the buffer pointed to by FvHeader + @param FVProtocolHandle the handle on which a firmware volume protocol + was produced for the firmware volume passed in. + + @retval EFI_OUT_OF_RESOURCES if an FVB could not be produced due to lack of + system resources + @retval EFI_VOLUME_CORRUPTED if the volume was corrupted + @retval EFI_SUCCESS a firmware volume protocol was produced for the + firmware volume + +**/ +EFI_STATUS +EFIAPI +CoreProcessFirmwareVolume ( + IN VOID *FvHeader, + IN UINTN Size, + OUT EFI_HANDLE *FVProtocolHandle + ); + +/** + Raising to the task priority level of the mutual exclusion + lock, and then acquires ownership of the lock. + + @param Lock The lock to acquire + + @return Lock owned + +**/ +VOID +CoreAcquireLock ( + IN EFI_LOCK *Lock + ); + +/** + Releases ownership of the mutual exclusion lock, and + restores the previous task priority level. + + @param Lock The lock to release + + @return Lock unowned + +**/ +VOID +CoreReleaseLock ( + IN EFI_LOCK *Lock + ); + +/** + Raise the task priority level to the new level. + High level is implemented by disabling processor interrupts. + + @param NewTpl New task priority level + + @return The previous task priority level + +**/ +EFI_TPL +EFIAPI +CoreRaiseTpl ( + IN EFI_TPL NewTpl + ); + +/** + Lowers the task priority to the previous value. If the new + priority unmasks events at a higher priority, they are dispatched. + + @param NewTpl New, lower, task priority + +**/ +VOID +EFIAPI +CoreRestoreTpl ( + IN EFI_TPL NewTpl + ); + +/** + Frees pool. + + @param Buffer The allocated pool entry to free + + @retval EFI_INVALID_PARAMETER Buffer is not a valid value. + @retval EFI_SUCCESS Pool successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreePool ( + IN VOID *Buffer + ); + +/** + Called to initialize the memory map and add descriptors to + the current descriptor list. + The first descriptor that is added must be general usable + memory as the addition allocates heap. + + @param Type The type of memory to add + @param Start The starting address in the memory range Must be + page aligned + @param NumberOfPages The number of pages in the range + @param Attribute Attributes of the memory to add + + @return None. The range is added to the memory map + +**/ +VOID +CoreAddMemoryDescriptor ( + IN EFI_MEMORY_TYPE Type, + IN EFI_PHYSICAL_ADDRESS Start, + IN UINT64 NumberOfPages, + IN UINT64 Attribute + ); + +/** + Internal function. Converts a memory range to use new attributes. + + @param Start The first address of the range Must be page + aligned + @param NumberOfPages The number of pages to convert + @param NewAttributes The new attributes value for the range. + +**/ +VOID +CoreUpdateMemoryAttributes ( + IN EFI_PHYSICAL_ADDRESS Start, + IN UINT64 NumberOfPages, + IN UINT64 NewAttributes + ); + +extern EFI_HANDLE gDxeCoreImageHandle; +extern EFI_CPU_ARCH_PROTOCOL *gCpu; + +// From HeapGuard.h +extern BOOLEAN mOnGuarding; + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/HobLibHost/HobLibHost.c b/HBFA/UefiHostTestPkg/Library/HobLibHost/HobLibHost.c new file mode 100644 index 0000000..987be34 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/HobLibHost/HobLibHost.c @@ -0,0 +1,798 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include +#include + +VOID *gHobPointer; + +VOID +InitHobPointer ( + VOID + ) +{ + EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob; + EFI_HOB_GENERIC_HEADER *HobEnd; + + gHobPointer = AllocatePool (SIZE_64KB); + assert (gHobPointer != NULL); + ZeroMem (gHobPointer, SIZE_64KB); + HandOffHob = gHobPointer; + HandOffHob->Header.HobType = EFI_HOB_TYPE_HANDOFF; + HandOffHob->Header.HobLength = sizeof(EFI_HOB_HANDOFF_INFO_TABLE); + HandOffHob->Version = EFI_HOB_HANDOFF_TABLE_VERSION; + HandOffHob->BootMode = BOOT_WITH_FULL_CONFIGURATION; + HandOffHob->EfiEndOfHobList = (UINTN)(HandOffHob + 1); + + HobEnd = (EFI_HOB_GENERIC_HEADER*) ((UINTN) HandOffHob + sizeof(EFI_HOB_HANDOFF_INFO_TABLE)); + HobEnd->HobType = EFI_HOB_TYPE_END_OF_HOB_LIST; + HobEnd->HobLength = (UINT16) sizeof (EFI_HOB_GENERIC_HEADER); +} + +/** + Returns the pointer to the HOB list. + + This function returns the pointer to first HOB in the list. + For PEI phase, the PEI service GetHobList() can be used to retrieve the pointer + to the HOB list. For the DXE phase, the HOB list pointer can be retrieved through + the EFI System Table by looking up theHOB list GUID in the System Configuration Table. + Since the System Configuration Table does not exist that the time the DXE Core is + launched, the DXE Core uses a global variable from the DXE Core Entry Point Library + to manage the pointer to the HOB list. + + If the pointer to the HOB list is NULL, then ASSERT(). + + @return The pointer to the HOB list. + +**/ +VOID * +EFIAPI +GetHobList ( + VOID + ) +{ + return gHobPointer; +} + +/** + Returns the next instance of a HOB type from the starting HOB. + + This function searches the first instance of a HOB type from the starting HOB pointer. + If there does not exist such HOB type from the starting HOB pointer, it will return NULL. + In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer + unconditionally: it returns HobStart back if HobStart itself meets the requirement; + caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart. + + If HobStart is NULL, then ASSERT(). + + @param Type The HOB type to return. + @param HobStart The starting HOB pointer to search from. + + @return The next instance of a HOB type from the starting HOB. + +**/ +VOID * +EFIAPI +GetNextHob ( + IN UINT16 Type, + IN CONST VOID *HobStart + ) +{ + EFI_PEI_HOB_POINTERS Hob; + + Hob.Raw = (UINT8 *) HobStart; + // + // Parse the HOB list until end of list or matching type is found. + // + while (!END_OF_HOB_LIST (Hob)) { + if (Hob.Header->HobType == Type) { + return Hob.Raw; + } + Hob.Raw = GET_NEXT_HOB (Hob); + } + return NULL; +} + +/** + Returns the first instance of a HOB type among the whole HOB list. + + This function searches the first instance of a HOB type among the whole HOB list. + If there does not exist such HOB type in the HOB list, it will return NULL. + + If the pointer to the HOB list is NULL, then ASSERT(). + + @param Type The HOB type to return. + + @return The next instance of a HOB type from the starting HOB. + +**/ +VOID * +EFIAPI +GetFirstHob ( + IN UINT16 Type + ) +{ + VOID *HobList; + + HobList = GetHobList (); + return GetNextHob (Type, HobList); +} + +/** + Returns the next instance of the matched GUID HOB from the starting HOB. + + This function searches the first instance of a HOB from the starting HOB pointer. + Such HOB should satisfy two conditions: + its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid. + If there does not exist such HOB from the starting HOB pointer, it will return NULL. + Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE () + to extract the data section and its size information, respectively. + In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer + unconditionally: it returns HobStart back if HobStart itself meets the requirement; + caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart. + + If Guid is NULL, then ASSERT(). + If HobStart is NULL, then ASSERT(). + + @param Guid The GUID to match with in the HOB list. + @param HobStart A pointer to a Guid. + + @return The next instance of the matched GUID HOB from the starting HOB. + +**/ +VOID * +EFIAPI +GetNextGuidHob ( + IN CONST EFI_GUID *Guid, + IN CONST VOID *HobStart + ) +{ + EFI_PEI_HOB_POINTERS GuidHob; + + GuidHob.Raw = (UINT8 *) HobStart; + while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) { + if (CompareGuid (Guid, &GuidHob.Guid->Name)) { + break; + } + GuidHob.Raw = GET_NEXT_HOB (GuidHob); + } + return GuidHob.Raw; +} + +/** + Returns the first instance of the matched GUID HOB among the whole HOB list. + + This function searches the first instance of a HOB among the whole HOB list. + Such HOB should satisfy two conditions: + its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid. + If there does not exist such HOB from the starting HOB pointer, it will return NULL. + Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE () + to extract the data section and its size information, respectively. + + If the pointer to the HOB list is NULL, then ASSERT(). + If Guid is NULL, then ASSERT(). + + @param Guid The GUID to match with in the HOB list. + + @return The first instance of the matched GUID HOB among the whole HOB list. + +**/ +VOID * +EFIAPI +GetFirstGuidHob ( + IN CONST EFI_GUID *Guid + ) +{ + VOID *HobList; + + HobList = GetHobList (); + return GetNextGuidHob (Guid, HobList); +} + +/** + Get the system boot mode from the HOB list. + + This function returns the system boot mode information from the + PHIT HOB in HOB list. + + If the pointer to the HOB list is NULL, then ASSERT(). + + @param VOID. + + @return The Boot Mode. + +**/ +EFI_BOOT_MODE +EFIAPI +GetBootModeHob ( + VOID + ) +{ + EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob; + + if (gHobPointer == NULL) { + InitHobPointer (); + } + + HandOffHob = gHobPointer; + + return HandOffHob->BootMode; +} + +/** + Adds a new HOB to the HOB List. + + This internal function enables PEIMs to create various types of HOBs. + + @param Type Type of the new HOB. + @param Length Length of the new HOB to allocate. + + @retval NULL The HOB could not be allocated. + @retval others The address of new HOB. + +**/ +VOID * +EFIAPI +InternalPeiCreateHob ( + IN UINT16 Type, + IN UINT16 Length + ) +{ + VOID *Hob; + EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob; + EFI_HOB_GENERIC_HEADER *HobEnd; + + if (gHobPointer == NULL) { + InitHobPointer (); + } + + HandOffHob = gHobPointer; + + if ((UINTN)HandOffHob->EfiEndOfHobList + sizeof(EFI_HOB_GENERIC_HEADER) + Length > (UINTN)gHobPointer + SIZE_64KB) { + assert (FALSE); + return NULL; + } + + Hob = (VOID*) (UINTN) HandOffHob->EfiEndOfHobList; + ((EFI_HOB_GENERIC_HEADER*) Hob)->HobType = Type; + ((EFI_HOB_GENERIC_HEADER*) Hob)->HobLength = Length; + ((EFI_HOB_GENERIC_HEADER*) Hob)->Reserved = 0; + + HobEnd = (EFI_HOB_GENERIC_HEADER*) ((UINTN) Hob + Length); + HandOffHob->EfiEndOfHobList = (EFI_PHYSICAL_ADDRESS) (UINTN) HobEnd; + + HobEnd->HobType = EFI_HOB_TYPE_END_OF_HOB_LIST; + HobEnd->HobLength = (UINT16) sizeof (EFI_HOB_GENERIC_HEADER); + HobEnd->Reserved = 0; + + return Hob; +} + + +/** + Builds a HOB for a loaded PE32 module. + + This function builds a HOB for a loaded PE32 module. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If ModuleName is NULL, then ASSERT(). + If there is no additional space for HOB creation, then ASSERT(). + + @param ModuleName The GUID File Name of the module. + @param MemoryAllocationModule The 64 bit physical address of the module. + @param ModuleLength The length of the module in bytes. + @param EntryPoint The 64 bit physical address of the module entry point. + +**/ +VOID +EFIAPI +BuildModuleHob ( + IN CONST EFI_GUID *ModuleName, + IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule, + IN UINT64 ModuleLength, + IN EFI_PHYSICAL_ADDRESS EntryPoint + ) +{ + EFI_HOB_MEMORY_ALLOCATION_MODULE *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, (UINT16) sizeof (EFI_HOB_MEMORY_ALLOCATION_MODULE)); + if (Hob == NULL) { + return; + } + + CopyGuid (&(Hob->MemoryAllocationHeader.Name), &gEfiHobMemoryAllocModuleGuid); + Hob->MemoryAllocationHeader.MemoryBaseAddress = MemoryAllocationModule; + Hob->MemoryAllocationHeader.MemoryLength = ModuleLength; + Hob->MemoryAllocationHeader.MemoryType = EfiBootServicesCode; + + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->MemoryAllocationHeader.Reserved, sizeof (Hob->MemoryAllocationHeader.Reserved)); + + CopyGuid (&Hob->ModuleName, ModuleName); + Hob->EntryPoint = EntryPoint; +} + +/** + Builds a HOB that describes a chunk of system memory with Owner GUID. + + This function builds a HOB that describes a chunk of system memory. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + + @param ResourceType The type of resource described by this HOB. + @param ResourceAttribute The resource attributes of the memory described by this HOB. + @param PhysicalStart The 64 bit physical address of memory described by this HOB. + @param NumberOfBytes The length of the memory described by this HOB in bytes. + @param OwnerGUID GUID for the owner of this resource. + +**/ +VOID +EFIAPI +BuildResourceDescriptorWithOwnerHob ( + IN EFI_RESOURCE_TYPE ResourceType, + IN EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute, + IN EFI_PHYSICAL_ADDRESS PhysicalStart, + IN UINT64 NumberOfBytes, + IN EFI_GUID *OwnerGUID + ) +{ + EFI_HOB_RESOURCE_DESCRIPTOR *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, (UINT16) sizeof (EFI_HOB_RESOURCE_DESCRIPTOR)); + if (Hob == NULL) { + return; + } + + Hob->ResourceType = ResourceType; + Hob->ResourceAttribute = ResourceAttribute; + Hob->PhysicalStart = PhysicalStart; + Hob->ResourceLength = NumberOfBytes; + + CopyGuid (&Hob->Owner, OwnerGUID); +} + +/** + Builds a HOB that describes a chunk of system memory. + + This function builds a HOB that describes a chunk of system memory. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + + @param ResourceType The type of resource described by this HOB. + @param ResourceAttribute The resource attributes of the memory described by this HOB. + @param PhysicalStart The 64 bit physical address of memory described by this HOB. + @param NumberOfBytes The length of the memory described by this HOB in bytes. + +**/ +VOID +EFIAPI +BuildResourceDescriptorHob ( + IN EFI_RESOURCE_TYPE ResourceType, + IN EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute, + IN EFI_PHYSICAL_ADDRESS PhysicalStart, + IN UINT64 NumberOfBytes + ) +{ + EFI_HOB_RESOURCE_DESCRIPTOR *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, (UINT16) sizeof (EFI_HOB_RESOURCE_DESCRIPTOR)); + if (Hob == NULL) { + return; + } + + Hob->ResourceType = ResourceType; + Hob->ResourceAttribute = ResourceAttribute; + Hob->PhysicalStart = PhysicalStart; + Hob->ResourceLength = NumberOfBytes; + ZeroMem (&(Hob->Owner), sizeof (EFI_GUID)); +} + +/** + Builds a customized HOB tagged with a GUID for identification and returns + the start address of GUID HOB data. + + This function builds a customized HOB tagged with a GUID for identification + and returns the start address of GUID HOB data so that caller can fill the customized data. + The HOB Header and Name field is already stripped. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If Guid is NULL, then ASSERT(). + If there is no additional space for HOB creation, then ASSERT(). + If DataLength > (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT(). + HobLength is UINT16 and multiples of 8 bytes, so the max HobLength is 0xFFF8. + + @param Guid The GUID to tag the customized HOB. + @param DataLength The size of the data payload for the GUID HOB. + + @retval NULL The GUID HOB could not be allocated. + @retval others The start address of GUID HOB data. + +**/ +VOID * +EFIAPI +BuildGuidHob ( + IN CONST EFI_GUID *Guid, + IN UINTN DataLength + ) +{ + EFI_HOB_GUID_TYPE *Hob; + + // + // Make sure that data length is not too long. + // + assert (DataLength <= (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE))); + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_GUID_EXTENSION, (UINT16) (sizeof (EFI_HOB_GUID_TYPE) + DataLength)); + if (Hob == NULL) { + return Hob; + } + CopyGuid (&Hob->Name, Guid); + return Hob + 1; +} + +/** + Builds a customized HOB tagged with a GUID for identification, copies the input data to the HOB + data field, and returns the start address of the GUID HOB data. + + This function builds a customized HOB tagged with a GUID for identification and copies the input + data to the HOB data field and returns the start address of the GUID HOB data. It can only be + invoked during PEI phase; for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + The HOB Header and Name field is already stripped. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If Guid is NULL, then ASSERT(). + If Data is NULL and DataLength > 0, then ASSERT(). + If there is no additional space for HOB creation, then ASSERT(). + If DataLength > (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT(). + HobLength is UINT16 and multiples of 8 bytes, so the max HobLength is 0xFFF8. + + @param Guid The GUID to tag the customized HOB. + @param Data The data to be copied into the data field of the GUID HOB. + @param DataLength The size of the data payload for the GUID HOB. + + @retval NULL The GUID HOB could not be allocated. + @retval others The start address of GUID HOB data. + +**/ +VOID * +EFIAPI +BuildGuidDataHob ( + IN CONST EFI_GUID *Guid, + IN VOID *Data, + IN UINTN DataLength + ) +{ + VOID *HobData; + + HobData = BuildGuidHob (Guid, DataLength); + if (HobData == NULL) { + return HobData; + } + + return CopyMem (HobData, Data, DataLength); +} + + +/** + Builds a Firmware Volume HOB. + + This function builds a Firmware Volume HOB. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + If the FvImage buffer is not at its required alignment, then ASSERT(). + + @param BaseAddress The base address of the Firmware Volume. + @param Length The size of the Firmware Volume in bytes. + +**/ +VOID +EFIAPI +BuildFvHob ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +{ + EFI_HOB_FIRMWARE_VOLUME *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_FV, (UINT16) sizeof (EFI_HOB_FIRMWARE_VOLUME)); + if (Hob == NULL) { + return; + } + + Hob->BaseAddress = BaseAddress; + Hob->Length = Length; +} + +/** + Builds a EFI_HOB_TYPE_FV2 HOB. + + This function builds a EFI_HOB_TYPE_FV2 HOB. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + If the FvImage buffer is not at its required alignment, then ASSERT(). + + @param BaseAddress The base address of the Firmware Volume. + @param Length The size of the Firmware Volume in bytes. + @param FvName The name of the Firmware Volume. + @param FileName The name of the file. + +**/ +VOID +EFIAPI +BuildFv2Hob ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN CONST EFI_GUID *FvName, + IN CONST EFI_GUID *FileName + ) +{ + EFI_HOB_FIRMWARE_VOLUME2 *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_FV2, (UINT16) sizeof (EFI_HOB_FIRMWARE_VOLUME2)); + if (Hob == NULL) { + return; + } + + Hob->BaseAddress = BaseAddress; + Hob->Length = Length; + CopyGuid (&Hob->FvName, FvName); + CopyGuid (&Hob->FileName, FileName); +} + +/** + Builds a EFI_HOB_TYPE_FV3 HOB. + + This function builds a EFI_HOB_TYPE_FV3 HOB. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + If the FvImage buffer is not at its required alignment, then ASSERT(). + + @param BaseAddress The base address of the Firmware Volume. + @param Length The size of the Firmware Volume in bytes. + @param AuthenticationStatus The authentication status. + @param ExtractedFv TRUE if the FV was extracted as a file within + another firmware volume. FALSE otherwise. + @param FvName The name of the Firmware Volume. + Valid only if IsExtractedFv is TRUE. + @param FileName The name of the file. + Valid only if IsExtractedFv is TRUE. + +**/ +VOID +EFIAPI +BuildFv3Hob ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT32 AuthenticationStatus, + IN BOOLEAN ExtractedFv, + IN CONST EFI_GUID *FvName, OPTIONAL + IN CONST EFI_GUID *FileName OPTIONAL + ) +{ + EFI_HOB_FIRMWARE_VOLUME3 *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_FV3, (UINT16) sizeof (EFI_HOB_FIRMWARE_VOLUME3)); + if (Hob == NULL) { + return; + } + + Hob->BaseAddress = BaseAddress; + Hob->Length = Length; + Hob->AuthenticationStatus = AuthenticationStatus; + Hob->ExtractedFv = ExtractedFv; + if (ExtractedFv) { + CopyGuid (&Hob->FvName, FvName); + CopyGuid (&Hob->FileName, FileName); + } +} + +/** + Builds a Capsule Volume HOB. + + This function builds a Capsule Volume HOB. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If the platform does not support Capsule Volume HOBs, then ASSERT(). + If there is no additional space for HOB creation, then ASSERT(). + + @param BaseAddress The base address of the Capsule Volume. + @param Length The size of the Capsule Volume in bytes. + +**/ +VOID +EFIAPI +BuildCvHob ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +{ + EFI_HOB_UEFI_CAPSULE *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_UEFI_CAPSULE, (UINT16) sizeof (EFI_HOB_UEFI_CAPSULE)); + if (Hob == NULL) { + return; + } + + Hob->BaseAddress = BaseAddress; + Hob->Length = Length; +} + +/** + Builds a HOB for the CPU. + + This function builds a HOB for the CPU. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + + @param SizeOfMemorySpace The maximum physical memory addressability of the processor. + @param SizeOfIoSpace The maximum physical I/O addressability of the processor. + +**/ +VOID +EFIAPI +BuildCpuHob ( + IN UINT8 SizeOfMemorySpace, + IN UINT8 SizeOfIoSpace + ) +{ + EFI_HOB_CPU *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_CPU, (UINT16) sizeof (EFI_HOB_CPU)); + if (Hob == NULL) { + return; + } + + Hob->SizeOfMemorySpace = SizeOfMemorySpace; + Hob->SizeOfIoSpace = SizeOfIoSpace; + + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->Reserved, sizeof (Hob->Reserved)); +} + +/** + Builds a HOB for the Stack. + + This function builds a HOB for the stack. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + + @param BaseAddress The 64 bit physical address of the Stack. + @param Length The length of the stack in bytes. + +**/ +VOID +EFIAPI +BuildStackHob ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +{ + EFI_HOB_MEMORY_ALLOCATION_STACK *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, (UINT16) sizeof (EFI_HOB_MEMORY_ALLOCATION_STACK)); + if (Hob == NULL) { + return; + } + + CopyGuid (&(Hob->AllocDescriptor.Name), &gEfiHobMemoryAllocStackGuid); + Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress; + Hob->AllocDescriptor.MemoryLength = Length; + Hob->AllocDescriptor.MemoryType = EfiBootServicesData; + + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved)); +} + +/** + Builds a HOB for the BSP store. + + This function builds a HOB for BSP store. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + + @param BaseAddress The 64 bit physical address of the BSP. + @param Length The length of the BSP store in bytes. + @param MemoryType The type of memory allocated by this HOB. + +**/ +VOID +EFIAPI +BuildBspStoreHob ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN EFI_MEMORY_TYPE MemoryType + ) +{ + EFI_HOB_MEMORY_ALLOCATION_BSP_STORE *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, (UINT16) sizeof (EFI_HOB_MEMORY_ALLOCATION_BSP_STORE)); + if (Hob == NULL) { + return; + } + + CopyGuid (&(Hob->AllocDescriptor.Name), &gEfiHobMemoryAllocBspStoreGuid); + Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress; + Hob->AllocDescriptor.MemoryLength = Length; + Hob->AllocDescriptor.MemoryType = MemoryType; + + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved)); +} + +/** + Builds a HOB for the memory allocation. + + This function builds a HOB for the memory allocation. + It can only be invoked during PEI phase; + for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. + + If there is no additional space for HOB creation, then ASSERT(). + + @param BaseAddress The 64 bit physical address of the memory. + @param Length The length of the memory allocation in bytes. + @param MemoryType The type of memory allocated by this HOB. + +**/ +VOID +EFIAPI +BuildMemoryAllocationHob ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN EFI_MEMORY_TYPE MemoryType + ) +{ + EFI_HOB_MEMORY_ALLOCATION *Hob; + + Hob = InternalPeiCreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, (UINT16) sizeof (EFI_HOB_MEMORY_ALLOCATION)); + if (Hob == NULL) { + return; + } + + ZeroMem (&(Hob->AllocDescriptor.Name), sizeof (EFI_GUID)); + Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress; + Hob->AllocDescriptor.MemoryLength = Length; + Hob->AllocDescriptor.MemoryType = MemoryType; + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved)); +} diff --git a/HBFA/UefiHostTestPkg/Library/HobLibHost/HobLibHost.inf b/HBFA/UefiHostTestPkg/Library/HobLibHost/HobLibHost.inf new file mode 100644 index 0000000..2a3648e --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/HobLibHost/HobLibHost.inf @@ -0,0 +1,31 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = HobLibHost + FILE_GUID = 05DA0183-444E-497D-8B4F-76E910F1E12C + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = HobLib + +[Sources] + HobLibHost.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + +[Guids] + gEfiHobMemoryAllocStackGuid + gEfiHobMemoryAllocBspStoreGuid + gEfiHobMemoryAllocModuleGuid diff --git a/HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.c b/HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.c new file mode 100644 index 0000000..8a92a88 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.c @@ -0,0 +1,302 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include + +#define PAGE_HEAD_PRIVATE_SIGNATURE SIGNATURE_32 ('P', 'H', 'D', 'R') + +typedef struct { + UINT32 Signature; + VOID *AllocatedBufffer; + UINTN TotalPages; + VOID *AlignedBuffer; + UINTN AlignedPages; +} PAGE_HEAD; + +VOID * +EFIAPI +AllocateAlignedPages ( + IN UINTN Pages, + IN UINTN Alignment + ); + +VOID +EFIAPI +FreeAlignedPages ( + IN VOID *Buffer, + IN UINTN Pages + ); + +VOID * +EFIAPI +AllocatePages ( + IN UINTN Pages + ) +{ + return AllocateAlignedPages (Pages, SIZE_4KB); +} + +VOID * +EFIAPI +AllocateRuntimePages ( + IN UINTN Pages + ) +{ + return AllocatePages (Pages); +} + +VOID * +EFIAPI +AllocateReservedPages ( + IN UINTN Pages + ) +{ + return AllocatePages (Pages); +} + +VOID +EFIAPI +FreePages ( + IN VOID *Buffer, + IN UINTN Pages + ) +{ + FreeAlignedPages (Buffer, Pages); +} + +VOID * +EFIAPI +AllocateAlignedPages ( + IN UINTN Pages, + IN UINTN Alignment + ) +{ + PAGE_HEAD PageHead; + PAGE_HEAD *PageHeadPtr; + UINTN AlignmentMask; + + assert ((Alignment & (Alignment - 1)) == 0); + + if (Alignment < SIZE_4KB) { + Alignment = SIZE_4KB; + } + AlignmentMask = Alignment - 1; + + // + // We need reserve Alignment pages for PAGE_HEAD, as meta data. + // + + PageHead.Signature = PAGE_HEAD_PRIVATE_SIGNATURE; + PageHead.TotalPages = Pages + EFI_SIZE_TO_PAGES(Alignment) * 2; + PageHead.AlignedPages = Pages; + PageHead.AllocatedBufffer = malloc (EFI_PAGES_TO_SIZE(PageHead.TotalPages)); + if (PageHead.AllocatedBufffer == NULL) { + return NULL; + } + PageHead.AlignedBuffer = (VOID *)(((UINTN) PageHead.AllocatedBufffer + AlignmentMask) & ~AlignmentMask); + if ((UINTN)PageHead.AlignedBuffer - (UINTN)PageHead.AllocatedBufffer < sizeof(PAGE_HEAD)) { + PageHead.AlignedBuffer = (VOID *)((UINTN)PageHead.AlignedBuffer + Alignment); + } + + PageHeadPtr = (VOID *)((UINTN)PageHead.AlignedBuffer - sizeof(PAGE_HEAD)); + memcpy (PageHeadPtr, &PageHead, sizeof(PAGE_HEAD)); + + return PageHead.AlignedBuffer; +} + +VOID * +EFIAPI +AllocateAlignedRuntimePages ( + IN UINTN Pages, + IN UINTN Alignment + ) +{ + return AllocateAlignedPages (Pages, Alignment); +} + +VOID * +EFIAPI +AllocateAlignedReservedPages ( + IN UINTN Pages, + IN UINTN Alignment + ) +{ + return AllocateAlignedPages (Pages, Alignment); +} + +VOID +EFIAPI +FreeAlignedPages ( + IN VOID *Buffer, + IN UINTN Pages + ) +{ + PAGE_HEAD *PageHeadPtr; + + // + // NOTE: Partial free is not supported. Just keep it. + // + + PageHeadPtr = (VOID *)((UINTN)Buffer - sizeof(PAGE_HEAD)); + if (PageHeadPtr->Signature != PAGE_HEAD_PRIVATE_SIGNATURE) { + return ; + } + if (PageHeadPtr->AlignedPages != Pages) { + return ; + } + + PageHeadPtr->Signature = 0; + free (PageHeadPtr->AllocatedBufffer); +} + +VOID * +EFIAPI +AllocatePool ( + IN UINTN AllocationSize + ) +{ + return malloc (AllocationSize); +} + +VOID * +EFIAPI +AllocateRuntimePool ( + IN UINTN AllocationSize + ) +{ + return AllocatePool (AllocationSize); +} + +VOID * +EFIAPI +AllocateReservedPool ( + IN UINTN AllocationSize + ) +{ + return AllocatePool (AllocationSize); +} + +VOID * +EFIAPI +AllocateZeroPool ( + IN UINTN AllocationSize + ) +{ + VOID *Buffer; + Buffer = malloc (AllocationSize); + if (Buffer == NULL) { + return NULL; + } + memset (Buffer, 0, AllocationSize); + return Buffer; +} + +VOID * +EFIAPI +AllocateRuntimeZeroPool ( + IN UINTN AllocationSize + ) +{ + return AllocateZeroPool (AllocationSize); +} + +VOID * +EFIAPI +AllocateReservedZeroPool ( + IN UINTN AllocationSize + ) +{ + return AllocateZeroPool (AllocationSize); +} + +VOID * +EFIAPI +AllocateCopyPool ( + IN UINTN AllocationSize, + IN CONST VOID *Buffer + ) +{ + VOID *Memory; + Memory = malloc (AllocationSize); + if (Memory == NULL) { + return NULL; + } + memcpy (Memory, Buffer, AllocationSize); + return Memory; +} + +VOID * +EFIAPI +AllocateRuntimeCopyPool ( + IN UINTN AllocationSize, + IN CONST VOID *Buffer + ) +{ + return AllocateCopyPool (AllocationSize, Buffer); +} + +VOID * +EFIAPI +AllocateReservedCopyPool ( + IN UINTN AllocationSize, + IN CONST VOID *Buffer + ) +{ + return AllocateCopyPool (AllocationSize, Buffer); +} + +VOID * +EFIAPI +ReallocatePool ( + IN UINTN OldSize, + IN UINTN NewSize, + IN VOID *OldBuffer OPTIONAL + ) +{ + VOID *NewBuffer; + NewBuffer = malloc (NewSize); + if (NewBuffer != NULL && OldBuffer != NULL) { + memcpy (NewBuffer, OldBuffer, MIN (OldSize, NewSize)); + } + return NewBuffer; +} + +VOID * +EFIAPI +ReallocateRuntimePool ( + IN UINTN OldSize, + IN UINTN NewSize, + IN VOID *OldBuffer OPTIONAL + ) +{ + return ReallocatePool (OldSize, NewSize, OldBuffer); +} + +VOID * +EFIAPI +ReallocateReservedPool ( + IN UINTN OldSize, + IN UINTN NewSize, + IN VOID *OldBuffer OPTIONAL + ) +{ + return ReallocatePool (OldSize, NewSize, OldBuffer); +} + +VOID +EFIAPI +FreePool ( + IN VOID *Buffer + ) +{ + free (Buffer); +} diff --git a/HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf b/HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf new file mode 100644 index 0000000..a01e709 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf @@ -0,0 +1,25 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = MemoryAllocationLibHost + FILE_GUID = A1672454-A3D3-4AAC-A86B-8D63132BBB91 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = MemoryAllocationLib + +[Sources] + MemoryAllocationLibHost.c + +[Packages] + MdePkg/MdePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + diff --git a/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibGcc.c b/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibGcc.c new file mode 100644 index 0000000..e4d4d80 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibGcc.c @@ -0,0 +1,45 @@ +/**@file + +Copyright (c) 2019, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +VOID * +AllocateExecutableMemory ( + IN UINTN Size + ) +{ + VOID *Buffer; + size_t FinalSize; + size_t PageSize; + + PageSize = getpagesize(); + + FinalSize = (Size + PageSize - 1) / PageSize * PageSize; + + Buffer = mmap(NULL, FinalSize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS | MAP_PRIVATE, 0, 0); + if (Buffer == NULL) { + return NULL; + } + + return Buffer; +} + +VOID +FreeExecutableMemory ( + IN VOID *Buffer, + IN UINTN Size + ) +{ + size_t FinalSize; + size_t PageSize; + + PageSize = getpagesize(); + + FinalSize = (Size + PageSize - 1) / PageSize * PageSize; + + munmap (Buffer, FinalSize); +} diff --git a/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibHost.inf b/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibHost.inf new file mode 100644 index 0000000..d7c44a9 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibHost.inf @@ -0,0 +1,26 @@ +## @file +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = OsServiceLibHost + FILE_GUID = 56DCD496-CD73-42D0-B145-B7C100CE5877 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = OsServiceLib + +[Sources] + OsServiceLibMsvc.c | MSFT + OsServiceLibGcc.c | GCC + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + +[BuildOptions] + diff --git a/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibMsvc.c b/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibMsvc.c new file mode 100644 index 0000000..80cd3fe --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibMsvc.c @@ -0,0 +1,41 @@ +/**@file + +Copyright (c) 2019, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +VOID * +AllocateExecutableMemory ( + IN UINTN Size + ) +{ + VOID *Buffer; + SIZE_T FinalSize; + UINT32 PageSize; + SYSTEM_INFO SystemInfo; + + GetSystemInfo(&SystemInfo); + PageSize = SystemInfo.dwPageSize; + + FinalSize = (Size + PageSize - 1) / PageSize * PageSize; + + Buffer = VirtualAlloc(NULL, FinalSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + if (Buffer == NULL) { + return NULL; + } + + return Buffer; +} + +VOID +FreeExecutableMemory ( + IN VOID *Buffer, + IN UINTN Size + ) +{ + VirtualFree(Buffer, 0, MEM_RELEASE); +} diff --git a/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/WinNTInclude.h b/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/WinNTInclude.h new file mode 100644 index 0000000..345d15d --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/OsServiceLibHost/WinNTInclude.h @@ -0,0 +1,74 @@ +/**@file + +Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +Module Name: + WinNtLib.h + +Abstract: + Public include file for the WinNt Library + +**/ + +#ifndef __WIN_NT_INCLUDE_H__ +#define __WIN_NT_INCLUDE_H__ + +// +// Win32 include files do not compile clean with /W4, so we use the warning +// pragma to suppress the warnings for Win32 only. This way our code can stil +// compile at /W4 (highest warning level) with /WX (warnings cause build +// errors). +// +#pragma warning(disable : 4115) +#pragma warning(disable : 4201) +#pragma warning(disable : 4028) +#pragma warning(disable : 4133) + +#define GUID _WINNT_DUP_GUID_____ +#define _LIST_ENTRY _WINNT_DUP_LIST_ENTRY_FORWARD +#define LIST_ENTRY _WINNT_DUP_LIST_ENTRY +#if defined (MDE_CPU_IA32) && (_MSC_VER < 1800) +#define InterlockedIncrement _WINNT_DUP_InterlockedIncrement +#define InterlockedDecrement _WINNT_DUP_InterlockedDecrement +#define InterlockedCompareExchange64 _WINNT_DUP_InterlockedCompareExchange64 +#endif +#undef UNALIGNED +#undef CONST +#undef VOID +#undef DEBUG_EVENT + +// WQBugBug: This typedef is to make "windows.h" buildable. +// It should be removed after the root cause why +// size_t is undefined when go into the line below is found. +#if defined (MDE_CPU_IA32) +typedef UINT32 size_t ; +#endif + +#include "windows.h" + +#undef GUID +#undef _LIST_ENTRY +#undef LIST_ENTRY +#undef InterlockedIncrement +#undef InterlockedDecrement +#undef InterlockedCompareExchange64 +#undef InterlockedCompareExchangePointer +#undef CreateEventEx + +#define VOID void + +// +// Prevent collisions with Windows API name macros that deal with Unicode/Not issues +// +#undef LoadImage +#undef CreateEvent + +// +// Set the warnings back on as the EFI code must be /W4. +// +#pragma warning(default : 4115) +#pragma warning(default : 4201) + + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/CpuIo.c b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/CpuIo.c new file mode 100644 index 0000000..0420c22 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/CpuIo.c @@ -0,0 +1,535 @@ +/** @file + The default version of EFI_PEI_CPU_IO_PPI support published by PeiServices in + PeiCore initialization phase. + + EFI_PEI_CPU_IO_PPI is installed by some platform or chipset-specific PEIM that + abstracts the processor-visible I/O operations. When PeiCore is started, the + default version of EFI_PEI_CPU_IO_PPI will be assigned to PeiServices table. + +Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +/** + Memory-based read services. + + This function is to perform the Memory Access Read service based on installed + instance of the EFI_PEI_CPU_IO_PPI. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + @param Address The physical address of the access. + @param Count The number of accesses to perform. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_YET_AVAILABLE The service has not been installed. +**/ +EFI_STATUS +EFIAPI +PeiDefaultMemRead ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +/** + Memory-based write services. + + This function is to perform the Memory Access Write service based on installed + instance of the EFI_PEI_CPU_IO_PPI. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + @param Address The physical address of the access. + @param Count The number of accesses to perform. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_YET_AVAILABLE The service has not been installed. +**/ +EFI_STATUS +EFIAPI +PeiDefaultMemWrite ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +/** + IO-based read services. + + This function is to perform the IO-base read service for the EFI_PEI_CPU_IO_PPI. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + @param Address The physical address of the access. + @param Count The number of accesses to perform. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_YET_AVAILABLE The service has not been installed. +**/ +EFI_STATUS +EFIAPI +PeiDefaultIoRead ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +/** + IO-based write services. + + This function is to perform the IO-base write service for the EFI_PEI_CPU_IO_PPI. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + @param Address The physical address of the access. + @param Count The number of accesses to perform. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_YET_AVAILABLE The service has not been installed. +**/ +EFI_STATUS +EFIAPI +PeiDefaultIoWrite ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +/** + 8-bit I/O read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 8-bit value returned from the I/O space. +**/ +UINT8 +EFIAPI +PeiDefaultIoRead8 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ) +{ + return 0; +} + +/** + Reads an 16-bit I/O port. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return A 16-bit value returned from the I/O space. +**/ +UINT16 +EFIAPI +PeiDefaultIoRead16 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ) +{ + return 0; +} + +/** + Reads an 32-bit I/O port. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return A 32-bit value returned from the I/O space. +**/ +UINT32 +EFIAPI +PeiDefaultIoRead32 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ) +{ + return 0; +} + +/** + Reads an 64-bit I/O port. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return A 64-bit value returned from the I/O space. +**/ +UINT64 +EFIAPI +PeiDefaultIoRead64 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ) +{ + return 0; +} + +/** + 8-bit I/O write operations. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do + nothing. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. +**/ +VOID +EFIAPI +PeiDefaultIoWrite8 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT8 Data + ) +{ +} + +/** + 16-bit I/O write operations. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do + nothing. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. +**/ +VOID +EFIAPI +PeiDefaultIoWrite16 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT16 Data + ) +{ +} + +/** + 32-bit I/O write operations. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do + nothing. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. +**/ +VOID +EFIAPI +PeiDefaultIoWrite32 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT32 Data + ) +{ +} + +/** + 64-bit I/O write operations. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do + nothing. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. +**/ +VOID +EFIAPI +PeiDefaultIoWrite64 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT64 Data + ) +{ +} + +/** + 8-bit memory read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 8-bit value returned from the memory space. + +**/ +UINT8 +EFIAPI +PeiDefaultMemRead8 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ) +{ + return 0; +} + +/** + 16-bit memory read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 16-bit value returned from the memory space. + +**/ +UINT16 +EFIAPI +PeiDefaultMemRead16 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ) +{ + return 0; +} + +/** + 32-bit memory read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 32-bit value returned from the memory space. + +**/ +UINT32 +EFIAPI +PeiDefaultMemRead32 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ) +{ + return 0; +} + +/** + 64-bit memory read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 64-bit value returned from the memory space. + +**/ +UINT64 +EFIAPI +PeiDefaultMemRead64 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ) +{ + return 0; +} + +/** + 8-bit memory write operations. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do + nothing. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. + +**/ +VOID +EFIAPI +PeiDefaultMemWrite8 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT8 Data + ) +{ +} + +/** + 16-bit memory write operations. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do + nothing. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. + +**/ +VOID +EFIAPI +PeiDefaultMemWrite16 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT16 Data + ) +{ +} + +/** + 32-bit memory write operations. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do + nothing. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. + +**/ +VOID +EFIAPI +PeiDefaultMemWrite32 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT32 Data + ) +{ +} + +/** + 64-bit memory write operations. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do + nothing. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. + +**/ +VOID +EFIAPI +PeiDefaultMemWrite64 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT64 Data + ) +{ +} + +/// +/// This default instance of EFI_PEI_CPU_IO_PPI install assigned to EFI_PEI_SERVICE.CpuIo +/// when PeiCore's initialization. +/// +EFI_PEI_CPU_IO_PPI mPeiDefaultCpuIoPpi = { + { + PeiDefaultMemRead, + PeiDefaultMemWrite + }, + { + PeiDefaultIoRead, + PeiDefaultIoWrite + }, + PeiDefaultIoRead8, + PeiDefaultIoRead16, + PeiDefaultIoRead32, + PeiDefaultIoRead64, + PeiDefaultIoWrite8, + PeiDefaultIoWrite16, + PeiDefaultIoWrite32, + PeiDefaultIoWrite64, + PeiDefaultMemRead8, + PeiDefaultMemRead16, + PeiDefaultMemRead32, + PeiDefaultMemRead64, + PeiDefaultMemWrite8, + PeiDefaultMemWrite16, + PeiDefaultMemWrite32, + PeiDefaultMemWrite64 +}; diff --git a/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PciCfg2.c b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PciCfg2.c new file mode 100644 index 0000000..c6e93c6 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PciCfg2.c @@ -0,0 +1,122 @@ +/** @file + The default version of EFI_PEI_PCI_CFG2_PPI support published by PeiServices in + PeiCore initialization phase. + + EFI_PEI_PCI_CFG2_PPI is installed by the PEIM which supports a PCI root bridge. + When PeiCore is started, the default version of EFI_PEI_PCI_CFG2_PPI will be assigned + to PeiServices table. + +Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +/** + Reads from a given location in the PCI configuration space. + + If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + See EFI_PEI_PCI_CFG_PPI_WIDTH above. + @param Address The physical address of the access. The format of + the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER The invalid access width. + @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM. + +**/ +EFI_STATUS +EFIAPI +PeiDefaultPciCfg2Read ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PCI_CFG2_PPI *This, + IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN OUT VOID *Buffer + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +/** + Write to a given location in the PCI configuration space. + + If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + See EFI_PEI_PCI_CFG_PPI_WIDTH above. + @param Address The physical address of the access. The format of + the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER The invalid access width. + @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM. +**/ +EFI_STATUS +EFIAPI +PeiDefaultPciCfg2Write ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PCI_CFG2_PPI *This, + IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN OUT VOID *Buffer + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +/** + This function performs a read-modify-write operation on the contents from a given + location in the PCI configuration space. + If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. Type + EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read(). + @param Address The physical address of the access. + @param SetBits Points to value to bitwise-OR with the read configuration value. + The size of the value is determined by Width. + @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value. + The size of the value is determined by Width. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER The invalid access width. + @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM. +**/ +EFI_STATUS +EFIAPI +PeiDefaultPciCfg2Modify ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PCI_CFG2_PPI *This, + IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN VOID *SetBits, + IN VOID *ClearBits + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +/// +/// This default instance of EFI_PEI_PCI_CFG2_PPI install assigned to EFI_PEI_SERVICE.PciCfg +/// when PeiCore's initialization. +/// +EFI_PEI_PCI_CFG2_PPI mPeiDefaultPciCfg2Ppi = { + PeiDefaultPciCfg2Read, + PeiDefaultPciCfg2Write, + PeiDefaultPciCfg2Modify +}; diff --git a/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiMain.h b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiMain.h new file mode 100644 index 0000000..14034f7 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiMain.h @@ -0,0 +1,1867 @@ +/** @file + Definition of Pei Core Structures and Services + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _PEI_MAIN_H_ +#define _PEI_MAIN_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/// +/// It is an FFS type extension used for PeiFindFileEx. It indicates current +/// Ffs searching is for all PEIMs can be dispatched by PeiCore. +/// +#define PEI_CORE_INTERNAL_FFS_FILE_DISPATCH_TYPE 0xff + +/// +/// Pei Core private data structures +/// +typedef union { + EFI_PEI_PPI_DESCRIPTOR *Ppi; + EFI_PEI_NOTIFY_DESCRIPTOR *Notify; + VOID *Raw; +} PEI_PPI_LIST_POINTERS; + +/// +/// Number of PEI_PPI_LIST_POINTERS to grow by each time we run out of room +/// +#define PPI_GROWTH_STEP 64 +#define CALLBACK_NOTIFY_GROWTH_STEP 32 +#define DISPATCH_NOTIFY_GROWTH_STEP 8 + +typedef struct { + UINTN CurrentCount; + UINTN MaxCount; + UINTN LastDispatchedCount; + /// + /// MaxCount number of entries. + /// + PEI_PPI_LIST_POINTERS *PpiPtrs; +} PEI_PPI_LIST; + +typedef struct { + UINTN CurrentCount; + UINTN MaxCount; + /// + /// MaxCount number of entries. + /// + PEI_PPI_LIST_POINTERS *NotifyPtrs; +} PEI_CALLBACK_NOTIFY_LIST; + +typedef struct { + UINTN CurrentCount; + UINTN MaxCount; + UINTN LastDispatchedCount; + /// + /// MaxCount number of entries. + /// + PEI_PPI_LIST_POINTERS *NotifyPtrs; +} PEI_DISPATCH_NOTIFY_LIST; + +/// +/// PPI database structure which contains three links: +/// PpiList, CallbackNotifyList and DispatchNotifyList. +/// +typedef struct { + /// + /// PPI List. + /// + PEI_PPI_LIST PpiList; + /// + /// Notify List at dispatch level. + /// + PEI_CALLBACK_NOTIFY_LIST CallbackNotifyList; + /// + /// Notify List at callback level. + /// + PEI_DISPATCH_NOTIFY_LIST DispatchNotifyList; +} PEI_PPI_DATABASE; + +// +// PEI_CORE_FV_HANDE.PeimState +// Do not change these values as there is code doing math to change states. +// Look for Private->Fv[FvCount].PeimState[PeimCount]++; +// +#define PEIM_STATE_NOT_DISPATCHED 0x00 +#define PEIM_STATE_DISPATCHED 0x01 +#define PEIM_STATE_REGISTER_FOR_SHADOW 0x02 +#define PEIM_STATE_DONE 0x03 + +// +// Number of FV instances to grow by each time we run out of room +// +#define FV_GROWTH_STEP 8 + +typedef struct { + EFI_FIRMWARE_VOLUME_HEADER *FvHeader; + EFI_PEI_FIRMWARE_VOLUME_PPI *FvPpi; + EFI_PEI_FV_HANDLE FvHandle; + UINTN PeimCount; + // + // Ponter to the buffer with the PeimCount number of Entries. + // + UINT8 *PeimState; + // + // Ponter to the buffer with the PeimCount number of Entries. + // + EFI_PEI_FILE_HANDLE *FvFileHandles; + BOOLEAN ScanFv; + UINT32 AuthenticationStatus; +} PEI_CORE_FV_HANDLE; + +typedef struct { + EFI_GUID FvFormat; + VOID *FvInfo; + UINT32 FvInfoSize; + UINT32 AuthenticationStatus; + EFI_PEI_NOTIFY_DESCRIPTOR NotifyDescriptor; +} PEI_CORE_UNKNOW_FORMAT_FV_INFO; + +#define CACHE_SETION_MAX_NUMBER 0x10 +typedef struct { + EFI_COMMON_SECTION_HEADER* Section[CACHE_SETION_MAX_NUMBER]; + VOID* SectionData[CACHE_SETION_MAX_NUMBER]; + UINTN SectionSize[CACHE_SETION_MAX_NUMBER]; + UINT32 AuthenticationStatus[CACHE_SETION_MAX_NUMBER]; + UINTN AllSectionCount; + UINTN SectionIndex; +} CACHE_SECTION_DATA; + +#define HOLE_MAX_NUMBER 0x3 +typedef struct { + EFI_PHYSICAL_ADDRESS Base; + UINTN Size; + UINTN Offset; + BOOLEAN OffsetPositive; +} HOLE_MEMORY_DATA; + +/// +/// Forward declaration for PEI_CORE_INSTANCE +/// +typedef struct _PEI_CORE_INSTANCE PEI_CORE_INSTANCE; + + +/** + Function Pointer type for PeiCore function. + @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size + and location of temporary RAM, the stack location and the BFV location. + @param PpiList Points to a list of one or more PPI descriptors to be installed initially by the PEI core. + An empty PPI list consists of a single descriptor with the end-tag + EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. As part of its initialization + phase, the PEI Foundation will add these SEC-hosted PPIs to its PPI database such + that both the PEI Foundation and any modules can leverage the associated service + calls and/or code in these early PPIs + @param OldCoreData Pointer to old core data that is used to initialize the + core's data areas. +**/ +typedef +EFI_STATUS +(EFIAPI *PEICORE_FUNCTION_POINTER)( + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList, + IN PEI_CORE_INSTANCE *OldCoreData + ); + +// +// Number of files to grow by each time we run out of room +// +#define TEMP_FILE_GROWTH_STEP 32 + +#define PEI_CORE_HANDLE_SIGNATURE SIGNATURE_32('P','e','i','C') + +/// +/// Pei Core private data structure instance +/// +struct _PEI_CORE_INSTANCE { + UINTN Signature; + + /// + /// Point to ServiceTableShadow + /// + EFI_PEI_SERVICES *Ps; + PEI_PPI_DATABASE PpiData; + + /// + /// The count of FVs which contains FFS and could be dispatched by PeiCore. + /// + UINTN FvCount; + + /// + /// The max count of FVs which contains FFS and could be dispatched by PeiCore. + /// + UINTN MaxFvCount; + + /// + /// Pointer to the buffer with the MaxFvCount number of entries. + /// Each entry is for one FV which contains FFS and could be dispatched by PeiCore. + /// + PEI_CORE_FV_HANDLE *Fv; + + /// + /// Pointer to the buffer with the MaxUnknownFvInfoCount number of entries. + /// Each entry is for one FV which could not be dispatched by PeiCore. + /// + PEI_CORE_UNKNOW_FORMAT_FV_INFO *UnknownFvInfo; + UINTN MaxUnknownFvInfoCount; + UINTN UnknownFvInfoCount; + + /// + /// Pointer to the buffer FvFileHandlers in PEI_CORE_FV_HANDLE specified by CurrentPeimFvCount. + /// + EFI_PEI_FILE_HANDLE *CurrentFvFileHandles; + UINTN AprioriCount; + UINTN CurrentPeimFvCount; + UINTN CurrentPeimCount; + EFI_PEI_FILE_HANDLE CurrentFileHandle; + BOOLEAN PeimNeedingDispatch; + BOOLEAN PeimDispatchOnThisPass; + BOOLEAN PeimDispatcherReenter; + EFI_PEI_HOB_POINTERS HobList; + BOOLEAN SwitchStackSignal; + BOOLEAN PeiMemoryInstalled; + VOID *CpuIo; + EFI_PEI_SECURITY2_PPI *PrivateSecurityPpi; + EFI_PEI_SERVICES ServiceTableShadow; + EFI_PEI_PPI_DESCRIPTOR *XipLoadFile; + EFI_PHYSICAL_ADDRESS PhysicalMemoryBegin; + UINT64 PhysicalMemoryLength; + EFI_PHYSICAL_ADDRESS FreePhysicalMemoryTop; + UINTN HeapOffset; + BOOLEAN HeapOffsetPositive; + UINTN StackOffset; + BOOLEAN StackOffsetPositive; + // + // Information for migrating memory pages allocated in pre-memory phase. + // + HOLE_MEMORY_DATA MemoryPages; + PEICORE_FUNCTION_POINTER ShadowedPeiCore; + CACHE_SECTION_DATA CacheSection; + // + // For Loading modules at fixed address feature to cache the top address below which the + // Runtime code, boot time code and PEI memory will be placed. Please note that the offset between this field + // and Ps should not be changed since maybe user could get this top address by using the offet to Ps. + // + EFI_PHYSICAL_ADDRESS LoadModuleAtFixAddressTopAddress; + // + // The field is define for Loading modules at fixed address feature to tracker the PEI code + // memory range usage. It is a bit mapped array in which every bit indicates the correspoding memory page + // available or not. + // + UINT64 *PeiCodeMemoryRangeUsageBitMap; + // + // This field points to the shadowed image read function + // + PE_COFF_LOADER_READ_FILE ShadowedImageRead; + + UINTN TempPeimCount; + + // + // Pointer to the temp buffer with the TempPeimCount number of entries. + // + EFI_PEI_FILE_HANDLE *TempFileHandles; + // + // Pointer to the temp buffer with the TempPeimCount number of entries. + // + EFI_GUID *TempFileGuid; + + // + // Temp Memory Range is not covered by PeiTempMem and Stack. + // Those Memory Range will be migrated into physical memory. + // + HOLE_MEMORY_DATA HoleData[HOLE_MAX_NUMBER]; +}; + +/// +/// Pei Core Instance Data Macros +/// +#define PEI_CORE_INSTANCE_FROM_PS_THIS(a) \ + CR(a, PEI_CORE_INSTANCE, Ps, PEI_CORE_HANDLE_SIGNATURE) + +/// +/// Union of temporarily used function pointers (to save stack space) +/// +typedef union { + PEICORE_FUNCTION_POINTER PeiCore; + EFI_PEIM_ENTRY_POINT2 PeimEntry; + EFI_PEIM_NOTIFY_ENTRY_POINT PeimNotifyEntry; + EFI_DXE_IPL_PPI *DxeIpl; + EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor; + EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor; + VOID *Raw; +} PEI_CORE_TEMP_POINTERS; + +typedef struct { + CONST EFI_SEC_PEI_HAND_OFF *SecCoreData; + EFI_PEI_PPI_DESCRIPTOR *PpiList; + VOID *Data; +} PEI_CORE_PARAMETERS; + +// +// PeiCore function +// +/** + + The entry routine to Pei Core, invoked by PeiMain during transition + from SEC to PEI. After switching stack in the PEI core, it will restart + with the old core data. + + + @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size + and location of temporary RAM, the stack location and the BFV location. + @param PpiList Points to a list of one or more PPI descriptors to be installed initially by the PEI core. + An empty PPI list consists of a single descriptor with the end-tag + EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. As part of its initialization + phase, the PEI Foundation will add these SEC-hosted PPIs to its PPI database such + that both the PEI Foundation and any modules can leverage the associated service + calls and/or code in these early PPIs + @param Data Pointer to old core data that is used to initialize the + core's data areas. + +**/ +VOID +EFIAPI +PeiCore ( + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList, + IN VOID *Data + ); + +// +// Dispatcher support functions +// + +/** + + This is the POSTFIX version of the dependency evaluator. When a + PUSH [PPI GUID] is encountered, a pointer to the GUID is stored on + the evaluation stack. When that entry is poped from the evaluation + stack, the PPI is checked if it is installed. This method allows + some time savings as not all PPIs must be checked for certain + operation types (AND, OR). + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param DependencyExpression Pointer to a dependency expression. The Grammar adheres to + the BNF described above and is stored in postfix notation. + + @retval TRUE if it is a well-formed Grammar + @retval FALSE if the dependency expression overflows the evaluation stack + if the dependency expression underflows the evaluation stack + if the dependency expression is not a well-formed Grammar. + +**/ +BOOLEAN +PeimDispatchReadiness ( + IN EFI_PEI_SERVICES **PeiServices, + IN VOID *DependencyExpression + ); + +/** + Conduct PEIM dispatch. + + @param SecCoreData Pointer to the data structure containing SEC to PEI handoff data + @param PrivateData Pointer to the private data passed in from caller + +**/ +VOID +PeiDispatcher ( + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN PEI_CORE_INSTANCE *PrivateData + ); + +/** + Initialize the Dispatcher's data members + + @param PrivateData PeiCore's private data structure + @param OldCoreData Old data from SecCore + NULL if being run in non-permament memory mode. + @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size + and location of temporary RAM, the stack location and the BFV location. + +**/ +VOID +InitializeDispatcherData ( + IN PEI_CORE_INSTANCE *PrivateData, + IN PEI_CORE_INSTANCE *OldCoreData, + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData + ); + +/** + This routine parses the Dependency Expression, if available, and + decides if the module can be executed. + + + @param Private PeiCore's private data structure + @param FileHandle PEIM's file handle + @param PeimCount The index of last dispatched PEIM. + + @retval TRUE Can be dispatched + @retval FALSE Cannot be dispatched + +**/ +BOOLEAN +DepexSatisfied ( + IN PEI_CORE_INSTANCE *Private, + IN EFI_PEI_FILE_HANDLE FileHandle, + IN UINTN PeimCount + ); + +// +// PPI support functions +// +/** + + Initialize PPI services. + + @param PrivateData Pointer to the PEI Core data. + @param OldCoreData Pointer to old PEI Core data. + NULL if being run in non-permament memory mode. + +**/ +VOID +InitializePpiServices ( + IN PEI_CORE_INSTANCE *PrivateData, + IN PEI_CORE_INSTANCE *OldCoreData + ); + +/** + + Migrate the Hob list from the temporary memory to PEI installed memory. + + @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size + and location of temporary RAM, the stack location and the BFV location. + @param PrivateData Pointer to PeiCore's private data structure. + +**/ +VOID +ConvertPpiPointers ( + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN PEI_CORE_INSTANCE *PrivateData + ); + +/** + + Install PPI services. It is implementation of EFI_PEI_SERVICE.InstallPpi. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param PpiList Pointer to ppi array that want to be installed. + + @retval EFI_SUCCESS if all PPIs in PpiList are successfully installed. + @retval EFI_INVALID_PARAMETER if PpiList is NULL pointer + if any PPI in PpiList is not valid + @retval EFI_OUT_OF_RESOURCES if there is no more memory resource to install PPI + +**/ +EFI_STATUS +EFIAPI +PeiInstallPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList + ); + +/** + + Re-Install PPI services. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param OldPpi Pointer to the old PEI PPI Descriptors. + @param NewPpi Pointer to the new PEI PPI Descriptors. + + @retval EFI_SUCCESS if the operation was successful + @retval EFI_INVALID_PARAMETER if OldPpi or NewPpi is NULL + if NewPpi is not valid + @retval EFI_NOT_FOUND if the PPI was not in the database + +**/ +EFI_STATUS +EFIAPI +PeiReInstallPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi, + IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi + ); + +/** + + Locate a given named PPI. + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param Guid Pointer to GUID of the PPI. + @param Instance Instance Number to discover. + @param PpiDescriptor Pointer to reference the found descriptor. If not NULL, + returns a pointer to the descriptor (includes flags, etc) + @param Ppi Pointer to reference the found PPI + + @retval EFI_SUCCESS if the PPI is in the database + @retval EFI_NOT_FOUND if the PPI is not in the database + +**/ +EFI_STATUS +EFIAPI +PeiLocatePpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_GUID *Guid, + IN UINTN Instance, + IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, + IN OUT VOID **Ppi + ); + +/** + + Install a notification for a given PPI. + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param NotifyList Pointer to list of Descriptors to notify upon. + + @retval EFI_SUCCESS if successful + @retval EFI_OUT_OF_RESOURCES if no space in the database + @retval EFI_INVALID_PARAMETER if not a good decriptor + +**/ +EFI_STATUS +EFIAPI +PeiNotifyPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList + ); + +/** + + Process the Notify List at dispatch level. + + @param PrivateData PeiCore's private data structure. + +**/ +VOID +ProcessDispatchNotifyList ( + IN PEI_CORE_INSTANCE *PrivateData + ); + +/** + + Process notifications. + + @param PrivateData PeiCore's private data structure + @param NotifyType Type of notify to fire. + @param InstallStartIndex Install Beginning index. + @param InstallStopIndex Install Ending index. + @param NotifyStartIndex Notify Beginning index. + @param NotifyStopIndex Notify Ending index. + +**/ +VOID +ProcessNotify ( + IN PEI_CORE_INSTANCE *PrivateData, + IN UINTN NotifyType, + IN INTN InstallStartIndex, + IN INTN InstallStopIndex, + IN INTN NotifyStartIndex, + IN INTN NotifyStopIndex + ); + +/** + Process PpiList from SEC phase. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param PpiList Points to a list of one or more PPI descriptors to be installed initially by the PEI core. + These PPI's will be installed and/or immediately signaled if they are notification type. + +**/ +VOID +ProcessPpiListFromSec ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList + ); + +// +// Boot mode support functions +// +/** + This service enables PEIMs to ascertain the present value of the boot mode. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param BootMode A pointer to contain the value of the boot mode. + + @retval EFI_SUCCESS The boot mode was returned successfully. + @retval EFI_INVALID_PARAMETER BootMode is NULL. + +**/ +EFI_STATUS +EFIAPI +PeiGetBootMode ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT EFI_BOOT_MODE *BootMode + ); + +/** + This service enables PEIMs to update the boot mode variable. + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param BootMode The value of the boot mode to set. + + @return EFI_SUCCESS The value was successfully updated + +**/ +EFI_STATUS +EFIAPI +PeiSetBootMode ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_BOOT_MODE BootMode + ); + +// +// Security support functions +// +/** + + Initialize the security services. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param OldCoreData Pointer to the old core data. + NULL if being run in non-permament memory mode. + +**/ +VOID +InitializeSecurityServices ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CORE_INSTANCE *OldCoreData + ); + +/** + Verify a Firmware volume. + + @param CurrentFvAddress Pointer to the current Firmware Volume under consideration + + @retval EFI_SUCCESS Firmware Volume is legal + @retval EFI_SECURITY_VIOLATION Firmware Volume fails integrity test + +**/ +EFI_STATUS +VerifyFv ( + IN EFI_FIRMWARE_VOLUME_HEADER *CurrentFvAddress + ); + +/** + Provide a callout to the security verification service. + + @param PrivateData PeiCore's private data structure + @param VolumeHandle Handle of FV + @param FileHandle Handle of PEIM's ffs + @param AuthenticationStatus Authentication status + + @retval EFI_SUCCESS Image is OK + @retval EFI_SECURITY_VIOLATION Image is illegal + @retval EFI_NOT_FOUND If security PPI is not installed. +**/ +EFI_STATUS +VerifyPeim ( + IN PEI_CORE_INSTANCE *PrivateData, + IN EFI_PEI_FV_HANDLE VolumeHandle, + IN EFI_PEI_FILE_HANDLE FileHandle, + IN UINT32 AuthenticationStatus + ); + +/** + + Gets the pointer to the HOB List. + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param HobList Pointer to the HOB List. + + @retval EFI_SUCCESS Get the pointer of HOB List + @retval EFI_NOT_AVAILABLE_YET the HOB List is not yet published + @retval EFI_INVALID_PARAMETER HobList is NULL (in debug mode) + +**/ +EFI_STATUS +EFIAPI +PeiGetHobList ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT VOID **HobList + ); + +/** + Add a new HOB to the HOB List. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param Type Type of the new HOB. + @param Length Length of the new HOB to allocate. + @param Hob Pointer to the new HOB. + + @return EFI_SUCCESS Success to create hob. + @retval EFI_INVALID_PARAMETER if Hob is NULL + @retval EFI_NOT_AVAILABLE_YET if HobList is still not available. + @retval EFI_OUT_OF_RESOURCES if there is no more memory to grow the Hoblist. + +**/ +EFI_STATUS +EFIAPI +PeiCreateHob ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINT16 Type, + IN UINT16 Length, + IN OUT VOID **Hob + ); + +/** + + Builds a Handoff Information Table HOB + + @param BootMode - Current Bootmode + @param MemoryBegin - Start Memory Address. + @param MemoryLength - Length of Memory. + + @return EFI_SUCCESS Always success to initialize HOB. + +**/ +EFI_STATUS +PeiCoreBuildHobHandoffInfoTable ( + IN EFI_BOOT_MODE BootMode, + IN EFI_PHYSICAL_ADDRESS MemoryBegin, + IN UINT64 MemoryLength + ); + +/** + Install SEC HOB data to the HOB List. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param SecHobList Pointer to SEC HOB List. + + @return EFI_SUCCESS Success to install SEC HOB data. + @retval EFI_OUT_OF_RESOURCES If there is no more memory to grow the Hoblist. + +**/ +EFI_STATUS +PeiInstallSecHobData ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_HOB_GENERIC_HEADER *SecHobList + ); + + +// +// FFS Fw Volume support functions +// +/** + Searches for the next matching file in the firmware volume. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param SearchType Filter to find only files of this type. + Type EFI_FV_FILETYPE_ALL causes no filtering to be done. + @param FvHandle Handle of firmware volume in which to search. + @param FileHandle On entry, points to the current handle from which to begin searching or NULL to start + at the beginning of the firmware volume. On exit, points the file handle of the next file + in the volume or NULL if there are no more files. + + @retval EFI_NOT_FOUND The file was not found. + @retval EFI_NOT_FOUND The header checksum was not zero. + @retval EFI_SUCCESS The file was found. + +**/ +EFI_STATUS +EFIAPI +PeiFfsFindNextFile ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINT8 SearchType, + IN EFI_PEI_FV_HANDLE FvHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle + ); + +/** + Searches for the next matching section within the specified file. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation + @param SectionType Filter to find only sections of this type. + @param FileHandle Pointer to the current file to search. + @param SectionData A pointer to the discovered section, if successful. + NULL if section not found + + @retval EFI_NOT_FOUND The section was not found. + @retval EFI_SUCCESS The section was found. + +**/ +EFI_STATUS +EFIAPI +PeiFfsFindSectionData ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_SECTION_TYPE SectionType, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData + ); + +/** + Searches for the next matching section within the specified file. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param SectionType The value of the section type to find. + @param SectionInstance Section instance to find. + @param FileHandle Handle of the firmware file to search. + @param SectionData A pointer to the discovered section, if successful. + @param AuthenticationStatus A pointer to the authentication status for this section. + + @retval EFI_SUCCESS The section was found. + @retval EFI_NOT_FOUND The section was not found. + +**/ +EFI_STATUS +EFIAPI +PeiFfsFindSectionData3 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_SECTION_TYPE SectionType, + IN UINTN SectionInstance, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData, + OUT UINT32 *AuthenticationStatus + ); + +/** + Search the firmware volumes by index + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation + @param Instance This instance of the firmware volume to find. The value 0 is the Boot Firmware + Volume (BFV). + @param VolumeHandle On exit, points to the next volume handle or NULL if it does not exist. + + @retval EFI_INVALID_PARAMETER VolumeHandle is NULL + @retval EFI_NOT_FOUND The volume was not found. + @retval EFI_SUCCESS The volume was found. + +**/ +EFI_STATUS +EFIAPI +PeiFfsFindNextVolume ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINTN Instance, + IN OUT EFI_PEI_FV_HANDLE *VolumeHandle + ); + +// +// Memory support functions +// +/** + + Initialize the memory services. + + @param PrivateData PeiCore's private data structure + @param SecCoreData Points to a data structure containing SEC to PEI handoff data, such as the size + and location of temporary RAM, the stack location and the BFV location. + @param OldCoreData Pointer to the PEI Core data. + NULL if being run in non-permament memory mode. + +**/ +VOID +InitializeMemoryServices ( + IN PEI_CORE_INSTANCE *PrivateData, + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN PEI_CORE_INSTANCE *OldCoreData + ); + +/** + + Install the permanent memory is now available. + Creates HOB (PHIT and Stack). + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param MemoryBegin Start of memory address. + @param MemoryLength Length of memory. + + @return EFI_SUCCESS Always success. + +**/ +EFI_STATUS +EFIAPI +PeiInstallPeiMemory ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS MemoryBegin, + IN UINT64 MemoryLength + ); + +/** + Migrate memory pages allocated in pre-memory phase. + Copy memory pages at temporary heap top to permanent heap top. + + @param[in] Private Pointer to the private data passed in from caller. + @param[in] TemporaryRamMigrated Temporary memory has been migrated to permanent memory. + +**/ +VOID +MigrateMemoryPages ( + IN PEI_CORE_INSTANCE *Private, + IN BOOLEAN TemporaryRamMigrated + ); + +/** + Migrate MemoryBaseAddress in memory allocation HOBs + from the temporary memory to PEI installed memory. + + @param[in] PrivateData Pointer to PeiCore's private data structure. + +**/ +VOID +ConvertMemoryAllocationHobs ( + IN PEI_CORE_INSTANCE *PrivateData + ); + +/** + The purpose of the service is to publish an interface that allows + PEIMs to allocate memory ranges that are managed by the PEI Foundation. + + Prior to InstallPeiMemory() being called, PEI will allocate pages from the heap. + After InstallPeiMemory() is called, PEI will allocate pages within the region + of memory provided by InstallPeiMemory() service in a best-effort fashion. + Location-specific allocations are not managed by the PEI foundation code. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param MemoryType The type of memory to allocate. + @param Pages The number of contiguous 4 KB pages to allocate. + @param Memory Pointer to a physical address. On output, the address is set to the base + of the page range that was allocated. + + @retval EFI_SUCCESS The memory range was successfully allocated. + @retval EFI_OUT_OF_RESOURCES The pages could not be allocated. + @retval EFI_INVALID_PARAMETER Type is not equal to EfiLoaderCode, EfiLoaderData, EfiRuntimeServicesCode, + EfiRuntimeServicesData, EfiBootServicesCode, EfiBootServicesData, + EfiACPIReclaimMemory, EfiReservedMemoryType, or EfiACPIMemoryNVS. + +**/ +EFI_STATUS +EFIAPI +PeiAllocatePages ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN Pages, + OUT EFI_PHYSICAL_ADDRESS *Memory + ); + +/** + Frees memory pages. + + @param[in] PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param[in] Memory The base physical address of the pages to be freed. + @param[in] Pages The number of contiguous 4 KB pages to free. + + @retval EFI_SUCCESS The requested pages were freed. + @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid. + @retval EFI_NOT_FOUND The requested memory pages were not allocated with + AllocatePages(). + +**/ +EFI_STATUS +EFIAPI +PeiFreePages ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN Pages + ); + +/** + + Memory allocation service on the temporary memory. + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param Size Amount of memory required + @param Buffer Address of pointer to the buffer + + @retval EFI_SUCCESS The allocation was successful + @retval EFI_OUT_OF_RESOURCES There is not enough heap to satisfy the requirement + to allocate the requested size. + +**/ +EFI_STATUS +EFIAPI +PeiAllocatePool ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINTN Size, + OUT VOID **Buffer + ); + +/** + + Routine for load image file. + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param FileHandle Pointer to the FFS file header of the image. + @param PeimState The dispatch state of the input PEIM handle. + @param EntryPoint Pointer to entry point of specified image file for output. + @param AuthenticationState Pointer to attestation authentication state of image. + + @retval EFI_SUCCESS Image is successfully loaded. + @retval EFI_NOT_FOUND Fail to locate necessary PPI + @retval Others Fail to load file. + +**/ +EFI_STATUS +PeiLoadImage ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_FILE_HANDLE FileHandle, + IN UINT8 PeimState, + OUT EFI_PHYSICAL_ADDRESS *EntryPoint, + OUT UINT32 *AuthenticationState + ); + +/** + + Core version of the Status Code reporter + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param CodeType Type of Status Code. + @param Value Value to output for Status Code. + @param Instance Instance Number of this status code. + @param CallerId ID of the caller of this status code. + @param Data Optional data associated with this status code. + + @retval EFI_SUCCESS if status code is successfully reported + @retval EFI_NOT_AVAILABLE_YET if StatusCodePpi has not been installed + +**/ +EFI_STATUS +EFIAPI +PeiReportStatusCode ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE CodeType, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN CONST EFI_GUID *CallerId, + IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL + ); + +/** + + Core version of the Reset System + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + + @retval EFI_NOT_AVAILABLE_YET PPI not available yet. + @retval EFI_DEVICE_ERROR Did not reset system. + Otherwise, resets the system. + +**/ +EFI_STATUS +EFIAPI +PeiResetSystem ( + IN CONST EFI_PEI_SERVICES **PeiServices + ); + +/** + Resets the entire platform. + + @param[in] ResetType The type of reset to perform. + @param[in] ResetStatus The status code for the reset. + @param[in] DataSize The size, in bytes, of ResetData. + @param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, or EfiResetShutdown + the data buffer starts with a Null-terminated string, optionally + followed by additional binary data. The string is a description + that the caller may use to further indicate the reason for the + system reset. ResetData is only valid if ResetStatus is something + other than EFI_SUCCESS unless the ResetType is EfiResetPlatformSpecific + where a minimum amount of ResetData is always required. + +**/ +VOID +EFIAPI +PeiResetSystem2 ( + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN VOID *ResetData OPTIONAL + ); + +/** + + Initialize PeiCore Fv List. + + + @param PrivateData - Pointer to PEI_CORE_INSTANCE. + @param SecCoreData - Pointer to EFI_SEC_PEI_HAND_OFF. + +**/ +VOID +PeiInitializeFv ( + IN PEI_CORE_INSTANCE *PrivateData, + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData + ); + +/** + Process Firmware Volum Information once FvInfoPPI install. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param NotifyDescriptor Address of the notification descriptor data structure. + @param Ppi Address of the PPI that was installed. + + @retval EFI_SUCCESS if the interface could be successfully installed + +**/ +EFI_STATUS +EFIAPI +FirmwareVolmeInfoPpiNotifyCallback ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ); + +/** + + Given the input VolumeHandle, search for the next matching name file. + + @param FileName File name to search. + @param VolumeHandle The current FV to search. + @param FileHandle Pointer to the file matching name in VolumeHandle. + NULL if file not found + + @retval EFI_NOT_FOUND No files matching the search criteria were found + @retval EFI_SUCCESS Success to search given file + +**/ +EFI_STATUS +EFIAPI +PeiFfsFindFileByName ( + IN CONST EFI_GUID *FileName, + IN EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_PEI_FILE_HANDLE *FileHandle + ); + +/** + Returns information about a specific file. + + @param FileHandle Handle of the file. + @param FileInfo Upon exit, points to the file's information. + + @retval EFI_INVALID_PARAMETER If FileInfo is NULL. + @retval EFI_INVALID_PARAMETER If FileHandle does not represent a valid file. + @retval EFI_SUCCESS File information returned. + +**/ +EFI_STATUS +EFIAPI +PeiFfsGetFileInfo ( + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO *FileInfo + ); + +/** + Returns information about a specific file. + + @param FileHandle Handle of the file. + @param FileInfo Upon exit, points to the file's information. + + @retval EFI_INVALID_PARAMETER If FileInfo is NULL. + @retval EFI_INVALID_PARAMETER If FileHandle does not represent a valid file. + @retval EFI_SUCCESS File information returned. + +**/ +EFI_STATUS +EFIAPI +PeiFfsGetFileInfo2 ( + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO2 *FileInfo + ); + +/** + Returns information about the specified volume. + + @param VolumeHandle Handle of the volume. + @param VolumeInfo Upon exit, points to the volume's information. + + @retval EFI_INVALID_PARAMETER If VolumeHandle does not represent a valid volume. + @retval EFI_INVALID_PARAMETER If VolumeInfo is NULL. + @retval EFI_SUCCESS Volume information returned. +**/ +EFI_STATUS +EFIAPI +PeiFfsGetVolumeInfo ( + IN EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_FV_INFO *VolumeInfo + ); + +/** + This routine enable a PEIM to register itself to shadow when PEI Foundation + discovery permanent memory. + + @param FileHandle File handle of a PEIM. + + @retval EFI_NOT_FOUND The file handle doesn't point to PEIM itself. + @retval EFI_ALREADY_STARTED Indicate that the PEIM has been registered itself. + @retval EFI_SUCCESS Successfully to register itself. + +**/ +EFI_STATUS +EFIAPI +PeiRegisterForShadow ( + IN EFI_PEI_FILE_HANDLE FileHandle + ); + +/** + Initialize image service that install PeiLoadFilePpi. + + @param PrivateData Pointer to PeiCore's private data structure PEI_CORE_INSTANCE. + @param OldCoreData Pointer to Old PeiCore's private data. + If NULL, PeiCore is entered at first time, stack/heap in temporary memory. + If not NULL, PeiCore is entered at second time, stack/heap has been moved + to permanent memory. + +**/ +VOID +InitializeImageServices ( + IN PEI_CORE_INSTANCE *PrivateData, + IN PEI_CORE_INSTANCE *OldCoreData + ); + +/** + The wrapper function of PeiLoadImageLoadImage(). + + @param This Pointer to EFI_PEI_LOAD_FILE_PPI. + @param FileHandle Pointer to the FFS file header of the image. + @param ImageAddressArg Pointer to PE/TE image. + @param ImageSizeArg Size of PE/TE image. + @param EntryPoint Pointer to entry point of specified image file for output. + @param AuthenticationState Pointer to attestation authentication state of image. + + @return Status of PeiLoadImageLoadImage(). + +**/ +EFI_STATUS +EFIAPI +PeiLoadImageLoadImageWrapper ( + IN CONST EFI_PEI_LOAD_FILE_PPI *This, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_PHYSICAL_ADDRESS *ImageAddressArg, OPTIONAL + OUT UINT64 *ImageSizeArg, OPTIONAL + OUT EFI_PHYSICAL_ADDRESS *EntryPoint, + OUT UINT32 *AuthenticationState + ); + +/** + + Provide a callback for when the security PPI is installed. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param NotifyDescriptor The descriptor for the notification event. + @param Ppi Pointer to the PPI in question. + + @return Always success + +**/ +EFI_STATUS +EFIAPI +SecurityPpiNotifyCallback ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ); + +/** + Get Fv image(s) from the FV type file, then install FV INFO(2) ppi, Build FV(2, 3) hob. + + @param PrivateData PeiCore's private data structure + @param ParentFvCoreHandle Pointer of EFI_CORE_FV_HANDLE to parent Fv image that contain this Fv image. + @param ParentFvFileHandle File handle of a Fv type file that contain this Fv image. + + @retval EFI_NOT_FOUND FV image can't be found. + @retval EFI_SUCCESS Successfully to process it. + @retval EFI_OUT_OF_RESOURCES Can not allocate page when aligning FV image + @retval EFI_SECURITY_VIOLATION Image is illegal + @retval Others Can not find EFI_SECTION_FIRMWARE_VOLUME_IMAGE section + +**/ +EFI_STATUS +ProcessFvFile ( + IN PEI_CORE_INSTANCE *PrivateData, + IN PEI_CORE_FV_HANDLE *ParentFvCoreHandle, + IN EFI_PEI_FILE_HANDLE ParentFvFileHandle + ); + +/** + Get instance of PEI_CORE_FV_HANDLE for next volume according to given index. + + This routine also will install FvInfo ppi for FV hob in PI ways. + + @param Private Pointer of PEI_CORE_INSTANCE + @param Instance The index of FV want to be searched. + + @return Instance of PEI_CORE_FV_HANDLE. +**/ +PEI_CORE_FV_HANDLE * +FindNextCoreFvHandle ( + IN PEI_CORE_INSTANCE *Private, + IN UINTN Instance + ); + +// +// Default EFI_PEI_CPU_IO_PPI support for EFI_PEI_SERVICES table when PeiCore initialization. +// + +/** + Memory-based read services. + + This function is to perform the Memory Access Read service based on installed + instance of the EFI_PEI_CPU_IO_PPI. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + @param Address The physical address of the access. + @param Count The number of accesses to perform. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_YET_AVAILABLE The service has not been installed. +**/ +EFI_STATUS +EFIAPI +PeiDefaultMemRead ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ); + +/** + Memory-based write services. + + This function is to perform the Memory Access Write service based on installed + instance of the EFI_PEI_CPU_IO_PPI. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + @param Address The physical address of the access. + @param Count The number of accesses to perform. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_YET_AVAILABLE The service has not been installed. +**/ +EFI_STATUS +EFIAPI +PeiDefaultMemWrite ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ); + +/** + IO-based read services. + + This function is to perform the IO-base read service for the EFI_PEI_CPU_IO_PPI. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + @param Address The physical address of the access. + @param Count The number of accesses to perform. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_YET_AVAILABLE The service has not been installed. +**/ +EFI_STATUS +EFIAPI +PeiDefaultIoRead ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ); + +/** + IO-based write services. + + This function is to perform the IO-base write service for the EFI_PEI_CPU_IO_PPI. + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + @param Address The physical address of the access. + @param Count The number of accesses to perform. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_YET_AVAILABLE The service has not been installed. +**/ +EFI_STATUS +EFIAPI +PeiDefaultIoWrite ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN EFI_PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ); + +/** + 8-bit I/O read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 8-bit value returned from the I/O space. +**/ +UINT8 +EFIAPI +PeiDefaultIoRead8 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ); + +/** + Reads an 16-bit I/O port. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return A 16-bit value returned from the I/O space. +**/ +UINT16 +EFIAPI +PeiDefaultIoRead16 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ); + +/** + Reads an 32-bit I/O port. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return A 32-bit value returned from the I/O space. +**/ +UINT32 +EFIAPI +PeiDefaultIoRead32 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ); + +/** + Reads an 64-bit I/O port. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return A 64-bit value returned from the I/O space. +**/ +UINT64 +EFIAPI +PeiDefaultIoRead64 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ); + +/** + 8-bit I/O write operations. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. +**/ +VOID +EFIAPI +PeiDefaultIoWrite8 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT8 Data + ); + +/** + 16-bit I/O write operations. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. +**/ +VOID +EFIAPI +PeiDefaultIoWrite16 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT16 Data + ); + +/** + 32-bit I/O write operations. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. +**/ +VOID +EFIAPI +PeiDefaultIoWrite32 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT32 Data + ); + +/** + 64-bit I/O write operations. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. +**/ +VOID +EFIAPI +PeiDefaultIoWrite64 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT64 Data + ); + +/** + 8-bit memory read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 8-bit value returned from the memory space. + +**/ +UINT8 +EFIAPI +PeiDefaultMemRead8 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ); + +/** + 16-bit memory read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 16-bit value returned from the memory space. + +**/ +UINT16 +EFIAPI +PeiDefaultMemRead16 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ); + +/** + 32-bit memory read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 32-bit value returned from the memory space. + +**/ +UINT32 +EFIAPI +PeiDefaultMemRead32 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ); + +/** + 64-bit memory read operations. + + If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then + return 0. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + + @return An 64-bit value returned from the memory space. + +**/ +UINT64 +EFIAPI +PeiDefaultMemRead64 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address + ); + +/** + 8-bit memory write operations. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. + +**/ +VOID +EFIAPI +PeiDefaultMemWrite8 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT8 Data + ); + +/** + 16-bit memory write operations. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. + +**/ +VOID +EFIAPI +PeiDefaultMemWrite16 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT16 Data + ); + +/** + 32-bit memory write operations. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. + +**/ +VOID +EFIAPI +PeiDefaultMemWrite32 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT32 Data + ); + +/** + 64-bit memory write operations. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Address The physical address of the access. + @param Data The data to write. + +**/ +VOID +EFIAPI +PeiDefaultMemWrite64 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_CPU_IO_PPI *This, + IN UINT64 Address, + IN UINT64 Data + ); + +extern EFI_PEI_CPU_IO_PPI gPeiDefaultCpuIoPpi; + +// +// Default EFI_PEI_PCI_CFG2_PPI support for EFI_PEI_SERVICES table when PeiCore initialization. +// + +/** + Reads from a given location in the PCI configuration space. + + If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + See EFI_PEI_PCI_CFG_PPI_WIDTH above. + @param Address The physical address of the access. The format of + the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER The invalid access width. + @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM. + +**/ +EFI_STATUS +EFIAPI +PeiDefaultPciCfg2Read ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PCI_CFG2_PPI *This, + IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN OUT VOID *Buffer + ); + +/** + Write to a given location in the PCI configuration space. + + If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM, then + return EFI_NOT_YET_AVAILABLE. + + @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. + See EFI_PEI_PCI_CFG_PPI_WIDTH above. + @param Address The physical address of the access. The format of + the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. + @param Buffer A pointer to the buffer of data. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER The invalid access width. + @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM. +**/ +EFI_STATUS +EFIAPI +PeiDefaultPciCfg2Write ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PCI_CFG2_PPI *This, + IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN OUT VOID *Buffer + ); + +/** + This function performs a read-modify-write operation on the contents from a given + location in the PCI configuration space. + + @param PeiServices An indirect pointer to the PEI Services Table + published by the PEI Foundation. + @param This Pointer to local data for the interface. + @param Width The width of the access. Enumerated in bytes. Type + EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read(). + @param Address The physical address of the access. + @param SetBits Points to value to bitwise-OR with the read configuration value. + The size of the value is determined by Width. + @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value. + The size of the value is determined by Width. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER The invalid access width. + @retval EFI_NOT_YET_AVAILABLE If the EFI_PEI_PCI_CFG2_PPI is not installed by platform/chipset PEIM. +**/ +EFI_STATUS +EFIAPI +PeiDefaultPciCfg2Modify ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PCI_CFG2_PPI *This, + IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN VOID *SetBits, + IN VOID *ClearBits + ); + +extern EFI_PEI_PCI_CFG2_PPI gPeiDefaultPciCfg2Ppi; + +/** + After PeiCore image is shadowed into permanent memory, all build-in FvPpi should + be re-installed with the instance in permanent memory and all cached FvPpi pointers in + PrivateData->Fv[] array should be fixed up to be pointed to the one in permanent + memory. + + @param PrivateData Pointer to PEI_CORE_INSTANCE. +**/ +VOID +PeiReinitializeFv ( + IN PEI_CORE_INSTANCE *PrivateData + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.c b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.c new file mode 100644 index 0000000..4f4b2e3 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.c @@ -0,0 +1,416 @@ +/** @file + PEI Services Table Pointer Library. + + This library is used for PEIM which does executed from flash device directly but + executed in memory. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include "PeiMain.h" + +extern EFI_PEI_CPU_IO_PPI mPeiDefaultCpuIoPpi; +extern EFI_PEI_PCI_CFG2_PPI mPeiDefaultPciCfg2Ppi; +extern EFI_PEI_SERVICES mPeiServices; + +PEI_CORE_INSTANCE mPrivateData = { + PEI_CORE_HANDLE_SIGNATURE, + &mPeiServices, +}; + +CONST EFI_PEI_SERVICES **gPeiServices = &mPrivateData.Ps; + +/** + Caches a pointer PEI Services Table. + + Caches the pointer to the PEI Services Table specified by PeiServicesTablePointer + in a CPU specific manner as specified in the CPU binding section of the Platform Initialization + Pre-EFI Initialization Core Interface Specification. + + If PeiServicesTablePointer is NULL, then ASSERT(). + + @param PeiServicesTablePointer The address of PeiServices pointer. +**/ +VOID +EFIAPI +SetPeiServicesTablePointer ( + IN CONST EFI_PEI_SERVICES ** PeiServicesTablePointer + ) +{ + ASSERT (FALSE); + ASSERT (PeiServicesTablePointer != NULL); + gPeiServices = PeiServicesTablePointer; +} + +/** + Retrieves the cached value of the PEI Services Table pointer. + + Returns the cached value of the PEI Services Table pointer in a CPU specific manner + as specified in the CPU binding section of the Platform Initialization Pre-EFI + Initialization Core Interface Specification. + + If the cached PEI Services Table pointer is NULL, then ASSERT(). + + @return The pointer to PeiServices. + +**/ +CONST EFI_PEI_SERVICES ** +EFIAPI +GetPeiServicesTablePointer ( + VOID + ) +{ + return gPeiServices; +} + +/** + Perform CPU specific actions required to migrate the PEI Services Table + pointer from temporary RAM to permanent RAM. + + For IA32 CPUs, the PEI Services Table pointer is stored in the 4 bytes + immediately preceding the Interrupt Descriptor Table (IDT) in memory. + For X64 CPUs, the PEI Services Table pointer is stored in the 8 bytes + immediately preceding the Interrupt Descriptor Table (IDT) in memory. + For Itanium and ARM CPUs, a the PEI Services Table Pointer is stored in + a dedicated CPU register. This means that there is no memory storage + associated with storing the PEI Services Table pointer, so no additional + migration actions are required for Itanium or ARM CPUs. + +**/ +VOID +EFIAPI +MigratePeiServicesTablePointer ( + VOID + ) +{ + // + // PEI Services Table pointer is cached in the global variable. No additional + // migration actions are required. + // + ASSERT (FALSE); + return; +} + +EFI_STATUS +EFIAPI +PeiInstallPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList + ); + +EFI_STATUS +EFIAPI +PeiReInstallPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi, + IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi + ); + +EFI_STATUS +EFIAPI +PeiLocatePpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_GUID *Guid, + IN UINTN Instance, + IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, + IN OUT VOID **Ppi + ); + +EFI_STATUS +EFIAPI +PeiNotifyPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList + ); + +EFI_STATUS +EFIAPI +PeiGetBootMode ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT EFI_BOOT_MODE *BootMode + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiSetBootMode ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_BOOT_MODE BootMode + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiGetHobList ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT VOID **HobList + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiCreateHob ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINT16 Type, + IN UINT16 Length, + IN OUT VOID **Hob + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiFfsFindNextVolume ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINTN Instance, + IN OUT EFI_PEI_FV_HANDLE *VolumeHandle + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiFfsFindNextFile ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINT8 SearchType, + IN EFI_PEI_FV_HANDLE FvHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiFfsFindSectionData ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_SECTION_TYPE SectionType, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiInstallPeiMemory ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS MemoryBegin, + IN UINT64 MemoryLength + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiAllocatePages ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN Pages, + OUT EFI_PHYSICAL_ADDRESS *Memory + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiAllocatePool ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINTN Size, + OUT VOID **Buffer + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiReportStatusCode ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE CodeType, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN CONST EFI_GUID *CallerId, + IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiResetSystem ( + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiFfsFindFileByName ( + IN CONST EFI_GUID *FileName, + IN EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_PEI_FILE_HANDLE *FileHandle + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiFfsGetFileInfo ( + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO *FileInfo + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiFfsGetVolumeInfo ( + IN EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_FV_INFO *VolumeInfo + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiRegisterForShadow ( + IN EFI_PEI_FILE_HANDLE FileHandle + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiFfsFindSectionData3 ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_SECTION_TYPE SectionType, + IN UINTN SectionInstance, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData, + OUT UINT32 *AuthenticationStatus + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +PeiFfsGetFileInfo2 ( + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO2 *FileInfo + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +VOID +EFIAPI +PeiResetSystem2 ( + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN VOID *ResetData OPTIONAL + ) +{ + ASSERT (FALSE); +} + +EFI_STATUS +EFIAPI +PeiFreePages ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN Pages + ) +{ + ASSERT (FALSE); + return EFI_NOT_AVAILABLE_YET; +} + +EFI_PEI_SERVICES mPeiServices = { + { + PEI_SERVICES_SIGNATURE, + PEI_SERVICES_REVISION, + sizeof (EFI_PEI_SERVICES), + 0, + 0 + }, + PeiInstallPpi, + PeiReInstallPpi, + PeiLocatePpi, + PeiNotifyPpi, + + PeiGetBootMode, + PeiSetBootMode, + + PeiGetHobList, + PeiCreateHob, + + PeiFfsFindNextVolume, + PeiFfsFindNextFile, + PeiFfsFindSectionData, + + PeiInstallPeiMemory, + PeiAllocatePages, + PeiAllocatePool, + (EFI_PEI_COPY_MEM)CopyMem, + (EFI_PEI_SET_MEM)SetMem, + + PeiReportStatusCode, + PeiResetSystem, + + &mPeiDefaultCpuIoPpi, + &mPeiDefaultPciCfg2Ppi, + + PeiFfsFindFileByName, + PeiFfsGetFileInfo, + PeiFfsGetVolumeInfo, + PeiRegisterForShadow, + PeiFfsFindSectionData3, + PeiFfsGetFileInfo2, + PeiResetSystem2, + PeiFreePages, +}; diff --git a/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.inf b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.inf new file mode 100644 index 0000000..4437214 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.inf @@ -0,0 +1,39 @@ +## @file +# Instance of PEI Services Table Pointer Library using global variable for the table pointer. +# +# PEI Services Table Pointer Library implementation that retrieves a pointer to the +# PEI Services Table from a global variable. Not available to modules that execute from +# read-only memory. +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = PeiServicesTablePointerLibHost + FILE_GUID = AFA925DB-1728-4CE3-9171-E72548E8526A + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + LIBRARY_CLASS = PeiServicesTablePointerLibHost|PEIM PEI_CORE SEC + +# +# VALID_ARCHITECTURES = IA32 X64 EBC (EBC is for build only) +# + +[Sources] + PeiServicesTablePointerLibHost.c + Ppi.c + CpuIo.c + PciCfg2.c + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + DebugLib + diff --git a/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/Ppi.c b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/Ppi.c new file mode 100644 index 0000000..2b88455 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/Ppi.c @@ -0,0 +1,583 @@ +/** @file + EFI PEI Core PPI services + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "PeiMain.h" + +/** + + This function installs an interface in the PEI PPI database by GUID. + The purpose of the service is to publish an interface that other parties + can use to call additional PEIMs. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param PpiList Pointer to a list of PEI PPI Descriptors. + @param Single TRUE if only single entry in the PpiList. + FALSE if the PpiList is ended with an entry which has the + EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST flag set in its Flags field. + + @retval EFI_SUCCESS if all PPIs in PpiList are successfully installed. + @retval EFI_INVALID_PARAMETER if PpiList is NULL pointer + if any PPI in PpiList is not valid + @retval EFI_OUT_OF_RESOURCES if there is no more memory resource to install PPI + +**/ +EFI_STATUS +InternalPeiInstallPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList, + IN BOOLEAN Single + ) +{ + PEI_CORE_INSTANCE *PrivateData; + PEI_PPI_LIST *PpiListPointer; + UINTN Index; + UINTN LastCount; + VOID *TempPtr; + + if (PpiList == NULL) { + return EFI_INVALID_PARAMETER; + } + + PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS(PeiServices); + + PpiListPointer = &PrivateData->PpiData.PpiList; + Index = PpiListPointer->CurrentCount; + LastCount = Index; + + // + // This is loop installs all PPI descriptors in the PpiList. It is terminated + // by the EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST being set in the last + // EFI_PEI_PPI_DESCRIPTOR in the list. + // + + for (;;) { + // + // Check if it is a valid PPI. + // If not, rollback list to exclude all in this list. + // Try to indicate which item failed. + // + if ((PpiList->Flags & EFI_PEI_PPI_DESCRIPTOR_PPI) == 0) { + PpiListPointer->CurrentCount = LastCount; + DEBUG((EFI_D_ERROR, "ERROR -> InstallPpi: %g %p\n", PpiList->Guid, PpiList->Ppi)); + return EFI_INVALID_PARAMETER; + } + + if (Index >= PpiListPointer->MaxCount) { + // + // Run out of room, grow the buffer. + // + TempPtr = AllocateZeroPool ( + sizeof (PEI_PPI_LIST_POINTERS) * (PpiListPointer->MaxCount + PPI_GROWTH_STEP) + ); + ASSERT (TempPtr != NULL); + CopyMem ( + TempPtr, + PpiListPointer->PpiPtrs, + sizeof (PEI_PPI_LIST_POINTERS) * PpiListPointer->MaxCount + ); + PpiListPointer->PpiPtrs = TempPtr; + PpiListPointer->MaxCount = PpiListPointer->MaxCount + PPI_GROWTH_STEP; + } + + DEBUG((EFI_D_INFO, "Install PPI: %g\n", PpiList->Guid)); + PpiListPointer->PpiPtrs[Index].Ppi = (EFI_PEI_PPI_DESCRIPTOR *) PpiList; + Index++; + PpiListPointer->CurrentCount++; + + if (Single) { + // + // Only single entry in the PpiList. + // + break; + } else if ((PpiList->Flags & EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST) == + EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST) { + // + // Continue until the end of the PPI List. + // + break; + } + // + // Go to the next descriptor. + // + PpiList++; + } + + // + // Process any callback level notifies for newly installed PPIs. + // + ProcessNotify ( + PrivateData, + EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK, + LastCount, + PpiListPointer->CurrentCount, + 0, + PrivateData->PpiData.CallbackNotifyList.CurrentCount + ); + + return EFI_SUCCESS; +} + +/** + + This function installs an interface in the PEI PPI database by GUID. + The purpose of the service is to publish an interface that other parties + can use to call additional PEIMs. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param PpiList Pointer to a list of PEI PPI Descriptors. + + @retval EFI_SUCCESS if all PPIs in PpiList are successfully installed. + @retval EFI_INVALID_PARAMETER if PpiList is NULL pointer + if any PPI in PpiList is not valid + @retval EFI_OUT_OF_RESOURCES if there is no more memory resource to install PPI + +**/ +EFI_STATUS +EFIAPI +PeiInstallPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList + ) +{ + return InternalPeiInstallPpi (PeiServices, PpiList, FALSE); +} + +/** + + This function reinstalls an interface in the PEI PPI database by GUID. + The purpose of the service is to publish an interface that other parties can + use to replace an interface of the same name in the protocol database with a + different interface. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param OldPpi Pointer to the old PEI PPI Descriptors. + @param NewPpi Pointer to the new PEI PPI Descriptors. + + @retval EFI_SUCCESS if the operation was successful + @retval EFI_INVALID_PARAMETER if OldPpi or NewPpi is NULL + @retval EFI_INVALID_PARAMETER if NewPpi is not valid + @retval EFI_NOT_FOUND if the PPI was not in the database + +**/ +EFI_STATUS +EFIAPI +PeiReInstallPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi, + IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi + ) +{ + PEI_CORE_INSTANCE *PrivateData; + UINTN Index; + + + if ((OldPpi == NULL) || (NewPpi == NULL)) { + return EFI_INVALID_PARAMETER; + } + + if ((NewPpi->Flags & EFI_PEI_PPI_DESCRIPTOR_PPI) == 0) { + return EFI_INVALID_PARAMETER; + } + + PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS(PeiServices); + + // + // Find the old PPI instance in the database. If we can not find it, + // return the EFI_NOT_FOUND error. + // + for (Index = 0; Index < PrivateData->PpiData.PpiList.CurrentCount; Index++) { + if (OldPpi == PrivateData->PpiData.PpiList.PpiPtrs[Index].Ppi) { + break; + } + } + if (Index == PrivateData->PpiData.PpiList.CurrentCount) { + return EFI_NOT_FOUND; + } + + // + // Replace the old PPI with the new one. + // + DEBUG((EFI_D_INFO, "Reinstall PPI: %g\n", NewPpi->Guid)); + PrivateData->PpiData.PpiList.PpiPtrs[Index].Ppi = (EFI_PEI_PPI_DESCRIPTOR *) NewPpi; + + // + // Process any callback level notifies for the newly installed PPI. + // + ProcessNotify ( + PrivateData, + EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK, + Index, + Index+1, + 0, + PrivateData->PpiData.CallbackNotifyList.CurrentCount + ); + + return EFI_SUCCESS; +} + +/** + + Locate a given named PPI. + + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param Guid Pointer to GUID of the PPI. + @param Instance Instance Number to discover. + @param PpiDescriptor Pointer to reference the found descriptor. If not NULL, + returns a pointer to the descriptor (includes flags, etc) + @param Ppi Pointer to reference the found PPI + + @retval EFI_SUCCESS if the PPI is in the database + @retval EFI_NOT_FOUND if the PPI is not in the database + +**/ +EFI_STATUS +EFIAPI +PeiLocatePpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_GUID *Guid, + IN UINTN Instance, + IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, + IN OUT VOID **Ppi + ) +{ + PEI_CORE_INSTANCE *PrivateData; + UINTN Index; + EFI_GUID *CheckGuid; + EFI_PEI_PPI_DESCRIPTOR *TempPtr; + + + PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS(PeiServices); + + // + // Search the data base for the matching instance of the GUIDed PPI. + // + for (Index = 0; Index < PrivateData->PpiData.PpiList.CurrentCount; Index++) { + TempPtr = PrivateData->PpiData.PpiList.PpiPtrs[Index].Ppi; + CheckGuid = TempPtr->Guid; + + // + // Don't use CompareGuid function here for performance reasons. + // Instead we compare the GUID as INT32 at a time and branch + // on the first failed comparison. + // + if ((((INT32 *)Guid)[0] == ((INT32 *)CheckGuid)[0]) && + (((INT32 *)Guid)[1] == ((INT32 *)CheckGuid)[1]) && + (((INT32 *)Guid)[2] == ((INT32 *)CheckGuid)[2]) && + (((INT32 *)Guid)[3] == ((INT32 *)CheckGuid)[3])) { + if (Instance == 0) { + + if (PpiDescriptor != NULL) { + *PpiDescriptor = TempPtr; + } + + if (Ppi != NULL) { + *Ppi = TempPtr->Ppi; + } + + + return EFI_SUCCESS; + } + Instance--; + } + } + + return EFI_NOT_FOUND; +} + +/** + + This function installs a notification service to be called back when a given + interface is installed or reinstalled. The purpose of the service is to publish + an interface that other parties can use to call additional PPIs that may materialize later. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param NotifyList Pointer to list of Descriptors to notify upon. + @param Single TRUE if only single entry in the NotifyList. + FALSE if the NotifyList is ended with an entry which has the + EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST flag set in its Flags field. + + @retval EFI_SUCCESS if successful + @retval EFI_OUT_OF_RESOURCES if no space in the database + @retval EFI_INVALID_PARAMETER if not a good descriptor + +**/ +EFI_STATUS +InternalPeiNotifyPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList, + IN BOOLEAN Single + ) +{ + PEI_CORE_INSTANCE *PrivateData; + PEI_CALLBACK_NOTIFY_LIST *CallbackNotifyListPointer; + UINTN CallbackNotifyIndex; + UINTN LastCallbackNotifyCount; + PEI_DISPATCH_NOTIFY_LIST *DispatchNotifyListPointer; + UINTN DispatchNotifyIndex; + UINTN LastDispatchNotifyCount; + VOID *TempPtr; + + if (NotifyList == NULL) { + return EFI_INVALID_PARAMETER; + } + + PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS(PeiServices); + + CallbackNotifyListPointer = &PrivateData->PpiData.CallbackNotifyList; + CallbackNotifyIndex = CallbackNotifyListPointer->CurrentCount; + LastCallbackNotifyCount = CallbackNotifyIndex; + + DispatchNotifyListPointer = &PrivateData->PpiData.DispatchNotifyList; + DispatchNotifyIndex = DispatchNotifyListPointer->CurrentCount; + LastDispatchNotifyCount = DispatchNotifyIndex; + + // + // This is loop installs all Notify descriptors in the NotifyList. It is + // terminated by the EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST being set in the last + // EFI_PEI_NOTIFY_DESCRIPTOR in the list. + // + + for (;;) { + // + // If some of the PPI data is invalid restore original Notify PPI database value + // + if ((NotifyList->Flags & EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES) == 0) { + CallbackNotifyListPointer->CurrentCount = LastCallbackNotifyCount; + DispatchNotifyListPointer->CurrentCount = LastDispatchNotifyCount; + DEBUG((DEBUG_ERROR, "ERROR -> NotifyPpi: %g %p\n", NotifyList->Guid, NotifyList->Notify)); + return EFI_INVALID_PARAMETER; + } + + if ((NotifyList->Flags & EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK) != 0) { + if (CallbackNotifyIndex >= CallbackNotifyListPointer->MaxCount) { + // + // Run out of room, grow the buffer. + // + TempPtr = AllocateZeroPool ( + sizeof (PEI_PPI_LIST_POINTERS) * (CallbackNotifyListPointer->MaxCount + CALLBACK_NOTIFY_GROWTH_STEP) + ); + ASSERT (TempPtr != NULL); + CopyMem ( + TempPtr, + CallbackNotifyListPointer->NotifyPtrs, + sizeof (PEI_PPI_LIST_POINTERS) * CallbackNotifyListPointer->MaxCount + ); + CallbackNotifyListPointer->NotifyPtrs = TempPtr; + CallbackNotifyListPointer->MaxCount = CallbackNotifyListPointer->MaxCount + CALLBACK_NOTIFY_GROWTH_STEP; + } + CallbackNotifyListPointer->NotifyPtrs[CallbackNotifyIndex].Notify = (EFI_PEI_NOTIFY_DESCRIPTOR *) NotifyList; + CallbackNotifyIndex++; + CallbackNotifyListPointer->CurrentCount++; + } else { + if (DispatchNotifyIndex >= DispatchNotifyListPointer->MaxCount) { + // + // Run out of room, grow the buffer. + // + TempPtr = AllocateZeroPool ( + sizeof (PEI_PPI_LIST_POINTERS) * (DispatchNotifyListPointer->MaxCount + DISPATCH_NOTIFY_GROWTH_STEP) + ); + ASSERT (TempPtr != NULL); + CopyMem ( + TempPtr, + DispatchNotifyListPointer->NotifyPtrs, + sizeof (PEI_PPI_LIST_POINTERS) * DispatchNotifyListPointer->MaxCount + ); + DispatchNotifyListPointer->NotifyPtrs = TempPtr; + DispatchNotifyListPointer->MaxCount = DispatchNotifyListPointer->MaxCount + DISPATCH_NOTIFY_GROWTH_STEP; + } + DispatchNotifyListPointer->NotifyPtrs[DispatchNotifyIndex].Notify = (EFI_PEI_NOTIFY_DESCRIPTOR *) NotifyList; + DispatchNotifyIndex++; + DispatchNotifyListPointer->CurrentCount++; + } + + DEBUG((EFI_D_INFO, "Register PPI Notify: %g\n", NotifyList->Guid)); + + if (Single) { + // + // Only single entry in the NotifyList. + // + break; + } else if ((NotifyList->Flags & EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST) == + EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST) { + // + // Continue until the end of the Notify List. + // + break; + } + // + // Go to the next descriptor. + // + NotifyList++; + } + + // + // Process any callback level notifies for all previously installed PPIs. + // + ProcessNotify ( + PrivateData, + EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK, + 0, + PrivateData->PpiData.PpiList.CurrentCount, + LastCallbackNotifyCount, + CallbackNotifyListPointer->CurrentCount + ); + + return EFI_SUCCESS; +} + +/** + + This function installs a notification service to be called back when a given + interface is installed or reinstalled. The purpose of the service is to publish + an interface that other parties can use to call additional PPIs that may materialize later. + + @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. + @param NotifyList Pointer to list of Descriptors to notify upon. + + @retval EFI_SUCCESS if successful + @retval EFI_OUT_OF_RESOURCES if no space in the database + @retval EFI_INVALID_PARAMETER if not a good descriptor + +**/ +EFI_STATUS +EFIAPI +PeiNotifyPpi ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList + ) +{ + return InternalPeiNotifyPpi (PeiServices, NotifyList, FALSE); +} + +/** + + Process the Notify List at dispatch level. + + @param PrivateData PeiCore's private data structure. + +**/ +VOID +ProcessDispatchNotifyList ( + IN PEI_CORE_INSTANCE *PrivateData + ) +{ + UINTN TempValue; + + while (TRUE) { + // + // Check if the PEIM that was just dispatched resulted in any + // Notifies getting installed. If so, go process any dispatch + // level Notifies that match the previouly installed PPIs. + // Use "while" instead of "if" since ProcessNotify can modify + // DispatchNotifyList.CurrentCount (with NotifyPpi) so we have + // to iterate until the same. + // + while (PrivateData->PpiData.DispatchNotifyList.LastDispatchedCount != PrivateData->PpiData.DispatchNotifyList.CurrentCount) { + TempValue = PrivateData->PpiData.DispatchNotifyList.CurrentCount; + ProcessNotify ( + PrivateData, + EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH, + 0, + PrivateData->PpiData.PpiList.LastDispatchedCount, + PrivateData->PpiData.DispatchNotifyList.LastDispatchedCount, + PrivateData->PpiData.DispatchNotifyList.CurrentCount + ); + PrivateData->PpiData.DispatchNotifyList.LastDispatchedCount = TempValue; + } + + // + // Check if the PEIM that was just dispatched resulted in any + // PPIs getting installed. If so, go process any dispatch + // level Notifies that match the installed PPIs. + // Use "while" instead of "if" since ProcessNotify can modify + // PpiList.CurrentCount (with InstallPpi) so we have to iterate + // until the same. + // + while (PrivateData->PpiData.PpiList.LastDispatchedCount != PrivateData->PpiData.PpiList.CurrentCount) { + TempValue = PrivateData->PpiData.PpiList.CurrentCount; + ProcessNotify ( + PrivateData, + EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH, + PrivateData->PpiData.PpiList.LastDispatchedCount, + PrivateData->PpiData.PpiList.CurrentCount, + 0, + PrivateData->PpiData.DispatchNotifyList.LastDispatchedCount + ); + PrivateData->PpiData.PpiList.LastDispatchedCount = TempValue; + } + + if (PrivateData->PpiData.DispatchNotifyList.LastDispatchedCount == PrivateData->PpiData.DispatchNotifyList.CurrentCount) { + break; + } + } + return; +} + +/** + + Process notifications. + + @param PrivateData PeiCore's private data structure + @param NotifyType Type of notify to fire. + @param InstallStartIndex Install Beginning index. + @param InstallStopIndex Install Ending index. + @param NotifyStartIndex Notify Beginning index. + @param NotifyStopIndex Notify Ending index. + +**/ +VOID +ProcessNotify ( + IN PEI_CORE_INSTANCE *PrivateData, + IN UINTN NotifyType, + IN INTN InstallStartIndex, + IN INTN InstallStopIndex, + IN INTN NotifyStartIndex, + IN INTN NotifyStopIndex + ) +{ + INTN Index1; + INTN Index2; + EFI_GUID *SearchGuid; + EFI_GUID *CheckGuid; + EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor; + + for (Index1 = NotifyStartIndex; Index1 < NotifyStopIndex; Index1++) { + if (NotifyType == EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK) { + NotifyDescriptor = PrivateData->PpiData.CallbackNotifyList.NotifyPtrs[Index1].Notify; + } else { + NotifyDescriptor = PrivateData->PpiData.DispatchNotifyList.NotifyPtrs[Index1].Notify; + } + + CheckGuid = NotifyDescriptor->Guid; + + for (Index2 = InstallStartIndex; Index2 < InstallStopIndex; Index2++) { + SearchGuid = PrivateData->PpiData.PpiList.PpiPtrs[Index2].Ppi->Guid; + // + // Don't use CompareGuid function here for performance reasons. + // Instead we compare the GUID as INT32 at a time and branch + // on the first failed comparison. + // + if ((((INT32 *)SearchGuid)[0] == ((INT32 *)CheckGuid)[0]) && + (((INT32 *)SearchGuid)[1] == ((INT32 *)CheckGuid)[1]) && + (((INT32 *)SearchGuid)[2] == ((INT32 *)CheckGuid)[2]) && + (((INT32 *)SearchGuid)[3] == ((INT32 *)CheckGuid)[3])) { + DEBUG ((EFI_D_INFO, "Notify: PPI Guid: %g, Peim notify entry point: %p\n", + SearchGuid, + NotifyDescriptor->Notify + )); + NotifyDescriptor->Notify ( + (EFI_PEI_SERVICES **) GetPeiServicesTablePointer (), + NotifyDescriptor, + (PrivateData->PpiData.PpiList.PpiPtrs[Index2].Ppi)->Ppi + ); + } + } + } +} + diff --git a/HBFA/UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.c b/HBFA/UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.c new file mode 100644 index 0000000..2e35cc6 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.c @@ -0,0 +1,39 @@ +/** @file + Entry point to a PEIM. + +Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include + + +#include +#include + +/** + The entry point of PE/COFF Image for a PEIM. + + This function is the entry point for a PEIM. This function must call ProcessLibraryConstructorList() + and ProcessModuleEntryPointList(). The return value from ProcessModuleEntryPointList() is returned. + If _gPeimRevision is not zero and PeiServices->Hdr.Revision is less than _gPeimRevison, then ASSERT(). + + @param FileHandle Handle of the file being invoked. + @param PeiServices Describes the list of possible PEI Services. + + @retval EFI_SUCCESS The PEIM executed normally. + @retval !EFI_SUCCESS The PEIM failed to execute normally. +**/ +EFI_STATUS +EFIAPI +_ModuleEntryPoint ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + diff --git a/HBFA/UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.inf b/HBFA/UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.inf new file mode 100644 index 0000000..26eab4b --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.inf @@ -0,0 +1,33 @@ +## @file +# Module entry point library for PEIM. +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = PeimEntryPointHost + FILE_GUID = CC3E60E7-92EC-4475-BFE2-A608E1776B73 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + LIBRARY_CLASS = PeimEntryPoint|PEIM + +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC (EBC is for build only) +# + +[Sources] + PeimEntryPointHost.c + + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + DebugLib + diff --git a/HBFA/UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.c b/HBFA/UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.c new file mode 100644 index 0000000..70a3fb7 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.c @@ -0,0 +1,218 @@ +/** @file + Instance of SMM memory check library. + + SMM memory check library library implementation. This library consumes SMM_ACCESS2_PROTOCOL + to get SMRAM information. In order to use this library instance, the platform should produce + all SMRAM range via SMM_ACCESS2_PROTOCOL, including the range for firmware (like SMM Core + and SMM driver) and/or specific dedicated hardware. + + Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include + +#include +#include +#include + +typedef struct { + EFI_PHYSICAL_ADDRESS Address; + UINT64 Size; +} SMM_COMMUNICATION_BUFFER_DESCRIPTOR; + +UINTN mSmmCommBufferDescCount; +SMM_COMMUNICATION_BUFFER_DESCRIPTOR *mSmmCommBufferDesc; + +/** + This function check if the buffer is valid per processor architecture and not overlap with SMRAM. + + @param Buffer The buffer start address to be checked. + @param Length The buffer length to be checked. + + @retval TRUE This buffer is valid per processor architecture and not overlap with SMRAM. + @retval FALSE This buffer is not valid per processor architecture or overlap with SMRAM. +**/ +BOOLEAN +EFIAPI +SmmIsBufferOutsideSmmValid ( + IN EFI_PHYSICAL_ADDRESS Buffer, + IN UINT64 Length + ) +{ + UINTN Index; + SMM_COMMUNICATION_BUFFER_DESCRIPTOR *SmmCommBufferDesc; + BOOLEAN InValidCommunicationRegion; + + InValidCommunicationRegion = FALSE; + SmmCommBufferDesc = mSmmCommBufferDesc; + for (Index = 0; Index < mSmmCommBufferDescCount; Index++) { + if ((Buffer >= SmmCommBufferDesc->Address) && + (Buffer + Length <= SmmCommBufferDesc->Address + SmmCommBufferDesc->Size)) { + InValidCommunicationRegion = TRUE; + } + SmmCommBufferDesc++; + } + + if (!InValidCommunicationRegion) { + DEBUG (( + EFI_D_ERROR, + "SmmIsBufferOutsideSmmValid: Not in ValidCommunicationRegion: Buffer (0x%lx) - Length (0x%lx)\n", + Buffer, + Length + )); + return FALSE; + } + + return TRUE; +} + +/** + Copies a source buffer (non-SMRAM) to a destination buffer (SMRAM). + + This function copies a source buffer (non-SMRAM) to a destination buffer (SMRAM). + It checks if source buffer is valid per processor architecture and not overlap with SMRAM. + If the check passes, it copies memory and returns EFI_SUCCESS. + If the check fails, it return EFI_SECURITY_VIOLATION. + The implementation must be reentrant. + + @param DestinationBuffer The pointer to the destination buffer of the memory copy. + @param SourceBuffer The pointer to the source buffer of the memory copy. + @param Length The number of bytes to copy from SourceBuffer to DestinationBuffer. + + @retval EFI_SECURITY_VIOLATION The SourceBuffer is invalid per processor architecture or overlap with SMRAM. + @retval EFI_SUCCESS Memory is copied. + +**/ +EFI_STATUS +EFIAPI +SmmCopyMemToSmram ( + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) +{ + if (!SmmIsBufferOutsideSmmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)SourceBuffer, Length)) { + DEBUG ((EFI_D_ERROR, "SmmCopyMemToSmram: Security Violation: Source (0x%x), Length (0x%x)\n", SourceBuffer, Length)); + return EFI_SECURITY_VIOLATION; + } + CopyMem (DestinationBuffer, SourceBuffer, Length); + return EFI_SUCCESS; +} + +/** + Copies a source buffer (SMRAM) to a destination buffer (NON-SMRAM). + + This function copies a source buffer (non-SMRAM) to a destination buffer (SMRAM). + It checks if destination buffer is valid per processor architecture and not overlap with SMRAM. + If the check passes, it copies memory and returns EFI_SUCCESS. + If the check fails, it returns EFI_SECURITY_VIOLATION. + The implementation must be reentrant. + + @param DestinationBuffer The pointer to the destination buffer of the memory copy. + @param SourceBuffer The pointer to the source buffer of the memory copy. + @param Length The number of bytes to copy from SourceBuffer to DestinationBuffer. + + @retval EFI_SECURITY_VIOLATION The DesinationBuffer is invalid per processor architecture or overlap with SMRAM. + @retval EFI_SUCCESS Memory is copied. + +**/ +EFI_STATUS +EFIAPI +SmmCopyMemFromSmram ( + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) +{ + if (!SmmIsBufferOutsideSmmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)DestinationBuffer, Length)) { + DEBUG ((EFI_D_ERROR, "SmmCopyMemFromSmram: Security Violation: Destination (0x%x), Length (0x%x)\n", DestinationBuffer, Length)); + return EFI_SECURITY_VIOLATION; + } + CopyMem (DestinationBuffer, SourceBuffer, Length); + return EFI_SUCCESS; +} + +/** + Copies a source buffer (NON-SMRAM) to a destination buffer (NON-SMRAM). + + This function copies a source buffer (non-SMRAM) to a destination buffer (SMRAM). + It checks if source buffer and destination buffer are valid per processor architecture and not overlap with SMRAM. + If the check passes, it copies memory and returns EFI_SUCCESS. + If the check fails, it returns EFI_SECURITY_VIOLATION. + The implementation must be reentrant, and it must handle the case where source buffer overlaps destination buffer. + + @param DestinationBuffer The pointer to the destination buffer of the memory copy. + @param SourceBuffer The pointer to the source buffer of the memory copy. + @param Length The number of bytes to copy from SourceBuffer to DestinationBuffer. + + @retval EFI_SECURITY_VIOLATION The DesinationBuffer is invalid per processor architecture or overlap with SMRAM. + @retval EFI_SECURITY_VIOLATION The SourceBuffer is invalid per processor architecture or overlap with SMRAM. + @retval EFI_SUCCESS Memory is copied. + +**/ +EFI_STATUS +EFIAPI +SmmCopyMem ( + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) +{ + if (!SmmIsBufferOutsideSmmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)DestinationBuffer, Length)) { + DEBUG ((EFI_D_ERROR, "SmmCopyMem: Security Violation: Destination (0x%x), Length (0x%x)\n", DestinationBuffer, Length)); + return EFI_SECURITY_VIOLATION; + } + if (!SmmIsBufferOutsideSmmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)SourceBuffer, Length)) { + DEBUG ((EFI_D_ERROR, "SmmCopyMem: Security Violation: Source (0x%x), Length (0x%x)\n", SourceBuffer, Length)); + return EFI_SECURITY_VIOLATION; + } + CopyMem (DestinationBuffer, SourceBuffer, Length); + return EFI_SUCCESS; +} + +/** + Fills a target buffer (NON-SMRAM) with a byte value. + + This function fills a target buffer (non-SMRAM) with a byte value. + It checks if target buffer is valid per processor architecture and not overlap with SMRAM. + If the check passes, it fills memory and returns EFI_SUCCESS. + If the check fails, it returns EFI_SECURITY_VIOLATION. + + @param Buffer The memory to set. + @param Length The number of bytes to set. + @param Value The value with which to fill Length bytes of Buffer. + + @retval EFI_SECURITY_VIOLATION The Buffer is invalid per processor architecture or overlap with SMRAM. + @retval EFI_SUCCESS Memory is set. + +**/ +EFI_STATUS +EFIAPI +SmmSetMem ( + OUT VOID *Buffer, + IN UINTN Length, + IN UINT8 Value + ) +{ + if (!SmmIsBufferOutsideSmmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)Buffer, Length)) { + DEBUG ((EFI_D_ERROR, "SmmSetMem: Security Violation: Source (0x%x), Length (0x%x)\n", Buffer, Length)); + return EFI_SECURITY_VIOLATION; + } + SetMem (Buffer, Length, Value); + return EFI_SUCCESS; +} + +VOID +EFIAPI +SmmMemLibInitialize ( + IN UINTN SmmCommBufferDescCount, + IN SMM_COMMUNICATION_BUFFER_DESCRIPTOR *SmmCommBufferDesc + ) +{ + mSmmCommBufferDescCount = SmmCommBufferDescCount; + mSmmCommBufferDesc = SmmCommBufferDesc; +} + diff --git a/HBFA/UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf b/HBFA/UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf new file mode 100644 index 0000000..5383813 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf @@ -0,0 +1,33 @@ +## @file +# Instance of SMM memory check library. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = SmmMemLibHost + FILE_GUID = 7F23F839-C81C-4B89-8132-69746FCBCE52 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = SmmMemLib + LIBRARY_CLASS = SmmMemLibStubLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + SmmMemLibHost.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + BaseMemoryLib + DebugLib + diff --git a/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Handle.c b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Handle.c new file mode 100644 index 0000000..a8e1564 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Handle.c @@ -0,0 +1,528 @@ +/** @file + SMM handle & protocol handling. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "PiSmmCore.h" + +// +// mSmmProtocolDatabase - A list of all protocols in the system. (simple list for now) +// gSmmHandleList - A list of all the handles in the system +// +LIST_ENTRY mSmmProtocolDatabase = INITIALIZE_LIST_HEAD_VARIABLE (mSmmProtocolDatabase); +LIST_ENTRY gSmmHandleList = INITIALIZE_LIST_HEAD_VARIABLE (gSmmHandleList); + +/** + Check whether a handle is a valid EFI_HANDLE + + @param UserHandle The handle to check + + @retval EFI_INVALID_PARAMETER The handle is NULL or not a valid EFI_HANDLE. + @retval EFI_SUCCESS The handle is valid EFI_HANDLE. + +**/ +EFI_STATUS +SmmValidateHandle ( + IN EFI_HANDLE UserHandle + ) +{ + IHANDLE *Handle; + + Handle = (IHANDLE *)UserHandle; + if (Handle == NULL) { + return EFI_INVALID_PARAMETER; + } + if (Handle->Signature != EFI_HANDLE_SIGNATURE) { + return EFI_INVALID_PARAMETER; + } + return EFI_SUCCESS; +} + +/** + Finds the protocol entry for the requested protocol. + + @param Protocol The ID of the protocol + @param Create Create a new entry if not found + + @return Protocol entry + +**/ +PROTOCOL_ENTRY * +SmmFindProtocolEntry ( + IN EFI_GUID *Protocol, + IN BOOLEAN Create + ) +{ + LIST_ENTRY *Link; + PROTOCOL_ENTRY *Item; + PROTOCOL_ENTRY *ProtEntry; + + // + // Search the database for the matching GUID + // + + ProtEntry = NULL; + for (Link = mSmmProtocolDatabase.ForwardLink; + Link != &mSmmProtocolDatabase; + Link = Link->ForwardLink) { + + Item = CR(Link, PROTOCOL_ENTRY, AllEntries, PROTOCOL_ENTRY_SIGNATURE); + if (CompareGuid (&Item->ProtocolID, Protocol)) { + // + // This is the protocol entry + // + ProtEntry = Item; + break; + } + } + + // + // If the protocol entry was not found and Create is TRUE, then + // allocate a new entry + // + if ((ProtEntry == NULL) && Create) { + ProtEntry = AllocatePool (sizeof(PROTOCOL_ENTRY)); + if (ProtEntry != NULL) { + // + // Initialize new protocol entry structure + // + ProtEntry->Signature = PROTOCOL_ENTRY_SIGNATURE; + CopyGuid ((VOID *)&ProtEntry->ProtocolID, Protocol); + InitializeListHead (&ProtEntry->Protocols); + InitializeListHead (&ProtEntry->Notify); + + // + // Add it to protocol database + // + InsertTailList (&mSmmProtocolDatabase, &ProtEntry->AllEntries); + } + } + return ProtEntry; +} + +/** + Finds the protocol instance for the requested handle and protocol. + Note: This function doesn't do parameters checking, it's caller's responsibility + to pass in valid parameters. + + @param Handle The handle to search the protocol on + @param Protocol GUID of the protocol + @param Interface The interface for the protocol being searched + + @return Protocol instance (NULL: Not found) + +**/ +PROTOCOL_INTERFACE * +SmmFindProtocolInterface ( + IN IHANDLE *Handle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ) +{ + PROTOCOL_INTERFACE *Prot; + PROTOCOL_ENTRY *ProtEntry; + LIST_ENTRY *Link; + + Prot = NULL; + + // + // Lookup the protocol entry for this protocol ID + // + ProtEntry = SmmFindProtocolEntry (Protocol, FALSE); + if (ProtEntry != NULL) { + // + // Look at each protocol interface for any matches + // + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link=Link->ForwardLink) { + // + // If this protocol interface matches, remove it + // + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + if (Prot->Interface == Interface && Prot->Protocol == ProtEntry) { + break; + } + Prot = NULL; + } + } + return Prot; +} + +/** + Wrapper function to SmmInstallProtocolInterfaceNotify. This is the public API which + Calls the private one which contains a BOOLEAN parameter for notifications + + @param UserHandle The handle to install the protocol handler on, + or NULL if a new handle is to be allocated + @param Protocol The protocol to add to the handle + @param InterfaceType Indicates whether Interface is supplied in + native form. + @param Interface The interface for the protocol being added + + @return Status code + +**/ +EFI_STATUS +EFIAPI +SmmInstallProtocolInterface ( + IN OUT EFI_HANDLE *UserHandle, + IN EFI_GUID *Protocol, + IN EFI_INTERFACE_TYPE InterfaceType, + IN VOID *Interface + ) +{ + return SmmInstallProtocolInterfaceNotify ( + UserHandle, + Protocol, + InterfaceType, + Interface, + TRUE + ); +} + +/** + Installs a protocol interface into the boot services environment. + + @param UserHandle The handle to install the protocol handler on, + or NULL if a new handle is to be allocated + @param Protocol The protocol to add to the handle + @param InterfaceType Indicates whether Interface is supplied in + native form. + @param Interface The interface for the protocol being added + @param Notify indicates whether notify the notification list + for this protocol + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Protocol interface successfully installed + +**/ +EFI_STATUS +SmmInstallProtocolInterfaceNotify ( + IN OUT EFI_HANDLE *UserHandle, + IN EFI_GUID *Protocol, + IN EFI_INTERFACE_TYPE InterfaceType, + IN VOID *Interface, + IN BOOLEAN Notify + ) +{ + PROTOCOL_INTERFACE *Prot; + PROTOCOL_ENTRY *ProtEntry; + IHANDLE *Handle; + EFI_STATUS Status; + VOID *ExistingInterface; + + // + // returns EFI_INVALID_PARAMETER if InterfaceType is invalid. + // Also added check for invalid UserHandle and Protocol pointers. + // + if (UserHandle == NULL || Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (InterfaceType != EFI_NATIVE_INTERFACE) { + return EFI_INVALID_PARAMETER; + } + + // + // Print debug message + // + DEBUG((DEBUG_LOAD | DEBUG_INFO, "SmmInstallProtocolInterface: %g %p\n", Protocol, Interface)); + + Status = EFI_OUT_OF_RESOURCES; + Prot = NULL; + Handle = NULL; + + if (*UserHandle != NULL) { + Status = SmmHandleProtocol (*UserHandle, Protocol, (VOID **)&ExistingInterface); + if (!EFI_ERROR (Status)) { + return EFI_INVALID_PARAMETER; + } + } + + // + // Lookup the Protocol Entry for the requested protocol + // + ProtEntry = SmmFindProtocolEntry (Protocol, TRUE); + if (ProtEntry == NULL) { + goto Done; + } + + // + // Allocate a new protocol interface structure + // + Prot = AllocateZeroPool (sizeof(PROTOCOL_INTERFACE)); + if (Prot == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + // + // If caller didn't supply a handle, allocate a new one + // + Handle = (IHANDLE *)*UserHandle; + if (Handle == NULL) { + Handle = AllocateZeroPool (sizeof(IHANDLE)); + if (Handle == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + // + // Initialize new handler structure + // + Handle->Signature = EFI_HANDLE_SIGNATURE; + InitializeListHead (&Handle->Protocols); + + // + // Add this handle to the list global list of all handles + // in the system + // + InsertTailList (&gSmmHandleList, &Handle->AllHandles); + } else { + Status = SmmValidateHandle (Handle); + if (EFI_ERROR (Status)) { + DEBUG((DEBUG_ERROR, "SmmInstallProtocolInterface: input handle at 0x%x is invalid\n", Handle)); + goto Done; + } + } + + // + // Each interface that is added must be unique + // + ASSERT (SmmFindProtocolInterface (Handle, Protocol, Interface) == NULL); + + // + // Initialize the protocol interface structure + // + Prot->Signature = PROTOCOL_INTERFACE_SIGNATURE; + Prot->Handle = Handle; + Prot->Protocol = ProtEntry; + Prot->Interface = Interface; + + // + // Add this protocol interface to the head of the supported + // protocol list for this handle + // + InsertHeadList (&Handle->Protocols, &Prot->Link); + + // + // Add this protocol interface to the tail of the + // protocol entry + // + InsertTailList (&ProtEntry->Protocols, &Prot->ByProtocol); + + // + // Notify the notification list for this protocol + // + if (Notify) { + SmmNotifyProtocol (Prot); + } + Status = EFI_SUCCESS; + +Done: + if (!EFI_ERROR (Status)) { + // + // Return the new handle back to the caller + // + *UserHandle = Handle; + } else { + // + // There was an error, clean up + // + if (Prot != NULL) { + FreePool (Prot); + } + DEBUG((DEBUG_ERROR, "SmmInstallProtocolInterface: %g %p failed with %r\n", Protocol, Interface, Status)); + } + return Status; +} + +/** + Uninstalls all instances of a protocol:interfacer from a handle. + If the last protocol interface is remove from the handle, the + handle is freed. + + @param UserHandle The handle to remove the protocol handler from + @param Protocol The protocol, of protocol:interface, to remove + @param Interface The interface, of protocol:interface, to remove + + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_SUCCESS Protocol interface successfully uninstalled. + +**/ +EFI_STATUS +EFIAPI +SmmUninstallProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ) +{ + EFI_STATUS Status; + IHANDLE *Handle; + PROTOCOL_INTERFACE *Prot; + + // + // Check that Protocol is valid + // + if (Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // Check that UserHandle is a valid handle + // + Status = SmmValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Check that Protocol exists on UserHandle, and Interface matches the interface in the database + // + Prot = SmmFindProtocolInterface (UserHandle, Protocol, Interface); + if (Prot == NULL) { + return EFI_NOT_FOUND; + } + + // + // Remove the protocol interface from the protocol + // + Status = EFI_NOT_FOUND; + Handle = (IHANDLE *)UserHandle; + Prot = SmmRemoveInterfaceFromProtocol (Handle, Protocol, Interface); + + if (Prot != NULL) { + // + // Remove the protocol interface from the handle + // + RemoveEntryList (&Prot->Link); + + // + // Free the memory + // + Prot->Signature = 0; + FreePool (Prot); + Status = EFI_SUCCESS; + } + + // + // If there are no more handlers for the handle, free the handle + // + if (IsListEmpty (&Handle->Protocols)) { + Handle->Signature = 0; + RemoveEntryList (&Handle->AllHandles); + FreePool (Handle); + } + return Status; +} + +/** + Locate a certain GUID protocol interface in a Handle's protocols. + + @param UserHandle The handle to obtain the protocol interface on + @param Protocol The GUID of the protocol + + @return The requested protocol interface for the handle + +**/ +PROTOCOL_INTERFACE * +SmmGetProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol + ) +{ + EFI_STATUS Status; + PROTOCOL_ENTRY *ProtEntry; + PROTOCOL_INTERFACE *Prot; + IHANDLE *Handle; + LIST_ENTRY *Link; + + Status = SmmValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return NULL; + } + + Handle = (IHANDLE *)UserHandle; + + // + // Look at each protocol interface for a match + // + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + ProtEntry = Prot->Protocol; + if (CompareGuid (&ProtEntry->ProtocolID, Protocol)) { + return Prot; + } + } + return NULL; +} + +/** + Queries a handle to determine if it supports a specified protocol. + + @param UserHandle The handle being queried. + @param Protocol The published unique identifier of the protocol. + @param Interface Supplies the address where a pointer to the + corresponding Protocol Interface is returned. + + @retval EFI_SUCCESS The interface information for the specified protocol was returned. + @retval EFI_UNSUPPORTED The device does not support the specified protocol. + @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE.. + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_INVALID_PARAMETER Interface is NULL. + +**/ +EFI_STATUS +EFIAPI +SmmHandleProtocol ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + OUT VOID **Interface + ) +{ + EFI_STATUS Status; + PROTOCOL_INTERFACE *Prot; + + // + // Check for invalid Protocol + // + if (Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // Check for invalid Interface + // + if (Interface == NULL) { + return EFI_INVALID_PARAMETER; + } else { + *Interface = NULL; + } + + // + // Check for invalid UserHandle + // + Status = SmmValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Look at each protocol interface for a match + // + Prot = SmmGetProtocolInterface (UserHandle, Protocol); + if (Prot == NULL) { + return EFI_UNSUPPORTED; + } + + // + // This is the protocol interface entry for this protocol + // + *Interface = Prot->Interface; + + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/InstallConfigurationTable.c b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/InstallConfigurationTable.c new file mode 100644 index 0000000..57f31fa --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/InstallConfigurationTable.c @@ -0,0 +1,171 @@ +/** @file + System Management System Table Services SmmInstallConfigurationTable service + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "PiSmmCore.h" + +#define CONFIG_TABLE_SIZE_INCREASED 0x10 + +UINTN mSmmSystemTableAllocateSize = 0; + +/** + The SmmInstallConfigurationTable() function is used to maintain the list + of configuration tables that are stored in the System Management System + Table. The list is stored as an array of (GUID, Pointer) pairs. The list + must be allocated from pool memory with PoolType set to EfiRuntimeServicesData. + + @param SystemTable A pointer to the SMM System Table (SMST). + @param Guid A pointer to the GUID for the entry to add, update, or remove. + @param Table A pointer to the buffer of the table to add. + @param TableSize The size of the table to install. + + @retval EFI_SUCCESS The (Guid, Table) pair was added, updated, or removed. + @retval EFI_INVALID_PARAMETER Guid is not valid. + @retval EFI_NOT_FOUND An attempt was made to delete a non-existent entry. + @retval EFI_OUT_OF_RESOURCES There is not enough memory available to complete the operation. + +**/ +EFI_STATUS +EFIAPI +SmmInstallConfigurationTable ( + IN CONST EFI_SMM_SYSTEM_TABLE2 *SystemTable, + IN CONST EFI_GUID *Guid, + IN VOID *Table, + IN UINTN TableSize + ) +{ + UINTN Index; + EFI_CONFIGURATION_TABLE *ConfigurationTable; + EFI_CONFIGURATION_TABLE *OldTable; + + // + // If Guid is NULL, then this operation cannot be performed + // + if (Guid == NULL) { + return EFI_INVALID_PARAMETER; + } + + ConfigurationTable = gSmmCoreSmst.SmmConfigurationTable; + + // + // Search all the table for an entry that matches Guid + // + for (Index = 0; Index < gSmmCoreSmst.NumberOfTableEntries; Index++) { + if (CompareGuid (Guid, &(ConfigurationTable[Index].VendorGuid))) { + break; + } + } + + if (Index < gSmmCoreSmst.NumberOfTableEntries) { + // + // A match was found, so this is either a modify or a delete operation + // + if (Table != NULL) { + // + // If Table is not NULL, then this is a modify operation. + // Modify the table entry and return. + // + ConfigurationTable[Index].VendorTable = Table; + return EFI_SUCCESS; + } + + // + // A match was found and Table is NULL, so this is a delete operation. + // + gSmmCoreSmst.NumberOfTableEntries--; + + // + // Copy over deleted entry + // + CopyMem ( + &(ConfigurationTable[Index]), + &(ConfigurationTable[Index + 1]), + (gSmmCoreSmst.NumberOfTableEntries - Index) * sizeof (EFI_CONFIGURATION_TABLE) + ); + + } else { + // + // No matching GUIDs were found, so this is an add operation. + // + if (Table == NULL) { + // + // If Table is NULL on an add operation, then return an error. + // + return EFI_NOT_FOUND; + } + + // + // Assume that Index == gSmmCoreSmst.NumberOfTableEntries + // + if ((Index * sizeof (EFI_CONFIGURATION_TABLE)) >= mSmmSystemTableAllocateSize) { + // + // Allocate a table with one additional entry. + // + mSmmSystemTableAllocateSize += (CONFIG_TABLE_SIZE_INCREASED * sizeof (EFI_CONFIGURATION_TABLE)); + ConfigurationTable = AllocatePool (mSmmSystemTableAllocateSize); + if (ConfigurationTable == NULL) { + // + // If a new table could not be allocated, then return an error. + // + return EFI_OUT_OF_RESOURCES; + } + + if (gSmmCoreSmst.SmmConfigurationTable != NULL) { + // + // Copy the old table to the new table. + // + CopyMem ( + ConfigurationTable, + gSmmCoreSmst.SmmConfigurationTable, + Index * sizeof (EFI_CONFIGURATION_TABLE) + ); + + // + // Record the old table pointer. + // + OldTable = gSmmCoreSmst.SmmConfigurationTable; + + // + // As the SmmInstallConfigurationTable() may be re-entered by FreePool() in + // its calling stack, updating System table to the new table pointer must + // be done before calling FreePool() to free the old table. + // It can make sure the gSmmCoreSmst.SmmConfigurationTable point to the new + // table and avoid the errors of use-after-free to the old table by the + // reenter of SmmInstallConfigurationTable() in FreePool()'s calling stack. + // + gSmmCoreSmst.SmmConfigurationTable = ConfigurationTable; + + // + // Free the old table after updating System Table to the new table pointer. + // + FreePool (OldTable); + } else { + // + // Update System Table + // + gSmmCoreSmst.SmmConfigurationTable = ConfigurationTable; + } + } + + // + // Fill in the new entry + // + CopyGuid ((VOID *)&ConfigurationTable[Index].VendorGuid, Guid); + ConfigurationTable[Index].VendorTable = Table; + + // + // This is an add operation, so increment the number of table entries + // + gSmmCoreSmst.NumberOfTableEntries++; + } + + // + // CRC-32 field is ignorable for SMM System Table and should be set to zero + // + + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Locate.c b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Locate.c new file mode 100644 index 0000000..fe2b9c9 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Locate.c @@ -0,0 +1,489 @@ +/** @file + Locate handle functions + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "PiSmmCore.h" + +// +// ProtocolRequest - Last LocateHandle request ID +// +UINTN mSmmLocateHandleRequest = 0; + +// +// Internal prototypes +// + +typedef struct { + EFI_GUID *Protocol; + VOID *SearchKey; + LIST_ENTRY *Position; + PROTOCOL_ENTRY *ProtEntry; +} LOCATE_POSITION; + +typedef +IHANDLE * +(* CORE_GET_NEXT) ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ); + +/** + Routine to get the next Handle, when you are searching for all handles. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +SmmGetNextLocateAllHandles ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ) +{ + IHANDLE *Handle; + + // + // Next handle + // + Position->Position = Position->Position->ForwardLink; + + // + // If not at the end of the list, get the handle + // + Handle = NULL; + *Interface = NULL; + if (Position->Position != &gSmmHandleList) { + Handle = CR (Position->Position, IHANDLE, AllHandles, EFI_HANDLE_SIGNATURE); + } + return Handle; +} + +/** + Routine to get the next Handle, when you are searching for register protocol + notifies. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +SmmGetNextLocateByRegisterNotify ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ) +{ + IHANDLE *Handle; + PROTOCOL_NOTIFY *ProtNotify; + PROTOCOL_INTERFACE *Prot; + LIST_ENTRY *Link; + + Handle = NULL; + *Interface = NULL; + ProtNotify = Position->SearchKey; + + // + // If this is the first request, get the next handle + // + if (ProtNotify != NULL) { + ASSERT(ProtNotify->Signature == PROTOCOL_NOTIFY_SIGNATURE); + Position->SearchKey = NULL; + + // + // If not at the end of the list, get the next handle + // + Link = ProtNotify->Position->ForwardLink; + if (Link != &ProtNotify->Protocol->Protocols) { + Prot = CR (Link, PROTOCOL_INTERFACE, ByProtocol, PROTOCOL_INTERFACE_SIGNATURE); + Handle = Prot->Handle; + *Interface = Prot->Interface; + } + } + return Handle; +} + +/** + Routine to get the next Handle, when you are searching for a given protocol. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +SmmGetNextLocateByProtocol ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ) +{ + IHANDLE *Handle; + LIST_ENTRY *Link; + PROTOCOL_INTERFACE *Prot; + + Handle = NULL; + *Interface = NULL; + for (; ;) { + // + // Next entry + // + Link = Position->Position->ForwardLink; + Position->Position = Link; + + // + // If not at the end, return the handle + // + if (Link == &Position->ProtEntry->Protocols) { + Handle = NULL; + break; + } + + // + // Get the handle + // + Prot = CR(Link, PROTOCOL_INTERFACE, ByProtocol, PROTOCOL_INTERFACE_SIGNATURE); + Handle = Prot->Handle; + *Interface = Prot->Interface; + + // + // If this handle has not been returned this request, then + // return it now + // + if (Handle->LocateRequest != mSmmLocateHandleRequest) { + Handle->LocateRequest = mSmmLocateHandleRequest; + break; + } + } + return Handle; +} + +/** + Return the first Protocol Interface that matches the Protocol GUID. If + Registration is pasased in return a Protocol Instance that was just add + to the system. If Retistration is NULL return the first Protocol Interface + you find. + + @param Protocol The protocol to search for + @param Registration Optional Registration Key returned from + RegisterProtocolNotify() + @param Interface Return the Protocol interface (instance). + + @retval EFI_SUCCESS If a valid Interface is returned + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_NOT_FOUND Protocol interface not found + +**/ +EFI_STATUS +EFIAPI +SmmLocateProtocol ( + IN EFI_GUID *Protocol, + IN VOID *Registration OPTIONAL, + OUT VOID **Interface + ) +{ + EFI_STATUS Status; + LOCATE_POSITION Position; + PROTOCOL_NOTIFY *ProtNotify; + IHANDLE *Handle; + + if ((Interface == NULL) || (Protocol == NULL)) { + return EFI_INVALID_PARAMETER; + } + + *Interface = NULL; + Status = EFI_SUCCESS; + + // + // Set initial position + // + Position.Protocol = Protocol; + Position.SearchKey = Registration; + Position.Position = &gSmmHandleList; + + mSmmLocateHandleRequest += 1; + + if (Registration == NULL) { + // + // Look up the protocol entry and set the head pointer + // + Position.ProtEntry = SmmFindProtocolEntry (Protocol, FALSE); + if (Position.ProtEntry == NULL) { + return EFI_NOT_FOUND; + } + Position.Position = &Position.ProtEntry->Protocols; + + Handle = SmmGetNextLocateByProtocol (&Position, Interface); + } else { + Handle = SmmGetNextLocateByRegisterNotify (&Position, Interface); + } + + if (Handle == NULL) { + Status = EFI_NOT_FOUND; + } else if (Registration != NULL) { + // + // If this is a search by register notify and a handle was + // returned, update the register notification position + // + ProtNotify = Registration; + ProtNotify->Position = ProtNotify->Position->ForwardLink; + } + + return Status; +} + +/** + Locates the requested handle(s) and returns them in Buffer. + + @param SearchType The type of search to perform to locate the + handles + @param Protocol The protocol to search for + @param SearchKey Dependant on SearchType + @param BufferSize On input the size of Buffer. On output the + size of data returned. + @param Buffer The buffer to return the results in + + @retval EFI_BUFFER_TOO_SMALL Buffer too small, required buffer size is + returned in BufferSize. + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully found the requested handle(s) and + returns them in Buffer. + +**/ +EFI_STATUS +EFIAPI +SmmLocateHandle ( + IN EFI_LOCATE_SEARCH_TYPE SearchType, + IN EFI_GUID *Protocol OPTIONAL, + IN VOID *SearchKey OPTIONAL, + IN OUT UINTN *BufferSize, + OUT EFI_HANDLE *Buffer + ) +{ + EFI_STATUS Status; + LOCATE_POSITION Position; + PROTOCOL_NOTIFY *ProtNotify; + CORE_GET_NEXT GetNext; + UINTN ResultSize; + IHANDLE *Handle; + IHANDLE **ResultBuffer; + VOID *Interface; + + if (BufferSize == NULL) { + return EFI_INVALID_PARAMETER; + } + + if ((*BufferSize > 0) && (Buffer == NULL)) { + return EFI_INVALID_PARAMETER; + } + + GetNext = NULL; + + // + // Set initial position + // + Position.Protocol = Protocol; + Position.SearchKey = SearchKey; + Position.Position = &gSmmHandleList; + + ResultSize = 0; + ResultBuffer = (IHANDLE **) Buffer; + Status = EFI_SUCCESS; + + // + // Get the search function based on type + // + switch (SearchType) { + case AllHandles: + GetNext = SmmGetNextLocateAllHandles; + break; + + case ByRegisterNotify: + GetNext = SmmGetNextLocateByRegisterNotify; + // + // Must have SearchKey for locate ByRegisterNotify + // + if (SearchKey == NULL) { + Status = EFI_INVALID_PARAMETER; + } + break; + + case ByProtocol: + GetNext = SmmGetNextLocateByProtocol; + if (Protocol == NULL) { + Status = EFI_INVALID_PARAMETER; + break; + } + // + // Look up the protocol entry and set the head pointer + // + Position.ProtEntry = SmmFindProtocolEntry (Protocol, FALSE); + if (Position.ProtEntry == NULL) { + Status = EFI_NOT_FOUND; + break; + } + Position.Position = &Position.ProtEntry->Protocols; + break; + + default: + Status = EFI_INVALID_PARAMETER; + break; + } + + if (EFI_ERROR(Status)) { + return Status; + } + + // + // Enumerate out the matching handles + // + mSmmLocateHandleRequest += 1; + for (; ;) { + // + // Get the next handle. If no more handles, stop + // + Handle = GetNext (&Position, &Interface); + if (NULL == Handle) { + break; + } + + // + // Increase the resulting buffer size, and if this handle + // fits return it + // + ResultSize += sizeof(Handle); + if (ResultSize <= *BufferSize) { + *ResultBuffer = Handle; + ResultBuffer += 1; + } + } + + // + // If the result is a zero length buffer, then there were no + // matching handles + // + if (ResultSize == 0) { + Status = EFI_NOT_FOUND; + } else { + // + // Return the resulting buffer size. If it's larger than what + // was passed, then set the error code + // + if (ResultSize > *BufferSize) { + Status = EFI_BUFFER_TOO_SMALL; + } + + *BufferSize = ResultSize; + + if (SearchType == ByRegisterNotify && !EFI_ERROR(Status)) { + ASSERT (SearchKey != NULL); + // + // If this is a search by register notify and a handle was + // returned, update the register notification position + // + ProtNotify = SearchKey; + ProtNotify->Position = ProtNotify->Position->ForwardLink; + } + } + + return Status; +} + +/** + Function returns an array of handles that support the requested protocol + in a buffer allocated from pool. This is a version of SmmLocateHandle() + that allocates a buffer for the caller. + + @param SearchType Specifies which handle(s) are to be returned. + @param Protocol Provides the protocol to search by. This + parameter is only valid for SearchType + ByProtocol. + @param SearchKey Supplies the search key depending on the + SearchType. + @param NumberHandles The number of handles returned in Buffer. + @param Buffer A pointer to the buffer to return the requested + array of handles that support Protocol. + + @retval EFI_SUCCESS The result array of handles was returned. + @retval EFI_NOT_FOUND No handles match the search. + @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the + matching results. + @retval EFI_INVALID_PARAMETER One or more parameters are not valid. + +**/ +EFI_STATUS +EFIAPI +SmmLocateHandleBuffer ( + IN EFI_LOCATE_SEARCH_TYPE SearchType, + IN EFI_GUID *Protocol OPTIONAL, + IN VOID *SearchKey OPTIONAL, + IN OUT UINTN *NumberHandles, + OUT EFI_HANDLE **Buffer + ) +{ + EFI_STATUS Status; + UINTN BufferSize; + + if (NumberHandles == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (Buffer == NULL) { + return EFI_INVALID_PARAMETER; + } + + BufferSize = 0; + *NumberHandles = 0; + *Buffer = NULL; + Status = SmmLocateHandle ( + SearchType, + Protocol, + SearchKey, + &BufferSize, + *Buffer + ); + // + // LocateHandleBuffer() returns incorrect status code if SearchType is + // invalid. + // + // Add code to correctly handle expected errors from SmmLocateHandle(). + // + if (EFI_ERROR(Status) && Status != EFI_BUFFER_TOO_SMALL) { + if (Status != EFI_INVALID_PARAMETER) { + Status = EFI_NOT_FOUND; + } + return Status; + } + + *Buffer = AllocatePool (BufferSize); + if (*Buffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Status = SmmLocateHandle ( + SearchType, + Protocol, + SearchKey, + &BufferSize, + *Buffer + ); + + *NumberHandles = BufferSize / sizeof(EFI_HANDLE); + if (EFI_ERROR(Status)) { + *NumberHandles = 0; + } + + return Status; +} diff --git a/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Notify.c b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Notify.c new file mode 100644 index 0000000..8e078f7 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/Notify.c @@ -0,0 +1,196 @@ +/** @file + Support functions for UEFI protocol notification infrastructure. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "PiSmmCore.h" + +/** + Signal event for every protocol in protocol entry. + + @param Prot Protocol interface + +**/ +VOID +SmmNotifyProtocol ( + IN PROTOCOL_INTERFACE *Prot + ) +{ + PROTOCOL_ENTRY *ProtEntry; + PROTOCOL_NOTIFY *ProtNotify; + LIST_ENTRY *Link; + + ProtEntry = Prot->Protocol; + for (Link=ProtEntry->Notify.ForwardLink; Link != &ProtEntry->Notify; Link=Link->ForwardLink) { + ProtNotify = CR(Link, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE); + ProtNotify->Function (&ProtEntry->ProtocolID, Prot->Interface, Prot->Handle); + } +} + +/** + Removes Protocol from the protocol list (but not the handle list). + + @param Handle The handle to remove protocol on. + @param Protocol GUID of the protocol to be moved + @param Interface The interface of the protocol + + @return Protocol Entry + +**/ +PROTOCOL_INTERFACE * +SmmRemoveInterfaceFromProtocol ( + IN IHANDLE *Handle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ) +{ + PROTOCOL_INTERFACE *Prot; + PROTOCOL_NOTIFY *ProtNotify; + PROTOCOL_ENTRY *ProtEntry; + LIST_ENTRY *Link; + + Prot = SmmFindProtocolInterface (Handle, Protocol, Interface); + if (Prot != NULL) { + + ProtEntry = Prot->Protocol; + + // + // If there's a protocol notify location pointing to this entry, back it up one + // + for(Link = ProtEntry->Notify.ForwardLink; Link != &ProtEntry->Notify; Link=Link->ForwardLink) { + ProtNotify = CR(Link, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE); + + if (ProtNotify->Position == &Prot->ByProtocol) { + ProtNotify->Position = Prot->ByProtocol.BackLink; + } + } + + // + // Remove the protocol interface entry + // + RemoveEntryList (&Prot->ByProtocol); + } + + return Prot; +} + +/** + Add a new protocol notification record for the request protocol. + + @param Protocol The requested protocol to add the notify + registration + @param Function Points to the notification function + @param Registration Returns the registration record + + @retval EFI_SUCCESS Successfully returned the registration record + that has been added or unhooked + @retval EFI_INVALID_PARAMETER Protocol is NULL or Registration is NULL + @retval EFI_OUT_OF_RESOURCES Not enough memory resource to finish the request + @retval EFI_NOT_FOUND If the registration is not found when Function == NULL + +**/ +EFI_STATUS +EFIAPI +SmmRegisterProtocolNotify ( + IN CONST EFI_GUID *Protocol, + IN EFI_SMM_NOTIFY_FN Function, + OUT VOID **Registration + ) +{ + PROTOCOL_ENTRY *ProtEntry; + PROTOCOL_NOTIFY *ProtNotify; + LIST_ENTRY *Link; + EFI_STATUS Status; + + if (Protocol == NULL || Registration == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (Function == NULL) { + // + // Get the protocol entry per Protocol + // + ProtEntry = SmmFindProtocolEntry ((EFI_GUID *) Protocol, FALSE); + if (ProtEntry != NULL) { + ProtNotify = (PROTOCOL_NOTIFY * )*Registration; + for (Link = ProtEntry->Notify.ForwardLink; + Link != &ProtEntry->Notify; + Link = Link->ForwardLink) { + // + // Compare the notification record + // + if (ProtNotify == (CR(Link, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE))){ + // + // If Registration is an existing registration, then unhook it + // + ProtNotify->Signature = 0; + RemoveEntryList (&ProtNotify->Link); + FreePool (ProtNotify); + return EFI_SUCCESS; + } + } + } + // + // If the registration is not found + // + return EFI_NOT_FOUND; + } + + ProtNotify = NULL; + + // + // Get the protocol entry to add the notification too + // + ProtEntry = SmmFindProtocolEntry ((EFI_GUID *) Protocol, TRUE); + if (ProtEntry != NULL) { + // + // Find whether notification already exist + // + for (Link = ProtEntry->Notify.ForwardLink; + Link != &ProtEntry->Notify; + Link = Link->ForwardLink) { + + ProtNotify = CR(Link, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE); + if (CompareGuid (&ProtNotify->Protocol->ProtocolID, Protocol) && + (ProtNotify->Function == Function)) { + + // + // Notification already exist + // + *Registration = ProtNotify; + + return EFI_SUCCESS; + } + } + + // + // Allocate a new notification record + // + ProtNotify = AllocatePool (sizeof(PROTOCOL_NOTIFY)); + if (ProtNotify != NULL) { + ProtNotify->Signature = PROTOCOL_NOTIFY_SIGNATURE; + ProtNotify->Protocol = ProtEntry; + ProtNotify->Function = Function; + // + // Start at the ending + // + ProtNotify->Position = ProtEntry->Protocols.BackLink; + + InsertTailList (&ProtEntry->Notify, &ProtNotify->Link); + } + } + + // + // Done. If we have a protocol notify entry, then return it. + // Otherwise, we must have run out of resources trying to add one + // + Status = EFI_OUT_OF_RESOURCES; + if (ProtNotify != NULL) { + *Registration = ProtNotify; + Status = EFI_SUCCESS; + } + return Status; +} diff --git a/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/PiSmmCore.c b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/PiSmmCore.c new file mode 100644 index 0000000..8edf7b3 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/PiSmmCore.c @@ -0,0 +1,85 @@ +/** @file + SMM Core Main Entry Point + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "PiSmmCore.h" + +// +// SMM Core global variable for SMM System Table. Only accessed as a physical structure in SMRAM. +// +EFI_SMM_SYSTEM_TABLE2 gSmmCoreSmst = { + { + SMM_SMST_SIGNATURE, + EFI_SMM_SYSTEM_TABLE2_REVISION, + sizeof (gSmmCoreSmst.Hdr) + }, + NULL, // SmmFirmwareVendor + 0, // SmmFirmwareRevision + SmmInstallConfigurationTable, + { + { + (EFI_SMM_CPU_IO2) SmmEfiNotAvailableYetArg5, // SmmMemRead + (EFI_SMM_CPU_IO2) SmmEfiNotAvailableYetArg5 // SmmMemWrite + }, + { + (EFI_SMM_CPU_IO2) SmmEfiNotAvailableYetArg5, // SmmIoRead + (EFI_SMM_CPU_IO2) SmmEfiNotAvailableYetArg5 // SmmIoWrite + } + }, + SmmAllocatePool, + SmmFreePool, + SmmAllocatePages, + SmmFreePages, + NULL, // SmmStartupThisAp + 0, // CurrentlyExecutingCpu + 0, // NumberOfCpus + NULL, // CpuSaveStateSize + NULL, // CpuSaveState + 0, // NumberOfTableEntries + NULL, // SmmConfigurationTable + SmmInstallProtocolInterface, + SmmUninstallProtocolInterface, + SmmHandleProtocol, + SmmRegisterProtocolNotify, + SmmLocateHandle, + SmmLocateProtocol, + SmiManage, + SmiHandlerRegister, + SmiHandlerUnRegister +}; + +/** + Place holder function until all the SMM System Table Service are available. + + Note: This function is only used by SMRAM invocation. It is never used by DXE invocation. + + @param Arg1 Undefined + @param Arg2 Undefined + @param Arg3 Undefined + @param Arg4 Undefined + @param Arg5 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +SmmEfiNotAvailableYetArg5 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4, + UINTN Arg5 + ) +{ + // + // This function should never be executed. If it does, then the architectural protocols + // have not been designed correctly. + // + return EFI_NOT_AVAILABLE_YET; +} + diff --git a/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/PiSmmCore.h b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/PiSmmCore.h new file mode 100644 index 0000000..bb9efb4 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/PiSmmCore.h @@ -0,0 +1,1352 @@ +/** @file + The internal header file includes the common header files, defines + internal structure and functions used by SmmCore module. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _SMM_CORE_H_ +#define _SMM_CORE_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//#include "PiSmmCorePrivateData.h" +//#include "HeapGuard.h" + +// +// Used to build a table of SMI Handlers that the SMM Core registers +// +typedef struct { + EFI_SMM_HANDLER_ENTRY_POINT2 Handler; + EFI_GUID *HandlerType; + EFI_HANDLE DispatchHandle; + BOOLEAN UnRegister; +} SMM_CORE_SMI_HANDLERS; + +// +// SMM_HANDLER - used for each SMM handler +// + +#define SMI_ENTRY_SIGNATURE SIGNATURE_32('s','m','i','e') + + typedef struct { + UINTN Signature; + LIST_ENTRY AllEntries; // All entries + + EFI_GUID HandlerType; // Type of interrupt + LIST_ENTRY SmiHandlers; // All handlers +} SMI_ENTRY; + +#define SMI_HANDLER_SIGNATURE SIGNATURE_32('s','m','i','h') + + typedef struct { + UINTN Signature; + LIST_ENTRY Link; // Link on SMI_ENTRY.SmiHandlers + EFI_SMM_HANDLER_ENTRY_POINT2 Handler; // The smm handler's entry point + UINTN CallerAddr; // The address of caller who register the SMI handler. + SMI_ENTRY *SmiEntry; + VOID *Context; // for profile + UINTN ContextSize; // for profile +} SMI_HANDLER; + +// +// Structure for recording the state of an SMM Driver +// +#define EFI_SMM_DRIVER_ENTRY_SIGNATURE SIGNATURE_32('s', 'd','r','v') + +typedef struct { + UINTN Signature; + LIST_ENTRY Link; // mDriverList + + LIST_ENTRY ScheduledLink; // mScheduledQueue + + EFI_HANDLE FvHandle; + EFI_GUID FileName; + EFI_DEVICE_PATH_PROTOCOL *FvFileDevicePath; + EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv; + + VOID *Depex; + UINTN DepexSize; + + BOOLEAN Before; + BOOLEAN After; + EFI_GUID BeforeAfterGuid; + + BOOLEAN Dependent; + BOOLEAN Scheduled; + BOOLEAN Initialized; + BOOLEAN DepexProtocolError; + + EFI_HANDLE ImageHandle; + EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; + // + // Image EntryPoint in SMRAM + // + PHYSICAL_ADDRESS ImageEntryPoint; + // + // Image Buffer in SMRAM + // + PHYSICAL_ADDRESS ImageBuffer; + // + // Image Page Number + // + UINTN NumberOfPage; + EFI_HANDLE SmmImageHandle; + EFI_LOADED_IMAGE_PROTOCOL SmmLoadedImage; +} EFI_SMM_DRIVER_ENTRY; + +#define EFI_HANDLE_SIGNATURE SIGNATURE_32('h','n','d','l') + +/// +/// IHANDLE - contains a list of protocol handles +/// +typedef struct { + UINTN Signature; + /// All handles list of IHANDLE + LIST_ENTRY AllHandles; + /// List of PROTOCOL_INTERFACE's for this handle + LIST_ENTRY Protocols; + UINTN LocateRequest; +} IHANDLE; + +#define ASSERT_IS_HANDLE(a) ASSERT((a)->Signature == EFI_HANDLE_SIGNATURE) + +#define PROTOCOL_ENTRY_SIGNATURE SIGNATURE_32('p','r','t','e') + +/// +/// PROTOCOL_ENTRY - each different protocol has 1 entry in the protocol +/// database. Each handler that supports this protocol is listed, along +/// with a list of registered notifies. +/// +typedef struct { + UINTN Signature; + /// Link Entry inserted to mSmmProtocolDatabase + LIST_ENTRY AllEntries; + /// ID of the protocol + EFI_GUID ProtocolID; + /// All protocol interfaces + LIST_ENTRY Protocols; + /// Registerd notification handlers + LIST_ENTRY Notify; +} PROTOCOL_ENTRY; + +#define PROTOCOL_INTERFACE_SIGNATURE SIGNATURE_32('p','i','f','c') + +/// +/// PROTOCOL_INTERFACE - each protocol installed on a handle is tracked +/// with a protocol interface structure +/// +typedef struct { + UINTN Signature; + /// Link on IHANDLE.Protocols + LIST_ENTRY Link; + /// Back pointer + IHANDLE *Handle; + /// Link on PROTOCOL_ENTRY.Protocols + LIST_ENTRY ByProtocol; + /// The protocol ID + PROTOCOL_ENTRY *Protocol; + /// The interface value + VOID *Interface; +} PROTOCOL_INTERFACE; + +#define PROTOCOL_NOTIFY_SIGNATURE SIGNATURE_32('p','r','t','n') + +/// +/// PROTOCOL_NOTIFY - used for each register notification for a protocol +/// +typedef struct { + UINTN Signature; + PROTOCOL_ENTRY *Protocol; + /// All notifications for this protocol + LIST_ENTRY Link; + /// Notification function + EFI_SMM_NOTIFY_FN Function; + /// Last position notified + LIST_ENTRY *Position; +} PROTOCOL_NOTIFY; + +// +// SMM Core Global Variables +// +extern EFI_SMM_SYSTEM_TABLE2 gSmmCoreSmst; +extern LIST_ENTRY gSmmHandleList; +extern EFI_PHYSICAL_ADDRESS gLoadModuleAtFixAddressSmramBase; + +/** + Called to initialize the memory service. + + @param SmramRangeCount Number of SMRAM Regions + @param SmramRanges Pointer to SMRAM Descriptors + +**/ +VOID +SmmInitializeMemoryServices ( + IN UINTN SmramRangeCount, + IN EFI_SMRAM_DESCRIPTOR *SmramRanges + ); + +/** + The SmmInstallConfigurationTable() function is used to maintain the list + of configuration tables that are stored in the System Management System + Table. The list is stored as an array of (GUID, Pointer) pairs. The list + must be allocated from pool memory with PoolType set to EfiRuntimeServicesData. + + @param SystemTable A pointer to the SMM System Table (SMST). + @param Guid A pointer to the GUID for the entry to add, update, or remove. + @param Table A pointer to the buffer of the table to add. + @param TableSize The size of the table to install. + + @retval EFI_SUCCESS The (Guid, Table) pair was added, updated, or removed. + @retval EFI_INVALID_PARAMETER Guid is not valid. + @retval EFI_NOT_FOUND An attempt was made to delete a non-existent entry. + @retval EFI_OUT_OF_RESOURCES There is not enough memory available to complete the operation. + +**/ +EFI_STATUS +EFIAPI +SmmInstallConfigurationTable ( + IN CONST EFI_SMM_SYSTEM_TABLE2 *SystemTable, + IN CONST EFI_GUID *Guid, + IN VOID *Table, + IN UINTN TableSize + ); + +/** + Wrapper function to SmmInstallProtocolInterfaceNotify. This is the public API which + Calls the private one which contains a BOOLEAN parameter for notifications + + @param UserHandle The handle to install the protocol handler on, + or NULL if a new handle is to be allocated + @param Protocol The protocol to add to the handle + @param InterfaceType Indicates whether Interface is supplied in + native form. + @param Interface The interface for the protocol being added + + @return Status code + +**/ +EFI_STATUS +EFIAPI +SmmInstallProtocolInterface ( + IN OUT EFI_HANDLE *UserHandle, + IN EFI_GUID *Protocol, + IN EFI_INTERFACE_TYPE InterfaceType, + IN VOID *Interface + ); + +/** + Allocates pages from the memory map. + + @param Type The type of allocation to perform + @param MemoryType The type of memory to turn the allocated pages + into + @param NumberOfPages The number of pages to allocate + @param Memory A pointer to receive the base allocated memory + address + + @retval EFI_INVALID_PARAMETER Parameters violate checking rules defined in spec. + @retval EFI_NOT_FOUND Could not allocate pages match the requirement. + @retval EFI_OUT_OF_RESOURCES No enough pages to allocate. + @retval EFI_SUCCESS Pages successfully allocated. + +**/ +EFI_STATUS +EFIAPI +SmmAllocatePages ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN NumberOfPages, + OUT EFI_PHYSICAL_ADDRESS *Memory + ); + +/** + Allocates pages from the memory map. + + @param Type The type of allocation to perform + @param MemoryType The type of memory to turn the allocated pages + into + @param NumberOfPages The number of pages to allocate + @param Memory A pointer to receive the base allocated memory + address + @param NeedGuard Flag to indicate Guard page is needed or not + + @retval EFI_INVALID_PARAMETER Parameters violate checking rules defined in spec. + @retval EFI_NOT_FOUND Could not allocate pages match the requirement. + @retval EFI_OUT_OF_RESOURCES No enough pages to allocate. + @retval EFI_SUCCESS Pages successfully allocated. + +**/ +EFI_STATUS +EFIAPI +SmmInternalAllocatePages ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN NumberOfPages, + OUT EFI_PHYSICAL_ADDRESS *Memory, + IN BOOLEAN NeedGuard + ); + +/** + Frees previous allocated pages. + + @param Memory Base address of memory being freed + @param NumberOfPages The number of pages to free + + @retval EFI_NOT_FOUND Could not find the entry that covers the range + @retval EFI_INVALID_PARAMETER Address not aligned, Address is zero or NumberOfPages is zero. + @return EFI_SUCCESS Pages successfully freed. + +**/ +EFI_STATUS +EFIAPI +SmmFreePages ( + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN NumberOfPages + ); + +/** + Frees previous allocated pages. + + @param Memory Base address of memory being freed + @param NumberOfPages The number of pages to free + @param IsGuarded Flag to indicate if the memory is guarded + or not + + @retval EFI_NOT_FOUND Could not find the entry that covers the range + @retval EFI_INVALID_PARAMETER Address not aligned, Address is zero or NumberOfPages is zero. + @return EFI_SUCCESS Pages successfully freed. + +**/ +EFI_STATUS +EFIAPI +SmmInternalFreePages ( + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN NumberOfPages, + IN BOOLEAN IsGuarded + ); + +/** + Allocate pool of a particular type. + + @param PoolType Type of pool to allocate + @param Size The amount of pool to allocate + @param Buffer The address to return a pointer to the allocated + pool + + @retval EFI_INVALID_PARAMETER PoolType not valid + @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed. + @retval EFI_SUCCESS Pool successfully allocated. + +**/ +EFI_STATUS +EFIAPI +SmmAllocatePool ( + IN EFI_MEMORY_TYPE PoolType, + IN UINTN Size, + OUT VOID **Buffer + ); + +/** + Allocate pool of a particular type. + + @param PoolType Type of pool to allocate + @param Size The amount of pool to allocate + @param Buffer The address to return a pointer to the allocated + pool + + @retval EFI_INVALID_PARAMETER PoolType not valid + @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed. + @retval EFI_SUCCESS Pool successfully allocated. + +**/ +EFI_STATUS +EFIAPI +SmmInternalAllocatePool ( + IN EFI_MEMORY_TYPE PoolType, + IN UINTN Size, + OUT VOID **Buffer + ); + +/** + Frees pool. + + @param Buffer The allocated pool entry to free + + @retval EFI_INVALID_PARAMETER Buffer is not a valid value. + @retval EFI_SUCCESS Pool successfully freed. + +**/ +EFI_STATUS +EFIAPI +SmmFreePool ( + IN VOID *Buffer + ); + +/** + Frees pool. + + @param Buffer The allocated pool entry to free + + @retval EFI_INVALID_PARAMETER Buffer is not a valid value. + @retval EFI_SUCCESS Pool successfully freed. + +**/ +EFI_STATUS +EFIAPI +SmmInternalFreePool ( + IN VOID *Buffer + ); + +/** + Installs a protocol interface into the boot services environment. + + @param UserHandle The handle to install the protocol handler on, + or NULL if a new handle is to be allocated + @param Protocol The protocol to add to the handle + @param InterfaceType Indicates whether Interface is supplied in + native form. + @param Interface The interface for the protocol being added + @param Notify indicates whether notify the notification list + for this protocol + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Protocol interface successfully installed + +**/ +EFI_STATUS +SmmInstallProtocolInterfaceNotify ( + IN OUT EFI_HANDLE *UserHandle, + IN EFI_GUID *Protocol, + IN EFI_INTERFACE_TYPE InterfaceType, + IN VOID *Interface, + IN BOOLEAN Notify + ); + +/** + Uninstalls all instances of a protocol:interfacer from a handle. + If the last protocol interface is remove from the handle, the + handle is freed. + + @param UserHandle The handle to remove the protocol handler from + @param Protocol The protocol, of protocol:interface, to remove + @param Interface The interface, of protocol:interface, to remove + + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_SUCCESS Protocol interface successfully uninstalled. + +**/ +EFI_STATUS +EFIAPI +SmmUninstallProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ); + +/** + Queries a handle to determine if it supports a specified protocol. + + @param UserHandle The handle being queried. + @param Protocol The published unique identifier of the protocol. + @param Interface Supplies the address where a pointer to the + corresponding Protocol Interface is returned. + + @return The requested protocol interface for the handle + +**/ +EFI_STATUS +EFIAPI +SmmHandleProtocol ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + OUT VOID **Interface + ); + +/** + Add a new protocol notification record for the request protocol. + + @param Protocol The requested protocol to add the notify + registration + @param Function Points to the notification function + @param Registration Returns the registration record + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully returned the registration record + that has been added + +**/ +EFI_STATUS +EFIAPI +SmmRegisterProtocolNotify ( + IN CONST EFI_GUID *Protocol, + IN EFI_SMM_NOTIFY_FN Function, + OUT VOID **Registration + ); + +/** + Locates the requested handle(s) and returns them in Buffer. + + @param SearchType The type of search to perform to locate the + handles + @param Protocol The protocol to search for + @param SearchKey Dependant on SearchType + @param BufferSize On input the size of Buffer. On output the + size of data returned. + @param Buffer The buffer to return the results in + + @retval EFI_BUFFER_TOO_SMALL Buffer too small, required buffer size is + returned in BufferSize. + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully found the requested handle(s) and + returns them in Buffer. + +**/ +EFI_STATUS +EFIAPI +SmmLocateHandle ( + IN EFI_LOCATE_SEARCH_TYPE SearchType, + IN EFI_GUID *Protocol OPTIONAL, + IN VOID *SearchKey OPTIONAL, + IN OUT UINTN *BufferSize, + OUT EFI_HANDLE *Buffer + ); + +/** + Return the first Protocol Interface that matches the Protocol GUID. If + Registration is pasased in return a Protocol Instance that was just add + to the system. If Retistration is NULL return the first Protocol Interface + you find. + + @param Protocol The protocol to search for + @param Registration Optional Registration Key returned from + RegisterProtocolNotify() + @param Interface Return the Protocol interface (instance). + + @retval EFI_SUCCESS If a valid Interface is returned + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_NOT_FOUND Protocol interface not found + +**/ +EFI_STATUS +EFIAPI +SmmLocateProtocol ( + IN EFI_GUID *Protocol, + IN VOID *Registration OPTIONAL, + OUT VOID **Interface + ); + +/** + Function returns an array of handles that support the requested protocol + in a buffer allocated from pool. This is a version of SmmLocateHandle() + that allocates a buffer for the caller. + + @param SearchType Specifies which handle(s) are to be returned. + @param Protocol Provides the protocol to search by. This + parameter is only valid for SearchType + ByProtocol. + @param SearchKey Supplies the search key depending on the + SearchType. + @param NumberHandles The number of handles returned in Buffer. + @param Buffer A pointer to the buffer to return the requested + array of handles that support Protocol. + + @retval EFI_SUCCESS The result array of handles was returned. + @retval EFI_NOT_FOUND No handles match the search. + @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the + matching results. + @retval EFI_INVALID_PARAMETER One or more paramters are not valid. + +**/ +EFI_STATUS +EFIAPI +SmmLocateHandleBuffer ( + IN EFI_LOCATE_SEARCH_TYPE SearchType, + IN EFI_GUID *Protocol OPTIONAL, + IN VOID *SearchKey OPTIONAL, + IN OUT UINTN *NumberHandles, + OUT EFI_HANDLE **Buffer + ); + +/** + Manage SMI of a particular type. + + @param HandlerType Points to the handler type or NULL for root SMI handlers. + @param Context Points to an optional context buffer. + @param CommBuffer Points to the optional communication buffer. + @param CommBufferSize Points to the size of the optional communication buffer. + + @retval EFI_SUCCESS Interrupt source was processed successfully but not quiesced. + @retval EFI_INTERRUPT_PENDING One or more SMI sources could not be quiesced. + @retval EFI_WARN_INTERRUPT_SOURCE_PENDING Interrupt source was not handled or quiesced. + @retval EFI_WARN_INTERRUPT_SOURCE_QUIESCED Interrupt source was handled and quiesced. + +**/ +EFI_STATUS +EFIAPI +SmiManage ( + IN CONST EFI_GUID *HandlerType, + IN CONST VOID *Context OPTIONAL, + IN OUT VOID *CommBuffer OPTIONAL, + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + Registers a handler to execute within SMM. + + @param Handler Handler service funtion pointer. + @param HandlerType Points to the handler type or NULL for root SMI handlers. + @param DispatchHandle On return, contains a unique handle which can be used to later unregister the handler function. + + @retval EFI_SUCCESS Handler register success. + @retval EFI_INVALID_PARAMETER Handler or DispatchHandle is NULL. + +**/ +EFI_STATUS +EFIAPI +SmiHandlerRegister ( + IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, + IN CONST EFI_GUID *HandlerType OPTIONAL, + OUT EFI_HANDLE *DispatchHandle + ); + +/** + Unregister a handler in SMM. + + @param DispatchHandle The handle that was specified when the handler was registered. + + @retval EFI_SUCCESS Handler function was successfully unregistered. + @retval EFI_INVALID_PARAMETER DispatchHandle does not refer to a valid handle. + +**/ +EFI_STATUS +EFIAPI +SmiHandlerUnRegister ( + IN EFI_HANDLE DispatchHandle + ); + +/** + This function is the main entry point for an SMM handler dispatch + or communicate-based callback. + + @param DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-SMM environment into an SMM environment. + @param CommBufferSize The size of the CommBuffer. + + @return Status Code + +**/ +EFI_STATUS +EFIAPI +SmmDriverDispatchHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + This function is the main entry point for an SMM handler dispatch + or communicate-based callback. + + @param DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-SMM environment into an SMM environment. + @param CommBufferSize The size of the CommBuffer. + + @return Status Code + +**/ +EFI_STATUS +EFIAPI +SmmLegacyBootHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + This function is the main entry point for an SMM handler dispatch + or communicate-based callback. + + @param DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-SMM environment into an SMM environment. + @param CommBufferSize The size of the CommBuffer. + + @return Status Code + +**/ +EFI_STATUS +EFIAPI +SmmReadyToLockHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + This function is the main entry point for an SMM handler dispatch + or communicate-based callback. + + @param DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-SMM environment into an SMM environment. + @param CommBufferSize The size of the CommBuffer. + + @return Status Code + +**/ +EFI_STATUS +EFIAPI +SmmEndOfDxeHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + This function is the main entry point for an SMM handler dispatch + or communicate-based callback. + + @param DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-SMM environment into an SMM environment. + @param CommBufferSize The size of the CommBuffer. + + @return Status Code + +**/ +EFI_STATUS +EFIAPI +SmmExitBootServicesHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + This function is the main entry point for an SMM handler dispatch + or communicate-based callback. + + @param DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-SMM environment into an SMM environment. + @param CommBufferSize The size of the CommBuffer. + + @return Status Code + +**/ +EFI_STATUS +EFIAPI +SmmReadyToBootHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + Software SMI handler that is called when the S3SmmInitDone signal is triggered. + This function installs the SMM S3SmmInitDone Protocol so SMM Drivers are informed that + S3 SMM initialization has been done. + + @param DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-SMM environment into an SMM environment. + @param CommBufferSize The size of the CommBuffer. + + @return Status Code + +**/ +EFI_STATUS +EFIAPI +SmmS3SmmInitDoneHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + Software SMI handler that is called when the EndOfS3Resume event is trigged. + This function installs the SMM EndOfS3Resume Protocol so SMM Drivers are informed that + S3 resume has finished. + + @param DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister(). + @param Context Points to an optional handler context which was specified when the handler was registered. + @param CommBuffer A pointer to a collection of data in memory that will + be conveyed from a non-SMM environment into an SMM environment. + @param CommBufferSize The size of the CommBuffer. + + @return Status Code + +**/ +EFI_STATUS +EFIAPI +SmmEndOfS3ResumeHandler ( + IN EFI_HANDLE DispatchHandle, + IN CONST VOID *Context, OPTIONAL + IN OUT VOID *CommBuffer, OPTIONAL + IN OUT UINTN *CommBufferSize OPTIONAL + ); + +/** + Place holder function until all the SMM System Table Service are available. + + @param Arg1 Undefined + @param Arg2 Undefined + @param Arg3 Undefined + @param Arg4 Undefined + @param Arg5 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +SmmEfiNotAvailableYetArg5 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4, + UINTN Arg5 + ); + +// +//Functions used during debug buils +// + +/** + Traverse the discovered list for any drivers that were discovered but not loaded + because the dependency experessions evaluated to false. + +**/ +VOID +SmmDisplayDiscoveredNotDispatched ( + VOID + ); + +/** + Add free SMRAM region for use by memory service. + + @param MemBase Base address of memory region. + @param MemLength Length of the memory region. + @param Type Memory type. + @param Attributes Memory region state. + +**/ +VOID +SmmAddMemoryRegion ( + IN EFI_PHYSICAL_ADDRESS MemBase, + IN UINT64 MemLength, + IN EFI_MEMORY_TYPE Type, + IN UINT64 Attributes + ); + +/** + Finds the protocol entry for the requested protocol. + + @param Protocol The ID of the protocol + @param Create Create a new entry if not found + + @return Protocol entry + +**/ +PROTOCOL_ENTRY * +SmmFindProtocolEntry ( + IN EFI_GUID *Protocol, + IN BOOLEAN Create + ); + +/** + Signal event for every protocol in protocol entry. + + @param Prot Protocol interface + +**/ +VOID +SmmNotifyProtocol ( + IN PROTOCOL_INTERFACE *Prot + ); + +/** + Finds the protocol instance for the requested handle and protocol. + Note: This function doesn't do parameters checking, it's caller's responsibility + to pass in valid parameters. + + @param Handle The handle to search the protocol on + @param Protocol GUID of the protocol + @param Interface The interface for the protocol being searched + + @return Protocol instance (NULL: Not found) + +**/ +PROTOCOL_INTERFACE * +SmmFindProtocolInterface ( + IN IHANDLE *Handle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ); + +/** + Removes Protocol from the protocol list (but not the handle list). + + @param Handle The handle to remove protocol on. + @param Protocol GUID of the protocol to be moved + @param Interface The interface of the protocol + + @return Protocol Entry + +**/ +PROTOCOL_INTERFACE * +SmmRemoveInterfaceFromProtocol ( + IN IHANDLE *Handle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ); + +/** + This is the POSTFIX version of the dependency evaluator. This code does + not need to handle Before or After, as it is not valid to call this + routine in this case. POSTFIX means all the math is done on top of the stack. + + @param DriverEntry DriverEntry element to update. + + @retval TRUE If driver is ready to run. + @retval FALSE If driver is not ready to run or some fatal error + was found. + +**/ +BOOLEAN +SmmIsSchedulable ( + IN EFI_SMM_DRIVER_ENTRY *DriverEntry + ); + +// +// SmramProfile +// + +/** + Initialize SMRAM profile. + +**/ +VOID +SmramProfileInit ( + VOID + ); + +/** + Install SMRAM profile protocol. + +**/ +VOID +SmramProfileInstallProtocol ( + VOID + ); + +/** + Register SMM image to SMRAM profile. + + @param DriverEntry SMM image info. + @param RegisterToDxe Register image to DXE. + + @return EFI_SUCCESS Register successfully. + @return EFI_UNSUPPORTED Memory profile unsupported, + or memory profile for the image is not required. + @return EFI_OUT_OF_RESOURCES No enough resource for this register. + +**/ +EFI_STATUS +RegisterSmramProfileImage ( + IN EFI_SMM_DRIVER_ENTRY *DriverEntry, + IN BOOLEAN RegisterToDxe + ); + +/** + Unregister image from SMRAM profile. + + @param DriverEntry SMM image info. + @param UnregisterToDxe Unregister image from DXE. + + @return EFI_SUCCESS Unregister successfully. + @return EFI_UNSUPPORTED Memory profile unsupported, + or memory profile for the image is not required. + @return EFI_NOT_FOUND The image is not found. + +**/ +EFI_STATUS +UnregisterSmramProfileImage ( + IN EFI_SMM_DRIVER_ENTRY *DriverEntry, + IN BOOLEAN UnregisterToDxe + ); + +/** + Update SMRAM profile information. + + @param CallerAddress Address of caller who call Allocate or Free. + @param Action This Allocate or Free action. + @param MemoryType Memory type. + EfiMaxMemoryType means the MemoryType is unknown. + @param Size Buffer size. + @param Buffer Buffer address. + @param ActionString String for memory profile action. + Only needed for user defined allocate action. + + @return EFI_SUCCESS Memory profile is updated. + @return EFI_UNSUPPORTED Memory profile is unsupported, + or memory profile for the image is not required, + or memory profile for the memory type is not required. + @return EFI_ACCESS_DENIED It is during memory profile data getting. + @return EFI_ABORTED Memory profile recording is not enabled. + @return EFI_OUT_OF_RESOURCES No enough resource to update memory profile for allocate action. + @return EFI_NOT_FOUND No matched allocate info found for free action. + +**/ +EFI_STATUS +EFIAPI +SmmCoreUpdateProfile ( + IN PHYSICAL_ADDRESS CallerAddress, + IN MEMORY_PROFILE_ACTION Action, + IN EFI_MEMORY_TYPE MemoryType, // Valid for AllocatePages/AllocatePool + IN UINTN Size, // Valid for AllocatePages/FreePages/AllocatePool + IN VOID *Buffer, + IN CHAR8 *ActionString OPTIONAL + ); + +/** + Register SMRAM profile handler. + +**/ +VOID +RegisterSmramProfileHandler ( + VOID + ); + +/** + SMRAM profile ready to lock callback function. + +**/ +VOID +SmramProfileReadyToLock ( + VOID + ); + +/** + Initialize MemoryAttributes support. +**/ +VOID +EFIAPI +SmmCoreInitializeMemoryAttributesTable ( + VOID + ); + +/** + This function returns a copy of the current memory map. The map is an array of + memory descriptors, each of which describes a contiguous block of memory. + + @param[in, out] MemoryMapSize A pointer to the size, in bytes, of the + MemoryMap buffer. On input, this is the size of + the buffer allocated by the caller. On output, + it is the size of the buffer returned by the + firmware if the buffer was large enough, or the + size of the buffer needed to contain the map if + the buffer was too small. + @param[in, out] MemoryMap A pointer to the buffer in which firmware places + the current memory map. + @param[out] MapKey A pointer to the location in which firmware + returns the key for the current memory map. + @param[out] DescriptorSize A pointer to the location in which firmware + returns the size, in bytes, of an individual + EFI_MEMORY_DESCRIPTOR. + @param[out] DescriptorVersion A pointer to the location in which firmware + returns the version number associated with the + EFI_MEMORY_DESCRIPTOR. + + @retval EFI_SUCCESS The memory map was returned in the MemoryMap + buffer. + @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current + buffer size needed to hold the memory map is + returned in MemoryMapSize. + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. + +**/ +EFI_STATUS +EFIAPI +SmmCoreGetMemoryMap ( + IN OUT UINTN *MemoryMapSize, + IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, + OUT UINTN *MapKey, + OUT UINTN *DescriptorSize, + OUT UINT32 *DescriptorVersion + ); + +/** + Initialize SmiHandler profile feature. +**/ +VOID +SmmCoreInitializeSmiHandlerProfile ( + VOID + ); + +/** + This function is called by SmmChildDispatcher module to report + a new SMI handler is registered, to SmmCore. + + @param This The protocol instance + @param HandlerGuid The GUID to identify the type of the handler. + For the SmmChildDispatch protocol, the HandlerGuid + must be the GUID of SmmChildDispatch protocol. + @param Handler The SMI handler. + @param CallerAddress The address of the module who registers the SMI handler. + @param Context The context of the SMI handler. + For the SmmChildDispatch protocol, the Context + must match the one defined for SmmChildDispatch protocol. + @param ContextSize The size of the context in bytes. + For the SmmChildDispatch protocol, the Context + must match the one defined for SmmChildDispatch protocol. + + @retval EFI_SUCCESS The information is recorded. + @retval EFI_OUT_OF_RESOURCES There is no enough resource to record the information. +**/ +EFI_STATUS +EFIAPI +SmiHandlerProfileRegisterHandler ( + IN SMI_HANDLER_PROFILE_PROTOCOL *This, + IN EFI_GUID *HandlerGuid, + IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, + IN PHYSICAL_ADDRESS CallerAddress, + IN VOID *Context, OPTIONAL + IN UINTN ContextSize OPTIONAL + ); + +/** + This function is called by SmmChildDispatcher module to report + an existing SMI handler is unregistered, to SmmCore. + + @param This The protocol instance + @param HandlerGuid The GUID to identify the type of the handler. + For the SmmChildDispatch protocol, the HandlerGuid + must be the GUID of SmmChildDispatch protocol. + @param Handler The SMI handler. + @param Context The context of the SMI handler. + If it is NOT NULL, it will be used to check what is registered. + @param ContextSize The size of the context in bytes. + If Context is NOT NULL, it will be used to check what is registered. + + @retval EFI_SUCCESS The original record is removed. + @retval EFI_NOT_FOUND There is no record for the HandlerGuid and handler. +**/ +EFI_STATUS +EFIAPI +SmiHandlerProfileUnregisterHandler ( + IN SMI_HANDLER_PROFILE_PROTOCOL *This, + IN EFI_GUID *HandlerGuid, + IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, + IN VOID *Context, OPTIONAL + IN UINTN ContextSize OPTIONAL + ); + +extern UINTN mFullSmramRangeCount; +extern EFI_SMRAM_DESCRIPTOR *mFullSmramRanges; + +extern EFI_SMM_DRIVER_ENTRY *mSmmCoreDriverEntry; + +extern EFI_LOADED_IMAGE_PROTOCOL *mSmmCoreLoadedImage; + +// +// Page management +// + +typedef struct { + LIST_ENTRY Link; + UINTN NumberOfPages; +} FREE_PAGE_LIST; + +extern LIST_ENTRY mSmmMemoryMap; + +// +// Pool management +// + +// +// MIN_POOL_SHIFT must not be less than 5 +// +#define MIN_POOL_SHIFT 6 +#define MIN_POOL_SIZE (1 << MIN_POOL_SHIFT) + +// +// MAX_POOL_SHIFT must not be less than EFI_PAGE_SHIFT - 1 +// +#define MAX_POOL_SHIFT (EFI_PAGE_SHIFT - 1) +#define MAX_POOL_SIZE (1 << MAX_POOL_SHIFT) + +// +// MAX_POOL_INDEX are calculated by maximum and minimum pool sizes +// +#define MAX_POOL_INDEX (MAX_POOL_SHIFT - MIN_POOL_SHIFT + 1) + +#define POOL_HEAD_SIGNATURE SIGNATURE_32('p','h','d','0') + +typedef struct { + UINT32 Signature; + BOOLEAN Available; + EFI_MEMORY_TYPE Type; + UINTN Size; +} POOL_HEADER; + +#define POOL_TAIL_SIGNATURE SIGNATURE_32('p','t','a','l') + +typedef struct { + UINT32 Signature; + UINT32 Reserved; + UINTN Size; +} POOL_TAIL; + +#define POOL_OVERHEAD (sizeof(POOL_HEADER) + sizeof(POOL_TAIL)) + +#define HEAD_TO_TAIL(a) \ + ((POOL_TAIL *) (((CHAR8 *) (a)) + (a)->Size - sizeof(POOL_TAIL))); + +typedef struct { + POOL_HEADER Header; + LIST_ENTRY Link; +} FREE_POOL_HEADER; + +typedef enum { + SmmPoolTypeCode, + SmmPoolTypeData, + SmmPoolTypeMax, +} SMM_POOL_TYPE; + +extern LIST_ENTRY mSmmPoolLists[SmmPoolTypeMax][MAX_POOL_INDEX]; + +/** + Internal Function. Allocate n pages from given free page node. + + @param Pages The free page node. + @param NumberOfPages Number of pages to be allocated. + @param MaxAddress Request to allocate memory below this address. + + @return Memory address of allocated pages. + +**/ +UINTN +InternalAllocPagesOnOneNode ( + IN OUT FREE_PAGE_LIST *Pages, + IN UINTN NumberOfPages, + IN UINTN MaxAddress + ); + +/** + Update SMM memory map entry. + + @param[in] Type The type of allocation to perform. + @param[in] Memory The base of memory address. + @param[in] NumberOfPages The number of pages to allocate. + @param[in] AddRegion If this memory is new added region. +**/ +VOID +ConvertSmmMemoryMapEntry ( + IN EFI_MEMORY_TYPE Type, + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN NumberOfPages, + IN BOOLEAN AddRegion + ); + +/** + Internal function. Moves any memory descriptors that are on the + temporary descriptor stack to heap. + +**/ +VOID +CoreFreeMemoryMapStack ( + VOID + ); + +/** + Frees previous allocated pages. + + @param[in] Memory Base address of memory being freed. + @param[in] NumberOfPages The number of pages to free. + @param[in] AddRegion If this memory is new added region. + + @retval EFI_NOT_FOUND Could not find the entry that covers the range. + @retval EFI_INVALID_PARAMETER Address not aligned, Address is zero or NumberOfPages is zero. + @return EFI_SUCCESS Pages successfully freed. + +**/ +EFI_STATUS +SmmInternalFreePagesEx ( + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN NumberOfPages, + IN BOOLEAN AddRegion + ); + +/** + Hook function used to set all Guard pages after entering SMM mode. +**/ +VOID +SmmEntryPointMemoryManagementHook ( + VOID + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.c b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.c new file mode 100644 index 0000000..5089293 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.c @@ -0,0 +1,112 @@ +/** @file + SMM Services Table Library. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include "PiSmmCore.h" + +extern EFI_SMM_SYSTEM_TABLE2 gSmmCoreSmst; + +EFI_SMM_SYSTEM_TABLE2 *gSmst = &gSmmCoreSmst; +EFI_MM_SYSTEM_TABLE *gMmst = (EFI_MM_SYSTEM_TABLE *)&gSmmCoreSmst; + +EFI_STATUS +EFIAPI +SmmAllocatePages ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN NumberOfPages, + OUT EFI_PHYSICAL_ADDRESS *Memory + ) +{ + VOID *Buffer; + + if ((NumberOfPages == 0) || + (NumberOfPages > RShiftU64 ((UINTN)-1, EFI_PAGE_SHIFT))) { + return EFI_NOT_FOUND; + } + + Buffer = malloc (EFI_PAGES_TO_SIZE(NumberOfPages)); + if (Buffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + *Memory = (UINTN)Buffer; + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +SmmFreePages ( + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN NumberOfPages + ) +{ + free ((VOID *)(UINTN)Memory); + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +SmmAllocatePool ( + IN EFI_MEMORY_TYPE PoolType, + IN UINTN Size, + OUT VOID **Buffer + ) +{ + *Buffer = malloc (Size); + if (*Buffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +SmmFreePool ( + IN VOID *Buffer + ) +{ + free (Buffer); + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +SmiManage ( + IN CONST EFI_GUID *HandlerType, + IN CONST VOID *Context OPTIONAL, + IN OUT VOID *CommBuffer OPTIONAL, + IN OUT UINTN *CommBufferSize OPTIONAL + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +SmiHandlerRegister ( + IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, + IN CONST EFI_GUID *HandlerType OPTIONAL, + OUT EFI_HANDLE *DispatchHandle + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + +EFI_STATUS +EFIAPI +SmiHandlerUnRegister ( + IN EFI_HANDLE DispatchHandle + ) +{ + return EFI_NOT_AVAILABLE_YET; +} + diff --git a/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf new file mode 100644 index 0000000..d5d67bd --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/SmmServicesTableLibHost/SmmServicesTableLibHost.inf @@ -0,0 +1,43 @@ +## @file +# SMM Services Table Library. +# +# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = SmmServicesTableLibHost + FILE_GUID = BC01EA4A-7CD7-456F-9BD3-1EF71FD0E026 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = SmmServicesTableLib + LIBRARY_CLASS = MmServicesTableLib + +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + SmmServicesTableLibHost.c + PiSmmCore.c + Handle.c + Locate.c + Notify.c + InstallConfigurationTable.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + MemoryAllocationLib + DebugLib + + diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/DriverSupport.c b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/DriverSupport.c new file mode 100644 index 0000000..bee1de9 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/DriverSupport.c @@ -0,0 +1,953 @@ +/** @file + Support functions to connect/disconnect UEFI Driver model Protocol + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "DxeMain.h" +#include "Handle.h" + + +// +// Driver Support Functions +// +/** + Connects one or more drivers to a controller. + + @param ControllerHandle The handle of the controller to which driver(s) are to be connected. + @param DriverImageHandle A pointer to an ordered list handles that support the + EFI_DRIVER_BINDING_PROTOCOL. + @param RemainingDevicePath A pointer to the device path that specifies a child of the + controller specified by ControllerHandle. + @param Recursive If TRUE, then ConnectController() is called recursively + until the entire tree of controllers below the controller specified + by ControllerHandle have been created. If FALSE, then + the tree of controllers is only expanded one level. + + @retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle. + 2) No drivers were connected to ControllerHandle, but + RemainingDevicePath is not NULL, and it is an End Device + Path Node. + @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. + @retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances + present in the system. + 2) No drivers were connected to ControllerHandle. + @retval EFI_SECURITY_VIOLATION + The user has no permission to start UEFI device drivers on the device path + associated with the ControllerHandle or specified by the RemainingDevicePath. + +**/ +EFI_STATUS +EFIAPI +CoreConnectController ( + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE *DriverImageHandle OPTIONAL, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, + IN BOOLEAN Recursive + ) +{ + EFI_STATUS Status; + EFI_STATUS ReturnStatus; + IHANDLE *Handle; + PROTOCOL_INTERFACE *Prot; + LIST_ENTRY *Link; + LIST_ENTRY *ProtLink; + OPEN_PROTOCOL_DATA *OpenData; + EFI_DEVICE_PATH_PROTOCOL *AlignedRemainingDevicePath; + EFI_HANDLE *ChildHandleBuffer; + UINTN ChildHandleCount; + UINTN Index; + UINTN HandleFilePathSize; + UINTN RemainingDevicePathSize; + EFI_DEVICE_PATH_PROTOCOL *HandleFilePath; + EFI_DEVICE_PATH_PROTOCOL *FilePath; + EFI_DEVICE_PATH_PROTOCOL *TempFilePath; + + // + // Make sure ControllerHandle is valid + // + Status = CoreValidateHandle (ControllerHandle); + if (EFI_ERROR (Status)) { + return Status; + } + + if (gSecurity2 != NULL) { + // + // Check whether the user has permission to start UEFI device drivers. + // + Status = CoreHandleProtocol (ControllerHandle, &gEfiDevicePathProtocolGuid, (VOID **)&HandleFilePath); + if (!EFI_ERROR (Status)) { + ASSERT (HandleFilePath != NULL); + FilePath = HandleFilePath; + TempFilePath = NULL; + if (RemainingDevicePath != NULL && !Recursive) { + HandleFilePathSize = GetDevicePathSize (HandleFilePath) - sizeof (EFI_DEVICE_PATH_PROTOCOL); + RemainingDevicePathSize = GetDevicePathSize (RemainingDevicePath); + TempFilePath = AllocateZeroPool (HandleFilePathSize + RemainingDevicePathSize); + ASSERT (TempFilePath != NULL); + CopyMem (TempFilePath, HandleFilePath, HandleFilePathSize); + CopyMem ((UINT8 *) TempFilePath + HandleFilePathSize, RemainingDevicePath, RemainingDevicePathSize); + FilePath = TempFilePath; + } + Status = gSecurity2->FileAuthentication ( + gSecurity2, + FilePath, + NULL, + 0, + FALSE + ); + if (TempFilePath != NULL) { + FreePool (TempFilePath); + } + if (EFI_ERROR (Status)) { + return Status; + } + } + } + + Handle = ControllerHandle; + + // + // Make a copy of RemainingDevicePath to guanatee it is aligned + // + AlignedRemainingDevicePath = NULL; + if (RemainingDevicePath != NULL) { + AlignedRemainingDevicePath = DuplicateDevicePath (RemainingDevicePath); + + if (AlignedRemainingDevicePath == NULL) { + return EFI_OUT_OF_RESOURCES; + } + } + + // + // Connect all drivers to ControllerHandle + // If CoreConnectSingleController returns EFI_NOT_READY, then the number of + // Driver Binding Protocols in the handle database has increased during the call + // so the connect operation must be restarted + // + do { + ReturnStatus = CoreConnectSingleController ( + ControllerHandle, + DriverImageHandle, + AlignedRemainingDevicePath + ); + } while (ReturnStatus == EFI_NOT_READY); + + // + // Free the aligned copy of RemainingDevicePath + // + if (AlignedRemainingDevicePath != NULL) { + CoreFreePool (AlignedRemainingDevicePath); + } + + // + // If recursive, then connect all drivers to all of ControllerHandle's children + // + if (Recursive) { + // + // Acquire the protocol lock on the handle database so the child handles can be collected + // + CoreAcquireProtocolLock (); + + // + // Make sure the DriverBindingHandle is valid + // + Status = CoreValidateHandle (ControllerHandle); + if (EFI_ERROR (Status)) { + // + // Release the protocol lock on the handle database + // + CoreReleaseProtocolLock (); + + return ReturnStatus; + } + + + // + // Count ControllerHandle's children + // + for (Link = Handle->Protocols.ForwardLink, ChildHandleCount = 0; Link != &Handle->Protocols; Link = Link->ForwardLink) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + for (ProtLink = Prot->OpenList.ForwardLink; + ProtLink != &Prot->OpenList; + ProtLink = ProtLink->ForwardLink) { + OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) { + ChildHandleCount++; + } + } + } + + // + // Allocate a handle buffer for ControllerHandle's children + // + ChildHandleBuffer = AllocatePool (ChildHandleCount * sizeof(EFI_HANDLE)); + if (ChildHandleBuffer == NULL) { + CoreReleaseProtocolLock (); + return EFI_OUT_OF_RESOURCES; + } + + // + // Fill in a handle buffer with ControllerHandle's children + // + for (Link = Handle->Protocols.ForwardLink, ChildHandleCount = 0; Link != &Handle->Protocols; Link = Link->ForwardLink) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + for (ProtLink = Prot->OpenList.ForwardLink; + ProtLink != &Prot->OpenList; + ProtLink = ProtLink->ForwardLink) { + OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) { + ChildHandleBuffer[ChildHandleCount] = OpenData->ControllerHandle; + ChildHandleCount++; + } + } + } + + // + // Release the protocol lock on the handle database + // + CoreReleaseProtocolLock (); + + // + // Recursively connect each child handle + // + for (Index = 0; Index < ChildHandleCount; Index++) { + CoreConnectController ( + ChildHandleBuffer[Index], + NULL, + NULL, + TRUE + ); + } + + // + // Free the handle buffer of ControllerHandle's children + // + CoreFreePool (ChildHandleBuffer); + } + + return ReturnStatus; +} + + +/** + Add Driver Binding Protocols from Context Driver Image Handles to sorted + Driver Binding Protocol list. + + @param DriverBindingHandle Handle of the driver binding + protocol. + @param NumberOfSortedDriverBindingProtocols Number Of sorted driver binding + protocols + @param SortedDriverBindingProtocols The sorted protocol list. + @param DriverBindingHandleCount Driver Binding Handle Count. + @param DriverBindingHandleBuffer The buffer of driver binding + protocol to be modified. + @param IsImageHandle Indicate whether + DriverBindingHandle is an image + handle + + @return None. + +**/ +VOID +AddSortedDriverBindingProtocol ( + IN EFI_HANDLE DriverBindingHandle, + IN OUT UINTN *NumberOfSortedDriverBindingProtocols, + IN OUT EFI_DRIVER_BINDING_PROTOCOL **SortedDriverBindingProtocols, + IN UINTN DriverBindingHandleCount, + IN OUT EFI_HANDLE *DriverBindingHandleBuffer, + IN BOOLEAN IsImageHandle + ) +{ + EFI_STATUS Status; + EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; + UINTN Index; + + // + // Make sure the DriverBindingHandle is valid + // + Status = CoreValidateHandle (DriverBindingHandle); + if (EFI_ERROR (Status)) { + return; + } + + // + // If IsImageHandle is TRUE, then DriverBindingHandle is an image handle + // Find all the DriverBindingHandles associated with that image handle and add them to the sorted list + // + if (IsImageHandle) { + // + // Loop through all the Driver Binding Handles + // + for (Index = 0; Index < DriverBindingHandleCount; Index++) { + // + // Retrieve the Driver Binding Protocol associated with each Driver Binding Handle + // + Status = CoreHandleProtocol ( + DriverBindingHandleBuffer[Index], + &gEfiDriverBindingProtocolGuid, + (VOID **) &DriverBinding + ); + if (EFI_ERROR (Status) || DriverBinding == NULL) { + continue; + } + + // + // If the ImageHandle associated with DriverBinding matches DriverBindingHandle, + // then add the DriverBindingProtocol[Index] to the sorted list + // + if (DriverBinding->ImageHandle == DriverBindingHandle) { + AddSortedDriverBindingProtocol ( + DriverBindingHandleBuffer[Index], + NumberOfSortedDriverBindingProtocols, + SortedDriverBindingProtocols, + DriverBindingHandleCount, + DriverBindingHandleBuffer, + FALSE + ); + } + } + return; + } + + // + // Retrieve the Driver Binding Protocol from DriverBindingHandle + // + Status = CoreHandleProtocol( + DriverBindingHandle, + &gEfiDriverBindingProtocolGuid, + (VOID **) &DriverBinding + ); + // + // If DriverBindingHandle does not support the Driver Binding Protocol then return + // + if (EFI_ERROR (Status) || DriverBinding == NULL) { + return; + } + + // + // See if DriverBinding is already in the sorted list + // + for (Index = 0; Index < *NumberOfSortedDriverBindingProtocols && Index < DriverBindingHandleCount; Index++) { + if (DriverBinding == SortedDriverBindingProtocols[Index]) { + return; + } + } + + // + // Add DriverBinding to the end of the list + // + if (*NumberOfSortedDriverBindingProtocols < DriverBindingHandleCount) { + SortedDriverBindingProtocols[*NumberOfSortedDriverBindingProtocols] = DriverBinding; + } + *NumberOfSortedDriverBindingProtocols = *NumberOfSortedDriverBindingProtocols + 1; + + // + // Mark the cooresponding handle in DriverBindingHandleBuffer as used + // + for (Index = 0; Index < DriverBindingHandleCount; Index++) { + if (DriverBindingHandleBuffer[Index] == DriverBindingHandle) { + DriverBindingHandleBuffer[Index] = NULL; + } + } +} + + +/** + Connects a controller to a driver. + + @param ControllerHandle Handle of the controller to be + connected. + @param ContextDriverImageHandles DriverImageHandle A pointer to an + ordered list of driver image + handles. + @param RemainingDevicePath RemainingDevicePath A pointer to + the device path that specifies a + child of the controller + specified by ControllerHandle. + + @retval EFI_SUCCESS One or more drivers were + connected to ControllerHandle. + @retval EFI_OUT_OF_RESOURCES No enough system resources to + complete the request. + @retval EFI_NOT_FOUND No drivers were connected to + ControllerHandle. + +**/ +EFI_STATUS +CoreConnectSingleController ( + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE *ContextDriverImageHandles OPTIONAL, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) +{ + EFI_STATUS Status; + UINTN Index; + EFI_HANDLE DriverImageHandle; + EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *PlatformDriverOverride; + EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *BusSpecificDriverOverride; + UINTN DriverBindingHandleCount; + EFI_HANDLE *DriverBindingHandleBuffer; + UINTN NewDriverBindingHandleCount; + EFI_HANDLE *NewDriverBindingHandleBuffer; + EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; + EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL *DriverFamilyOverride; + UINTN NumberOfSortedDriverBindingProtocols; + EFI_DRIVER_BINDING_PROTOCOL **SortedDriverBindingProtocols; + UINT32 DriverFamilyOverrideVersion; + UINT32 HighestVersion; + UINTN HighestIndex; + UINTN SortIndex; + BOOLEAN OneStarted; + BOOLEAN DriverFound; + + // + // Initialize local variables + // + DriverBindingHandleCount = 0; + DriverBindingHandleBuffer = NULL; + NumberOfSortedDriverBindingProtocols = 0; + SortedDriverBindingProtocols = NULL; + PlatformDriverOverride = NULL; + NewDriverBindingHandleBuffer = NULL; + + // + // Get list of all Driver Binding Protocol Instances + // + Status = CoreLocateHandleBuffer ( + ByProtocol, + &gEfiDriverBindingProtocolGuid, + NULL, + &DriverBindingHandleCount, + &DriverBindingHandleBuffer + ); + if (EFI_ERROR (Status) || (DriverBindingHandleCount == 0)) { + return EFI_NOT_FOUND; + } + + // + // Allocate a duplicate array for the sorted Driver Binding Protocol Instances + // + SortedDriverBindingProtocols = AllocatePool (sizeof (VOID *) * DriverBindingHandleCount); + if (SortedDriverBindingProtocols == NULL) { + CoreFreePool (DriverBindingHandleBuffer); + return EFI_OUT_OF_RESOURCES; + } + + // + // Add Driver Binding Protocols from Context Driver Image Handles first + // + if (ContextDriverImageHandles != NULL) { + for (Index = 0; ContextDriverImageHandles[Index] != NULL; Index++) { + AddSortedDriverBindingProtocol ( + ContextDriverImageHandles[Index], + &NumberOfSortedDriverBindingProtocols, + SortedDriverBindingProtocols, + DriverBindingHandleCount, + DriverBindingHandleBuffer, + FALSE + ); + } + } + + // + // Add the Platform Driver Override Protocol drivers for ControllerHandle next + // + Status = CoreLocateProtocol ( + &gEfiPlatformDriverOverrideProtocolGuid, + NULL, + (VOID **) &PlatformDriverOverride + ); + if (!EFI_ERROR (Status) && (PlatformDriverOverride != NULL)) { + DriverImageHandle = NULL; + do { + Status = PlatformDriverOverride->GetDriver ( + PlatformDriverOverride, + ControllerHandle, + &DriverImageHandle + ); + if (!EFI_ERROR (Status)) { + AddSortedDriverBindingProtocol ( + DriverImageHandle, + &NumberOfSortedDriverBindingProtocols, + SortedDriverBindingProtocols, + DriverBindingHandleCount, + DriverBindingHandleBuffer, + TRUE + ); + } + } while (!EFI_ERROR (Status)); + } + + // + // Add the Driver Family Override Protocol drivers for ControllerHandle + // + while (TRUE) { + HighestIndex = DriverBindingHandleCount; + HighestVersion = 0; + for (Index = 0; Index < DriverBindingHandleCount; Index++) { + Status = CoreHandleProtocol ( + DriverBindingHandleBuffer[Index], + &gEfiDriverFamilyOverrideProtocolGuid, + (VOID **) &DriverFamilyOverride + ); + if (!EFI_ERROR (Status) && (DriverFamilyOverride != NULL)) { + DriverFamilyOverrideVersion = DriverFamilyOverride->GetVersion (DriverFamilyOverride); + if ((HighestIndex == DriverBindingHandleCount) || (DriverFamilyOverrideVersion > HighestVersion)) { + HighestVersion = DriverFamilyOverrideVersion; + HighestIndex = Index; + } + } + } + + if (HighestIndex == DriverBindingHandleCount) { + break; + } + + AddSortedDriverBindingProtocol ( + DriverBindingHandleBuffer[HighestIndex], + &NumberOfSortedDriverBindingProtocols, + SortedDriverBindingProtocols, + DriverBindingHandleCount, + DriverBindingHandleBuffer, + FALSE + ); + } + + // + // Get the Bus Specific Driver Override Protocol instance on the Controller Handle + // + Status = CoreHandleProtocol ( + ControllerHandle, + &gEfiBusSpecificDriverOverrideProtocolGuid, + (VOID **) &BusSpecificDriverOverride + ); + if (!EFI_ERROR (Status) && (BusSpecificDriverOverride != NULL)) { + DriverImageHandle = NULL; + do { + Status = BusSpecificDriverOverride->GetDriver ( + BusSpecificDriverOverride, + &DriverImageHandle + ); + if (!EFI_ERROR (Status)) { + AddSortedDriverBindingProtocol ( + DriverImageHandle, + &NumberOfSortedDriverBindingProtocols, + SortedDriverBindingProtocols, + DriverBindingHandleCount, + DriverBindingHandleBuffer, + TRUE + ); + } + } while (!EFI_ERROR (Status)); + } + + // + // Then add all the remaining Driver Binding Protocols + // + SortIndex = NumberOfSortedDriverBindingProtocols; + for (Index = 0; Index < DriverBindingHandleCount; Index++) { + AddSortedDriverBindingProtocol ( + DriverBindingHandleBuffer[Index], + &NumberOfSortedDriverBindingProtocols, + SortedDriverBindingProtocols, + DriverBindingHandleCount, + DriverBindingHandleBuffer, + FALSE + ); + } + + // + // Free the Driver Binding Handle Buffer + // + CoreFreePool (DriverBindingHandleBuffer); + + // + // If the number of Driver Binding Protocols has increased since this function started, then return + // EFI_NOT_READY, so it will be restarted + // + Status = CoreLocateHandleBuffer ( + ByProtocol, + &gEfiDriverBindingProtocolGuid, + NULL, + &NewDriverBindingHandleCount, + &NewDriverBindingHandleBuffer + ); + CoreFreePool (NewDriverBindingHandleBuffer); + if (NewDriverBindingHandleCount > DriverBindingHandleCount) { + // + // Free any buffers that were allocated with AllocatePool() + // + CoreFreePool (SortedDriverBindingProtocols); + + return EFI_NOT_READY; + } + + // + // Sort the remaining DriverBinding Protocol based on their Version field from + // highest to lowest. + // + for ( ; SortIndex < NumberOfSortedDriverBindingProtocols; SortIndex++) { + HighestVersion = SortedDriverBindingProtocols[SortIndex]->Version; + HighestIndex = SortIndex; + for (Index = SortIndex + 1; Index < NumberOfSortedDriverBindingProtocols; Index++) { + if (SortedDriverBindingProtocols[Index]->Version > HighestVersion) { + HighestVersion = SortedDriverBindingProtocols[Index]->Version; + HighestIndex = Index; + } + } + if (SortIndex != HighestIndex) { + DriverBinding = SortedDriverBindingProtocols[SortIndex]; + SortedDriverBindingProtocols[SortIndex] = SortedDriverBindingProtocols[HighestIndex]; + SortedDriverBindingProtocols[HighestIndex] = DriverBinding; + } + } + + // + // Loop until no more drivers can be started on ControllerHandle + // + OneStarted = FALSE; + do { + + // + // Loop through the sorted Driver Binding Protocol Instances in order, and see if + // any of the Driver Binding Protocols support the controller specified by + // ControllerHandle. + // + DriverBinding = NULL; + DriverFound = FALSE; + for (Index = 0; (Index < NumberOfSortedDriverBindingProtocols) && !DriverFound; Index++) { + if (SortedDriverBindingProtocols[Index] != NULL) { + DriverBinding = SortedDriverBindingProtocols[Index]; + Status = DriverBinding->Supported( + DriverBinding, + ControllerHandle, + RemainingDevicePath + ); + if (!EFI_ERROR (Status)) { + SortedDriverBindingProtocols[Index] = NULL; + DriverFound = TRUE; + + // + // A driver was found that supports ControllerHandle, so attempt to start the driver + // on ControllerHandle. + // + Status = DriverBinding->Start ( + DriverBinding, + ControllerHandle, + RemainingDevicePath + ); + if (!EFI_ERROR (Status)) { + // + // The driver was successfully started on ControllerHandle, so set a flag + // + OneStarted = TRUE; + } + } + } + } + } while (DriverFound); + + // + // Free any buffers that were allocated with AllocatePool() + // + CoreFreePool (SortedDriverBindingProtocols); + + // + // If at least one driver was started on ControllerHandle, then return EFI_SUCCESS. + // + if (OneStarted) { + return EFI_SUCCESS; + } + + // + // If no drivers started and RemainingDevicePath is an End Device Path Node, then return EFI_SUCCESS + // + if (RemainingDevicePath != NULL) { + if (IsDevicePathEnd (RemainingDevicePath)) { + return EFI_SUCCESS; + } + } + + // + // Otherwise, no drivers were started on ControllerHandle, so return EFI_NOT_FOUND + // + return EFI_NOT_FOUND; +} + + + +/** + Disonnects a controller from a driver + + @param ControllerHandle ControllerHandle The handle of + the controller from which + driver(s) are to be + disconnected. + @param DriverImageHandle DriverImageHandle The driver to + disconnect from ControllerHandle. + @param ChildHandle ChildHandle The handle of the + child to destroy. + + @retval EFI_SUCCESS One or more drivers were + disconnected from the controller. + @retval EFI_SUCCESS On entry, no drivers are managing + ControllerHandle. + @retval EFI_SUCCESS DriverImageHandle is not NULL, + and on entry DriverImageHandle is + not managing ControllerHandle. + @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. + @retval EFI_INVALID_PARAMETER DriverImageHandle is not NULL, + and it is not a valid EFI_HANDLE. + @retval EFI_INVALID_PARAMETER ChildHandle is not NULL, and it + is not a valid EFI_HANDLE. + @retval EFI_OUT_OF_RESOURCES There are not enough resources + available to disconnect any + drivers from ControllerHandle. + @retval EFI_DEVICE_ERROR The controller could not be + disconnected because of a device + error. + +**/ +EFI_STATUS +EFIAPI +CoreDisconnectController ( + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE DriverImageHandle OPTIONAL, + IN EFI_HANDLE ChildHandle OPTIONAL + ) +{ + EFI_STATUS Status; + IHANDLE *Handle; + EFI_HANDLE *DriverImageHandleBuffer; + EFI_HANDLE *ChildBuffer; + UINTN Index; + UINTN HandleIndex; + UINTN DriverImageHandleCount; + UINTN ChildrenToStop; + UINTN ChildBufferCount; + UINTN StopCount; + BOOLEAN Duplicate; + BOOLEAN ChildHandleValid; + BOOLEAN DriverImageHandleValid; + LIST_ENTRY *Link; + LIST_ENTRY *ProtLink; + OPEN_PROTOCOL_DATA *OpenData; + PROTOCOL_INTERFACE *Prot; + EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; + + // + // Make sure ControllerHandle is valid + // + Status = CoreValidateHandle (ControllerHandle); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Make sure ChildHandle is valid if it is not NULL + // + if (ChildHandle != NULL) { + Status = CoreValidateHandle (ChildHandle); + if (EFI_ERROR (Status)) { + return Status; + } + } + + Handle = ControllerHandle; + + // + // Get list of drivers that are currently managing ControllerHandle + // + DriverImageHandleBuffer = NULL; + DriverImageHandleCount = 1; + + if (DriverImageHandle == NULL) { + // + // Look at each protocol interface for a match + // + DriverImageHandleCount = 0; + + CoreAcquireProtocolLock (); + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + for (ProtLink = Prot->OpenList.ForwardLink; + ProtLink != &Prot->OpenList; + ProtLink = ProtLink->ForwardLink) { + OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) { + DriverImageHandleCount++; + } + } + } + CoreReleaseProtocolLock (); + + // + // If there are no drivers managing this controller, then return EFI_SUCCESS + // + if (DriverImageHandleCount == 0) { + Status = EFI_SUCCESS; + goto Done; + } + + DriverImageHandleBuffer = AllocatePool (sizeof (EFI_HANDLE) * DriverImageHandleCount); + if (DriverImageHandleBuffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + DriverImageHandleCount = 0; + + CoreAcquireProtocolLock (); + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + for (ProtLink = Prot->OpenList.ForwardLink; + ProtLink != &Prot->OpenList; + ProtLink = ProtLink->ForwardLink) { + OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) { + Duplicate = FALSE; + for (Index = 0; Index< DriverImageHandleCount; Index++) { + if (DriverImageHandleBuffer[Index] == OpenData->AgentHandle) { + Duplicate = TRUE; + break; + } + } + if (!Duplicate) { + DriverImageHandleBuffer[DriverImageHandleCount] = OpenData->AgentHandle; + DriverImageHandleCount++; + } + } + } + } + CoreReleaseProtocolLock (); + } + + StopCount = 0; + for (HandleIndex = 0; HandleIndex < DriverImageHandleCount; HandleIndex++) { + + if (DriverImageHandleBuffer != NULL) { + DriverImageHandle = DriverImageHandleBuffer[HandleIndex]; + } + + // + // Get the Driver Binding Protocol of the driver that is managing this controller + // + Status = CoreHandleProtocol ( + DriverImageHandle, + &gEfiDriverBindingProtocolGuid, + (VOID **)&DriverBinding + ); + if (EFI_ERROR (Status) || DriverBinding == NULL) { + Status = EFI_INVALID_PARAMETER; + goto Done; + } + + // + // Look at each protocol interface for a match + // + DriverImageHandleValid = FALSE; + ChildBufferCount = 0; + + CoreAcquireProtocolLock (); + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + for (ProtLink = Prot->OpenList.ForwardLink; + ProtLink != &Prot->OpenList; + ProtLink = ProtLink->ForwardLink) { + OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if (OpenData->AgentHandle == DriverImageHandle) { + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) { + ChildBufferCount++; + } + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) { + DriverImageHandleValid = TRUE; + } + } + } + } + CoreReleaseProtocolLock (); + + if (DriverImageHandleValid) { + ChildHandleValid = FALSE; + ChildBuffer = NULL; + if (ChildBufferCount != 0) { + ChildBuffer = AllocatePool (sizeof (EFI_HANDLE) * ChildBufferCount); + if (ChildBuffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + ChildBufferCount = 0; + + CoreAcquireProtocolLock (); + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + for (ProtLink = Prot->OpenList.ForwardLink; + ProtLink != &Prot->OpenList; + ProtLink = ProtLink->ForwardLink) { + OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if ((OpenData->AgentHandle == DriverImageHandle) && + ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0)) { + Duplicate = FALSE; + for (Index = 0; Index < ChildBufferCount; Index++) { + if (ChildBuffer[Index] == OpenData->ControllerHandle) { + Duplicate = TRUE; + break; + } + } + if (!Duplicate) { + ChildBuffer[ChildBufferCount] = OpenData->ControllerHandle; + if (ChildHandle == ChildBuffer[ChildBufferCount]) { + ChildHandleValid = TRUE; + } + ChildBufferCount++; + } + } + } + } + CoreReleaseProtocolLock (); + } + + if (ChildHandle == NULL || ChildHandleValid) { + ChildrenToStop = 0; + Status = EFI_SUCCESS; + if (ChildBufferCount > 0) { + if (ChildHandle != NULL) { + ChildrenToStop = 1; + Status = DriverBinding->Stop (DriverBinding, ControllerHandle, ChildrenToStop, &ChildHandle); + } else { + ChildrenToStop = ChildBufferCount; + Status = DriverBinding->Stop (DriverBinding, ControllerHandle, ChildrenToStop, ChildBuffer); + } + } + if (!EFI_ERROR (Status) && ((ChildHandle == NULL) || (ChildBufferCount == ChildrenToStop))) { + Status = DriverBinding->Stop (DriverBinding, ControllerHandle, 0, NULL); + } + if (!EFI_ERROR (Status)) { + StopCount++; + } + } + + if (ChildBuffer != NULL) { + CoreFreePool (ChildBuffer); + } + } + } + + if (StopCount > 0) { + Status = EFI_SUCCESS; + } else { + Status = EFI_NOT_FOUND; + } + +Done: + + if (DriverImageHandleBuffer != NULL) { + CoreFreePool (DriverImageHandleBuffer); + } + + return Status; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/DxeMain.h b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/DxeMain.h new file mode 100644 index 0000000..966c285 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/DxeMain.h @@ -0,0 +1,2949 @@ +/** @file + The internal header file includes the common header files, defines + internal structure and functions used by DxeCore module. + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _DXE_MAIN_H_ +#define _DXE_MAIN_H_ + + + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +// +// attributes for reserved memory before it is promoted to system memory +// +#define EFI_MEMORY_PRESENT 0x0100000000000000ULL +#define EFI_MEMORY_INITIALIZED 0x0200000000000000ULL +#define EFI_MEMORY_TESTED 0x0400000000000000ULL + +// +// range for memory mapped port I/O on IPF +// +#define EFI_MEMORY_PORT_IO 0x4000000000000000ULL + + +/// +/// EFI_DEP_REPLACE_TRUE - Used to dynamically patch the dependency expression +/// to save time. A EFI_DEP_PUSH is evaluated one an +/// replaced with EFI_DEP_REPLACE_TRUE. If PI spec's Vol 2 +/// Driver Execution Environment Core Interface use 0xff +/// as new DEPEX opcode. EFI_DEP_REPLACE_TRUE should be +/// defined to a new value that is not conflicting with PI spec. +/// +#define EFI_DEP_REPLACE_TRUE 0xff + +/// +/// Define the initial size of the dependency expression evaluation stack +/// +#define DEPEX_STACK_SIZE_INCREMENT 0x1000 + +typedef struct { + EFI_GUID *ProtocolGuid; + VOID **Protocol; + EFI_EVENT Event; + VOID *Registration; + BOOLEAN Present; +} EFI_CORE_PROTOCOL_NOTIFY_ENTRY; + +// +// DXE Dispatcher Data structures +// + +#define KNOWN_HANDLE_SIGNATURE SIGNATURE_32('k','n','o','w') +typedef struct { + UINTN Signature; + LIST_ENTRY Link; // mFvHandleList + EFI_HANDLE Handle; + EFI_GUID FvNameGuid; +} KNOWN_HANDLE; + + +#define EFI_CORE_DRIVER_ENTRY_SIGNATURE SIGNATURE_32('d','r','v','r') +typedef struct { + UINTN Signature; + LIST_ENTRY Link; // mDriverList + + LIST_ENTRY ScheduledLink; // mScheduledQueue + + EFI_HANDLE FvHandle; + EFI_GUID FileName; + EFI_DEVICE_PATH_PROTOCOL *FvFileDevicePath; + EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv; + + VOID *Depex; + UINTN DepexSize; + + BOOLEAN Before; + BOOLEAN After; + EFI_GUID BeforeAfterGuid; + + BOOLEAN Dependent; + BOOLEAN Unrequested; + BOOLEAN Scheduled; + BOOLEAN Untrusted; + BOOLEAN Initialized; + BOOLEAN DepexProtocolError; + + EFI_HANDLE ImageHandle; + BOOLEAN IsFvImage; + +} EFI_CORE_DRIVER_ENTRY; + +// +//The data structure of GCD memory map entry +// +#define EFI_GCD_MAP_SIGNATURE SIGNATURE_32('g','c','d','m') +typedef struct { + UINTN Signature; + LIST_ENTRY Link; + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 EndAddress; + UINT64 Capabilities; + UINT64 Attributes; + EFI_GCD_MEMORY_TYPE GcdMemoryType; + EFI_GCD_IO_TYPE GcdIoType; + EFI_HANDLE ImageHandle; + EFI_HANDLE DeviceHandle; +} EFI_GCD_MAP_ENTRY; + + +#define LOADED_IMAGE_PRIVATE_DATA_SIGNATURE SIGNATURE_32('l','d','r','i') + +typedef struct { + UINTN Signature; + /// Image handle + EFI_HANDLE Handle; + /// Image type + UINTN Type; + /// If entrypoint has been called + BOOLEAN Started; + /// The image's entry point + EFI_IMAGE_ENTRY_POINT EntryPoint; + /// loaded image protocol + EFI_LOADED_IMAGE_PROTOCOL Info; + /// Location in memory + EFI_PHYSICAL_ADDRESS ImageBasePage; + /// Number of pages + UINTN NumberOfPages; + /// Original fixup data + CHAR8 *FixupData; + /// Tpl of started image + EFI_TPL Tpl; + /// Status returned by started image + EFI_STATUS Status; + /// Size of ExitData from started image + UINTN ExitDataSize; + /// Pointer to exit data from started image + VOID *ExitData; + /// Pointer to pool allocation for context save/restore + VOID *JumpBuffer; + /// Pointer to buffer for context save/restore + BASE_LIBRARY_JUMP_BUFFER *JumpContext; + /// Machine type from PE image + UINT16 Machine; + /// EBC Protocol pointer + EFI_EBC_PROTOCOL *Ebc; + /// Runtime image list + EFI_RUNTIME_IMAGE_ENTRY *RuntimeData; + /// Pointer to Loaded Image Device Path Protocol + EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath; + /// PeCoffLoader ImageContext + PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; + /// Status returned by LoadImage() service. + EFI_STATUS LoadImageStatus; +} LOADED_IMAGE_PRIVATE_DATA; + +#define LOADED_IMAGE_PRIVATE_DATA_FROM_THIS(a) \ + CR(a, LOADED_IMAGE_PRIVATE_DATA, Info, LOADED_IMAGE_PRIVATE_DATA_SIGNATURE) + +#define IMAGE_PROPERTIES_RECORD_CODE_SECTION_SIGNATURE SIGNATURE_32 ('I','P','R','C') + +typedef struct { + UINT32 Signature; + LIST_ENTRY Link; + EFI_PHYSICAL_ADDRESS CodeSegmentBase; + UINT64 CodeSegmentSize; +} IMAGE_PROPERTIES_RECORD_CODE_SECTION; + +#define IMAGE_PROPERTIES_RECORD_SIGNATURE SIGNATURE_32 ('I','P','R','D') + +typedef struct { + UINT32 Signature; + LIST_ENTRY Link; + EFI_PHYSICAL_ADDRESS ImageBase; + UINT64 ImageSize; + UINTN CodeSegmentCount; + LIST_ENTRY CodeSegmentList; +} IMAGE_PROPERTIES_RECORD; + +// +// DXE Core Global Variables +// +extern EFI_SYSTEM_TABLE *gDxeCoreST; +extern EFI_RUNTIME_SERVICES *gDxeCoreRT; +extern EFI_DXE_SERVICES *gDxeCoreDS; +extern EFI_HANDLE gDxeCoreImageHandle; + +extern BOOLEAN gMemoryMapTerminated; + +extern EFI_DECOMPRESS_PROTOCOL gEfiDecompress; + +extern EFI_RUNTIME_ARCH_PROTOCOL *gRuntime; +extern EFI_CPU_ARCH_PROTOCOL *gCpu; +extern EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *gWatchdogTimer; +extern EFI_METRONOME_ARCH_PROTOCOL *gMetronome; +extern EFI_TIMER_ARCH_PROTOCOL *gTimer; +extern EFI_SECURITY_ARCH_PROTOCOL *gSecurity; +extern EFI_SECURITY2_ARCH_PROTOCOL *gSecurity2; +extern EFI_BDS_ARCH_PROTOCOL *gBds; +extern EFI_SMM_BASE2_PROTOCOL *gSmmBase2; + +extern EFI_TPL gEfiCurrentTpl; + +extern EFI_GUID *gDxeCoreFileName; +extern EFI_LOADED_IMAGE_PROTOCOL *gDxeCoreLoadedImage; + +extern EFI_MEMORY_TYPE_INFORMATION gMemoryTypeInformation[EfiMaxMemoryType + 1]; + +extern BOOLEAN gDispatcherRunning; +extern EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate; + +extern EFI_LOAD_FIXED_ADDRESS_CONFIGURATION_TABLE gLoadModuleAtFixAddressConfigurationTable; +extern BOOLEAN gLoadFixedAddressCodeMemoryReady; +// +// Service Initialization Functions +// + + + +/** + Called to initialize the pool. + +**/ +VOID +CoreInitializePool ( + VOID + ); + + +/** + Called to initialize the memory map and add descriptors to + the current descriptor list. + The first descriptor that is added must be general usable + memory as the addition allocates heap. + + @param Type The type of memory to add + @param Start The starting address in the memory range Must be + page aligned + @param NumberOfPages The number of pages in the range + @param Attribute Attributes of the memory to add + + @return None. The range is added to the memory map + +**/ +VOID +CoreAddMemoryDescriptor ( + IN EFI_MEMORY_TYPE Type, + IN EFI_PHYSICAL_ADDRESS Start, + IN UINT64 NumberOfPages, + IN UINT64 Attribute + ); + + +/** + Release memory lock on mGcdMemorySpaceLock. + +**/ +VOID +CoreReleaseGcdMemoryLock ( + VOID + ); + + +/** + Acquire memory lock on mGcdMemorySpaceLock. + +**/ +VOID +CoreAcquireGcdMemoryLock ( + VOID + ); + + +/** + External function. Initializes memory services based on the memory + descriptor HOBs. This function is responsible for priming the memory + map, so memory allocations and resource allocations can be made. + The first part of this function can not depend on any memory services + until at least one memory descriptor is provided to the memory services. + + @param HobStart The start address of the HOB. + @param MemoryBaseAddress Start address of memory region found to init DXE + core. + @param MemoryLength Length of memory region found to init DXE core. + + @retval EFI_SUCCESS Memory services successfully initialized. + +**/ +EFI_STATUS +CoreInitializeMemoryServices ( + IN VOID **HobStart, + OUT EFI_PHYSICAL_ADDRESS *MemoryBaseAddress, + OUT UINT64 *MemoryLength + ); + + + +/** + External function. Initializes the GCD and memory services based on the memory + descriptor HOBs. This function is responsible for priming the GCD map and the + memory map, so memory allocations and resource allocations can be made. The + HobStart will be relocated to a pool buffer. + + @param HobStart The start address of the HOB + @param MemoryBaseAddress Start address of memory region found to init DXE + core. + @param MemoryLength Length of memory region found to init DXE core. + + @retval EFI_SUCCESS GCD services successfully initialized. + +**/ +EFI_STATUS +CoreInitializeGcdServices ( + IN OUT VOID **HobStart, + IN EFI_PHYSICAL_ADDRESS MemoryBaseAddress, + IN UINT64 MemoryLength + ); + + +/** + Initializes "event" support. + + @retval EFI_SUCCESS Always return success + +**/ +EFI_STATUS +CoreInitializeEventServices ( + VOID + ); + + +/** + Add the Image Services to EFI Boot Services Table and install the protocol + interfaces for this image. + + @param HobStart The HOB to initialize + + @return Status code. + +**/ +EFI_STATUS +CoreInitializeImageServices ( + IN VOID *HobStart + ); + + +/** + Creates an event that is fired everytime a Protocol of a specific type is installed. + +**/ +VOID +CoreNotifyOnProtocolInstallation ( + VOID + ); + + +/** + Return TRUE if all AP services are available. + + @retval EFI_SUCCESS All AP services are available + @retval EFI_NOT_FOUND At least one AP service is not available + +**/ +EFI_STATUS +CoreAllEfiServicesAvailable ( + VOID + ); + + +/** + Calcualte the 32-bit CRC in a EFI table using the service provided by the + gRuntime service. + + @param Hdr Pointer to an EFI standard header + +**/ +VOID +CalculateEfiHdrCrc ( + IN OUT EFI_TABLE_HEADER *Hdr + ); + + +/** + Called by the platform code to process a tick. + + @param Duration The number of 100ns elapsed since the last call + to TimerTick + +**/ +VOID +EFIAPI +CoreTimerTick ( + IN UINT64 Duration + ); + + +/** + Initialize the dispatcher. Initialize the notification function that runs when + an FV2 protocol is added to the system. + +**/ +VOID +CoreInitializeDispatcher ( + VOID + ); + + +/** + This is the POSTFIX version of the dependency evaluator. This code does + not need to handle Before or After, as it is not valid to call this + routine in this case. The SOR is just ignored and is a nop in the grammer. + POSTFIX means all the math is done on top of the stack. + + @param DriverEntry DriverEntry element to update. + + @retval TRUE If driver is ready to run. + @retval FALSE If driver is not ready to run or some fatal error + was found. + +**/ +BOOLEAN +CoreIsSchedulable ( + IN EFI_CORE_DRIVER_ENTRY *DriverEntry + ); + + +/** + Preprocess dependency expression and update DriverEntry to reflect the + state of Before, After, and SOR dependencies. If DriverEntry->Before + or DriverEntry->After is set it will never be cleared. If SOR is set + it will be cleared by CoreSchedule(), and then the driver can be + dispatched. + + @param DriverEntry DriverEntry element to update . + + @retval EFI_SUCCESS It always works. + +**/ +EFI_STATUS +CorePreProcessDepex ( + IN EFI_CORE_DRIVER_ENTRY *DriverEntry + ); + + + +/** + Terminates all boot services. + + @param ImageHandle Handle that identifies the exiting image. + @param MapKey Key to the latest memory map. + + @retval EFI_SUCCESS Boot Services terminated + @retval EFI_INVALID_PARAMETER MapKey is incorrect. + +**/ +EFI_STATUS +EFIAPI +CoreExitBootServices ( + IN EFI_HANDLE ImageHandle, + IN UINTN MapKey + ); + + +/** + Make sure the memory map is following all the construction rules, + it is the last time to check memory map error before exit boot services. + + @param MapKey Memory map key + + @retval EFI_INVALID_PARAMETER Memory map not consistent with construction + rules. + @retval EFI_SUCCESS Valid memory map. + +**/ +EFI_STATUS +CoreTerminateMemoryMap ( + IN UINTN MapKey + ); + + +/** + Signals all events in the EventGroup. + + @param EventGroup The list to signal + +**/ +VOID +CoreNotifySignalList ( + IN EFI_GUID *EventGroup + ); + + + +/** + Boot Service called to add, modify, or remove a system configuration table from + the EFI System Table. + + @param Guid Pointer to the GUID for the entry to add, update, or + remove + @param Table Pointer to the configuration table for the entry to add, + update, or remove, may be NULL. + + @return EFI_SUCCESS Guid, Table pair added, updated, or removed. + @return EFI_INVALID_PARAMETER Input GUID not valid. + @return EFI_NOT_FOUND Attempted to delete non-existant entry + @return EFI_OUT_OF_RESOURCES Not enough memory available + +**/ +EFI_STATUS +EFIAPI +CoreInstallConfigurationTable ( + IN EFI_GUID *Guid, + IN VOID *Table + ); + + + +/** + Raise the task priority level to the new level. + High level is implemented by disabling processor interrupts. + + @param NewTpl New task priority level + + @return The previous task priority level + +**/ +EFI_TPL +EFIAPI +CoreRaiseTpl ( + IN EFI_TPL NewTpl + ); + + + +/** + Lowers the task priority to the previous value. If the new + priority unmasks events at a higher priority, they are dispatched. + + @param NewTpl New, lower, task priority + +**/ +VOID +EFIAPI +CoreRestoreTpl ( + IN EFI_TPL NewTpl + ); + + + +/** + Introduces a fine-grained stall. + + @param Microseconds The number of microseconds to stall execution. + + @retval EFI_SUCCESS Execution was stalled for at least the requested + amount of microseconds. + @retval EFI_NOT_AVAILABLE_YET gMetronome is not available yet + +**/ +EFI_STATUS +EFIAPI +CoreStall ( + IN UINTN Microseconds + ); + + + +/** + Sets the system's watchdog timer. + + @param Timeout The number of seconds to set the watchdog timer to. + A value of zero disables the timer. + @param WatchdogCode The numeric code to log on a watchdog timer timeout + event. The firmware reserves codes 0x0000 to 0xFFFF. + Loaders and operating systems may use other timeout + codes. + @param DataSize The size, in bytes, of WatchdogData. + @param WatchdogData A data buffer that includes a Null-terminated Unicode + string, optionally followed by additional binary data. + The string is a description that the call may use to + further indicate the reason to be logged with a + watchdog event. + + @return EFI_SUCCESS Timeout has been set + @return EFI_NOT_AVAILABLE_YET WatchdogTimer is not available yet + @return EFI_UNSUPPORTED System does not have a timer (currently not used) + @return EFI_DEVICE_ERROR Could not complete due to hardware error + +**/ +EFI_STATUS +EFIAPI +CoreSetWatchdogTimer ( + IN UINTN Timeout, + IN UINT64 WatchdogCode, + IN UINTN DataSize, + IN CHAR16 *WatchdogData OPTIONAL + ); + + + +/** + Wrapper function to CoreInstallProtocolInterfaceNotify. This is the public API which + Calls the private one which contains a BOOLEAN parameter for notifications + + @param UserHandle The handle to install the protocol handler on, + or NULL if a new handle is to be allocated + @param Protocol The protocol to add to the handle + @param InterfaceType Indicates whether Interface is supplied in + native form. + @param Interface The interface for the protocol being added + + @return Status code + +**/ +EFI_STATUS +EFIAPI +CoreInstallProtocolInterface ( + IN OUT EFI_HANDLE *UserHandle, + IN EFI_GUID *Protocol, + IN EFI_INTERFACE_TYPE InterfaceType, + IN VOID *Interface + ); + + +/** + Installs a protocol interface into the boot services environment. + + @param UserHandle The handle to install the protocol handler on, + or NULL if a new handle is to be allocated + @param Protocol The protocol to add to the handle + @param InterfaceType Indicates whether Interface is supplied in + native form. + @param Interface The interface for the protocol being added + @param Notify indicates whether notify the notification list + for this protocol + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Protocol interface successfully installed + +**/ +EFI_STATUS +CoreInstallProtocolInterfaceNotify ( + IN OUT EFI_HANDLE *UserHandle, + IN EFI_GUID *Protocol, + IN EFI_INTERFACE_TYPE InterfaceType, + IN VOID *Interface, + IN BOOLEAN Notify + ); + + + +/** + Installs a list of protocol interface into the boot services environment. + This function calls InstallProtocolInterface() in a loop. If any error + occures all the protocols added by this function are removed. This is + basically a lib function to save space. + + @param Handle The handle to install the protocol handlers on, + or NULL if a new handle is to be allocated + @param ... EFI_GUID followed by protocol instance. A NULL + terminates the list. The pairs are the + arguments to InstallProtocolInterface(). All the + protocols are added to Handle. + + @retval EFI_SUCCESS All the protocol interface was installed. + @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols. + @retval EFI_ALREADY_STARTED A Device Path Protocol instance was passed in that is already present in + the handle database. + @retval EFI_INVALID_PARAMETER Handle is NULL. + @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle. + +**/ +EFI_STATUS +EFIAPI +CoreInstallMultipleProtocolInterfaces ( + IN OUT EFI_HANDLE *Handle, + ... + ); + + + +/** + Uninstalls a list of protocol interface in the boot services environment. + This function calls UnisatllProtocolInterface() in a loop. This is + basically a lib function to save space. + + @param Handle The handle to uninstall the protocol + @param ... EFI_GUID followed by protocol instance. A NULL + terminates the list. The pairs are the + arguments to UninstallProtocolInterface(). All + the protocols are added to Handle. + + @return Status code + +**/ +EFI_STATUS +EFIAPI +CoreUninstallMultipleProtocolInterfaces ( + IN EFI_HANDLE Handle, + ... + ); + + + +/** + Reinstall a protocol interface on a device handle. The OldInterface for Protocol is replaced by the NewInterface. + + @param UserHandle Handle on which the interface is to be + reinstalled + @param Protocol The numeric ID of the interface + @param OldInterface A pointer to the old interface + @param NewInterface A pointer to the new interface + + @retval EFI_SUCCESS The protocol interface was installed + @retval EFI_NOT_FOUND The OldInterface on the handle was not found + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value + +**/ +EFI_STATUS +EFIAPI +CoreReinstallProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + IN VOID *OldInterface, + IN VOID *NewInterface + ); + + + +/** + Uninstalls all instances of a protocol:interfacer from a handle. + If the last protocol interface is remove from the handle, the + handle is freed. + + @param UserHandle The handle to remove the protocol handler from + @param Protocol The protocol, of protocol:interface, to remove + @param Interface The interface, of protocol:interface, to remove + + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_SUCCESS Protocol interface successfully uninstalled. + +**/ +EFI_STATUS +EFIAPI +CoreUninstallProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ); + + + +/** + Queries a handle to determine if it supports a specified protocol. + + @param UserHandle The handle being queried. + @param Protocol The published unique identifier of the protocol. + @param Interface Supplies the address where a pointer to the + corresponding Protocol Interface is returned. + + @return The requested protocol interface for the handle + +**/ +EFI_STATUS +EFIAPI +CoreHandleProtocol ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + OUT VOID **Interface + ); + + + +/** + Locates the installed protocol handler for the handle, and + invokes it to obtain the protocol interface. Usage information + is registered in the protocol data base. + + @param UserHandle The handle to obtain the protocol interface on + @param Protocol The ID of the protocol + @param Interface The location to return the protocol interface + @param ImageHandle The handle of the Image that is opening the + protocol interface specified by Protocol and + Interface. + @param ControllerHandle The controller handle that is requiring this + interface. + @param Attributes The open mode of the protocol interface + specified by Handle and Protocol. + + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_SUCCESS Get the protocol interface. + +**/ +EFI_STATUS +EFIAPI +CoreOpenProtocol ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + OUT VOID **Interface OPTIONAL, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle, + IN UINT32 Attributes + ); + + + +/** + Return information about Opened protocols in the system + + @param UserHandle The handle to close the protocol interface on + @param Protocol The ID of the protocol + @param EntryBuffer A pointer to a buffer of open protocol + information in the form of + EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures. + @param EntryCount Number of EntryBuffer entries + +**/ +EFI_STATUS +EFIAPI +CoreOpenProtocolInformation ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, + OUT UINTN *EntryCount + ); + + + +/** + Closes a protocol on a handle that was opened using OpenProtocol(). + + @param UserHandle The handle for the protocol interface that was + previously opened with OpenProtocol(), and is + now being closed. + @param Protocol The published unique identifier of the protocol. + It is the caller's responsibility to pass in a + valid GUID. + @param AgentHandle The handle of the agent that is closing the + protocol interface. + @param ControllerHandle If the agent that opened a protocol is a driver + that follows the EFI Driver Model, then this + parameter is the controller handle that required + the protocol interface. If the agent does not + follow the EFI Driver Model, then this parameter + is optional and may be NULL. + + @retval EFI_SUCCESS The protocol instance was closed. + @retval EFI_INVALID_PARAMETER Handle, AgentHandle or ControllerHandle is not a + valid EFI_HANDLE. + @retval EFI_NOT_FOUND Can not find the specified protocol or + AgentHandle. + +**/ +EFI_STATUS +EFIAPI +CoreCloseProtocol ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + IN EFI_HANDLE AgentHandle, + IN EFI_HANDLE ControllerHandle + ); + + + +/** + Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated + from pool. + + @param UserHandle The handle from which to retrieve the list of + protocol interface GUIDs. + @param ProtocolBuffer A pointer to the list of protocol interface GUID + pointers that are installed on Handle. + @param ProtocolBufferCount A pointer to the number of GUID pointers present + in ProtocolBuffer. + + @retval EFI_SUCCESS The list of protocol interface GUIDs installed + on Handle was returned in ProtocolBuffer. The + number of protocol interface GUIDs was returned + in ProtocolBufferCount. + @retval EFI_INVALID_PARAMETER Handle is NULL. + @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE. + @retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL. + @retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL. + @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the + results. + +**/ +EFI_STATUS +EFIAPI +CoreProtocolsPerHandle ( + IN EFI_HANDLE UserHandle, + OUT EFI_GUID ***ProtocolBuffer, + OUT UINTN *ProtocolBufferCount + ); + + + +/** + Add a new protocol notification record for the request protocol. + + @param Protocol The requested protocol to add the notify + registration + @param Event The event to signal + @param Registration Returns the registration record + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully returned the registration record + that has been added + +**/ +EFI_STATUS +EFIAPI +CoreRegisterProtocolNotify ( + IN EFI_GUID *Protocol, + IN EFI_EVENT Event, + OUT VOID **Registration + ); + + +/** + Removes all the events in the protocol database that match Event. + + @param Event The event to search for in the protocol + database. + + @return EFI_SUCCESS when done searching the entire database. + +**/ +EFI_STATUS +CoreUnregisterProtocolNotify ( + IN EFI_EVENT Event + ); + + +/** + Locates the requested handle(s) and returns them in Buffer. + + @param SearchType The type of search to perform to locate the + handles + @param Protocol The protocol to search for + @param SearchKey Dependant on SearchType + @param BufferSize On input the size of Buffer. On output the + size of data returned. + @param Buffer The buffer to return the results in + + @retval EFI_BUFFER_TOO_SMALL Buffer too small, required buffer size is + returned in BufferSize. + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully found the requested handle(s) and + returns them in Buffer. + +**/ +EFI_STATUS +EFIAPI +CoreLocateHandle ( + IN EFI_LOCATE_SEARCH_TYPE SearchType, + IN EFI_GUID *Protocol OPTIONAL, + IN VOID *SearchKey OPTIONAL, + IN OUT UINTN *BufferSize, + OUT EFI_HANDLE *Buffer + ); + + + +/** + Locates the handle to a device on the device path that best matches the specified protocol. + + @param Protocol The protocol to search for. + @param DevicePath On input, a pointer to a pointer to the device + path. On output, the device path pointer is + modified to point to the remaining part of the + devicepath. + @param Device A pointer to the returned device handle. + + @retval EFI_SUCCESS The resulting handle was returned. + @retval EFI_NOT_FOUND No handles matched the search. + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. + +**/ +EFI_STATUS +EFIAPI +CoreLocateDevicePath ( + IN EFI_GUID *Protocol, + IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, + OUT EFI_HANDLE *Device + ); + + + +/** + Function returns an array of handles that support the requested protocol + in a buffer allocated from pool. This is a version of CoreLocateHandle() + that allocates a buffer for the caller. + + @param SearchType Specifies which handle(s) are to be returned. + @param Protocol Provides the protocol to search by. This + parameter is only valid for SearchType + ByProtocol. + @param SearchKey Supplies the search key depending on the + SearchType. + @param NumberHandles The number of handles returned in Buffer. + @param Buffer A pointer to the buffer to return the requested + array of handles that support Protocol. + + @retval EFI_SUCCESS The result array of handles was returned. + @retval EFI_NOT_FOUND No handles match the search. + @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the + matching results. + @retval EFI_INVALID_PARAMETER One or more parameters are not valid. + +**/ +EFI_STATUS +EFIAPI +CoreLocateHandleBuffer ( + IN EFI_LOCATE_SEARCH_TYPE SearchType, + IN EFI_GUID *Protocol OPTIONAL, + IN VOID *SearchKey OPTIONAL, + IN OUT UINTN *NumberHandles, + OUT EFI_HANDLE **Buffer + ); + + + +/** + Return the first Protocol Interface that matches the Protocol GUID. If + Registration is passed in, return a Protocol Instance that was just add + to the system. If Registration is NULL return the first Protocol Interface + you find. + + @param Protocol The protocol to search for + @param Registration Optional Registration Key returned from + RegisterProtocolNotify() + @param Interface Return the Protocol interface (instance). + + @retval EFI_SUCCESS If a valid Interface is returned + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_NOT_FOUND Protocol interface not found + +**/ +EFI_STATUS +EFIAPI +CoreLocateProtocol ( + IN EFI_GUID *Protocol, + IN VOID *Registration OPTIONAL, + OUT VOID **Interface + ); + + +/** + return handle database key. + + + @return Handle database key. + +**/ +UINT64 +CoreGetHandleDatabaseKey ( + VOID + ); + + +/** + Go connect any handles that were created or modified while a image executed. + + @param Key The Key to show that the handle has been + created/modified + +**/ +VOID +CoreConnectHandlesByKey ( + UINT64 Key + ); + + + +/** + Connects one or more drivers to a controller. + + @param ControllerHandle The handle of the controller to which driver(s) are to be connected. + @param DriverImageHandle A pointer to an ordered list handles that support the + EFI_DRIVER_BINDING_PROTOCOL. + @param RemainingDevicePath A pointer to the device path that specifies a child of the + controller specified by ControllerHandle. + @param Recursive If TRUE, then ConnectController() is called recursively + until the entire tree of controllers below the controller specified + by ControllerHandle have been created. If FALSE, then + the tree of controllers is only expanded one level. + + @retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle. + 2) No drivers were connected to ControllerHandle, but + RemainingDevicePath is not NULL, and it is an End Device + Path Node. + @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. + @retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances + present in the system. + 2) No drivers were connected to ControllerHandle. + @retval EFI_SECURITY_VIOLATION + The user has no permission to start UEFI device drivers on the device path + associated with the ControllerHandle or specified by the RemainingDevicePath. + +**/ +EFI_STATUS +EFIAPI +CoreConnectController ( + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE *DriverImageHandle OPTIONAL, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, + IN BOOLEAN Recursive + ); + + + +/** + Disonnects a controller from a driver + + @param ControllerHandle ControllerHandle The handle of + the controller from which + driver(s) are to be + disconnected. + @param DriverImageHandle DriverImageHandle The driver to + disconnect from ControllerHandle. + @param ChildHandle ChildHandle The handle of the + child to destroy. + + @retval EFI_SUCCESS One or more drivers were + disconnected from the controller. + @retval EFI_SUCCESS On entry, no drivers are managing + ControllerHandle. + @retval EFI_SUCCESS DriverImageHandle is not NULL, + and on entry DriverImageHandle is + not managing ControllerHandle. + @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. + @retval EFI_INVALID_PARAMETER DriverImageHandle is not NULL, + and it is not a valid EFI_HANDLE. + @retval EFI_INVALID_PARAMETER ChildHandle is not NULL, and it + is not a valid EFI_HANDLE. + @retval EFI_OUT_OF_RESOURCES There are not enough resources + available to disconnect any + drivers from ControllerHandle. + @retval EFI_DEVICE_ERROR The controller could not be + disconnected because of a device + error. + +**/ +EFI_STATUS +EFIAPI +CoreDisconnectController ( + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE DriverImageHandle OPTIONAL, + IN EFI_HANDLE ChildHandle OPTIONAL + ); + + + +/** + Allocates pages from the memory map. + + @param Type The type of allocation to perform + @param MemoryType The type of memory to turn the allocated pages + into + @param NumberOfPages The number of pages to allocate + @param Memory A pointer to receive the base allocated memory + address + + @return Status. On success, Memory is filled in with the base address allocated + @retval EFI_INVALID_PARAMETER Parameters violate checking rules defined in + spec. + @retval EFI_NOT_FOUND Could not allocate pages match the requirement. + @retval EFI_OUT_OF_RESOURCES No enough pages to allocate. + @retval EFI_SUCCESS Pages successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreAllocatePages ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN NumberOfPages, + IN OUT EFI_PHYSICAL_ADDRESS *Memory + ); + +/** + Frees previous allocated pages. + + @param Memory Base address of memory being freed + @param NumberOfPages The number of pages to free + + @retval EFI_NOT_FOUND Could not find the entry that covers the range + @retval EFI_INVALID_PARAMETER Address not aligned + @return EFI_SUCCESS -Pages successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreePages ( + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN NumberOfPages + ); + +/** + This function returns a copy of the current memory map. The map is an array of + memory descriptors, each of which describes a contiguous block of memory. + + @param MemoryMapSize A pointer to the size, in bytes, of the + MemoryMap buffer. On input, this is the size of + the buffer allocated by the caller. On output, + it is the size of the buffer returned by the + firmware if the buffer was large enough, or the + size of the buffer needed to contain the map if + the buffer was too small. + @param MemoryMap A pointer to the buffer in which firmware places + the current memory map. + @param MapKey A pointer to the location in which firmware + returns the key for the current memory map. + @param DescriptorSize A pointer to the location in which firmware + returns the size, in bytes, of an individual + EFI_MEMORY_DESCRIPTOR. + @param DescriptorVersion A pointer to the location in which firmware + returns the version number associated with the + EFI_MEMORY_DESCRIPTOR. + + @retval EFI_SUCCESS The memory map was returned in the MemoryMap + buffer. + @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current + buffer size needed to hold the memory map is + returned in MemoryMapSize. + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. + +**/ +EFI_STATUS +EFIAPI +CoreGetMemoryMap ( + IN OUT UINTN *MemoryMapSize, + IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, + OUT UINTN *MapKey, + OUT UINTN *DescriptorSize, + OUT UINT32 *DescriptorVersion + ); + + + +/** + Allocate pool of a particular type. + + @param PoolType Type of pool to allocate + @param Size The amount of pool to allocate + @param Buffer The address to return a pointer to the allocated + pool + + @retval EFI_INVALID_PARAMETER PoolType not valid or Buffer is NULL + @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed. + @retval EFI_SUCCESS Pool successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreAllocatePool ( + IN EFI_MEMORY_TYPE PoolType, + IN UINTN Size, + OUT VOID **Buffer + ); + +/** + Allocate pool of a particular type. + + @param PoolType Type of pool to allocate + @param Size The amount of pool to allocate + @param Buffer The address to return a pointer to the allocated + pool + + @retval EFI_INVALID_PARAMETER PoolType not valid or Buffer is NULL + @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed. + @retval EFI_SUCCESS Pool successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreInternalAllocatePool ( + IN EFI_MEMORY_TYPE PoolType, + IN UINTN Size, + OUT VOID **Buffer + ); + +/** + Frees pool. + + @param Buffer The allocated pool entry to free + + @retval EFI_INVALID_PARAMETER Buffer is not a valid value. + @retval EFI_SUCCESS Pool successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreePool ( + IN VOID *Buffer + ); + +/** + Frees pool. + + @param Buffer The allocated pool entry to free + @param PoolType Pointer to pool type + + @retval EFI_INVALID_PARAMETER Buffer is not a valid value. + @retval EFI_SUCCESS Pool successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreInternalFreePool ( + IN VOID *Buffer, + OUT EFI_MEMORY_TYPE *PoolType OPTIONAL + ); + +/** + Loads an EFI image into memory and returns a handle to the image. + + @param BootPolicy If TRUE, indicates that the request originates + from the boot manager, and that the boot + manager is attempting to load FilePath as a + boot selection. + @param ParentImageHandle The caller's image handle. + @param FilePath The specific file path from which the image is + loaded. + @param SourceBuffer If not NULL, a pointer to the memory location + containing a copy of the image to be loaded. + @param SourceSize The size in bytes of SourceBuffer. + @param ImageHandle Pointer to the returned image handle that is + created when the image is successfully loaded. + + @retval EFI_SUCCESS The image was loaded into memory. + @retval EFI_NOT_FOUND The FilePath was not found. + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. + @retval EFI_UNSUPPORTED The image type is not supported, or the device + path cannot be parsed to locate the proper + protocol for loading the file. + @retval EFI_OUT_OF_RESOURCES Image was not loaded due to insufficient + resources. + @retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not + understood. + @retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error. + @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the + image from being loaded. NULL is returned in *ImageHandle. + @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a + valid EFI_LOADED_IMAGE_PROTOCOL. However, the current + platform policy specifies that the image should not be started. + +**/ +EFI_STATUS +EFIAPI +CoreLoadImage ( + IN BOOLEAN BootPolicy, + IN EFI_HANDLE ParentImageHandle, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath, + IN VOID *SourceBuffer OPTIONAL, + IN UINTN SourceSize, + OUT EFI_HANDLE *ImageHandle + ); + + + +/** + Unloads an image. + + @param ImageHandle Handle that identifies the image to be + unloaded. + + @retval EFI_SUCCESS The image has been unloaded. + @retval EFI_UNSUPPORTED The image has been started, and does not support + unload. + @retval EFI_INVALID_PARAMPETER ImageHandle is not a valid image handle. + +**/ +EFI_STATUS +EFIAPI +CoreUnloadImage ( + IN EFI_HANDLE ImageHandle + ); + + + +/** + Transfer control to a loaded image's entry point. + + @param ImageHandle Handle of image to be started. + @param ExitDataSize Pointer of the size to ExitData + @param ExitData Pointer to a pointer to a data buffer that + includes a Null-terminated string, + optionally followed by additional binary data. + The string is a description that the caller may + use to further indicate the reason for the + image's exit. + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SECURITY_VIOLATION The current platform policy specifies that the image should not be started. + @retval EFI_SUCCESS Successfully transfer control to the image's + entry point. + +**/ +EFI_STATUS +EFIAPI +CoreStartImage ( + IN EFI_HANDLE ImageHandle, + OUT UINTN *ExitDataSize, + OUT CHAR16 **ExitData OPTIONAL + ); + + + +/** + Terminates the currently loaded EFI image and returns control to boot services. + + @param ImageHandle Handle that identifies the image. This + parameter is passed to the image on entry. + @param Status The image's exit code. + @param ExitDataSize The size, in bytes, of ExitData. Ignored if + ExitStatus is EFI_SUCCESS. + @param ExitData Pointer to a data buffer that includes a + Null-terminated Unicode string, optionally + followed by additional binary data. The string + is a description that the caller may use to + further indicate the reason for the image's + exit. + + @retval EFI_INVALID_PARAMETER Image handle is NULL or it is not current + image. + @retval EFI_SUCCESS Successfully terminates the currently loaded + EFI image. + @retval EFI_ACCESS_DENIED Should never reach there. + @retval EFI_OUT_OF_RESOURCES Could not allocate pool + +**/ +EFI_STATUS +EFIAPI +CoreExit ( + IN EFI_HANDLE ImageHandle, + IN EFI_STATUS Status, + IN UINTN ExitDataSize, + IN CHAR16 *ExitData OPTIONAL + ); + + + +/** + Creates an event. + + @param Type The type of event to create and its mode and + attributes + @param NotifyTpl The task priority level of event notifications + @param NotifyFunction Pointer to the events notification function + @param NotifyContext Pointer to the notification functions context; + corresponds to parameter "Context" in the + notification function + @param Event Pointer to the newly created event if the call + succeeds; undefined otherwise + + @retval EFI_SUCCESS The event structure was created + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value + @retval EFI_OUT_OF_RESOURCES The event could not be allocated + +**/ +EFI_STATUS +EFIAPI +CoreCreateEvent ( + IN UINT32 Type, + IN EFI_TPL NotifyTpl, + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL + IN VOID *NotifyContext, OPTIONAL + OUT EFI_EVENT *Event + ); + + + +/** + Creates an event in a group. + + @param Type The type of event to create and its mode and + attributes + @param NotifyTpl The task priority level of event notifications + @param NotifyFunction Pointer to the events notification function + @param NotifyContext Pointer to the notification functions context; + corresponds to parameter "Context" in the + notification function + @param EventGroup GUID for EventGroup if NULL act the same as + gBS->CreateEvent(). + @param Event Pointer to the newly created event if the call + succeeds; undefined otherwise + + @retval EFI_SUCCESS The event structure was created + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value + @retval EFI_OUT_OF_RESOURCES The event could not be allocated + +**/ +EFI_STATUS +EFIAPI +CoreCreateEventEx ( + IN UINT32 Type, + IN EFI_TPL NotifyTpl, + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL + IN CONST VOID *NotifyContext, OPTIONAL + IN CONST EFI_GUID *EventGroup, OPTIONAL + OUT EFI_EVENT *Event + ); + +/** + Creates a general-purpose event structure + + @param Type The type of event to create and its mode and + attributes + @param NotifyTpl The task priority level of event notifications + @param NotifyFunction Pointer to the events notification function + @param NotifyContext Pointer to the notification functions context; + corresponds to parameter "Context" in the + notification function + @param EventGroup GUID for EventGroup if NULL act the same as + gBS->CreateEvent(). + @param Event Pointer to the newly created event if the call + succeeds; undefined otherwise + + @retval EFI_SUCCESS The event structure was created + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value + @retval EFI_OUT_OF_RESOURCES The event could not be allocated + +**/ +EFI_STATUS +EFIAPI +CoreCreateEventInternal ( + IN UINT32 Type, + IN EFI_TPL NotifyTpl, + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL + IN CONST VOID *NotifyContext, OPTIONAL + IN CONST EFI_GUID *EventGroup, OPTIONAL + OUT EFI_EVENT *Event + ); + +/** + Sets the type of timer and the trigger time for a timer event. + + @param UserEvent The timer event that is to be signaled at the + specified time + @param Type The type of time that is specified in + TriggerTime + @param TriggerTime The number of 100ns units until the timer + expires + + @retval EFI_SUCCESS The event has been set to be signaled at the + requested time + @retval EFI_INVALID_PARAMETER Event or Type is not valid + +**/ +EFI_STATUS +EFIAPI +CoreSetTimer ( + IN EFI_EVENT UserEvent, + IN EFI_TIMER_DELAY Type, + IN UINT64 TriggerTime + ); + + + +/** + Signals the event. Queues the event to be notified if needed. + + @param UserEvent The event to signal . + + @retval EFI_INVALID_PARAMETER Parameters are not valid. + @retval EFI_SUCCESS The event was signaled. + +**/ +EFI_STATUS +EFIAPI +CoreSignalEvent ( + IN EFI_EVENT UserEvent + ); + + + +/** + Stops execution until an event is signaled. + + @param NumberOfEvents The number of events in the UserEvents array + @param UserEvents An array of EFI_EVENT + @param UserIndex Pointer to the index of the event which + satisfied the wait condition + + @retval EFI_SUCCESS The event indicated by Index was signaled. + @retval EFI_INVALID_PARAMETER The event indicated by Index has a notification + function or Event was not a valid type + @retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION + +**/ +EFI_STATUS +EFIAPI +CoreWaitForEvent ( + IN UINTN NumberOfEvents, + IN EFI_EVENT *UserEvents, + OUT UINTN *UserIndex + ); + + + +/** + Closes an event and frees the event structure. + + @param UserEvent Event to close + + @retval EFI_INVALID_PARAMETER Parameters are not valid. + @retval EFI_SUCCESS The event has been closed + +**/ +EFI_STATUS +EFIAPI +CoreCloseEvent ( + IN EFI_EVENT UserEvent + ); + + + +/** + Check the status of an event. + + @param UserEvent The event to check + + @retval EFI_SUCCESS The event is in the signaled state + @retval EFI_NOT_READY The event is not in the signaled state + @retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL + +**/ +EFI_STATUS +EFIAPI +CoreCheckEvent ( + IN EFI_EVENT UserEvent + ); + + +/** + Adds reserved memory, system memory, or memory-mapped I/O resources to the + global coherency domain of the processor. + + @param GcdMemoryType Memory type of the memory space. + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + @param Capabilities alterable attributes of the memory space. + + @retval EFI_SUCCESS Merged this memory space into GCD map. + +**/ +EFI_STATUS +EFIAPI +CoreAddMemorySpace ( + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities + ); + + +/** + Allocates nonexistent memory, reserved memory, system memory, or memorymapped + I/O resources from the global coherency domain of the processor. + + @param GcdAllocateType The type of allocate operation + @param GcdMemoryType The desired memory type + @param Alignment Align with 2^Alignment + @param Length Length to allocate + @param BaseAddress Base address to allocate + @param ImageHandle The image handle consume the allocated space. + @param DeviceHandle The device handle consume the allocated space. + + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_NOT_FOUND No descriptor contains the desired space. + @retval EFI_SUCCESS Memory space successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreAllocateMemorySpace ( + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ); + + +/** + Frees nonexistent memory, reserved memory, system memory, or memory-mapped + I/O resources from the global coherency domain of the processor. + + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + + @retval EFI_SUCCESS Space successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreeMemorySpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Removes reserved memory, system memory, or memory-mapped I/O resources from + the global coherency domain of the processor. + + @param BaseAddress Base address of the memory space. + @param Length Length of the memory space. + + @retval EFI_SUCCESS Successfully remove a segment of memory space. + +**/ +EFI_STATUS +EFIAPI +CoreRemoveMemorySpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Retrieves the descriptor for a memory region containing a specified address. + + @param BaseAddress Specified start address + @param Descriptor Specified length + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully get memory space descriptor. + +**/ +EFI_STATUS +EFIAPI +CoreGetMemorySpaceDescriptor ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor + ); + + +/** + Modifies the attributes for a memory region in the global coherency domain of the + processor. + + @param BaseAddress Specified start address + @param Length Specified length + @param Attributes Specified attributes + + @retval EFI_SUCCESS The attributes were set for the memory region. + @retval EFI_INVALID_PARAMETER Length is zero. + @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory + resource range specified by BaseAddress and Length. + @retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource + range specified by BaseAddress and Length. + @retval EFI_ACCESS_DENIED The attributes for the memory resource range specified by + BaseAddress and Length cannot be modified. + @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the attributes of + the memory resource range. + @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol is + not available yet. + +**/ +EFI_STATUS +EFIAPI +CoreSetMemorySpaceAttributes ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Attributes + ); + + +/** + Modifies the capabilities for a memory region in the global coherency domain of the + processor. + + @param BaseAddress The physical address that is the start address of a memory region. + @param Length The size in bytes of the memory region. + @param Capabilities The bit mask of capabilities that the memory region supports. + + @retval EFI_SUCCESS The capabilities were set for the memory region. + @retval EFI_INVALID_PARAMETER Length is zero. + @retval EFI_UNSUPPORTED The capabilities specified by Capabilities do not include the + memory region attributes currently in use. + @retval EFI_ACCESS_DENIED The capabilities for the memory resource range specified by + BaseAddress and Length cannot be modified. + @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the capabilities + of the memory resource range. +**/ +EFI_STATUS +EFIAPI +CoreSetMemorySpaceCapabilities ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities + ); + + +/** + Returns a map of the memory resources in the global coherency domain of the + processor. + + @param NumberOfDescriptors Number of descriptors. + @param MemorySpaceMap Descriptor array + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Successfully get memory space map. + +**/ +EFI_STATUS +EFIAPI +CoreGetMemorySpaceMap ( + OUT UINTN *NumberOfDescriptors, + OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap + ); + + +/** + Adds reserved I/O or I/O resources to the global coherency domain of the processor. + + @param GcdIoType IO type of the segment. + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Merged this segment into GCD map. + @retval EFI_INVALID_PARAMETER Parameter not valid + +**/ +EFI_STATUS +EFIAPI +CoreAddIoSpace ( + IN EFI_GCD_IO_TYPE GcdIoType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency + domain of the processor. + + @param GcdAllocateType The type of allocate operation + @param GcdIoType The desired IO type + @param Alignment Align with 2^Alignment + @param Length Length to allocate + @param BaseAddress Base address to allocate + @param ImageHandle The image handle consume the allocated space. + @param DeviceHandle The device handle consume the allocated space. + + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_NOT_FOUND No descriptor contains the desired space. + @retval EFI_SUCCESS IO space successfully allocated. + +**/ +EFI_STATUS +EFIAPI +CoreAllocateIoSpace ( + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_IO_TYPE GcdIoType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ); + + +/** + Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency + domain of the processor. + + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Space successfully freed. + +**/ +EFI_STATUS +EFIAPI +CoreFreeIoSpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Removes reserved I/O or I/O resources from the global coherency domain of the + processor. + + @param BaseAddress Base address of the segment. + @param Length Length of the segment. + + @retval EFI_SUCCESS Successfully removed a segment of IO space. + +**/ +EFI_STATUS +EFIAPI +CoreRemoveIoSpace ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ); + + +/** + Retrieves the descriptor for an I/O region containing a specified address. + + @param BaseAddress Specified start address + @param Descriptor Specified length + + @retval EFI_INVALID_PARAMETER Descriptor is NULL. + @retval EFI_SUCCESS Successfully get the IO space descriptor. + +**/ +EFI_STATUS +EFIAPI +CoreGetIoSpaceDescriptor ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor + ); + + +/** + Returns a map of the I/O resources in the global coherency domain of the processor. + + @param NumberOfDescriptors Number of descriptors. + @param IoSpaceMap Descriptor array + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Successfully get IO space map. + +**/ +EFI_STATUS +EFIAPI +CoreGetIoSpaceMap ( + OUT UINTN *NumberOfDescriptors, + OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap + ); + + +/** + This is the main Dispatcher for DXE and it exits when there are no more + drivers to run. Drain the mScheduledQueue and load and start a PE + image for each driver. Search the mDiscoveredList to see if any driver can + be placed on the mScheduledQueue. If no drivers are placed on the + mScheduledQueue exit the function. On exit it is assumed the Bds() + will be called, and when the Bds() exits the Dispatcher will be called + again. + + @retval EFI_ALREADY_STARTED The DXE Dispatcher is already running + @retval EFI_NOT_FOUND No DXE Drivers were dispatched + @retval EFI_SUCCESS One or more DXE Drivers were dispatched + +**/ +EFI_STATUS +EFIAPI +CoreDispatcher ( + VOID + ); + +/** + Check every driver and locate a matching one. If the driver is found, the Unrequested + state flag is cleared. + + @param FirmwareVolumeHandle The handle of the Firmware Volume that contains + the firmware file specified by DriverName. + @param DriverName The Driver name to put in the Dependent state. + + @retval EFI_SUCCESS The DriverName was found and it's SOR bit was + cleared + @retval EFI_NOT_FOUND The DriverName does not exist or it's SOR bit was + not set. + +**/ +EFI_STATUS +EFIAPI +CoreSchedule ( + IN EFI_HANDLE FirmwareVolumeHandle, + IN EFI_GUID *DriverName + ); + + +/** + Convert a driver from the Untrused back to the Scheduled state. + + @param FirmwareVolumeHandle The handle of the Firmware Volume that contains + the firmware file specified by DriverName. + @param DriverName The Driver name to put in the Scheduled state + + @retval EFI_SUCCESS The file was found in the untrusted state, and it + was promoted to the trusted state. + @retval EFI_NOT_FOUND The file was not found in the untrusted state. + +**/ +EFI_STATUS +EFIAPI +CoreTrust ( + IN EFI_HANDLE FirmwareVolumeHandle, + IN EFI_GUID *DriverName + ); + + +/** + This routine is the driver initialization entry point. It initializes the + libraries, and registers two notification functions. These notification + functions are responsible for building the FV stack dynamically. + + @param ImageHandle The image handle. + @param SystemTable The system table. + + @retval EFI_SUCCESS Function successfully returned. + +**/ +EFI_STATUS +EFIAPI +FwVolDriverInit ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); + + +/** + Entry point of the section extraction code. Initializes an instance of the + section extraction interface and installs it on a new handle. + + @param ImageHandle A handle for the image that is initializing this driver + @param SystemTable A pointer to the EFI system table + + @retval EFI_SUCCESS Driver initialized successfully + @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources + +**/ +EFI_STATUS +EFIAPI +InitializeSectionExtraction ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); + + +/** + This DXE service routine is used to process a firmware volume. In + particular, it can be called by BDS to process a single firmware + volume found in a capsule. + + @param FvHeader pointer to a firmware volume header + @param Size the size of the buffer pointed to by FvHeader + @param FVProtocolHandle the handle on which a firmware volume protocol + was produced for the firmware volume passed in. + + @retval EFI_OUT_OF_RESOURCES if an FVB could not be produced due to lack of + system resources + @retval EFI_VOLUME_CORRUPTED if the volume was corrupted + @retval EFI_SUCCESS a firmware volume protocol was produced for the + firmware volume + +**/ +EFI_STATUS +EFIAPI +CoreProcessFirmwareVolume ( + IN VOID *FvHeader, + IN UINTN Size, + OUT EFI_HANDLE *FVProtocolHandle + ); + +// +//Functions used during debug buils +// + +/** + Displays Architectural protocols that were not loaded and are required for DXE + core to function. Only used in Debug Builds. + +**/ +VOID +CoreDisplayMissingArchProtocols ( + VOID + ); + + +/** + Traverse the discovered list for any drivers that were discovered but not loaded + because the dependency experessions evaluated to false. + +**/ +VOID +CoreDisplayDiscoveredNotDispatched ( + VOID + ); + + + +/** + Place holder function until all the Boot Services and Runtime Services are + available. + + @param Arg1 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg1 ( + UINTN Arg1 + ); + + +/** + Place holder function until all the Boot Services and Runtime Services are available. + + @param Arg1 Undefined + @param Arg2 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg2 ( + UINTN Arg1, + UINTN Arg2 + ); + + +/** + Place holder function until all the Boot Services and Runtime Services are available. + + @param Arg1 Undefined + @param Arg2 Undefined + @param Arg3 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg3 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3 + ); + + +/** + Place holder function until all the Boot Services and Runtime Services are available. + + @param Arg1 Undefined + @param Arg2 Undefined + @param Arg3 Undefined + @param Arg4 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg4 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4 + ); + + +/** + Place holder function until all the Boot Services and Runtime Services are available. + + @param Arg1 Undefined + @param Arg2 Undefined + @param Arg3 Undefined + @param Arg4 Undefined + @param Arg5 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg5 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4, + UINTN Arg5 + ); + + +/** + Given a compressed source buffer, this function retrieves the size of the + uncompressed buffer and the size of the scratch buffer required to decompress + the compressed source buffer. + + The GetInfo() function retrieves the size of the uncompressed buffer and the + temporary scratch buffer required to decompress the buffer specified by Source + and SourceSize. If the size of the uncompressed buffer or the size of the + scratch buffer cannot be determined from the compressed data specified by + Source and SourceData, then EFI_INVALID_PARAMETER is returned. Otherwise, the + size of the uncompressed buffer is returned in DestinationSize, the size of + the scratch buffer is returned in ScratchSize, and EFI_SUCCESS is returned. + The GetInfo() function does not have scratch buffer available to perform a + thorough checking of the validity of the source data. It just retrieves the + "Original Size" field from the beginning bytes of the source data and output + it as DestinationSize. And ScratchSize is specific to the decompression + implementation. + + @param This A pointer to the EFI_DECOMPRESS_PROTOCOL instance. + @param Source The source buffer containing the compressed data. + @param SourceSize The size, in bytes, of the source buffer. + @param DestinationSize A pointer to the size, in bytes, of the + uncompressed buffer that will be generated when the + compressed buffer specified by Source and + SourceSize is decompressed. + @param ScratchSize A pointer to the size, in bytes, of the scratch + buffer that is required to decompress the + compressed buffer specified by Source and + SourceSize. + + @retval EFI_SUCCESS The size of the uncompressed data was returned in + DestinationSize and the size of the scratch buffer + was returned in ScratchSize. + @retval EFI_INVALID_PARAMETER The size of the uncompressed data or the size of + the scratch buffer cannot be determined from the + compressed data specified by Source and + SourceSize. + +**/ +EFI_STATUS +EFIAPI +DxeMainUefiDecompressGetInfo ( + IN EFI_DECOMPRESS_PROTOCOL *This, + IN VOID *Source, + IN UINT32 SourceSize, + OUT UINT32 *DestinationSize, + OUT UINT32 *ScratchSize + ); + + +/** + Decompresses a compressed source buffer. + + The Decompress() function extracts decompressed data to its original form. + This protocol is designed so that the decompression algorithm can be + implemented without using any memory services. As a result, the Decompress() + Function is not allowed to call AllocatePool() or AllocatePages() in its + implementation. It is the caller's responsibility to allocate and free the + Destination and Scratch buffers. + If the compressed source data specified by Source and SourceSize is + sucessfully decompressed into Destination, then EFI_SUCCESS is returned. If + the compressed source data specified by Source and SourceSize is not in a + valid compressed data format, then EFI_INVALID_PARAMETER is returned. + + @param This A pointer to the EFI_DECOMPRESS_PROTOCOL instance. + @param Source The source buffer containing the compressed data. + @param SourceSize SourceSizeThe size of source data. + @param Destination On output, the destination buffer that contains + the uncompressed data. + @param DestinationSize The size of the destination buffer. The size of + the destination buffer needed is obtained from + EFI_DECOMPRESS_PROTOCOL.GetInfo(). + @param Scratch A temporary scratch buffer that is used to perform + the decompression. + @param ScratchSize The size of scratch buffer. The size of the + scratch buffer needed is obtained from GetInfo(). + + @retval EFI_SUCCESS Decompression completed successfully, and the + uncompressed buffer is returned in Destination. + @retval EFI_INVALID_PARAMETER The source buffer specified by Source and + SourceSize is corrupted (not in a valid + compressed format). + +**/ +EFI_STATUS +EFIAPI +DxeMainUefiDecompress ( + IN EFI_DECOMPRESS_PROTOCOL *This, + IN VOID *Source, + IN UINT32 SourceSize, + IN OUT VOID *Destination, + IN UINT32 DestinationSize, + IN OUT VOID *Scratch, + IN UINT32 ScratchSize + ); + +/** + SEP member function. This function creates and returns a new section stream + handle to represent the new section stream. + + @param SectionStreamLength Size in bytes of the section stream. + @param SectionStream Buffer containing the new section stream. + @param SectionStreamHandle A pointer to a caller allocated UINTN that on + output contains the new section stream handle. + + @retval EFI_SUCCESS The section stream is created successfully. + @retval EFI_OUT_OF_RESOURCES memory allocation failed. + @retval EFI_INVALID_PARAMETER Section stream does not end concident with end + of last section. + +**/ +EFI_STATUS +EFIAPI +OpenSectionStream ( + IN UINTN SectionStreamLength, + IN VOID *SectionStream, + OUT UINTN *SectionStreamHandle + ); + + + +/** + SEP member function. Retrieves requested section from section stream. + + @param SectionStreamHandle The section stream from which to extract the + requested section. + @param SectionType A pointer to the type of section to search for. + @param SectionDefinitionGuid If the section type is EFI_SECTION_GUID_DEFINED, + then SectionDefinitionGuid indicates which of + these types of sections to search for. + @param SectionInstance Indicates which instance of the requested + section to return. + @param Buffer Double indirection to buffer. If *Buffer is + non-null on input, then the buffer is caller + allocated. If Buffer is NULL, then the buffer + is callee allocated. In either case, the + required buffer size is returned in *BufferSize. + @param BufferSize On input, indicates the size of *Buffer if + *Buffer is non-null on input. On output, + indicates the required size (allocated size if + callee allocated) of *Buffer. + @param AuthenticationStatus A pointer to a caller-allocated UINT32 that + indicates the authentication status of the + output buffer. If the input section's + GuidedSectionHeader.Attributes field + has the EFI_GUIDED_SECTION_AUTH_STATUS_VALID + bit as clear, AuthenticationStatus must return + zero. Both local bits (19:16) and aggregate + bits (3:0) in AuthenticationStatus are returned + by ExtractSection(). These bits reflect the + status of the extraction operation. The bit + pattern in both regions must be the same, as + the local and aggregate authentication statuses + have equivalent meaning at this level. If the + function returns anything other than + EFI_SUCCESS, the value of *AuthenticationStatus + is undefined. + @param IsFfs3Fv Indicates the FV format. + + @retval EFI_SUCCESS Section was retrieved successfully + @retval EFI_PROTOCOL_ERROR A GUID defined section was encountered in the + section stream with its + EFI_GUIDED_SECTION_PROCESSING_REQUIRED bit set, + but there was no corresponding GUIDed Section + Extraction Protocol in the handle database. + *Buffer is unmodified. + @retval EFI_NOT_FOUND An error was encountered when parsing the + SectionStream. This indicates the SectionStream + is not correctly formatted. + @retval EFI_NOT_FOUND The requested section does not exist. + @retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process + the request. + @retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist. + @retval EFI_WARN_TOO_SMALL The size of the caller allocated input buffer is + insufficient to contain the requested section. + The input buffer is filled and section contents + are truncated. + +**/ +EFI_STATUS +EFIAPI +GetSection ( + IN UINTN SectionStreamHandle, + IN EFI_SECTION_TYPE *SectionType, + IN EFI_GUID *SectionDefinitionGuid, + IN UINTN SectionInstance, + IN VOID **Buffer, + IN OUT UINTN *BufferSize, + OUT UINT32 *AuthenticationStatus, + IN BOOLEAN IsFfs3Fv + ); + + +/** + SEP member function. Deletes an existing section stream + + @param StreamHandleToClose Indicates the stream to close + @param FreeStreamBuffer TRUE - Need to free stream buffer; + FALSE - No need to free stream buffer. + + @retval EFI_SUCCESS The section stream is closed sucessfully. + @retval EFI_OUT_OF_RESOURCES Memory allocation failed. + @retval EFI_INVALID_PARAMETER Section stream does not end concident with end + of last section. + +**/ +EFI_STATUS +EFIAPI +CloseSectionStream ( + IN UINTN StreamHandleToClose, + IN BOOLEAN FreeStreamBuffer + ); + +/** + Creates and initializes the DebugImageInfo Table. Also creates the configuration + table and registers it into the system table. + + Note: + This function allocates memory, frees it, and then allocates memory at an + address within the initial allocation. Since this function is called early + in DXE core initialization (before drivers are dispatched), this should not + be a problem. + +**/ +VOID +CoreInitializeDebugImageInfoTable ( + VOID + ); + + +/** + Update the CRC32 in the Debug Table. + Since the CRC32 service is made available by the Runtime driver, we have to + wait for the Runtime Driver to be installed before the CRC32 can be computed. + This function is called elsewhere by the core when the runtime architectural + protocol is produced. + +**/ +VOID +CoreUpdateDebugTableCrc32 ( + VOID + ); + + +/** + Adds a new DebugImageInfo structure to the DebugImageInfo Table. Re-Allocates + the table if it's not large enough to accomidate another entry. + + @param ImageInfoType type of debug image information + @param LoadedImage pointer to the loaded image protocol for the image being + loaded + @param ImageHandle image handle for the image being loaded + +**/ +VOID +CoreNewDebugImageInfoEntry ( + IN UINT32 ImageInfoType, + IN EFI_LOADED_IMAGE_PROTOCOL *LoadedImage, + IN EFI_HANDLE ImageHandle + ); + + +/** + Removes and frees an entry from the DebugImageInfo Table. + + @param ImageHandle image handle for the image being unloaded + +**/ +VOID +CoreRemoveDebugImageInfoEntry ( + EFI_HANDLE ImageHandle + ); + + +/** + This routine consumes FV hobs and produces instances of FW_VOL_BLOCK_PROTOCOL as appropriate. + + @param ImageHandle The image handle. + @param SystemTable The system table. + + @retval EFI_SUCCESS Successfully initialized firmware volume block + driver. + +**/ +EFI_STATUS +EFIAPI +FwVolBlockDriverInit ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); + +/** + + Get FVB authentication status + + @param FvbProtocol FVB protocol. + + @return Authentication status. + +**/ +UINT32 +GetFvbAuthenticationStatus ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *FvbProtocol + ); + +/** + This routine produces a firmware volume block protocol on a given + buffer. + + @param BaseAddress base address of the firmware volume image + @param Length length of the firmware volume image + @param ParentHandle handle of parent firmware volume, if this image + came from an FV image file and section in another firmware + volume (ala capsules) + @param AuthenticationStatus Authentication status inherited, if this image + came from an FV image file and section in another firmware volume. + @param FvProtocol Firmware volume block protocol produced. + + @retval EFI_VOLUME_CORRUPTED Volume corrupted. + @retval EFI_OUT_OF_RESOURCES No enough buffer to be allocated. + @retval EFI_SUCCESS Successfully produced a FVB protocol on given + buffer. + +**/ +EFI_STATUS +ProduceFVBProtocolOnBuffer ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN EFI_HANDLE ParentHandle, + IN UINT32 AuthenticationStatus, + OUT EFI_HANDLE *FvProtocol OPTIONAL + ); + + +/** + Raising to the task priority level of the mutual exclusion + lock, and then acquires ownership of the lock. + + @param Lock The lock to acquire + + @return Lock owned + +**/ +VOID +CoreAcquireLock ( + IN EFI_LOCK *Lock + ); + + +/** + Initialize a basic mutual exclusion lock. Each lock + provides mutual exclusion access at it's task priority + level. Since there is no-premption (at any TPL) or + multiprocessor support, acquiring the lock only consists + of raising to the locks TPL. + + @param Lock The EFI_LOCK structure to initialize + + @retval EFI_SUCCESS Lock Owned. + @retval EFI_ACCESS_DENIED Reentrant Lock Acquisition, Lock not Owned. + +**/ +EFI_STATUS +CoreAcquireLockOrFail ( + IN EFI_LOCK *Lock + ); + + +/** + Releases ownership of the mutual exclusion lock, and + restores the previous task priority level. + + @param Lock The lock to release + + @return Lock unowned + +**/ +VOID +CoreReleaseLock ( + IN EFI_LOCK *Lock + ); + +/** + Read data from Firmware Block by FVB protocol Read. + The data may cross the multi block ranges. + + @param Fvb The FW_VOL_BLOCK_PROTOCOL instance from which to read data. + @param StartLba Pointer to StartLba. + On input, the start logical block index from which to read. + On output,the end logical block index after reading. + @param Offset Pointer to Offset + On input, offset into the block at which to begin reading. + On output, offset into the end block after reading. + @param DataSize Size of data to be read. + @param Data Pointer to Buffer that the data will be read into. + + @retval EFI_SUCCESS Successfully read data from firmware block. + @retval others +**/ +EFI_STATUS +ReadFvbData ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *Fvb, + IN OUT EFI_LBA *StartLba, + IN OUT UINTN *Offset, + IN UINTN DataSize, + OUT UINT8 *Data + ); + +/** + Given the supplied FW_VOL_BLOCK_PROTOCOL, allocate a buffer for output and + copy the real length volume header into it. + + @param Fvb The FW_VOL_BLOCK_PROTOCOL instance from which to + read the volume header + @param FwVolHeader Pointer to pointer to allocated buffer in which + the volume header is returned. + + @retval EFI_OUT_OF_RESOURCES No enough buffer could be allocated. + @retval EFI_SUCCESS Successfully read volume header to the allocated + buffer. + @retval EFI_INVALID_PARAMETER The FV Header signature is not as expected or + the file system could not be understood. + +**/ +EFI_STATUS +GetFwVolHeader ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *Fvb, + OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader + ); + +/** + Verify checksum of the firmware volume header. + + @param FvHeader Points to the firmware volume header to be checked + + @retval TRUE Checksum verification passed + @retval FALSE Checksum verification failed + +**/ +BOOLEAN +VerifyFvHeaderChecksum ( + IN EFI_FIRMWARE_VOLUME_HEADER *FvHeader + ); + +/** + Initialize memory profile. + + @param HobStart The start address of the HOB. + +**/ +VOID +MemoryProfileInit ( + IN VOID *HobStart + ); + +/** + Install memory profile protocol. + +**/ +VOID +MemoryProfileInstallProtocol ( + VOID + ); + +/** + Register image to memory profile. + + @param DriverEntry Image info. + @param FileType Image file type. + + @return EFI_SUCCESS Register successfully. + @return EFI_UNSUPPORTED Memory profile unsupported, + or memory profile for the image is not required. + @return EFI_OUT_OF_RESOURCES No enough resource for this register. + +**/ +EFI_STATUS +RegisterMemoryProfileImage ( + IN LOADED_IMAGE_PRIVATE_DATA *DriverEntry, + IN EFI_FV_FILETYPE FileType + ); + +/** + Unregister image from memory profile. + + @param DriverEntry Image info. + + @return EFI_SUCCESS Unregister successfully. + @return EFI_UNSUPPORTED Memory profile unsupported, + or memory profile for the image is not required. + @return EFI_NOT_FOUND The image is not found. + +**/ +EFI_STATUS +UnregisterMemoryProfileImage ( + IN LOADED_IMAGE_PRIVATE_DATA *DriverEntry + ); + +/** + Update memory profile information. + + @param CallerAddress Address of caller who call Allocate or Free. + @param Action This Allocate or Free action. + @param MemoryType Memory type. + EfiMaxMemoryType means the MemoryType is unknown. + @param Size Buffer size. + @param Buffer Buffer address. + @param ActionString String for memory profile action. + Only needed for user defined allocate action. + + @return EFI_SUCCESS Memory profile is updated. + @return EFI_UNSUPPORTED Memory profile is unsupported, + or memory profile for the image is not required, + or memory profile for the memory type is not required. + @return EFI_ACCESS_DENIED It is during memory profile data getting. + @return EFI_ABORTED Memory profile recording is not enabled. + @return EFI_OUT_OF_RESOURCES No enough resource to update memory profile for allocate action. + @return EFI_NOT_FOUND No matched allocate info found for free action. + +**/ +EFI_STATUS +EFIAPI +CoreUpdateProfile ( + IN EFI_PHYSICAL_ADDRESS CallerAddress, + IN MEMORY_PROFILE_ACTION Action, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN Size, // Valid for AllocatePages/FreePages/AllocatePool + IN VOID *Buffer, + IN CHAR8 *ActionString OPTIONAL + ); + +/** + Internal function. Converts a memory range to use new attributes. + + @param Start The first address of the range Must be page + aligned + @param NumberOfPages The number of pages to convert + @param NewAttributes The new attributes value for the range. + +**/ +VOID +CoreUpdateMemoryAttributes ( + IN EFI_PHYSICAL_ADDRESS Start, + IN UINT64 NumberOfPages, + IN UINT64 NewAttributes + ); + +/** + Initialize PropertiesTable support. +**/ +VOID +EFIAPI +CoreInitializePropertiesTable ( + VOID + ); + +/** + Initialize MemoryAttrubutesTable support. +**/ +VOID +EFIAPI +CoreInitializeMemoryAttributesTable ( + VOID + ); + +/** + Initialize Memory Protection support. +**/ +VOID +EFIAPI +CoreInitializeMemoryProtection ( + VOID + ); + +/** + Install MemoryAttributesTable on memory allocation. + + @param[in] MemoryType EFI memory type. +**/ +VOID +InstallMemoryAttributesTableOnMemoryAllocation ( + IN EFI_MEMORY_TYPE MemoryType + ); + +/** + Insert image record. + + @param RuntimeImage Runtime image information +**/ +VOID +InsertImageRecord ( + IN EFI_RUNTIME_IMAGE_ENTRY *RuntimeImage + ); + +/** + Remove Image record. + + @param RuntimeImage Runtime image information +**/ +VOID +RemoveImageRecord ( + IN EFI_RUNTIME_IMAGE_ENTRY *RuntimeImage + ); + +/** + Protect UEFI image. + + @param[in] LoadedImage The loaded image protocol + @param[in] LoadedImageDevicePath The loaded image device path protocol +**/ +VOID +ProtectUefiImage ( + IN EFI_LOADED_IMAGE_PROTOCOL *LoadedImage, + IN EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath + ); + +/** + Unprotect UEFI image. + + @param[in] LoadedImage The loaded image protocol + @param[in] LoadedImageDevicePath The loaded image device path protocol +**/ +VOID +UnprotectUefiImage ( + IN EFI_LOADED_IMAGE_PROTOCOL *LoadedImage, + IN EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath + ); + +/** + ExitBootServices Callback function for memory protection. +**/ +VOID +MemoryProtectionExitBootServicesCallback ( + VOID + ); + +/** + Manage memory permission attributes on a memory range, according to the + configured DXE memory protection policy. + + @param OldType The old memory type of the range + @param NewType The new memory type of the range + @param Memory The base address of the range + @param Length The size of the range (in bytes) + + @return EFI_SUCCESS If the the CPU arch protocol is not installed yet + @return EFI_SUCCESS If no DXE memory protection policy has been configured + @return EFI_SUCCESS If OldType and NewType use the same permission attributes + @return other Return value of gCpu->SetMemoryAttributes() + +**/ +EFI_STATUS +EFIAPI +ApplyMemoryProtectionPolicy ( + IN EFI_MEMORY_TYPE OldType, + IN EFI_MEMORY_TYPE NewType, + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINT64 Length + ); + +/** + Merge continous memory map entries whose have same attributes. + + @param MemoryMap A pointer to the buffer in which firmware places + the current memory map. + @param MemoryMapSize A pointer to the size, in bytes, of the + MemoryMap buffer. On input, this is the size of + the current memory map. On output, + it is the size of new memory map after merge. + @param DescriptorSize Size, in bytes, of an individual EFI_MEMORY_DESCRIPTOR. +**/ +VOID +MergeMemoryMap ( + IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, + IN OUT UINTN *MemoryMapSize, + IN UINTN DescriptorSize + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Event.h b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Event.h new file mode 100644 index 0000000..8141c50 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Event.h @@ -0,0 +1,91 @@ +/** @file + UEFI Event support functions and structure. + +Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
    +(C) Copyright 2015 Hewlett Packard Enterprise Development LP
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __EVENT_H__ +#define __EVENT_H__ + + +#define VALID_TPL(a) ((a) <= TPL_HIGH_LEVEL) +extern UINTN gEventPending; + +/// +/// Set if Event is part of an event group +/// +#define EVT_EXFLAG_EVENT_GROUP 0x01 +/// +/// Set if Event is registered on a protocol notify +/// +#define EVT_EXFLAG_EVENT_PROTOCOL_NOTIFICATION 0x02 + +// +// EFI_EVENT +// + +/// +/// Timer event information +/// +typedef struct { + LIST_ENTRY Link; + UINT64 TriggerTime; + UINT64 Period; +} TIMER_EVENT_INFO; + +#define EVENT_SIGNATURE SIGNATURE_32('e','v','n','t') +typedef struct { + UINTN Signature; + UINT32 Type; + UINT32 SignalCount; + /// + /// Entry if the event is registered to be signalled + /// + LIST_ENTRY SignalLink; + /// + /// Notification information for this event + /// + EFI_TPL NotifyTpl; + EFI_EVENT_NOTIFY NotifyFunction; + VOID *NotifyContext; + EFI_GUID EventGroup; + LIST_ENTRY NotifyLink; + UINT8 ExFlag; + /// + /// A list of all runtime events + /// + EFI_RUNTIME_EVENT_ENTRY RuntimeData; + TIMER_EVENT_INFO Timer; +} IEVENT; + +// +// Internal prototypes +// + + +/** + Dispatches all pending events. + + @param Priority The task priority level of event notifications + to dispatch + +**/ +VOID +CoreDispatchEventNotifies ( + IN EFI_TPL Priority + ); + + +/** + Initializes timer support. + +**/ +VOID +CoreInitializeTimer ( + VOID + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Handle.c b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Handle.c new file mode 100644 index 0000000..b2721b3 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Handle.c @@ -0,0 +1,1568 @@ +/** @file + UEFI handle & protocol handling. + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "DxeMain.h" +#include "Handle.h" + + +// +// mProtocolDatabase - A list of all protocols in the system. (simple list for now) +// gHandleList - A list of all the handles in the system +// gProtocolDatabaseLock - Lock to protect the mProtocolDatabase +// gHandleDatabaseKey - The Key to show that the handle has been created/modified +// +LIST_ENTRY mProtocolDatabase = INITIALIZE_LIST_HEAD_VARIABLE (mProtocolDatabase); +LIST_ENTRY gHandleList = INITIALIZE_LIST_HEAD_VARIABLE (gHandleList); +EFI_LOCK gProtocolDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY); +UINT64 gHandleDatabaseKey = 0; + + + +/** + Acquire lock on gProtocolDatabaseLock. + +**/ +VOID +CoreAcquireProtocolLock ( + VOID + ) +{ + CoreAcquireLock (&gProtocolDatabaseLock); +} + + + +/** + Release lock on gProtocolDatabaseLock. + +**/ +VOID +CoreReleaseProtocolLock ( + VOID + ) +{ + CoreReleaseLock (&gProtocolDatabaseLock); +} + + + +/** + Check whether a handle is a valid EFI_HANDLE + + @param UserHandle The handle to check + + @retval EFI_INVALID_PARAMETER The handle is NULL or not a valid EFI_HANDLE. + @retval EFI_SUCCESS The handle is valid EFI_HANDLE. + +**/ +EFI_STATUS +CoreValidateHandle ( + IN EFI_HANDLE UserHandle + ) +{ + IHANDLE *Handle; + LIST_ENTRY *Link; + + if (UserHandle == NULL) { + return EFI_INVALID_PARAMETER; + } + + for (Link = gHandleList.BackLink; Link != &gHandleList; Link = Link->BackLink) { + Handle = CR (Link, IHANDLE, AllHandles, EFI_HANDLE_SIGNATURE); + if (Handle == (IHANDLE *) UserHandle) { + return EFI_SUCCESS; + } + } + + return EFI_INVALID_PARAMETER; +} + + + +/** + Finds the protocol entry for the requested protocol. + The gProtocolDatabaseLock must be owned + + @param Protocol The ID of the protocol + @param Create Create a new entry if not found + + @return Protocol entry + +**/ +PROTOCOL_ENTRY * +CoreFindProtocolEntry ( + IN EFI_GUID *Protocol, + IN BOOLEAN Create + ) +{ + LIST_ENTRY *Link; + PROTOCOL_ENTRY *Item; + PROTOCOL_ENTRY *ProtEntry; + + ASSERT_LOCKED(&gProtocolDatabaseLock); + + // + // Search the database for the matching GUID + // + + ProtEntry = NULL; + for (Link = mProtocolDatabase.ForwardLink; + Link != &mProtocolDatabase; + Link = Link->ForwardLink) { + + Item = CR(Link, PROTOCOL_ENTRY, AllEntries, PROTOCOL_ENTRY_SIGNATURE); + if (CompareGuid (&Item->ProtocolID, Protocol)) { + + // + // This is the protocol entry + // + + ProtEntry = Item; + break; + } + } + + // + // If the protocol entry was not found and Create is TRUE, then + // allocate a new entry + // + if ((ProtEntry == NULL) && Create) { + ProtEntry = AllocatePool (sizeof(PROTOCOL_ENTRY)); + + if (ProtEntry != NULL) { + // + // Initialize new protocol entry structure + // + ProtEntry->Signature = PROTOCOL_ENTRY_SIGNATURE; + CopyGuid ((VOID *)&ProtEntry->ProtocolID, Protocol); + InitializeListHead (&ProtEntry->Protocols); + InitializeListHead (&ProtEntry->Notify); + + // + // Add it to protocol database + // + InsertTailList (&mProtocolDatabase, &ProtEntry->AllEntries); + } + } + + return ProtEntry; +} + + + +/** + Finds the protocol instance for the requested handle and protocol. + Note: This function doesn't do parameters checking, it's caller's responsibility + to pass in valid parameters. + + @param Handle The handle to search the protocol on + @param Protocol GUID of the protocol + @param Interface The interface for the protocol being searched + + @return Protocol instance (NULL: Not found) + +**/ +PROTOCOL_INTERFACE * +CoreFindProtocolInterface ( + IN IHANDLE *Handle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ) +{ + PROTOCOL_INTERFACE *Prot; + PROTOCOL_ENTRY *ProtEntry; + LIST_ENTRY *Link; + + ASSERT_LOCKED(&gProtocolDatabaseLock); + Prot = NULL; + + // + // Lookup the protocol entry for this protocol ID + // + + ProtEntry = CoreFindProtocolEntry (Protocol, FALSE); + if (ProtEntry != NULL) { + + // + // Look at each protocol interface for any matches + // + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link=Link->ForwardLink) { + + // + // If this protocol interface matches, remove it + // + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + if (Prot->Interface == Interface && Prot->Protocol == ProtEntry) { + break; + } + + Prot = NULL; + } + } + + return Prot; +} + + +/** + Removes an event from a register protocol notify list on a protocol. + + @param Event The event to search for in the protocol + database. + + @return EFI_SUCCESS if the event was found and removed. + @return EFI_NOT_FOUND if the event was not found in the protocl database. + +**/ +EFI_STATUS +CoreUnregisterProtocolNotifyEvent ( + IN EFI_EVENT Event + ) +{ + LIST_ENTRY *Link; + PROTOCOL_ENTRY *ProtEntry; + LIST_ENTRY *NotifyLink; + PROTOCOL_NOTIFY *ProtNotify; + + CoreAcquireProtocolLock (); + + for ( Link = mProtocolDatabase.ForwardLink; + Link != &mProtocolDatabase; + Link = Link->ForwardLink) { + + ProtEntry = CR(Link, PROTOCOL_ENTRY, AllEntries, PROTOCOL_ENTRY_SIGNATURE); + + for ( NotifyLink = ProtEntry->Notify.ForwardLink; + NotifyLink != &ProtEntry->Notify; + NotifyLink = NotifyLink->ForwardLink) { + + ProtNotify = CR(NotifyLink, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE); + + if (ProtNotify->Event == Event) { + RemoveEntryList(&ProtNotify->Link); + CoreFreePool(ProtNotify); + CoreReleaseProtocolLock (); + return EFI_SUCCESS; + } + } + } + + CoreReleaseProtocolLock (); + return EFI_NOT_FOUND; +} + + + +/** + Removes all the events in the protocol database that match Event. + + @param Event The event to search for in the protocol + database. + + @return EFI_SUCCESS when done searching the entire database. + +**/ +EFI_STATUS +CoreUnregisterProtocolNotify ( + IN EFI_EVENT Event + ) +{ + EFI_STATUS Status; + + do { + Status = CoreUnregisterProtocolNotifyEvent (Event); + } while (!EFI_ERROR (Status)); + + return EFI_SUCCESS; +} + + + + +/** + Wrapper function to CoreInstallProtocolInterfaceNotify. This is the public API which + Calls the private one which contains a BOOLEAN parameter for notifications + + @param UserHandle The handle to install the protocol handler on, + or NULL if a new handle is to be allocated + @param Protocol The protocol to add to the handle + @param InterfaceType Indicates whether Interface is supplied in + native form. + @param Interface The interface for the protocol being added + + @return Status code + +**/ +EFI_STATUS +EFIAPI +CoreInstallProtocolInterface ( + IN OUT EFI_HANDLE *UserHandle, + IN EFI_GUID *Protocol, + IN EFI_INTERFACE_TYPE InterfaceType, + IN VOID *Interface + ) +{ + return CoreInstallProtocolInterfaceNotify ( + UserHandle, + Protocol, + InterfaceType, + Interface, + TRUE + ); +} + + +/** + Installs a protocol interface into the boot services environment. + + @param UserHandle The handle to install the protocol handler on, + or NULL if a new handle is to be allocated + @param Protocol The protocol to add to the handle + @param InterfaceType Indicates whether Interface is supplied in + native form. + @param Interface The interface for the protocol being added + @param Notify indicates whether notify the notification list + for this protocol + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate + @retval EFI_SUCCESS Protocol interface successfully installed + +**/ +EFI_STATUS +CoreInstallProtocolInterfaceNotify ( + IN OUT EFI_HANDLE *UserHandle, + IN EFI_GUID *Protocol, + IN EFI_INTERFACE_TYPE InterfaceType, + IN VOID *Interface, + IN BOOLEAN Notify + ) +{ + PROTOCOL_INTERFACE *Prot; + PROTOCOL_ENTRY *ProtEntry; + IHANDLE *Handle; + EFI_STATUS Status; + VOID *ExistingInterface; + + // + // returns EFI_INVALID_PARAMETER if InterfaceType is invalid. + // Also added check for invalid UserHandle and Protocol pointers. + // + if (UserHandle == NULL || Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (InterfaceType != EFI_NATIVE_INTERFACE) { + return EFI_INVALID_PARAMETER; + } + + // + // Print debug message + // + DEBUG((DEBUG_INFO, "InstallProtocolInterface: %g %p\n", Protocol, Interface)); + + Status = EFI_OUT_OF_RESOURCES; + Prot = NULL; + Handle = NULL; + + if (*UserHandle != NULL) { + Status = CoreHandleProtocol (*UserHandle, Protocol, (VOID **)&ExistingInterface); + if (!EFI_ERROR (Status)) { + return EFI_INVALID_PARAMETER; + } + } + + // + // Lock the protocol database + // + CoreAcquireProtocolLock (); + + // + // Lookup the Protocol Entry for the requested protocol + // + ProtEntry = CoreFindProtocolEntry (Protocol, TRUE); + if (ProtEntry == NULL) { + goto Done; + } + + // + // Allocate a new protocol interface structure + // + Prot = AllocateZeroPool (sizeof(PROTOCOL_INTERFACE)); + if (Prot == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + // + // If caller didn't supply a handle, allocate a new one + // + Handle = (IHANDLE *)*UserHandle; + if (Handle == NULL) { + Handle = AllocateZeroPool (sizeof(IHANDLE)); + if (Handle == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + // + // Initialize new handler structure + // + Handle->Signature = EFI_HANDLE_SIGNATURE; + InitializeListHead (&Handle->Protocols); + + // + // Initialize the Key to show that the handle has been created/modified + // + gHandleDatabaseKey++; + Handle->Key = gHandleDatabaseKey; + + // + // Add this handle to the list global list of all handles + // in the system + // + InsertTailList (&gHandleList, &Handle->AllHandles); + } else { + Status = CoreValidateHandle (Handle); + if (EFI_ERROR (Status)) { + DEBUG((DEBUG_ERROR, "InstallProtocolInterface: input handle at 0x%x is invalid\n", Handle)); + goto Done; + } + } + + // + // Each interface that is added must be unique + // + ASSERT (CoreFindProtocolInterface (Handle, Protocol, Interface) == NULL); + + // + // Initialize the protocol interface structure + // + Prot->Signature = PROTOCOL_INTERFACE_SIGNATURE; + Prot->Handle = Handle; + Prot->Protocol = ProtEntry; + Prot->Interface = Interface; + + // + // Initalize OpenProtocol Data base + // + InitializeListHead (&Prot->OpenList); + Prot->OpenListCount = 0; + + // + // Add this protocol interface to the head of the supported + // protocol list for this handle + // + InsertHeadList (&Handle->Protocols, &Prot->Link); + + // + // Add this protocol interface to the tail of the + // protocol entry + // + InsertTailList (&ProtEntry->Protocols, &Prot->ByProtocol); + + // + // Notify the notification list for this protocol + // + if (Notify) { + CoreNotifyProtocolEntry (ProtEntry); + } + Status = EFI_SUCCESS; + +Done: + // + // Done, unlock the database and return + // + CoreReleaseProtocolLock (); + if (!EFI_ERROR (Status)) { + // + // Return the new handle back to the caller + // + *UserHandle = Handle; + } else { + // + // There was an error, clean up + // + if (Prot != NULL) { + CoreFreePool (Prot); + } + DEBUG((DEBUG_ERROR, "InstallProtocolInterface: %g %p failed with %r\n", Protocol, Interface, Status)); + } + + return Status; +} + + + + +/** + Installs a list of protocol interface into the boot services environment. + This function calls InstallProtocolInterface() in a loop. If any error + occures all the protocols added by this function are removed. This is + basically a lib function to save space. + + @param Handle The pointer to a handle to install the new + protocol interfaces on, or a pointer to NULL + if a new handle is to be allocated. + @param ... EFI_GUID followed by protocol instance. A NULL + terminates the list. The pairs are the + arguments to InstallProtocolInterface(). All the + protocols are added to Handle. + + @retval EFI_SUCCESS All the protocol interface was installed. + @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols. + @retval EFI_ALREADY_STARTED A Device Path Protocol instance was passed in that is already present in + the handle database. + @retval EFI_INVALID_PARAMETER Handle is NULL. + @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle. + +**/ +EFI_STATUS +EFIAPI +CoreInstallMultipleProtocolInterfaces ( + IN OUT EFI_HANDLE *Handle, + ... + ) +{ + VA_LIST Args; + EFI_STATUS Status; + EFI_GUID *Protocol; + VOID *Interface; + EFI_TPL OldTpl; + UINTN Index; + EFI_HANDLE OldHandle; + EFI_HANDLE DeviceHandle; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + + if (Handle == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // Syncronize with notifcations. + // + OldTpl = CoreRaiseTpl (TPL_NOTIFY); + OldHandle = *Handle; + + // + // Check for duplicate device path and install the protocol interfaces + // + VA_START (Args, Handle); + for (Index = 0, Status = EFI_SUCCESS; !EFI_ERROR (Status); Index++) { + // + // If protocol is NULL, then it's the end of the list + // + Protocol = VA_ARG (Args, EFI_GUID *); + if (Protocol == NULL) { + break; + } + + Interface = VA_ARG (Args, VOID *); + + // + // Make sure you are installing on top a device path that has already been added. + // + if (CompareGuid (Protocol, &gEfiDevicePathProtocolGuid)) { + DeviceHandle = NULL; + DevicePath = Interface; + Status = CoreLocateDevicePath (&gEfiDevicePathProtocolGuid, &DevicePath, &DeviceHandle); + if (!EFI_ERROR (Status) && (DeviceHandle != NULL) && IsDevicePathEnd(DevicePath)) { + Status = EFI_ALREADY_STARTED; + continue; + } + } + + // + // Install it + // + Status = CoreInstallProtocolInterface (Handle, Protocol, EFI_NATIVE_INTERFACE, Interface); + } + VA_END (Args); + + // + // If there was an error, remove all the interfaces that were installed without any errors + // + if (EFI_ERROR (Status)) { + // + // Reset the va_arg back to the first argument. + // + VA_START (Args, Handle); + for (; Index > 1; Index--) { + Protocol = VA_ARG (Args, EFI_GUID *); + Interface = VA_ARG (Args, VOID *); + CoreUninstallProtocolInterface (*Handle, Protocol, Interface); + } + VA_END (Args); + + *Handle = OldHandle; + } + + // + // Done + // + CoreRestoreTpl (OldTpl); + return Status; +} + + +/** + Attempts to disconnect all drivers that are using the protocol interface being queried. + If failed, reconnect all drivers disconnected. + Note: This function doesn't do parameters checking, it's caller's responsibility + to pass in valid parameters. + + @param UserHandle The handle on which the protocol is installed + @param Prot The protocol to disconnect drivers from + + @retval EFI_SUCCESS Drivers using the protocol interface are all + disconnected + @retval EFI_ACCESS_DENIED Failed to disconnect one or all of the drivers + +**/ +EFI_STATUS +CoreDisconnectControllersUsingProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN PROTOCOL_INTERFACE *Prot + ) +{ + EFI_STATUS Status; + BOOLEAN ItemFound; + LIST_ENTRY *Link; + OPEN_PROTOCOL_DATA *OpenData; + + Status = EFI_SUCCESS; + + // + // Attempt to disconnect all drivers from this protocol interface + // + do { + ItemFound = FALSE; + for (Link = Prot->OpenList.ForwardLink; Link != &Prot->OpenList; Link = Link->ForwardLink) { + OpenData = CR (Link, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) { + CoreReleaseProtocolLock (); + Status = CoreDisconnectController (UserHandle, OpenData->AgentHandle, NULL); + CoreAcquireProtocolLock (); + if (!EFI_ERROR (Status)) { + ItemFound = TRUE; + } + break; + } + } + } while (ItemFound); + + if (!EFI_ERROR (Status)) { + // + // Attempt to remove BY_HANDLE_PROTOOCL and GET_PROTOCOL and TEST_PROTOCOL Open List items + // + for (Link = Prot->OpenList.ForwardLink; Link != &Prot->OpenList;) { + OpenData = CR (Link, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if ((OpenData->Attributes & + (EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL | EFI_OPEN_PROTOCOL_GET_PROTOCOL | EFI_OPEN_PROTOCOL_TEST_PROTOCOL)) != 0) { + Link = RemoveEntryList (&OpenData->Link); + Prot->OpenListCount--; + CoreFreePool (OpenData); + } else { + Link = Link->ForwardLink; + } + } + } + + // + // If there are errors or still has open items in the list, then reconnect all the drivers and return an error + // + if (EFI_ERROR (Status) || (Prot->OpenListCount > 0)) { + CoreReleaseProtocolLock (); + CoreConnectController (UserHandle, NULL, NULL, TRUE); + CoreAcquireProtocolLock (); + Status = EFI_ACCESS_DENIED; + } + + return Status; +} + + + +/** + Uninstalls all instances of a protocol:interfacer from a handle. + If the last protocol interface is remove from the handle, the + handle is freed. + + @param UserHandle The handle to remove the protocol handler from + @param Protocol The protocol, of protocol:interface, to remove + @param Interface The interface, of protocol:interface, to remove + + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_SUCCESS Protocol interface successfully uninstalled. + +**/ +EFI_STATUS +EFIAPI +CoreUninstallProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ) +{ + EFI_STATUS Status; + IHANDLE *Handle; + PROTOCOL_INTERFACE *Prot; + + // + // Check that Protocol is valid + // + if (Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // Check that UserHandle is a valid handle + // + Status = CoreValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Lock the protocol database + // + CoreAcquireProtocolLock (); + + // + // Check that Protocol exists on UserHandle, and Interface matches the interface in the database + // + Prot = CoreFindProtocolInterface (UserHandle, Protocol, Interface); + if (Prot == NULL) { + Status = EFI_NOT_FOUND; + goto Done; + } + + // + // Attempt to disconnect all drivers that are using the protocol interface that is about to be removed + // + Status = CoreDisconnectControllersUsingProtocolInterface ( + UserHandle, + Prot + ); + if (EFI_ERROR (Status)) { + // + // One or more drivers refused to release, so return the error + // + goto Done; + } + + // + // Remove the protocol interface from the protocol + // + Status = EFI_NOT_FOUND; + Handle = (IHANDLE *)UserHandle; + Prot = CoreRemoveInterfaceFromProtocol (Handle, Protocol, Interface); + + if (Prot != NULL) { + // + // Update the Key to show that the handle has been created/modified + // + gHandleDatabaseKey++; + Handle->Key = gHandleDatabaseKey; + + // + // Remove the protocol interface from the handle + // + RemoveEntryList (&Prot->Link); + + // + // Free the memory + // + Prot->Signature = 0; + CoreFreePool (Prot); + Status = EFI_SUCCESS; + } + + // + // If there are no more handlers for the handle, free the handle + // + if (IsListEmpty (&Handle->Protocols)) { + Handle->Signature = 0; + RemoveEntryList (&Handle->AllHandles); + CoreFreePool (Handle); + } + +Done: + // + // Done, unlock the database and return + // + CoreReleaseProtocolLock (); + return Status; +} + + + + +/** + Uninstalls a list of protocol interface in the boot services environment. + This function calls UnisatllProtocolInterface() in a loop. This is + basically a lib function to save space. + + @param Handle The handle to uninstall the protocol + @param ... EFI_GUID followed by protocol instance. A NULL + terminates the list. The pairs are the + arguments to UninstallProtocolInterface(). All + the protocols are added to Handle. + + @return Status code + +**/ +EFI_STATUS +EFIAPI +CoreUninstallMultipleProtocolInterfaces ( + IN EFI_HANDLE Handle, + ... + ) +{ + EFI_STATUS Status; + VA_LIST Args; + EFI_GUID *Protocol; + VOID *Interface; + UINTN Index; + + VA_START (Args, Handle); + for (Index = 0, Status = EFI_SUCCESS; !EFI_ERROR (Status); Index++) { + // + // If protocol is NULL, then it's the end of the list + // + Protocol = VA_ARG (Args, EFI_GUID *); + if (Protocol == NULL) { + break; + } + + Interface = VA_ARG (Args, VOID *); + + // + // Uninstall it + // + Status = CoreUninstallProtocolInterface (Handle, Protocol, Interface); + } + VA_END (Args); + + // + // If there was an error, add all the interfaces that were + // uninstalled without any errors + // + if (EFI_ERROR (Status)) { + // + // Reset the va_arg back to the first argument. + // + VA_START (Args, Handle); + for (; Index > 1; Index--) { + Protocol = VA_ARG(Args, EFI_GUID *); + Interface = VA_ARG(Args, VOID *); + CoreInstallProtocolInterface (&Handle, Protocol, EFI_NATIVE_INTERFACE, Interface); + } + VA_END (Args); + } + + return Status; +} + + +/** + Locate a certain GUID protocol interface in a Handle's protocols. + + @param UserHandle The handle to obtain the protocol interface on + @param Protocol The GUID of the protocol + + @return The requested protocol interface for the handle + +**/ +PROTOCOL_INTERFACE * +CoreGetProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol + ) +{ + EFI_STATUS Status; + PROTOCOL_ENTRY *ProtEntry; + PROTOCOL_INTERFACE *Prot; + IHANDLE *Handle; + LIST_ENTRY *Link; + + Status = CoreValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return NULL; + } + + Handle = (IHANDLE *)UserHandle; + + // + // Look at each protocol interface for a match + // + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + ProtEntry = Prot->Protocol; + if (CompareGuid (&ProtEntry->ProtocolID, Protocol)) { + return Prot; + } + } + return NULL; +} + + + +/** + Queries a handle to determine if it supports a specified protocol. + + @param UserHandle The handle being queried. + @param Protocol The published unique identifier of the protocol. + @param Interface Supplies the address where a pointer to the + corresponding Protocol Interface is returned. + + @retval EFI_SUCCESS The interface information for the specified protocol was returned. + @retval EFI_UNSUPPORTED The device does not support the specified protocol. + @retval EFI_INVALID_PARAMETER Handle is NULL.. + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_INVALID_PARAMETER Interface is NULL. + +**/ +EFI_STATUS +EFIAPI +CoreHandleProtocol ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + OUT VOID **Interface + ) +{ + return CoreOpenProtocol ( + UserHandle, + Protocol, + Interface, + gDxeCoreImageHandle, + NULL, + EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL + ); +} + + + +/** + Locates the installed protocol handler for the handle, and + invokes it to obtain the protocol interface. Usage information + is registered in the protocol data base. + + @param UserHandle The handle to obtain the protocol interface on + @param Protocol The ID of the protocol + @param Interface The location to return the protocol interface + @param ImageHandle The handle of the Image that is opening the + protocol interface specified by Protocol and + Interface. + @param ControllerHandle The controller handle that is requiring this + interface. + @param Attributes The open mode of the protocol interface + specified by Handle and Protocol. + + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_SUCCESS Get the protocol interface. + +**/ +EFI_STATUS +EFIAPI +CoreOpenProtocol ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + OUT VOID **Interface OPTIONAL, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle, + IN UINT32 Attributes + ) +{ + EFI_STATUS Status; + PROTOCOL_INTERFACE *Prot; + LIST_ENTRY *Link; + OPEN_PROTOCOL_DATA *OpenData; + BOOLEAN ByDriver; + BOOLEAN Exclusive; + BOOLEAN Disconnect; + BOOLEAN ExactMatch; + + // + // Check for invalid Protocol + // + if (Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // Check for invalid Interface + // + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { + return EFI_INVALID_PARAMETER; + } + + // + // Check for invalid UserHandle + // + Status = CoreValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Check for invalid Attributes + // + switch (Attributes) { + case EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER : + Status = CoreValidateHandle (ImageHandle); + if (EFI_ERROR (Status)) { + return Status; + } + Status = CoreValidateHandle (ControllerHandle); + if (EFI_ERROR (Status)) { + return Status; + } + if (UserHandle == ControllerHandle) { + return EFI_INVALID_PARAMETER; + } + break; + case EFI_OPEN_PROTOCOL_BY_DRIVER : + case EFI_OPEN_PROTOCOL_BY_DRIVER | EFI_OPEN_PROTOCOL_EXCLUSIVE : + Status = CoreValidateHandle (ImageHandle); + if (EFI_ERROR (Status)) { + return Status; + } + Status = CoreValidateHandle (ControllerHandle); + if (EFI_ERROR (Status)) { + return Status; + } + break; + case EFI_OPEN_PROTOCOL_EXCLUSIVE : + Status = CoreValidateHandle (ImageHandle); + if (EFI_ERROR (Status)) { + return Status; + } + break; + case EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL : + case EFI_OPEN_PROTOCOL_GET_PROTOCOL : + case EFI_OPEN_PROTOCOL_TEST_PROTOCOL : + break; + default: + return EFI_INVALID_PARAMETER; + } + + // + // Lock the protocol database + // + CoreAcquireProtocolLock (); + + // + // Look at each protocol interface for a match + // + Prot = CoreGetProtocolInterface (UserHandle, Protocol); + if (Prot == NULL) { + Status = EFI_UNSUPPORTED; + goto Done; + } + + Status = EFI_SUCCESS; + + ByDriver = FALSE; + Exclusive = FALSE; + for ( Link = Prot->OpenList.ForwardLink; Link != &Prot->OpenList; Link = Link->ForwardLink) { + OpenData = CR (Link, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + ExactMatch = (BOOLEAN)((OpenData->AgentHandle == ImageHandle) && + (OpenData->Attributes == Attributes) && + (OpenData->ControllerHandle == ControllerHandle)); + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) { + ByDriver = TRUE; + if (ExactMatch) { + Status = EFI_ALREADY_STARTED; + goto Done; + } + } + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_EXCLUSIVE) != 0) { + Exclusive = TRUE; + } else if (ExactMatch) { + OpenData->OpenCount++; + Status = EFI_SUCCESS; + goto Done; + } + } + + // + // ByDriver TRUE -> A driver is managing (UserHandle, Protocol) + // ByDriver FALSE -> There are no drivers managing (UserHandle, Protocol) + // Exclusive TRUE -> Something has exclusive access to (UserHandle, Protocol) + // Exclusive FALSE -> Nothing has exclusive access to (UserHandle, Protocol) + // + + switch (Attributes) { + case EFI_OPEN_PROTOCOL_BY_DRIVER : + if (Exclusive || ByDriver) { + Status = EFI_ACCESS_DENIED; + goto Done; + } + break; + case EFI_OPEN_PROTOCOL_BY_DRIVER | EFI_OPEN_PROTOCOL_EXCLUSIVE : + case EFI_OPEN_PROTOCOL_EXCLUSIVE : + if (Exclusive) { + Status = EFI_ACCESS_DENIED; + goto Done; + } + if (ByDriver) { + do { + Disconnect = FALSE; + for (Link = Prot->OpenList.ForwardLink; Link != &Prot->OpenList; Link = Link->ForwardLink) { + OpenData = CR (Link, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) { + Disconnect = TRUE; + CoreReleaseProtocolLock (); + Status = CoreDisconnectController (UserHandle, OpenData->AgentHandle, NULL); + CoreAcquireProtocolLock (); + if (EFI_ERROR (Status)) { + Status = EFI_ACCESS_DENIED; + goto Done; + } else { + break; + } + } + } + } while (Disconnect); + } + break; + case EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER : + case EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL : + case EFI_OPEN_PROTOCOL_GET_PROTOCOL : + case EFI_OPEN_PROTOCOL_TEST_PROTOCOL : + break; + } + + if (ImageHandle == NULL) { + Status = EFI_SUCCESS; + goto Done; + } + // + // Create new entry + // + OpenData = AllocatePool (sizeof(OPEN_PROTOCOL_DATA)); + if (OpenData == NULL) { + Status = EFI_OUT_OF_RESOURCES; + } else { + OpenData->Signature = OPEN_PROTOCOL_DATA_SIGNATURE; + OpenData->AgentHandle = ImageHandle; + OpenData->ControllerHandle = ControllerHandle; + OpenData->Attributes = Attributes; + OpenData->OpenCount = 1; + InsertTailList (&Prot->OpenList, &OpenData->Link); + Prot->OpenListCount++; + Status = EFI_SUCCESS; + } + +Done: + + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { + // + // Keep Interface unmodified in case of any Error + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. + // + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { + // + // According to above logic, if 'Prot' is NULL, then the 'Status' must be + // EFI_UNSUPPORTED. Here the 'Status' is not EFI_UNSUPPORTED, so 'Prot' + // must be not NULL. + // + // The ASSERT here is for addressing a false positive NULL pointer + // dereference issue raised from static analysis. + // + ASSERT (Prot != NULL); + // + // EFI_ALREADY_STARTED is not an error for bus driver. + // Return the corresponding protocol interface. + // + *Interface = Prot->Interface; + } else if (Status == EFI_UNSUPPORTED) { + // + // Return NULL Interface if Unsupported Protocol. + // + *Interface = NULL; + } + } + + // + // Done. Release the database lock and return + // + CoreReleaseProtocolLock (); + return Status; +} + + + +/** + Closes a protocol on a handle that was opened using OpenProtocol(). + + @param UserHandle The handle for the protocol interface that was + previously opened with OpenProtocol(), and is + now being closed. + @param Protocol The published unique identifier of the protocol. + It is the caller's responsibility to pass in a + valid GUID. + @param AgentHandle The handle of the agent that is closing the + protocol interface. + @param ControllerHandle If the agent that opened a protocol is a driver + that follows the EFI Driver Model, then this + parameter is the controller handle that required + the protocol interface. If the agent does not + follow the EFI Driver Model, then this parameter + is optional and may be NULL. + + @retval EFI_SUCCESS The protocol instance was closed. + @retval EFI_INVALID_PARAMETER Handle, AgentHandle or ControllerHandle is not a + valid EFI_HANDLE. + @retval EFI_NOT_FOUND Can not find the specified protocol or + AgentHandle. + +**/ +EFI_STATUS +EFIAPI +CoreCloseProtocol ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + IN EFI_HANDLE AgentHandle, + IN EFI_HANDLE ControllerHandle + ) +{ + EFI_STATUS Status; + PROTOCOL_INTERFACE *ProtocolInterface; + LIST_ENTRY *Link; + OPEN_PROTOCOL_DATA *OpenData; + + // + // Check for invalid parameters + // + Status = CoreValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return Status; + } + Status = CoreValidateHandle (AgentHandle); + if (EFI_ERROR (Status)) { + return Status; + } + if (ControllerHandle != NULL) { + Status = CoreValidateHandle (ControllerHandle); + if (EFI_ERROR (Status)) { + return Status; + } + } + if (Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // Lock the protocol database + // + CoreAcquireProtocolLock (); + + // + // Look at each protocol interface for a match + // + Status = EFI_NOT_FOUND; + ProtocolInterface = CoreGetProtocolInterface (UserHandle, Protocol); + if (ProtocolInterface == NULL) { + goto Done; + } + + // + // Walk the Open data base looking for AgentHandle + // + Link = ProtocolInterface->OpenList.ForwardLink; + while (Link != &ProtocolInterface->OpenList) { + OpenData = CR (Link, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + Link = Link->ForwardLink; + if ((OpenData->AgentHandle == AgentHandle) && (OpenData->ControllerHandle == ControllerHandle)) { + RemoveEntryList (&OpenData->Link); + ProtocolInterface->OpenListCount--; + CoreFreePool (OpenData); + Status = EFI_SUCCESS; + } + } + +Done: + // + // Done. Release the database lock and return. + // + CoreReleaseProtocolLock (); + return Status; +} + + + + +/** + Return information about Opened protocols in the system + + @param UserHandle The handle to close the protocol interface on + @param Protocol The ID of the protocol + @param EntryBuffer A pointer to a buffer of open protocol information in the + form of EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures. + @param EntryCount Number of EntryBuffer entries + + @retval EFI_SUCCESS The open protocol information was returned in EntryBuffer, + and the number of entries was returned EntryCount. + @retval EFI_NOT_FOUND Handle does not support the protocol specified by Protocol. + @retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate EntryBuffer. + +**/ +EFI_STATUS +EFIAPI +CoreOpenProtocolInformation ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, + OUT UINTN *EntryCount + ) +{ + EFI_STATUS Status; + PROTOCOL_INTERFACE *ProtocolInterface; + LIST_ENTRY *Link; + OPEN_PROTOCOL_DATA *OpenData; + EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *Buffer; + UINTN Count; + UINTN Size; + + *EntryBuffer = NULL; + *EntryCount = 0; + + // + // Lock the protocol database + // + CoreAcquireProtocolLock (); + + // + // Look at each protocol interface for a match + // + Status = EFI_NOT_FOUND; + ProtocolInterface = CoreGetProtocolInterface (UserHandle, Protocol); + if (ProtocolInterface == NULL) { + goto Done; + } + + // + // Count the number of Open Entries + // + for ( Link = ProtocolInterface->OpenList.ForwardLink, Count = 0; + (Link != &ProtocolInterface->OpenList) ; + Link = Link->ForwardLink ) { + Count++; + } + + ASSERT (Count == ProtocolInterface->OpenListCount); + + if (Count == 0) { + Size = sizeof(EFI_OPEN_PROTOCOL_INFORMATION_ENTRY); + } else { + Size = Count * sizeof(EFI_OPEN_PROTOCOL_INFORMATION_ENTRY); + } + + Buffer = AllocatePool (Size); + if (Buffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + Status = EFI_SUCCESS; + for ( Link = ProtocolInterface->OpenList.ForwardLink, Count = 0; + (Link != &ProtocolInterface->OpenList); + Link = Link->ForwardLink, Count++ ) { + OpenData = CR (Link, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE); + + Buffer[Count].AgentHandle = OpenData->AgentHandle; + Buffer[Count].ControllerHandle = OpenData->ControllerHandle; + Buffer[Count].Attributes = OpenData->Attributes; + Buffer[Count].OpenCount = OpenData->OpenCount; + } + + *EntryBuffer = Buffer; + *EntryCount = Count; + +Done: + // + // Done. Release the database lock. + // + CoreReleaseProtocolLock (); + return Status; +} + + + + +/** + Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated + from pool. + + @param UserHandle The handle from which to retrieve the list of + protocol interface GUIDs. + @param ProtocolBuffer A pointer to the list of protocol interface GUID + pointers that are installed on Handle. + @param ProtocolBufferCount A pointer to the number of GUID pointers present + in ProtocolBuffer. + + @retval EFI_SUCCESS The list of protocol interface GUIDs installed + on Handle was returned in ProtocolBuffer. The + number of protocol interface GUIDs was returned + in ProtocolBufferCount. + @retval EFI_INVALID_PARAMETER Handle is NULL. + @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE. + @retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL. + @retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL. + @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the + results. + +**/ +EFI_STATUS +EFIAPI +CoreProtocolsPerHandle ( + IN EFI_HANDLE UserHandle, + OUT EFI_GUID ***ProtocolBuffer, + OUT UINTN *ProtocolBufferCount + ) +{ + EFI_STATUS Status; + IHANDLE *Handle; + PROTOCOL_INTERFACE *Prot; + LIST_ENTRY *Link; + UINTN ProtocolCount; + EFI_GUID **Buffer; + + Status = CoreValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return Status; + } + + Handle = (IHANDLE *)UserHandle; + + if (ProtocolBuffer == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (ProtocolBufferCount == NULL) { + return EFI_INVALID_PARAMETER; + } + + *ProtocolBufferCount = 0; + + ProtocolCount = 0; + + CoreAcquireProtocolLock (); + + for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) { + ProtocolCount++; + } + + // + // If there are no protocol interfaces installed on Handle, then Handle is not a valid EFI_HANDLE + // + if (ProtocolCount == 0) { + Status = EFI_INVALID_PARAMETER; + goto Done; + } + + Buffer = AllocatePool (sizeof (EFI_GUID *) * ProtocolCount); + if (Buffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + + *ProtocolBuffer = Buffer; + *ProtocolBufferCount = ProtocolCount; + + for ( Link = Handle->Protocols.ForwardLink, ProtocolCount = 0; + Link != &Handle->Protocols; + Link = Link->ForwardLink, ProtocolCount++) { + Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE); + Buffer[ProtocolCount] = &(Prot->Protocol->ProtocolID); + } + Status = EFI_SUCCESS; + +Done: + CoreReleaseProtocolLock (); + return Status; +} + + + +/** + return handle database key. + + + @return Handle database key. + +**/ +UINT64 +CoreGetHandleDatabaseKey ( + VOID + ) +{ + return gHandleDatabaseKey; +} + + + +/** + Go connect any handles that were created or modified while a image executed. + + @param Key The Key to show that the handle has been + created/modified + +**/ +VOID +CoreConnectHandlesByKey ( + UINT64 Key + ) +{ + UINTN Count; + LIST_ENTRY *Link; + EFI_HANDLE *HandleBuffer; + IHANDLE *Handle; + UINTN Index; + + // + // Lock the protocol database + // + CoreAcquireProtocolLock (); + + for (Link = gHandleList.ForwardLink, Count = 0; Link != &gHandleList; Link = Link->ForwardLink) { + Handle = CR (Link, IHANDLE, AllHandles, EFI_HANDLE_SIGNATURE); + if (Handle->Key > Key) { + Count++; + } + } + + HandleBuffer = AllocatePool (Count * sizeof (EFI_HANDLE)); + if (HandleBuffer == NULL) { + CoreReleaseProtocolLock (); + return; + } + + for (Link = gHandleList.ForwardLink, Count = 0; Link != &gHandleList; Link = Link->ForwardLink) { + Handle = CR (Link, IHANDLE, AllHandles, EFI_HANDLE_SIGNATURE); + if (Handle->Key > Key) { + HandleBuffer[Count++] = Handle; + } + } + + // + // Unlock the protocol database + // + CoreReleaseProtocolLock (); + + // + // Connect all handles whose Key value is greater than Key + // + for (Index = 0; Index < Count; Index++) { + CoreConnectController (HandleBuffer[Index], NULL, NULL, TRUE); + } + + CoreFreePool(HandleBuffer); +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Handle.h b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Handle.h new file mode 100644 index 0000000..83eb2b9 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Handle.h @@ -0,0 +1,264 @@ +/** @file + Support functions for managing protocol. + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _HAND_H_ +#define _HAND_H_ + + +#define EFI_HANDLE_SIGNATURE SIGNATURE_32('h','n','d','l') + +/// +/// IHANDLE - contains a list of protocol handles +/// +typedef struct { + UINTN Signature; + /// All handles list of IHANDLE + LIST_ENTRY AllHandles; + /// List of PROTOCOL_INTERFACE's for this handle + LIST_ENTRY Protocols; + UINTN LocateRequest; + /// The Handle Database Key value when this handle was last created or modified + UINT64 Key; +} IHANDLE; + +#define ASSERT_IS_HANDLE(a) ASSERT((a)->Signature == EFI_HANDLE_SIGNATURE) + +#define PROTOCOL_ENTRY_SIGNATURE SIGNATURE_32('p','r','t','e') + +/// +/// PROTOCOL_ENTRY - each different protocol has 1 entry in the protocol +/// database. Each handler that supports this protocol is listed, along +/// with a list of registered notifies. +/// +typedef struct { + UINTN Signature; + /// Link Entry inserted to mProtocolDatabase + LIST_ENTRY AllEntries; + /// ID of the protocol + EFI_GUID ProtocolID; + /// All protocol interfaces + LIST_ENTRY Protocols; + /// Registerd notification handlers + LIST_ENTRY Notify; +} PROTOCOL_ENTRY; + + +#define PROTOCOL_INTERFACE_SIGNATURE SIGNATURE_32('p','i','f','c') + +/// +/// PROTOCOL_INTERFACE - each protocol installed on a handle is tracked +/// with a protocol interface structure +/// +typedef struct { + UINTN Signature; + /// Link on IHANDLE.Protocols + LIST_ENTRY Link; + /// Back pointer + IHANDLE *Handle; + /// Link on PROTOCOL_ENTRY.Protocols + LIST_ENTRY ByProtocol; + /// The protocol ID + PROTOCOL_ENTRY *Protocol; + /// The interface value + VOID *Interface; + /// OPEN_PROTOCOL_DATA list + LIST_ENTRY OpenList; + UINTN OpenListCount; + +} PROTOCOL_INTERFACE; + +#define OPEN_PROTOCOL_DATA_SIGNATURE SIGNATURE_32('p','o','d','l') + +typedef struct { + UINTN Signature; + ///Link on PROTOCOL_INTERFACE.OpenList + LIST_ENTRY Link; + + EFI_HANDLE AgentHandle; + EFI_HANDLE ControllerHandle; + UINT32 Attributes; + UINT32 OpenCount; +} OPEN_PROTOCOL_DATA; + + +#define PROTOCOL_NOTIFY_SIGNATURE SIGNATURE_32('p','r','t','n') + +/// +/// PROTOCOL_NOTIFY - used for each register notification for a protocol +/// +typedef struct { + UINTN Signature; + PROTOCOL_ENTRY *Protocol; + /// All notifications for this protocol + LIST_ENTRY Link; + /// Event to notify + EFI_EVENT Event; + /// Last position notified + LIST_ENTRY *Position; +} PROTOCOL_NOTIFY; + + + +/** + Finds the protocol entry for the requested protocol. + The gProtocolDatabaseLock must be owned + + @param Protocol The ID of the protocol + @param Create Create a new entry if not found + + @return Protocol entry + +**/ +PROTOCOL_ENTRY * +CoreFindProtocolEntry ( + IN EFI_GUID *Protocol, + IN BOOLEAN Create + ); + + +/** + Signal event for every protocol in protocol entry. + + @param ProtEntry Protocol entry + +**/ +VOID +CoreNotifyProtocolEntry ( + IN PROTOCOL_ENTRY *ProtEntry + ); + + +/** + Finds the protocol instance for the requested handle and protocol. + Note: This function doesn't do parameters checking, it's caller's responsibility + to pass in valid parameters. + + @param Handle The handle to search the protocol on + @param Protocol GUID of the protocol + @param Interface The interface for the protocol being searched + + @return Protocol instance (NULL: Not found) + +**/ +PROTOCOL_INTERFACE * +CoreFindProtocolInterface ( + IN IHANDLE *Handle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ); + + +/** + Removes Protocol from the protocol list (but not the handle list). + + @param Handle The handle to remove protocol on. + @param Protocol GUID of the protocol to be moved + @param Interface The interface of the protocol + + @return Protocol Entry + +**/ +PROTOCOL_INTERFACE * +CoreRemoveInterfaceFromProtocol ( + IN IHANDLE *Handle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ); + + +/** + Connects a controller to a driver. + + @param ControllerHandle Handle of the controller to be + connected. + @param ContextDriverImageHandles DriverImageHandle A pointer to an + ordered list of driver image + handles. + @param RemainingDevicePath RemainingDevicePath A pointer to + the device path that specifies a + child of the controller + specified by ControllerHandle. + + @retval EFI_SUCCESS One or more drivers were + connected to ControllerHandle. + @retval EFI_OUT_OF_RESOURCES No enough system resources to + complete the request. + @retval EFI_NOT_FOUND No drivers were connected to + ControllerHandle. + +**/ +EFI_STATUS +CoreConnectSingleController ( + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE *ContextDriverImageHandles OPTIONAL, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ); + +/** + Attempts to disconnect all drivers that are using the protocol interface being queried. + If failed, reconnect all drivers disconnected. + Note: This function doesn't do parameters checking, it's caller's responsibility + to pass in valid parameters. + + @param UserHandle The handle on which the protocol is installed + @param Prot The protocol to disconnect drivers from + + @retval EFI_SUCCESS Drivers using the protocol interface are all + disconnected + @retval EFI_ACCESS_DENIED Failed to disconnect one or all of the drivers + +**/ +EFI_STATUS +CoreDisconnectControllersUsingProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN PROTOCOL_INTERFACE *Prot + ); + + +/** + Acquire lock on gProtocolDatabaseLock. + +**/ +VOID +CoreAcquireProtocolLock ( + VOID + ); + + +/** + Release lock on gProtocolDatabaseLock. + +**/ +VOID +CoreReleaseProtocolLock ( + VOID + ); + + +/** + Check whether a handle is a valid EFI_HANDLE + + @param UserHandle The handle to check + + @retval EFI_INVALID_PARAMETER The handle is NULL or not a valid EFI_HANDLE. + @retval EFI_SUCCESS The handle is valid EFI_HANDLE. + +**/ +EFI_STATUS +CoreValidateHandle ( + IN EFI_HANDLE UserHandle + ); + +// +// Externs +// +extern EFI_LOCK gProtocolDatabaseLock; +extern LIST_ENTRY gHandleList; +extern UINT64 gHandleDatabaseKey; + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Library.c b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Library.c new file mode 100644 index 0000000..b7f0781 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Library.c @@ -0,0 +1,100 @@ +/** @file + DXE Core library services. + +Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "DxeMain.h" + +// +// Lock Stuff +// +/** + Initialize a basic mutual exclusion lock. Each lock + provides mutual exclusion access at it's task priority + level. Since there is no-premption (at any TPL) or + multiprocessor support, acquiring the lock only consists + of raising to the locks TPL. + + @param Lock The EFI_LOCK structure to initialize + + @retval EFI_SUCCESS Lock Owned. + @retval EFI_ACCESS_DENIED Reentrant Lock Acquisition, Lock not Owned. + +**/ +EFI_STATUS +CoreAcquireLockOrFail ( + IN EFI_LOCK *Lock + ) +{ + ASSERT (Lock != NULL); + ASSERT (Lock->Lock != EfiLockUninitialized); + + if (Lock->Lock == EfiLockAcquired) { + // + // Lock is already owned, so bail out + // + return EFI_ACCESS_DENIED; + } + + Lock->OwnerTpl = CoreRaiseTpl (Lock->Tpl); + + Lock->Lock = EfiLockAcquired; + return EFI_SUCCESS; +} + + + +/** + Raising to the task priority level of the mutual exclusion + lock, and then acquires ownership of the lock. + + @param Lock The lock to acquire + + @return Lock owned + +**/ +VOID +CoreAcquireLock ( + IN EFI_LOCK *Lock + ) +{ + ASSERT (Lock != NULL); + ASSERT (Lock->Lock == EfiLockReleased); + + Lock->OwnerTpl = CoreRaiseTpl (Lock->Tpl); + Lock->Lock = EfiLockAcquired; +} + + + +/** + Releases ownership of the mutual exclusion lock, and + restores the previous task priority level. + + @param Lock The lock to release + + @return Lock unowned + +**/ +VOID +CoreReleaseLock ( + IN EFI_LOCK *Lock + ) +{ + EFI_TPL Tpl; + + ASSERT (Lock != NULL); + ASSERT (Lock->Lock == EfiLockAcquired); + + Tpl = Lock->OwnerTpl; + + Lock->Lock = EfiLockReleased; + + CoreRestoreTpl (Tpl); +} + + + diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Locate.c b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Locate.c new file mode 100644 index 0000000..be17f4c --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Locate.c @@ -0,0 +1,702 @@ +/** @file + Locate handle functions + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "DxeMain.h" +#include "Handle.h" + +// +// ProtocolRequest - Last LocateHandle request ID +// +UINTN mEfiLocateHandleRequest = 0; + +// +// Internal prototypes +// + +typedef struct { + EFI_GUID *Protocol; + VOID *SearchKey; + LIST_ENTRY *Position; + PROTOCOL_ENTRY *ProtEntry; +} LOCATE_POSITION; + +typedef +IHANDLE * +(* CORE_GET_NEXT) ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ); + +/** + Routine to get the next Handle, when you are searching for all handles. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +CoreGetNextLocateAllHandles ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ); + +/** + Routine to get the next Handle, when you are searching for register protocol + notifies. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +CoreGetNextLocateByRegisterNotify ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ); + +/** + Routine to get the next Handle, when you are searching for a given protocol. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +CoreGetNextLocateByProtocol ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ); + + +/** + Locates the requested handle(s) and returns them in Buffer. + + @param SearchType The type of search to perform to locate the + handles + @param Protocol The protocol to search for + @param SearchKey Dependant on SearchType + @param BufferSize On input the size of Buffer. On output the + size of data returned. + @param Buffer The buffer to return the results in + + @retval EFI_BUFFER_TOO_SMALL Buffer too small, required buffer size is + returned in BufferSize. + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully found the requested handle(s) and + returns them in Buffer. + +**/ +EFI_STATUS +EFIAPI +CoreLocateHandle ( + IN EFI_LOCATE_SEARCH_TYPE SearchType, + IN EFI_GUID *Protocol OPTIONAL, + IN VOID *SearchKey OPTIONAL, + IN OUT UINTN *BufferSize, + OUT EFI_HANDLE *Buffer + ) +{ + EFI_STATUS Status; + LOCATE_POSITION Position; + PROTOCOL_NOTIFY *ProtNotify; + CORE_GET_NEXT GetNext; + UINTN ResultSize; + IHANDLE *Handle; + IHANDLE **ResultBuffer; + VOID *Interface; + + if (BufferSize == NULL) { + return EFI_INVALID_PARAMETER; + } + + if ((*BufferSize > 0) && (Buffer == NULL)) { + return EFI_INVALID_PARAMETER; + } + + GetNext = NULL; + + // + // Set initial position + // + Position.Protocol = Protocol; + Position.SearchKey = SearchKey; + Position.Position = &gHandleList; + + ResultSize = 0; + ResultBuffer = (IHANDLE **) Buffer; + Status = EFI_SUCCESS; + + // + // Lock the protocol database + // + CoreAcquireProtocolLock (); + + // + // Get the search function based on type + // + switch (SearchType) { + case AllHandles: + GetNext = CoreGetNextLocateAllHandles; + break; + + case ByRegisterNotify: + // + // Must have SearchKey for locate ByRegisterNotify + // + if (SearchKey == NULL) { + Status = EFI_INVALID_PARAMETER; + break; + } + GetNext = CoreGetNextLocateByRegisterNotify; + break; + + case ByProtocol: + GetNext = CoreGetNextLocateByProtocol; + if (Protocol == NULL) { + Status = EFI_INVALID_PARAMETER; + break; + } + // + // Look up the protocol entry and set the head pointer + // + Position.ProtEntry = CoreFindProtocolEntry (Protocol, FALSE); + if (Position.ProtEntry == NULL) { + Status = EFI_NOT_FOUND; + break; + } + Position.Position = &Position.ProtEntry->Protocols; + break; + + default: + Status = EFI_INVALID_PARAMETER; + break; + } + + if (EFI_ERROR(Status)) { + CoreReleaseProtocolLock (); + return Status; + } + + ASSERT (GetNext != NULL); + // + // Enumerate out the matching handles + // + mEfiLocateHandleRequest += 1; + for (; ;) { + // + // Get the next handle. If no more handles, stop + // + Handle = GetNext (&Position, &Interface); + if (NULL == Handle) { + break; + } + + // + // Increase the resulting buffer size, and if this handle + // fits return it + // + ResultSize += sizeof(Handle); + if (ResultSize <= *BufferSize) { + *ResultBuffer = Handle; + ResultBuffer += 1; + } + } + + // + // If the result is a zero length buffer, then there were no + // matching handles + // + if (ResultSize == 0) { + Status = EFI_NOT_FOUND; + } else { + // + // Return the resulting buffer size. If it's larger than what + // was passed, then set the error code + // + if (ResultSize > *BufferSize) { + Status = EFI_BUFFER_TOO_SMALL; + } + + *BufferSize = ResultSize; + + if (SearchType == ByRegisterNotify && !EFI_ERROR(Status)) { + // + // If this is a search by register notify and a handle was + // returned, update the register notification position + // + ASSERT (SearchKey != NULL); + ProtNotify = SearchKey; + ProtNotify->Position = ProtNotify->Position->ForwardLink; + } + } + + CoreReleaseProtocolLock (); + return Status; +} + + + +/** + Routine to get the next Handle, when you are searching for all handles. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +CoreGetNextLocateAllHandles ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ) +{ + IHANDLE *Handle; + + // + // Next handle + // + Position->Position = Position->Position->ForwardLink; + + // + // If not at the end of the list, get the handle + // + Handle = NULL; + *Interface = NULL; + if (Position->Position != &gHandleList) { + Handle = CR (Position->Position, IHANDLE, AllHandles, EFI_HANDLE_SIGNATURE); + } + + return Handle; +} + + + +/** + Routine to get the next Handle, when you are searching for register protocol + notifies. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +CoreGetNextLocateByRegisterNotify ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ) +{ + IHANDLE *Handle; + PROTOCOL_NOTIFY *ProtNotify; + PROTOCOL_INTERFACE *Prot; + LIST_ENTRY *Link; + + Handle = NULL; + *Interface = NULL; + ProtNotify = Position->SearchKey; + + // + // If this is the first request, get the next handle + // + if (ProtNotify != NULL) { + ASSERT(ProtNotify->Signature == PROTOCOL_NOTIFY_SIGNATURE); + Position->SearchKey = NULL; + + // + // If not at the end of the list, get the next handle + // + Link = ProtNotify->Position->ForwardLink; + if (Link != &ProtNotify->Protocol->Protocols) { + Prot = CR (Link, PROTOCOL_INTERFACE, ByProtocol, PROTOCOL_INTERFACE_SIGNATURE); + Handle = Prot->Handle; + *Interface = Prot->Interface; + } + } + + return Handle; +} + + +/** + Routine to get the next Handle, when you are searching for a given protocol. + + @param Position Information about which Handle to seach for. + @param Interface Return the interface structure for the matching + protocol. + + @return An pointer to IHANDLE if the next Position is not the end of the list. + Otherwise,NULL is returned. + +**/ +IHANDLE * +CoreGetNextLocateByProtocol ( + IN OUT LOCATE_POSITION *Position, + OUT VOID **Interface + ) +{ + IHANDLE *Handle; + LIST_ENTRY *Link; + PROTOCOL_INTERFACE *Prot; + + Handle = NULL; + *Interface = NULL; + for (; ;) { + // + // Next entry + // + Link = Position->Position->ForwardLink; + Position->Position = Link; + + // + // If not at the end, return the handle + // + if (Link == &Position->ProtEntry->Protocols) { + Handle = NULL; + break; + } + + // + // Get the handle + // + Prot = CR(Link, PROTOCOL_INTERFACE, ByProtocol, PROTOCOL_INTERFACE_SIGNATURE); + Handle = Prot->Handle; + *Interface = Prot->Interface; + + // + // If this handle has not been returned this request, then + // return it now + // + if (Handle->LocateRequest != mEfiLocateHandleRequest) { + Handle->LocateRequest = mEfiLocateHandleRequest; + break; + } + } + + return Handle; +} + + +/** + Locates the handle to a device on the device path that supports the specified protocol. + + @param Protocol Specifies the protocol to search for. + @param DevicePath On input, a pointer to a pointer to the device path. On output, the device + path pointer is modified to point to the remaining part of the device + path. + @param Device A pointer to the returned device handle. + + @retval EFI_SUCCESS The resulting handle was returned. + @retval EFI_NOT_FOUND No handles match the search. + @retval EFI_INVALID_PARAMETER Protocol is NULL. + @retval EFI_INVALID_PARAMETER DevicePath is NULL. + @retval EFI_INVALID_PARAMETER A handle matched the search and Device is NULL. + +**/ +EFI_STATUS +EFIAPI +CoreLocateDevicePath ( + IN EFI_GUID *Protocol, + IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, + OUT EFI_HANDLE *Device + ) +{ + INTN SourceSize; + INTN Size; + INTN BestMatch; + UINTN HandleCount; + UINTN Index; + EFI_STATUS Status; + EFI_HANDLE *Handles; + EFI_HANDLE Handle; + EFI_HANDLE BestDevice; + EFI_DEVICE_PATH_PROTOCOL *SourcePath; + EFI_DEVICE_PATH_PROTOCOL *TmpDevicePath; + + if (Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + if ((DevicePath == NULL) || (*DevicePath == NULL)) { + return EFI_INVALID_PARAMETER; + } + + Handles = NULL; + BestDevice = NULL; + SourcePath = *DevicePath; + TmpDevicePath = SourcePath; + while (!IsDevicePathEnd (TmpDevicePath)) { + if (IsDevicePathEndInstance (TmpDevicePath)) { + // + // If DevicePath is a multi-instance device path, + // the function will operate on the first instance + // + break; + } + TmpDevicePath = NextDevicePathNode (TmpDevicePath); + } + + SourceSize = (UINTN) TmpDevicePath - (UINTN) SourcePath; + + // + // Get a list of all handles that support the requested protocol + // + Status = CoreLocateHandleBuffer (ByProtocol, Protocol, NULL, &HandleCount, &Handles); + if (EFI_ERROR (Status) || HandleCount == 0) { + return EFI_NOT_FOUND; + } + + BestMatch = -1; + for(Index = 0; Index < HandleCount; Index += 1) { + Handle = Handles[Index]; + Status = CoreHandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID **)&TmpDevicePath); + if (EFI_ERROR (Status)) { + // + // If this handle doesn't support device path, then skip it + // + continue; + } + + // + // Check if DevicePath is first part of SourcePath + // + Size = GetDevicePathSize (TmpDevicePath) - sizeof(EFI_DEVICE_PATH_PROTOCOL); + ASSERT (Size >= 0); + if ((Size <= SourceSize) && CompareMem (SourcePath, TmpDevicePath, (UINTN) Size) == 0) { + // + // If the size is equal to the best match, then we + // have a duplicate device path for 2 different device + // handles + // + ASSERT (Size != BestMatch); + + // + // We've got a match, see if it's the best match so far + // + if (Size > BestMatch) { + BestMatch = Size; + BestDevice = Handle; + } + } + } + + CoreFreePool (Handles); + + // + // If there wasn't any match, then no parts of the device path was found. + // Which is strange since there is likely a "root level" device path in the system. + // + if (BestMatch == -1) { + return EFI_NOT_FOUND; + } + + if (Device == NULL) { + return EFI_INVALID_PARAMETER; + } + *Device = BestDevice; + + // + // Return the remaining part of the device path + // + *DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) (((UINT8 *) SourcePath) + BestMatch); + return EFI_SUCCESS; +} + + +/** + Return the first Protocol Interface that matches the Protocol GUID. If + Registration is passed in, return a Protocol Instance that was just add + to the system. If Registration is NULL return the first Protocol Interface + you find. + + @param Protocol The protocol to search for + @param Registration Optional Registration Key returned from + RegisterProtocolNotify() + @param Interface Return the Protocol interface (instance). + + @retval EFI_SUCCESS If a valid Interface is returned + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_NOT_FOUND Protocol interface not found + +**/ +EFI_STATUS +EFIAPI +CoreLocateProtocol ( + IN EFI_GUID *Protocol, + IN VOID *Registration OPTIONAL, + OUT VOID **Interface + ) +{ + EFI_STATUS Status; + LOCATE_POSITION Position; + PROTOCOL_NOTIFY *ProtNotify; + IHANDLE *Handle; + + if ((Interface == NULL) || (Protocol == NULL)) { + return EFI_INVALID_PARAMETER; + } + + *Interface = NULL; + Status = EFI_SUCCESS; + + // + // Set initial position + // + Position.Protocol = Protocol; + Position.SearchKey = Registration; + Position.Position = &gHandleList; + + // + // Lock the protocol database + // + Status = CoreAcquireLockOrFail (&gProtocolDatabaseLock); + if (EFI_ERROR (Status)) { + return EFI_NOT_FOUND; + } + + mEfiLocateHandleRequest += 1; + + if (Registration == NULL) { + // + // Look up the protocol entry and set the head pointer + // + Position.ProtEntry = CoreFindProtocolEntry (Protocol, FALSE); + if (Position.ProtEntry == NULL) { + Status = EFI_NOT_FOUND; + goto Done; + } + Position.Position = &Position.ProtEntry->Protocols; + + Handle = CoreGetNextLocateByProtocol (&Position, Interface); + } else { + Handle = CoreGetNextLocateByRegisterNotify (&Position, Interface); + } + + if (Handle == NULL) { + Status = EFI_NOT_FOUND; + } else if (Registration != NULL) { + // + // If this is a search by register notify and a handle was + // returned, update the register notification position + // + ProtNotify = Registration; + ProtNotify->Position = ProtNotify->Position->ForwardLink; + } + +Done: + CoreReleaseProtocolLock (); + return Status; +} + + +/** + Function returns an array of handles that support the requested protocol + in a buffer allocated from pool. This is a version of CoreLocateHandle() + that allocates a buffer for the caller. + + @param SearchType Specifies which handle(s) are to be returned. + @param Protocol Provides the protocol to search by. This + parameter is only valid for SearchType + ByProtocol. + @param SearchKey Supplies the search key depending on the + SearchType. + @param NumberHandles The number of handles returned in Buffer. + @param Buffer A pointer to the buffer to return the requested + array of handles that support Protocol. + + @retval EFI_SUCCESS The result array of handles was returned. + @retval EFI_NOT_FOUND No handles match the search. + @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the + matching results. + @retval EFI_INVALID_PARAMETER One or more parameters are not valid. + +**/ +EFI_STATUS +EFIAPI +CoreLocateHandleBuffer ( + IN EFI_LOCATE_SEARCH_TYPE SearchType, + IN EFI_GUID *Protocol OPTIONAL, + IN VOID *SearchKey OPTIONAL, + IN OUT UINTN *NumberHandles, + OUT EFI_HANDLE **Buffer + ) +{ + EFI_STATUS Status; + UINTN BufferSize; + + if (NumberHandles == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (Buffer == NULL) { + return EFI_INVALID_PARAMETER; + } + + BufferSize = 0; + *NumberHandles = 0; + *Buffer = NULL; + Status = CoreLocateHandle ( + SearchType, + Protocol, + SearchKey, + &BufferSize, + *Buffer + ); + // + // LocateHandleBuffer() returns incorrect status code if SearchType is + // invalid. + // + // Add code to correctly handle expected errors from CoreLocateHandle(). + // + if (EFI_ERROR(Status) && Status != EFI_BUFFER_TOO_SMALL) { + if (Status != EFI_INVALID_PARAMETER) { + Status = EFI_NOT_FOUND; + } + return Status; + } + + *Buffer = AllocatePool (BufferSize); + if (*Buffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Status = CoreLocateHandle ( + SearchType, + Protocol, + SearchKey, + &BufferSize, + *Buffer + ); + + *NumberHandles = BufferSize / sizeof(EFI_HANDLE); + if (EFI_ERROR(Status)) { + *NumberHandles = 0; + } + + return Status; +} + + + diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Notify.c b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Notify.c new file mode 100644 index 0000000..afeac18 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Notify.c @@ -0,0 +1,285 @@ +/** @file + Support functions for UEFI protocol notification infrastructure. + +Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
    +(C) Copyright 2015 Hewlett Packard Enterprise Development LP
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "DxeMain.h" +#include "Handle.h" +#include "Event.h" + +/** + Signal event for every protocol in protocol entry. + + @param ProtEntry Protocol entry + +**/ +VOID +CoreNotifyProtocolEntry ( + IN PROTOCOL_ENTRY *ProtEntry + ) +{ + PROTOCOL_NOTIFY *ProtNotify; + LIST_ENTRY *Link; + + ASSERT_LOCKED (&gProtocolDatabaseLock); + + for (Link=ProtEntry->Notify.ForwardLink; Link != &ProtEntry->Notify; Link=Link->ForwardLink) { + ProtNotify = CR(Link, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE); + // CoreSignalEvent (ProtNotify->Event); + } +} + + + +/** + Removes Protocol from the protocol list (but not the handle list). + + @param Handle The handle to remove protocol on. + @param Protocol GUID of the protocol to be moved + @param Interface The interface of the protocol + + @return Protocol Entry + +**/ +PROTOCOL_INTERFACE * +CoreRemoveInterfaceFromProtocol ( + IN IHANDLE *Handle, + IN EFI_GUID *Protocol, + IN VOID *Interface + ) +{ + PROTOCOL_INTERFACE *Prot; + PROTOCOL_NOTIFY *ProtNotify; + PROTOCOL_ENTRY *ProtEntry; + LIST_ENTRY *Link; + + ASSERT_LOCKED (&gProtocolDatabaseLock); + + Prot = CoreFindProtocolInterface (Handle, Protocol, Interface); + if (Prot != NULL) { + + ProtEntry = Prot->Protocol; + + // + // If there's a protocol notify location pointing to this entry, back it up one + // + for(Link = ProtEntry->Notify.ForwardLink; Link != &ProtEntry->Notify; Link=Link->ForwardLink) { + ProtNotify = CR(Link, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE); + + if (ProtNotify->Position == &Prot->ByProtocol) { + ProtNotify->Position = Prot->ByProtocol.BackLink; + } + } + + // + // Remove the protocol interface entry + // + RemoveEntryList (&Prot->ByProtocol); + } + + return Prot; +} + + +/** + Add a new protocol notification record for the request protocol. + + @param Protocol The requested protocol to add the notify + registration + @param Event The event to signal + @param Registration Returns the registration record + + @retval EFI_INVALID_PARAMETER Invalid parameter + @retval EFI_SUCCESS Successfully returned the registration record + that has been added + +**/ +EFI_STATUS +EFIAPI +CoreRegisterProtocolNotify ( + IN EFI_GUID *Protocol, + IN EFI_EVENT Event, + OUT VOID **Registration + ) +{ + PROTOCOL_ENTRY *ProtEntry; + PROTOCOL_NOTIFY *ProtNotify; + EFI_STATUS Status; + + if ((Protocol == NULL) || (Event == NULL) || (Registration == NULL)) { + return EFI_INVALID_PARAMETER; + } + + CoreAcquireProtocolLock (); + + ProtNotify = NULL; + + // + // Get the protocol entry to add the notification too + // + + ProtEntry = CoreFindProtocolEntry (Protocol, TRUE); + if (ProtEntry != NULL) { + + // + // Allocate a new notification record + // + ProtNotify = AllocatePool (sizeof(PROTOCOL_NOTIFY)); + if (ProtNotify != NULL) { + ((IEVENT *)Event)->ExFlag |= EVT_EXFLAG_EVENT_PROTOCOL_NOTIFICATION; + ProtNotify->Signature = PROTOCOL_NOTIFY_SIGNATURE; + ProtNotify->Protocol = ProtEntry; + ProtNotify->Event = Event; + // + // start at the begining + // + ProtNotify->Position = &ProtEntry->Protocols; + + InsertTailList (&ProtEntry->Notify, &ProtNotify->Link); + } + } + + CoreReleaseProtocolLock (); + + // + // Done. If we have a protocol notify entry, then return it. + // Otherwise, we must have run out of resources trying to add one + // + + Status = EFI_OUT_OF_RESOURCES; + if (ProtNotify != NULL) { + *Registration = ProtNotify; + Status = EFI_SUCCESS; + } + + return Status; +} + + +/** + Reinstall a protocol interface on a device handle. The OldInterface for Protocol is replaced by the NewInterface. + + @param UserHandle Handle on which the interface is to be + reinstalled + @param Protocol The numeric ID of the interface + @param OldInterface A pointer to the old interface + @param NewInterface A pointer to the new interface + + @retval EFI_SUCCESS The protocol interface was installed + @retval EFI_NOT_FOUND The OldInterface on the handle was not found + @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value + +**/ +EFI_STATUS +EFIAPI +CoreReinstallProtocolInterface ( + IN EFI_HANDLE UserHandle, + IN EFI_GUID *Protocol, + IN VOID *OldInterface, + IN VOID *NewInterface + ) +{ + EFI_STATUS Status; + IHANDLE *Handle; + PROTOCOL_INTERFACE *Prot; + PROTOCOL_ENTRY *ProtEntry; + + Status = CoreValidateHandle (UserHandle); + if (EFI_ERROR (Status)) { + return Status; + } + + if (Protocol == NULL) { + return EFI_INVALID_PARAMETER; + } + + Handle = (IHANDLE *) UserHandle; + + // + // Lock the protocol database + // + CoreAcquireProtocolLock (); + + // + // Check that Protocol exists on UserHandle, and Interface matches the interface in the database + // + Prot = CoreFindProtocolInterface (UserHandle, Protocol, OldInterface); + if (Prot == NULL) { + Status = EFI_NOT_FOUND; + goto Done; + } + + // + // Attempt to disconnect all drivers that are using the protocol interface that is about to be reinstalled + // + Status = CoreDisconnectControllersUsingProtocolInterface ( + UserHandle, + Prot + ); + if (EFI_ERROR (Status)) { + // + // One or more drivers refused to release, so return the error + // + goto Done; + } + + // + // Remove the protocol interface from the protocol + // + Prot = CoreRemoveInterfaceFromProtocol (Handle, Protocol, OldInterface); + + if (Prot == NULL) { + Status = EFI_NOT_FOUND; + goto Done; + } + + ProtEntry = Prot->Protocol; + + // + // Update the interface on the protocol + // + Prot->Interface = NewInterface; + + // + // Add this protocol interface to the tail of the + // protocol entry + // + InsertTailList (&ProtEntry->Protocols, &Prot->ByProtocol); + + // + // Update the Key to show that the handle has been created/modified + // + gHandleDatabaseKey++; + Handle->Key = gHandleDatabaseKey; + + // + // Release the lock and connect all drivers to UserHandle + // + CoreReleaseProtocolLock (); + // + // Return code is ignored on purpose. + // + CoreConnectController ( + UserHandle, + NULL, + NULL, + TRUE + ); + CoreAcquireProtocolLock (); + + // + // Notify the notification list for this protocol + // + CoreNotifyProtocolEntry (ProtEntry); + + Status = EFI_SUCCESS; + +Done: + CoreReleaseProtocolLock (); + + return Status; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Tpl.c b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Tpl.c new file mode 100644 index 0000000..ed342a0 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/Tpl.c @@ -0,0 +1,77 @@ +/** @file + Task priority (TPL) functions. + +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "DxeMain.h" + +#define VALID_TPL(a) ((a) <= TPL_HIGH_LEVEL) + +EFI_TPL gEfiCurrentTpl = TPL_APPLICATION; + + +/** + Raise the task priority level to the new level. + High level is implemented by disabling processor interrupts. + + @param NewTpl New task priority level + + @return The previous task priority level + +**/ +EFI_TPL +EFIAPI +CoreRaiseTpl ( + IN EFI_TPL NewTpl + ) +{ + EFI_TPL OldTpl; + + OldTpl = gEfiCurrentTpl; + if (OldTpl > NewTpl) { + DEBUG ((EFI_D_ERROR, "FATAL ERROR - RaiseTpl with OldTpl(0x%x) > NewTpl(0x%x)\n", OldTpl, NewTpl)); + ASSERT (FALSE); + } + ASSERT (VALID_TPL (NewTpl)); + + // + // Set the new value + // + gEfiCurrentTpl = NewTpl; + + return OldTpl; +} + + + + +/** + Lowers the task priority to the previous value. If the new + priority unmasks events at a higher priority, they are dispatched. + + @param NewTpl New, lower, task priority + +**/ +VOID +EFIAPI +CoreRestoreTpl ( + IN EFI_TPL NewTpl + ) +{ + EFI_TPL OldTpl; + + OldTpl = gEfiCurrentTpl; + if (NewTpl > OldTpl) { + DEBUG ((EFI_D_ERROR, "FATAL ERROR - RestoreTpl with NewTpl(0x%x) > OldTpl(0x%x)\n", NewTpl, OldTpl)); + ASSERT (FALSE); + } + ASSERT (VALID_TPL (NewTpl)); + + // + // Set the new value + // + gEfiCurrentTpl = NewTpl; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.c b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.c new file mode 100644 index 0000000..dd2f4c9 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.c @@ -0,0 +1,294 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +#include +#include +#include + +#include "DxeMain.h" + +extern EFI_BOOT_SERVICES mBootServices; +extern EFI_SYSTEM_TABLE mEfiSystemTableTemplate; + +EFI_SYSTEM_TABLE *gST = &mEfiSystemTableTemplate; +EFI_BOOT_SERVICES *gBS = &mBootServices; +EFI_HANDLE gImageHandle = NULL; + +EFI_HANDLE gDxeCoreImageHandle = NULL; +EFI_SECURITY2_ARCH_PROTOCOL *gSecurity2; + +EFI_STATUS +EFIAPI +CoreAllocatePages ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN NumberOfPages, + OUT EFI_PHYSICAL_ADDRESS *Memory + ) +{ + VOID *Buffer; + + Buffer = malloc (EFI_PAGES_TO_SIZE(NumberOfPages)); + if (Buffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + *Memory = (UINTN)Buffer; + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +CoreFreePages ( + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN NumberOfPages + ) +{ + free ((VOID *)(UINTN)Memory); + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +CoreAllocatePool ( + IN EFI_MEMORY_TYPE PoolType, + IN UINTN Size, + OUT VOID **Buffer + ) +{ + *Buffer = malloc (Size); + if (*Buffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +CoreFreePool ( + IN VOID *Buffer + ) +{ + free (Buffer); + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg0 ( + VOID + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg1 ( + UINTN Arg1 + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg2 ( + UINTN Arg1, + UINTN Arg2 + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg3 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3 + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg4 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4 + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg5 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4, + UINTN Arg5 + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg6 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4, + UINTN Arg5, + UINTN Arg6 + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + +EFI_BOOT_SERVICES mBootServices = { + { + EFI_BOOT_SERVICES_SIGNATURE, // Signature + EFI_BOOT_SERVICES_REVISION, // Revision + sizeof (EFI_BOOT_SERVICES), // HeaderSize + 0, // CRC32 + 0 // Reserved + }, + (EFI_RAISE_TPL) CoreRaiseTpl, // RaiseTPL + (EFI_RESTORE_TPL) CoreRestoreTpl, // RestoreTPL + (EFI_ALLOCATE_PAGES) CoreAllocatePages, // AllocatePages + (EFI_FREE_PAGES) CoreFreePages, // FreePages + (EFI_GET_MEMORY_MAP) CoreEfiNotAvailableYetArg5, // GetMemoryMap + (EFI_ALLOCATE_POOL) CoreAllocatePool, // AllocatePool + (EFI_FREE_POOL) CoreFreePool, // FreePool + (EFI_CREATE_EVENT) CoreEfiNotAvailableYetArg5, // CreateEvent + (EFI_SET_TIMER) CoreEfiNotAvailableYetArg3, // SetTimer + (EFI_WAIT_FOR_EVENT) CoreEfiNotAvailableYetArg3, // WaitForEvent + (EFI_SIGNAL_EVENT) CoreEfiNotAvailableYetArg1, // SignalEvent + (EFI_CLOSE_EVENT) CoreEfiNotAvailableYetArg1, // CloseEvent + (EFI_CHECK_EVENT) CoreEfiNotAvailableYetArg1, // CheckEvent + (EFI_INSTALL_PROTOCOL_INTERFACE) CoreInstallProtocolInterface, // InstallProtocolInterface + (EFI_REINSTALL_PROTOCOL_INTERFACE) CoreReinstallProtocolInterface, // ReinstallProtocolInterface + (EFI_UNINSTALL_PROTOCOL_INTERFACE) CoreUninstallProtocolInterface, // UninstallProtocolInterface + (EFI_HANDLE_PROTOCOL) CoreHandleProtocol, // HandleProtocol + (VOID *) NULL, // Reserved + (EFI_REGISTER_PROTOCOL_NOTIFY) CoreRegisterProtocolNotify, // RegisterProtocolNotify + (EFI_LOCATE_HANDLE) CoreLocateHandle, // LocateHandle + (EFI_LOCATE_DEVICE_PATH) CoreLocateDevicePath, // LocateDevicePath + (EFI_INSTALL_CONFIGURATION_TABLE) CoreEfiNotAvailableYetArg2, // InstallConfigurationTable + (EFI_IMAGE_LOAD) CoreEfiNotAvailableYetArg6, // LoadImage + (EFI_IMAGE_START) CoreEfiNotAvailableYetArg3, // StartImage + (EFI_EXIT) CoreEfiNotAvailableYetArg4, // Exit + (EFI_IMAGE_UNLOAD) CoreEfiNotAvailableYetArg1, // UnloadImage + (EFI_EXIT_BOOT_SERVICES) CoreEfiNotAvailableYetArg2, // ExitBootServices + (EFI_GET_NEXT_MONOTONIC_COUNT) CoreEfiNotAvailableYetArg1, // GetNextMonotonicCount + (EFI_STALL) CoreEfiNotAvailableYetArg1, // Stall + (EFI_SET_WATCHDOG_TIMER) CoreEfiNotAvailableYetArg4, // SetWatchdogTimer + (EFI_CONNECT_CONTROLLER) CoreEfiNotAvailableYetArg4, // ConnectController + (EFI_DISCONNECT_CONTROLLER) CoreEfiNotAvailableYetArg3, // DisconnectController + (EFI_OPEN_PROTOCOL) CoreOpenProtocol, // OpenProtocol + (EFI_CLOSE_PROTOCOL) CoreCloseProtocol, // CloseProtocol + (EFI_OPEN_PROTOCOL_INFORMATION) CoreOpenProtocolInformation, // OpenProtocolInformation + (EFI_PROTOCOLS_PER_HANDLE) CoreProtocolsPerHandle, // ProtocolsPerHandle + (EFI_LOCATE_HANDLE_BUFFER) CoreLocateHandleBuffer, // LocateHandleBuffer + (EFI_LOCATE_PROTOCOL) CoreLocateProtocol, // LocateProtocol + (EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) CoreInstallMultipleProtocolInterfaces, // InstallMultipleProtocolInterfaces + (EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) CoreUninstallMultipleProtocolInterfaces, // UninstallMultipleProtocolInterfaces + (EFI_CALCULATE_CRC32) CoreEfiNotAvailableYetArg3, // CalculateCrc32 + (EFI_COPY_MEM) CopyMem, // CopyMem + (EFI_SET_MEM) SetMem, // SetMem + (EFI_CREATE_EVENT_EX) CoreEfiNotAvailableYetArg6 // CreateEventEx +}; + +EFI_STATUS +EFIAPI +OutputString ( + IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, + IN CHAR16 *String + ) +{ + DEBUG ((DEBUG_INFO, "%s", String)); + return EFI_SUCCESS; +} + +EFI_SIMPLE_TEXT_OUTPUT_MODE mMode = { + 1, // MaxMode + 0, // Mode + 0, // Attribute + 80, // CursorColumn + 25, // CursorRow + FALSE, // CursorVisible +}; + +EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL mConOut = { + (EFI_TEXT_RESET) CoreEfiNotAvailableYetArg2, // Reset + OutputString, + (EFI_TEXT_TEST_STRING) CoreEfiNotAvailableYetArg2, // TestString + (EFI_TEXT_QUERY_MODE) CoreEfiNotAvailableYetArg4, // QueryMode + (EFI_TEXT_SET_MODE) CoreEfiNotAvailableYetArg2, // SetMode + (EFI_TEXT_SET_ATTRIBUTE) CoreEfiNotAvailableYetArg2, // SetAttribute + (EFI_TEXT_CLEAR_SCREEN) CoreEfiNotAvailableYetArg1, // ClearScreen + (EFI_TEXT_SET_CURSOR_POSITION) CoreEfiNotAvailableYetArg3, // SetCursorPosition + (EFI_TEXT_ENABLE_CURSOR) CoreEfiNotAvailableYetArg2, // EnableCursor + NULL, // Mode +}; + +EFI_SYSTEM_TABLE mEfiSystemTableTemplate = { + { + EFI_SYSTEM_TABLE_SIGNATURE, // Signature + EFI_SYSTEM_TABLE_REVISION, // Revision + sizeof (EFI_SYSTEM_TABLE), // HeaderSize + 0, // CRC32 + 0 // Reserved + }, + NULL, // FirmwareVendor + 0, // FirmwareRevision + NULL, // ConsoleInHandle + NULL, // ConIn + NULL, // ConsoleOutHandle + &mConOut, // ConOut + NULL, // StandardErrorHandle + NULL, // StdErr + NULL, // RuntimeServices + &mBootServices, // BootServices + 0, // NumberOfConfigurationTableEntries + NULL // ConfigurationTable +}; + +EFI_STATUS +EFIAPI +UefiBootServicesTableLibConstructor ( + VOID + ) +{ + EFI_STATUS Status; + + Status = gBS->InstallProtocolInterface ( + &gImageHandle, + &gEfiLoadedImageProtocolGuid, + EFI_NATIVE_INTERFACE, + NULL + ); + + return Status; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf new file mode 100644 index 0000000..144aa3d --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf @@ -0,0 +1,43 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = UefiBootServicesTableLibHost + FILE_GUID = D440EF07-2EFD-4054-BEAC-88ED18722C8F + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = UefiBootServicesTableLib + CONSTRUCTOR = UefiBootServicesTableLibConstructor + +[Sources] + UefiBootServicesTableLibHost.c + DriverSupport.c + Handle.c + Locate.c + Notify.c + Tpl.c + Library.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + DevicePathLib + PerformanceLib + +[Protocols] + gEfiDevicePathProtocolGuid + gEfiPlatformDriverOverrideProtocolGuid + gEfiDriverBindingProtocolGuid + gEfiBusSpecificDriverOverrideProtocolGuid + gEfiDriverFamilyOverrideProtocolGuid + gEfiLoadedImageProtocolGuid diff --git a/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/DevicePathUtilities.c b/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/DevicePathUtilities.c new file mode 100644 index 0000000..903266f --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/DevicePathUtilities.c @@ -0,0 +1,889 @@ +/** @file + Device Path services. The thing to remember is device paths are built out of + nodes. The device path is terminated by an end node that is length + sizeof(EFI_DEVICE_PATH_PROTOCOL). That would be why there is sizeof(EFI_DEVICE_PATH_PROTOCOL) + all over this file. + + The only place where multi-instance device paths are supported is in + environment varibles. Multi-instance device paths should never be placed + on a Handle. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "UefiDevicePathLib.h" + +// +// Template for an end-of-device path node. +// +GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_DEVICE_PATH_PROTOCOL mUefiDevicePathLibEndDevicePath = { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } +}; + +/** + Determine whether a given device path is valid. + If DevicePath is NULL, then ASSERT(). + + @param DevicePath A pointer to a device path data structure. + @param MaxSize The maximum size of the device path data structure. + + @retval TRUE DevicePath is valid. + @retval FALSE The length of any node node in the DevicePath is less + than sizeof (EFI_DEVICE_PATH_PROTOCOL). + @retval FALSE If MaxSize is not zero, the size of the DevicePath + exceeds MaxSize. + @retval FALSE If PcdMaximumDevicePathNodeCount is not zero, the node + count of the DevicePath exceeds PcdMaximumDevicePathNodeCount. +**/ +BOOLEAN +EFIAPI +IsDevicePathValid ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN UINTN MaxSize + ) +{ + UINTN Count; + UINTN Size; + UINTN NodeLength; + + ASSERT (DevicePath != NULL); + + if (MaxSize == 0) { + MaxSize = MAX_UINTN; + } + + // + // Validate the input size big enough to touch the first node. + // + if (MaxSize < sizeof (EFI_DEVICE_PATH_PROTOCOL)) { + return FALSE; + } + + for (Count = 0, Size = 0; !IsDevicePathEnd (DevicePath); DevicePath = NextDevicePathNode (DevicePath)) { + NodeLength = DevicePathNodeLength (DevicePath); + if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) { + return FALSE; + } + + if (NodeLength > MAX_UINTN - Size) { + return FALSE; + } + Size += NodeLength; + + // + // Validate next node before touch it. + // + if (Size > MaxSize - END_DEVICE_PATH_LENGTH ) { + return FALSE; + } + + if (PcdGet32 (PcdMaximumDevicePathNodeCount) > 0) { + Count++; + if (Count >= PcdGet32 (PcdMaximumDevicePathNodeCount)) { + return FALSE; + } + } + } + + // + // Only return TRUE when the End Device Path node is valid. + // + return (BOOLEAN) (DevicePathNodeLength (DevicePath) == END_DEVICE_PATH_LENGTH); +} + + +/** + Returns the Type field of a device path node. + + Returns the Type field of the device path node specified by Node. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @return The Type field of the device path node specified by Node. + +**/ +UINT8 +EFIAPI +DevicePathType ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return ((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Type; +} + +/** + Returns the SubType field of a device path node. + + Returns the SubType field of the device path node specified by Node. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @return The SubType field of the device path node specified by Node. + +**/ +UINT8 +EFIAPI +DevicePathSubType ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return ((EFI_DEVICE_PATH_PROTOCOL *)(Node))->SubType; +} + +/** + Returns the 16-bit Length field of a device path node. + + Returns the 16-bit Length field of the device path node specified by Node. + Node is not required to be aligned on a 16-bit boundary, so it is recommended + that a function such as ReadUnaligned16() be used to extract the contents of + the Length field. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @return The 16-bit Length field of the device path node specified by Node. + +**/ +UINTN +EFIAPI +DevicePathNodeLength ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]); +} + +/** + Returns a pointer to the next node in a device path. + + Returns a pointer to the device path node that follows the device path node + specified by Node. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @return a pointer to the device path node that follows the device path node + specified by Node. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +NextDevicePathNode ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return (EFI_DEVICE_PATH_PROTOCOL *)((UINT8 *)(Node) + DevicePathNodeLength(Node)); +} + +/** + Determines if a device path node is an end node of a device path. + This includes nodes that are the end of a device path instance and nodes that + are the end of an entire device path. + + Determines if the device path node specified by Node is an end node of a device path. + This includes nodes that are the end of a device path instance and nodes that are the + end of an entire device path. If Node represents an end node of a device path, + then TRUE is returned. Otherwise, FALSE is returned. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @retval TRUE The device path node specified by Node is an end node of a + device path. + @retval FALSE The device path node specified by Node is not an end node of + a device path. + +**/ +BOOLEAN +EFIAPI +IsDevicePathEndType ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return (BOOLEAN) (DevicePathType (Node) == END_DEVICE_PATH_TYPE); +} + +/** + Determines if a device path node is an end node of an entire device path. + + Determines if a device path node specified by Node is an end node of an entire + device path. If Node represents the end of an entire device path, then TRUE is + returned. Otherwise, FALSE is returned. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @retval TRUE The device path node specified by Node is the end of an entire + device path. + @retval FALSE The device path node specified by Node is not the end of an + entire device path. + +**/ +BOOLEAN +EFIAPI +IsDevicePathEnd ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return (BOOLEAN) (IsDevicePathEndType (Node) && DevicePathSubType(Node) == END_ENTIRE_DEVICE_PATH_SUBTYPE); +} + +/** + Determines if a device path node is an end node of a device path instance. + + Determines if a device path node specified by Node is an end node of a device + path instance. If Node represents the end of a device path instance, then TRUE + is returned. Otherwise, FALSE is returned. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + + @retval TRUE The device path node specified by Node is the end of a device + path instance. + @retval FALSE The device path node specified by Node is not the end of a + device path instance. + +**/ +BOOLEAN +EFIAPI +IsDevicePathEndInstance ( + IN CONST VOID *Node + ) +{ + ASSERT (Node != NULL); + return (BOOLEAN) (IsDevicePathEndType (Node) && DevicePathSubType(Node) == END_INSTANCE_DEVICE_PATH_SUBTYPE); +} + +/** + Sets the length, in bytes, of a device path node. + + Sets the length of the device path node specified by Node to the value specified + by NodeLength. NodeLength is returned. Node is not required to be aligned on + a 16-bit boundary, so it is recommended that a function such as WriteUnaligned16() + be used to set the contents of the Length field. + + If Node is NULL, then ASSERT(). + If NodeLength >= SIZE_64KB, then ASSERT(). + If NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL), then ASSERT(). + + @param Node A pointer to a device path node data structure. + @param Length The length, in bytes, of the device path node. + + @return Length + +**/ +UINT16 +EFIAPI +SetDevicePathNodeLength ( + IN OUT VOID *Node, + IN UINTN Length + ) +{ + ASSERT (Node != NULL); + ASSERT ((Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL)) && (Length < SIZE_64KB)); + return WriteUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0], (UINT16)(Length)); +} + +/** + Fills in all the fields of a device path node that is the end of an entire device path. + + Fills in all the fields of a device path node specified by Node so Node represents + the end of an entire device path. The Type field of Node is set to + END_DEVICE_PATH_TYPE, the SubType field of Node is set to + END_ENTIRE_DEVICE_PATH_SUBTYPE, and the Length field of Node is set to + END_DEVICE_PATH_LENGTH. Node is not required to be aligned on a 16-bit boundary, + so it is recommended that a function such as WriteUnaligned16() be used to set + the contents of the Length field. + + If Node is NULL, then ASSERT(). + + @param Node A pointer to a device path node data structure. + +**/ +VOID +EFIAPI +SetDevicePathEndNode ( + OUT VOID *Node + ) +{ + ASSERT (Node != NULL); + CopyMem (Node, &mUefiDevicePathLibEndDevicePath, sizeof (mUefiDevicePathLibEndDevicePath)); +} + +/** + Returns the size of a device path in bytes. + + This function returns the size, in bytes, of the device path data structure + specified by DevicePath including the end of device path node. + If DevicePath is NULL or invalid, then 0 is returned. + + @param DevicePath A pointer to a device path data structure. + + @retval 0 If DevicePath is NULL or invalid. + @retval Others The size of a device path in bytes. + +**/ +UINTN +EFIAPI +UefiDevicePathLibGetDevicePathSize ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ) +{ + CONST EFI_DEVICE_PATH_PROTOCOL *Start; + + if (DevicePath == NULL) { + return 0; + } + + if (!IsDevicePathValid (DevicePath, 0)) { + return 0; + } + + // + // Search for the end of the device path structure + // + Start = DevicePath; + while (!IsDevicePathEnd (DevicePath)) { + DevicePath = NextDevicePathNode (DevicePath); + } + + // + // Compute the size and add back in the size of the end device path structure + // + return ((UINTN) DevicePath - (UINTN) Start) + DevicePathNodeLength (DevicePath); +} + +/** + Creates a new copy of an existing device path. + + This function allocates space for a new copy of the device path specified by DevicePath. + If DevicePath is NULL, then NULL is returned. If the memory is successfully + allocated, then the contents of DevicePath are copied to the newly allocated + buffer, and a pointer to that buffer is returned. Otherwise, NULL is returned. + The memory for the new device path is allocated from EFI boot services memory. + It is the responsibility of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + + @retval NULL DevicePath is NULL or invalid. + @retval Others A pointer to the duplicated device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibDuplicateDevicePath ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ) +{ + UINTN Size; + + // + // Compute the size + // + Size = GetDevicePathSize (DevicePath); + if (Size == 0) { + return NULL; + } + + // + // Allocate space for duplicate device path + // + + return AllocateCopyPool (Size, DevicePath); +} + +/** + Creates a new device path by appending a second device path to a first device path. + + This function creates a new device path by appending a copy of SecondDevicePath + to a copy of FirstDevicePath in a newly allocated buffer. Only the end-of-device-path + device node from SecondDevicePath is retained. The newly created device path is + returned. If FirstDevicePath is NULL, then it is ignored, and a duplicate of + SecondDevicePath is returned. If SecondDevicePath is NULL, then it is ignored, + and a duplicate of FirstDevicePath is returned. If both FirstDevicePath and + SecondDevicePath are NULL, then a copy of an end-of-device-path is returned. + + If there is not enough memory for the newly allocated buffer, then NULL is returned. + The memory for the new device path is allocated from EFI boot services memory. + It is the responsibility of the caller to free the memory allocated. + + @param FirstDevicePath A pointer to a device path data structure. + @param SecondDevicePath A pointer to a device path data structure. + + @retval NULL If there is not enough memory for the newly allocated buffer. + @retval NULL If FirstDevicePath or SecondDevicePath is invalid. + @retval Others A pointer to the new device path if success. + Or a copy an end-of-device-path if both FirstDevicePath and SecondDevicePath are NULL. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibAppendDevicePath ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath OPTIONAL + ) +{ + UINTN Size; + UINTN Size1; + UINTN Size2; + EFI_DEVICE_PATH_PROTOCOL *NewDevicePath; + EFI_DEVICE_PATH_PROTOCOL *DevicePath2; + + // + // If there's only 1 path, just duplicate it. + // + if (FirstDevicePath == NULL) { + return DuplicateDevicePath ((SecondDevicePath != NULL) ? SecondDevicePath : &mUefiDevicePathLibEndDevicePath); + } + + if (SecondDevicePath == NULL) { + return DuplicateDevicePath (FirstDevicePath); + } + + if (!IsDevicePathValid (FirstDevicePath, 0) || !IsDevicePathValid (SecondDevicePath, 0)) { + return NULL; + } + + // + // Allocate space for the combined device path. It only has one end node of + // length EFI_DEVICE_PATH_PROTOCOL. + // + Size1 = GetDevicePathSize (FirstDevicePath); + Size2 = GetDevicePathSize (SecondDevicePath); + Size = Size1 + Size2 - END_DEVICE_PATH_LENGTH; + + NewDevicePath = AllocatePool (Size); + + if (NewDevicePath != NULL) { + NewDevicePath = CopyMem (NewDevicePath, FirstDevicePath, Size1); + // + // Over write FirstDevicePath EndNode and do the copy + // + DevicePath2 = (EFI_DEVICE_PATH_PROTOCOL *) ((CHAR8 *) NewDevicePath + + (Size1 - END_DEVICE_PATH_LENGTH)); + CopyMem (DevicePath2, SecondDevicePath, Size2); + } + + return NewDevicePath; +} + +/** + Creates a new path by appending the device node to the device path. + + This function creates a new device path by appending a copy of the device node + specified by DevicePathNode to a copy of the device path specified by DevicePath + in an allocated buffer. The end-of-device-path device node is moved after the + end of the appended device node. + If DevicePathNode is NULL then a copy of DevicePath is returned. + If DevicePath is NULL then a copy of DevicePathNode, followed by an end-of-device + path device node is returned. + If both DevicePathNode and DevicePath are NULL then a copy of an end-of-device-path + device node is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + @param DevicePathNode A pointer to a single device path node. + + @retval NULL If there is not enough memory for the new device path. + @retval Others A pointer to the new device path if success. + A copy of DevicePathNode followed by an end-of-device-path node + if both FirstDevicePath and SecondDevicePath are NULL. + A copy of an end-of-device-path node if both FirstDevicePath + and SecondDevicePath are NULL. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibAppendDevicePathNode ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode OPTIONAL + ) +{ + EFI_DEVICE_PATH_PROTOCOL *TempDevicePath; + EFI_DEVICE_PATH_PROTOCOL *NextNode; + EFI_DEVICE_PATH_PROTOCOL *NewDevicePath; + UINTN NodeLength; + + if (DevicePathNode == NULL) { + return DuplicateDevicePath ((DevicePath != NULL) ? DevicePath : &mUefiDevicePathLibEndDevicePath); + } + // + // Build a Node that has a terminator on it + // + NodeLength = DevicePathNodeLength (DevicePathNode); + + TempDevicePath = AllocatePool (NodeLength + END_DEVICE_PATH_LENGTH); + if (TempDevicePath == NULL) { + return NULL; + } + TempDevicePath = CopyMem (TempDevicePath, DevicePathNode, NodeLength); + // + // Add and end device path node to convert Node to device path + // + NextNode = NextDevicePathNode (TempDevicePath); + SetDevicePathEndNode (NextNode); + // + // Append device paths + // + NewDevicePath = AppendDevicePath (DevicePath, TempDevicePath); + + FreePool (TempDevicePath); + + return NewDevicePath; +} + +/** + Creates a new device path by appending the specified device path instance to the specified device + path. + + This function creates a new device path by appending a copy of the device path + instance specified by DevicePathInstance to a copy of the device path specified + by DevicePath in a allocated buffer. + The end-of-device-path device node is moved after the end of the appended device + path instance and a new end-of-device-path-instance node is inserted between. + If DevicePath is NULL, then a copy if DevicePathInstance is returned. + If DevicePathInstance is NULL, then NULL is returned. + If DevicePath or DevicePathInstance is invalid, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + @param DevicePathInstance A pointer to a device path instance. + + @return A pointer to the new device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibAppendDevicePathInstance ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance OPTIONAL + ) +{ + EFI_DEVICE_PATH_PROTOCOL *NewDevicePath; + EFI_DEVICE_PATH_PROTOCOL *TempDevicePath; + UINTN SrcSize; + UINTN InstanceSize; + + if (DevicePath == NULL) { + return DuplicateDevicePath (DevicePathInstance); + } + + if (DevicePathInstance == NULL) { + return NULL; + } + + if (!IsDevicePathValid (DevicePath, 0) || !IsDevicePathValid (DevicePathInstance, 0)) { + return NULL; + } + + SrcSize = GetDevicePathSize (DevicePath); + InstanceSize = GetDevicePathSize (DevicePathInstance); + + NewDevicePath = AllocatePool (SrcSize + InstanceSize); + if (NewDevicePath != NULL) { + + TempDevicePath = CopyMem (NewDevicePath, DevicePath, SrcSize);; + + while (!IsDevicePathEnd (TempDevicePath)) { + TempDevicePath = NextDevicePathNode (TempDevicePath); + } + + TempDevicePath->SubType = END_INSTANCE_DEVICE_PATH_SUBTYPE; + TempDevicePath = NextDevicePathNode (TempDevicePath); + CopyMem (TempDevicePath, DevicePathInstance, InstanceSize); + } + + return NewDevicePath; +} + +/** + Creates a copy of the current device path instance and returns a pointer to the next device path + instance. + + This function creates a copy of the current device path instance. It also updates + DevicePath to point to the next device path instance in the device path (or NULL + if no more) and updates Size to hold the size of the device path instance copy. + If DevicePath is NULL, then NULL is returned. + If DevicePath points to a invalid device path, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + If Size is NULL, then ASSERT(). + + @param DevicePath On input, this holds the pointer to the current + device path instance. On output, this holds + the pointer to the next device path instance + or NULL if there are no more device path + instances in the device path pointer to a + device path data structure. + @param Size On output, this holds the size of the device + path instance, in bytes or zero, if DevicePath + is NULL. + + @return A pointer to the current device path instance. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibGetNextDevicePathInstance ( + IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, + OUT UINTN *Size + ) +{ + EFI_DEVICE_PATH_PROTOCOL *DevPath; + EFI_DEVICE_PATH_PROTOCOL *ReturnValue; + UINT8 Temp; + + ASSERT (Size != NULL); + + if (DevicePath == NULL || *DevicePath == NULL) { + *Size = 0; + return NULL; + } + + if (!IsDevicePathValid (*DevicePath, 0)) { + return NULL; + } + + // + // Find the end of the device path instance + // + DevPath = *DevicePath; + while (!IsDevicePathEndType (DevPath)) { + DevPath = NextDevicePathNode (DevPath); + } + + // + // Compute the size of the device path instance + // + *Size = ((UINTN) DevPath - (UINTN) (*DevicePath)) + sizeof (EFI_DEVICE_PATH_PROTOCOL); + + // + // Make a copy and return the device path instance + // + Temp = DevPath->SubType; + DevPath->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE; + ReturnValue = DuplicateDevicePath (*DevicePath); + DevPath->SubType = Temp; + + // + // If DevPath is the end of an entire device path, then another instance + // does not follow, so *DevicePath is set to NULL. + // + if (DevicePathSubType (DevPath) == END_ENTIRE_DEVICE_PATH_SUBTYPE) { + *DevicePath = NULL; + } else { + *DevicePath = NextDevicePathNode (DevPath); + } + + return ReturnValue; +} + +/** + Creates a device node. + + This function creates a new device node in a newly allocated buffer of size + NodeLength and initializes the device path node header with NodeType and NodeSubType. + The new device path node is returned. + If NodeLength is smaller than a device path header, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param NodeType The device node type for the new device node. + @param NodeSubType The device node sub-type for the new device node. + @param NodeLength The length of the new device node. + + @return The new device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibCreateDeviceNode ( + IN UINT8 NodeType, + IN UINT8 NodeSubType, + IN UINT16 NodeLength + ) +{ + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + + if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) { + // + // NodeLength is less than the size of the header. + // + return NULL; + } + + DevicePath = AllocateZeroPool (NodeLength); + if (DevicePath != NULL) { + DevicePath->Type = NodeType; + DevicePath->SubType = NodeSubType; + SetDevicePathNodeLength (DevicePath, NodeLength); + } + + return DevicePath; +} + +/** + Determines if a device path is single or multi-instance. + + This function returns TRUE if the device path specified by DevicePath is + multi-instance. + Otherwise, FALSE is returned. + If DevicePath is NULL or invalid, then FALSE is returned. + + @param DevicePath A pointer to a device path data structure. + + @retval TRUE DevicePath is multi-instance. + @retval FALSE DevicePath is not multi-instance, or DevicePath + is NULL or invalid. + +**/ +BOOLEAN +EFIAPI +UefiDevicePathLibIsDevicePathMultiInstance ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ) +{ + CONST EFI_DEVICE_PATH_PROTOCOL *Node; + + if (DevicePath == NULL) { + return FALSE; + } + + if (!IsDevicePathValid (DevicePath, 0)) { + return FALSE; + } + + Node = DevicePath; + while (!IsDevicePathEnd (Node)) { + if (IsDevicePathEndInstance (Node)) { + return TRUE; + } + + Node = NextDevicePathNode (Node); + } + + return FALSE; +} + + +/** + Retrieves the device path protocol from a handle. + + This function returns the device path protocol from the handle specified by Handle. + If Handle is NULL or Handle does not contain a device path protocol, then NULL + is returned. + + @param Handle The handle from which to retrieve the device + path protocol. + + @return The device path protocol from the handle specified by Handle. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +DevicePathFromHandle ( + IN EFI_HANDLE Handle + ) +{ + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_STATUS Status; + + Status = gBS->HandleProtocol ( + Handle, + &gEfiDevicePathProtocolGuid, + (VOID *) &DevicePath + ); + if (EFI_ERROR (Status)) { + DevicePath = NULL; + } + return DevicePath; +} + +/** + Allocates a device path for a file and appends it to an existing device path. + + If Device is a valid device handle that contains a device path protocol, then a device path for + the file specified by FileName is allocated and appended to the device path associated with the + handle Device. The allocated device path is returned. If Device is NULL or Device is a handle + that does not support the device path protocol, then a device path containing a single device + path node for the file specified by FileName is allocated and returned. + The memory for the new device path is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + If FileName is NULL, then ASSERT(). + If FileName is not aligned on a 16-bit boundary, then ASSERT(). + + @param Device A pointer to a device handle. This parameter + is optional and may be NULL. + @param FileName A pointer to a Null-terminated Unicode string. + + @return The allocated device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +FileDevicePath ( + IN EFI_HANDLE Device, OPTIONAL + IN CONST CHAR16 *FileName + ) +{ + UINTN Size; + FILEPATH_DEVICE_PATH *FilePath; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; + + DevicePath = NULL; + + Size = StrSize (FileName); + FileDevicePath = AllocatePool (Size + SIZE_OF_FILEPATH_DEVICE_PATH + END_DEVICE_PATH_LENGTH); + if (FileDevicePath != NULL) { + FilePath = (FILEPATH_DEVICE_PATH *) FileDevicePath; + FilePath->Header.Type = MEDIA_DEVICE_PATH; + FilePath->Header.SubType = MEDIA_FILEPATH_DP; + CopyMem (&FilePath->PathName, FileName, Size); + SetDevicePathNodeLength (&FilePath->Header, Size + SIZE_OF_FILEPATH_DEVICE_PATH); + SetDevicePathEndNode (NextDevicePathNode (&FilePath->Header)); + + if (Device != NULL) { + DevicePath = DevicePathFromHandle (Device); + } + + DevicePath = AppendDevicePath (DevicePath, FileDevicePath); + FreePool (FileDevicePath); + } + + return DevicePath; +} + diff --git a/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLib.c b/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLib.c new file mode 100644 index 0000000..6ec580d --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLib.c @@ -0,0 +1,354 @@ +/** @file + Device Path services. The thing to remember is device paths are built out of + nodes. The device path is terminated by an end node that is length + sizeof(EFI_DEVICE_PATH_PROTOCOL). That would be why there is sizeof(EFI_DEVICE_PATH_PROTOCOL) + all over this file. + + The only place where multi-instance device paths are supported is in + environment varibles. Multi-instance device paths should never be placed + on a Handle. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include "UefiDevicePathLib.h" + +/** + Returns the size of a device path in bytes. + + This function returns the size, in bytes, of the device path data structure + specified by DevicePath including the end of device path node. + If DevicePath is NULL or invalid, then 0 is returned. + + @param DevicePath A pointer to a device path data structure. + + @retval 0 If DevicePath is NULL or invalid. + @retval Others The size of a device path in bytes. + +**/ +UINTN +EFIAPI +GetDevicePathSize ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ) +{ + return UefiDevicePathLibGetDevicePathSize (DevicePath); +} + +/** + Creates a new copy of an existing device path. + + This function allocates space for a new copy of the device path specified by DevicePath. + If DevicePath is NULL, then NULL is returned. If the memory is successfully + allocated, then the contents of DevicePath are copied to the newly allocated + buffer, and a pointer to that buffer is returned. Otherwise, NULL is returned. + The memory for the new device path is allocated from EFI boot services memory. + It is the responsibility of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + + @retval NULL DevicePath is NULL or invalid. + @retval Others A pointer to the duplicated device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +DuplicateDevicePath ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ) +{ + return UefiDevicePathLibDuplicateDevicePath (DevicePath); +} + +/** + Creates a new device path by appending a second device path to a first device path. + + This function creates a new device path by appending a copy of SecondDevicePath + to a copy of FirstDevicePath in a newly allocated buffer. Only the end-of-device-path + device node from SecondDevicePath is retained. The newly created device path is + returned. If FirstDevicePath is NULL, then it is ignored, and a duplicate of + SecondDevicePath is returned. If SecondDevicePath is NULL, then it is ignored, + and a duplicate of FirstDevicePath is returned. If both FirstDevicePath and + SecondDevicePath are NULL, then a copy of an end-of-device-path is returned. + + If there is not enough memory for the newly allocated buffer, then NULL is returned. + The memory for the new device path is allocated from EFI boot services memory. + It is the responsibility of the caller to free the memory allocated. + + @param FirstDevicePath A pointer to a device path data structure. + @param SecondDevicePath A pointer to a device path data structure. + + @retval NULL If there is not enough memory for the newly allocated buffer. + @retval NULL If FirstDevicePath or SecondDevicePath is invalid. + @retval Others A pointer to the new device path if success. + Or a copy an end-of-device-path if both FirstDevicePath and SecondDevicePath are NULL. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +AppendDevicePath ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath OPTIONAL + ) +{ + return UefiDevicePathLibAppendDevicePath (FirstDevicePath, SecondDevicePath); +} + +/** + Creates a new path by appending the device node to the device path. + + This function creates a new device path by appending a copy of the device node + specified by DevicePathNode to a copy of the device path specified by DevicePath + in an allocated buffer. The end-of-device-path device node is moved after the + end of the appended device node. + If DevicePathNode is NULL then a copy of DevicePath is returned. + If DevicePath is NULL then a copy of DevicePathNode, followed by an end-of-device + path device node is returned. + If both DevicePathNode and DevicePath are NULL then a copy of an end-of-device-path + device node is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + @param DevicePathNode A pointer to a single device path node. + + @retval NULL If there is not enough memory for the new device path. + @retval Others A pointer to the new device path if success. + A copy of DevicePathNode followed by an end-of-device-path node + if both FirstDevicePath and SecondDevicePath are NULL. + A copy of an end-of-device-path node if both FirstDevicePath + and SecondDevicePath are NULL. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +AppendDevicePathNode ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode OPTIONAL + ) +{ + return UefiDevicePathLibAppendDevicePathNode (DevicePath, DevicePathNode); +} + +/** + Creates a new device path by appending the specified device path instance to the specified device + path. + + This function creates a new device path by appending a copy of the device path + instance specified by DevicePathInstance to a copy of the device path specified + by DevicePath in a allocated buffer. + The end-of-device-path device node is moved after the end of the appended device + path instance and a new end-of-device-path-instance node is inserted between. + If DevicePath is NULL, then a copy if DevicePathInstance is returned. + If DevicePathInstance is NULL, then NULL is returned. + If DevicePath or DevicePathInstance is invalid, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + @param DevicePathInstance A pointer to a device path instance. + + @return A pointer to the new device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +AppendDevicePathInstance ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance OPTIONAL + ) +{ + return UefiDevicePathLibAppendDevicePathInstance (DevicePath, DevicePathInstance); +} + +/** + Creates a copy of the current device path instance and returns a pointer to the next device path + instance. + + This function creates a copy of the current device path instance. It also updates + DevicePath to point to the next device path instance in the device path (or NULL + if no more) and updates Size to hold the size of the device path instance copy. + If DevicePath is NULL, then NULL is returned. + If DevicePath points to a invalid device path, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + If Size is NULL, then ASSERT(). + + @param DevicePath On input, this holds the pointer to the current + device path instance. On output, this holds + the pointer to the next device path instance + or NULL if there are no more device path + instances in the device path pointer to a + device path data structure. + @param Size On output, this holds the size of the device + path instance, in bytes or zero, if DevicePath + is NULL. + + @return A pointer to the current device path instance. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +GetNextDevicePathInstance ( + IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, + OUT UINTN *Size + ) +{ + return UefiDevicePathLibGetNextDevicePathInstance (DevicePath, Size); +} + +/** + Creates a device node. + + This function creates a new device node in a newly allocated buffer of size + NodeLength and initializes the device path node header with NodeType and NodeSubType. + The new device path node is returned. + If NodeLength is smaller than a device path header, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param NodeType The device node type for the new device node. + @param NodeSubType The device node sub-type for the new device node. + @param NodeLength The length of the new device node. + + @return The new device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +CreateDeviceNode ( + IN UINT8 NodeType, + IN UINT8 NodeSubType, + IN UINT16 NodeLength + ) +{ + return UefiDevicePathLibCreateDeviceNode (NodeType, NodeSubType, NodeLength); +} + +/** + Determines if a device path is single or multi-instance. + + This function returns TRUE if the device path specified by DevicePath is + multi-instance. + Otherwise, FALSE is returned. + If DevicePath is NULL or invalid, then FALSE is returned. + + @param DevicePath A pointer to a device path data structure. + + @retval TRUE DevicePath is multi-instance. + @retval FALSE DevicePath is not multi-instance, or DevicePath + is NULL or invalid. + +**/ +BOOLEAN +EFIAPI +IsDevicePathMultiInstance ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ) +{ + return UefiDevicePathLibIsDevicePathMultiInstance (DevicePath); +} + +/** + Converts a device node to its string representation. + + @param DeviceNode A Pointer to the device node to be converted. + @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation + of the display node is used, where applicable. If DisplayOnly + is FALSE, then the longer text representation of the display node + is used. + @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text + representation for a device node can be used, where applicable. + + @return A pointer to the allocated text representation of the device node or NULL if DeviceNode + is NULL or there was insufficient memory. + +**/ +CHAR16 * +EFIAPI +ConvertDeviceNodeToText ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode, + IN BOOLEAN DisplayOnly, + IN BOOLEAN AllowShortcuts + ) +{ + return NULL; +} + +/** + Converts a device path to its text representation. + + @param DevicePath A Pointer to the device to be converted. + @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation + of the display node is used, where applicable. If DisplayOnly + is FALSE, then the longer text representation of the display node + is used. + @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text + representation for a device node can be used, where applicable. + + @return A pointer to the allocated text representation of the device path or + NULL if DeviceNode is NULL or there was insufficient memory. + +**/ +CHAR16 * +EFIAPI +ConvertDevicePathToText ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN BOOLEAN DisplayOnly, + IN BOOLEAN AllowShortcuts + ) +{ + return NULL; +} + +/** + Convert text to the binary representation of a device node. + + @param TextDeviceNode TextDeviceNode points to the text representation of a device + node. Conversion starts with the first character and continues + until the first non-device node character. + + @return A pointer to the EFI device node or NULL if TextDeviceNode is NULL or there was + insufficient memory or text unsupported. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +ConvertTextToDeviceNode ( + IN CONST CHAR16 *TextDeviceNode + ) +{ + return NULL; +} + +/** + Convert text to the binary representation of a device path. + + + @param TextDevicePath TextDevicePath points to the text representation of a device + path. Conversion starts with the first character and continues + until the first non-device node character. + + @return A pointer to the allocated device path or NULL if TextDeviceNode is NULL or + there was insufficient memory. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +ConvertTextToDevicePath ( + IN CONST CHAR16 *TextDevicePath + ) +{ + return NULL; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLib.h b/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLib.h new file mode 100644 index 0000000..8e9b8f8 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLib.h @@ -0,0 +1,451 @@ +/** @file + Definition for Device Path library. + +Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _UEFI_DEVICE_PATH_LIB_H_ +#define _UEFI_DEVICE_PATH_LIB_H_ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define IS_COMMA(a) ((a) == L',') +#define IS_HYPHEN(a) ((a) == L'-') +#define IS_DOT(a) ((a) == L'.') +#define IS_LEFT_PARENTH(a) ((a) == L'(') +#define IS_RIGHT_PARENTH(a) ((a) == L')') +#define IS_SLASH(a) ((a) == L'/') +#define IS_NULL(a) ((a) == L'\0') + + +// +// Private Data structure +// +typedef struct { + CHAR16 *Str; + UINTN Count; + UINTN Capacity; +} POOL_PRINT; + +typedef +EFI_DEVICE_PATH_PROTOCOL * +(*DEVICE_PATH_FROM_TEXT) ( + IN CHAR16 *Str + ); + +typedef +VOID +(*DEVICE_PATH_TO_TEXT) ( + IN OUT POOL_PRINT *Str, + IN VOID *DevicePath, + IN BOOLEAN DisplayOnly, + IN BOOLEAN AllowShortcuts + ); + +typedef struct { + UINT8 Type; + UINT8 SubType; + DEVICE_PATH_TO_TEXT Function; +} DEVICE_PATH_TO_TEXT_TABLE; + +typedef struct { + UINT8 Type; + CHAR16 *Text; +} DEVICE_PATH_TO_TEXT_GENERIC_TABLE; + +typedef struct { + CHAR16 *DevicePathNodeText; + DEVICE_PATH_FROM_TEXT Function; +} DEVICE_PATH_FROM_TEXT_TABLE; + +typedef struct { + BOOLEAN ClassExist; + UINT8 Class; + BOOLEAN SubClassExist; + UINT8 SubClass; +} USB_CLASS_TEXT; + +#define USB_CLASS_AUDIO 1 +#define USB_CLASS_CDCCONTROL 2 +#define USB_CLASS_HID 3 +#define USB_CLASS_IMAGE 6 +#define USB_CLASS_PRINTER 7 +#define USB_CLASS_MASS_STORAGE 8 +#define USB_CLASS_HUB 9 +#define USB_CLASS_CDCDATA 10 +#define USB_CLASS_SMART_CARD 11 +#define USB_CLASS_VIDEO 14 +#define USB_CLASS_DIAGNOSTIC 220 +#define USB_CLASS_WIRELESS 224 + +#define USB_CLASS_RESERVE 254 +#define USB_SUBCLASS_FW_UPDATE 1 +#define USB_SUBCLASS_IRDA_BRIDGE 2 +#define USB_SUBCLASS_TEST 3 + +#define RFC_1700_UDP_PROTOCOL 17 +#define RFC_1700_TCP_PROTOCOL 6 + +#pragma pack(1) + +typedef struct { + EFI_DEVICE_PATH_PROTOCOL Header; + EFI_GUID Guid; + UINT8 VendorDefinedData[1]; +} VENDOR_DEFINED_HARDWARE_DEVICE_PATH; + +typedef struct { + EFI_DEVICE_PATH_PROTOCOL Header; + EFI_GUID Guid; + UINT8 VendorDefinedData[1]; +} VENDOR_DEFINED_MESSAGING_DEVICE_PATH; + +typedef struct { + EFI_DEVICE_PATH_PROTOCOL Header; + EFI_GUID Guid; + UINT8 VendorDefinedData[1]; +} VENDOR_DEFINED_MEDIA_DEVICE_PATH; + +typedef struct { + EFI_DEVICE_PATH_PROTOCOL Header; + UINT32 Hid; + UINT32 Uid; + UINT32 Cid; + CHAR8 HidUidCidStr[3]; +} ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR; + +typedef struct { + EFI_DEVICE_PATH_PROTOCOL Header; + UINT16 NetworkProtocol; + UINT16 LoginOption; + UINT64 Lun; + UINT16 TargetPortalGroupTag; + CHAR8 TargetName[1]; +} ISCSI_DEVICE_PATH_WITH_NAME; + +typedef struct { + EFI_DEVICE_PATH_PROTOCOL Header; + EFI_GUID Guid; + UINT8 VendorDefinedData[1]; +} VENDOR_DEVICE_PATH_WITH_DATA; + +#pragma pack() + +/** + Returns the size of a device path in bytes. + + This function returns the size, in bytes, of the device path data structure + specified by DevicePath including the end of device path node. + If DevicePath is NULL or invalid, then 0 is returned. + + @param DevicePath A pointer to a device path data structure. + + @retval 0 If DevicePath is NULL or invalid. + @retval Others The size of a device path in bytes. + +**/ +UINTN +EFIAPI +UefiDevicePathLibGetDevicePathSize ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ); + +/** + Creates a new copy of an existing device path. + + This function allocates space for a new copy of the device path specified by DevicePath. + If DevicePath is NULL, then NULL is returned. If the memory is successfully + allocated, then the contents of DevicePath are copied to the newly allocated + buffer, and a pointer to that buffer is returned. Otherwise, NULL is returned. + The memory for the new device path is allocated from EFI boot services memory. + It is the responsibility of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + + @retval NULL DevicePath is NULL or invalid. + @retval Others A pointer to the duplicated device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibDuplicateDevicePath ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ); + +/** + Creates a new device path by appending a second device path to a first device path. + + This function creates a new device path by appending a copy of SecondDevicePath + to a copy of FirstDevicePath in a newly allocated buffer. Only the end-of-device-path + device node from SecondDevicePath is retained. The newly created device path is + returned. If FirstDevicePath is NULL, then it is ignored, and a duplicate of + SecondDevicePath is returned. If SecondDevicePath is NULL, then it is ignored, + and a duplicate of FirstDevicePath is returned. If both FirstDevicePath and + SecondDevicePath are NULL, then a copy of an end-of-device-path is returned. + + If there is not enough memory for the newly allocated buffer, then NULL is returned. + The memory for the new device path is allocated from EFI boot services memory. + It is the responsibility of the caller to free the memory allocated. + + @param FirstDevicePath A pointer to a device path data structure. + @param SecondDevicePath A pointer to a device path data structure. + + @retval NULL If there is not enough memory for the newly allocated buffer. + @retval NULL If FirstDevicePath or SecondDevicePath is invalid. + @retval Others A pointer to the new device path if success. + Or a copy an end-of-device-path if both FirstDevicePath and SecondDevicePath are NULL. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibAppendDevicePath ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath OPTIONAL + ); + +/** + Creates a new path by appending the device node to the device path. + + This function creates a new device path by appending a copy of the device node + specified by DevicePathNode to a copy of the device path specified by DevicePath + in an allocated buffer. The end-of-device-path device node is moved after the + end of the appended device node. + If DevicePathNode is NULL then a copy of DevicePath is returned. + If DevicePath is NULL then a copy of DevicePathNode, followed by an end-of-device + path device node is returned. + If both DevicePathNode and DevicePath are NULL then a copy of an end-of-device-path + device node is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + @param DevicePathNode A pointer to a single device path node. + + @retval NULL If there is not enough memory for the new device path. + @retval Others A pointer to the new device path if success. + A copy of DevicePathNode followed by an end-of-device-path node + if both FirstDevicePath and SecondDevicePath are NULL. + A copy of an end-of-device-path node if both FirstDevicePath + and SecondDevicePath are NULL. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibAppendDevicePathNode ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode OPTIONAL + ); + +/** + Creates a new device path by appending the specified device path instance to the specified device + path. + + This function creates a new device path by appending a copy of the device path + instance specified by DevicePathInstance to a copy of the device path specified + by DevicePath in a allocated buffer. + The end-of-device-path device node is moved after the end of the appended device + path instance and a new end-of-device-path-instance node is inserted between. + If DevicePath is NULL, then a copy if DevicePathInstance is returned. + If DevicePathInstance is NULL, then NULL is returned. + If DevicePath or DevicePathInstance is invalid, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param DevicePath A pointer to a device path data structure. + @param DevicePathInstance A pointer to a device path instance. + + @return A pointer to the new device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibAppendDevicePathInstance ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, OPTIONAL + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance OPTIONAL + ); + +/** + Creates a copy of the current device path instance and returns a pointer to the next device path + instance. + + This function creates a copy of the current device path instance. It also updates + DevicePath to point to the next device path instance in the device path (or NULL + if no more) and updates Size to hold the size of the device path instance copy. + If DevicePath is NULL, then NULL is returned. + If DevicePath points to a invalid device path, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + If Size is NULL, then ASSERT(). + + @param DevicePath On input, this holds the pointer to the current + device path instance. On output, this holds + the pointer to the next device path instance + or NULL if there are no more device path + instances in the device path pointer to a + device path data structure. + @param Size On output, this holds the size of the device + path instance, in bytes or zero, if DevicePath + is NULL. + + @return A pointer to the current device path instance. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibGetNextDevicePathInstance ( + IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, + OUT UINTN *Size + ); + +/** + Creates a device node. + + This function creates a new device node in a newly allocated buffer of size + NodeLength and initializes the device path node header with NodeType and NodeSubType. + The new device path node is returned. + If NodeLength is smaller than a device path header, then NULL is returned. + If there is not enough memory to allocate space for the new device path, then + NULL is returned. + The memory is allocated from EFI boot services memory. It is the responsibility + of the caller to free the memory allocated. + + @param NodeType The device node type for the new device node. + @param NodeSubType The device node sub-type for the new device node. + @param NodeLength The length of the new device node. + + @return The new device path. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibCreateDeviceNode ( + IN UINT8 NodeType, + IN UINT8 NodeSubType, + IN UINT16 NodeLength + ); + +/** + Determines if a device path is single or multi-instance. + + This function returns TRUE if the device path specified by DevicePath is + multi-instance. + Otherwise, FALSE is returned. + If DevicePath is NULL or invalid, then FALSE is returned. + + @param DevicePath A pointer to a device path data structure. + + @retval TRUE DevicePath is multi-instance. + @retval FALSE DevicePath is not multi-instance, or DevicePath + is NULL or invalid. + +**/ +BOOLEAN +EFIAPI +UefiDevicePathLibIsDevicePathMultiInstance ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath + ); + + +/** + Converts a device path to its text representation. + + @param DevicePath A Pointer to the device to be converted. + @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation + of the display node is used, where applicable. If DisplayOnly + is FALSE, then the longer text representation of the display node + is used. + @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text + representation for a device node can be used, where applicable. + + @return A pointer to the allocated text representation of the device path or + NULL if DeviceNode is NULL or there was insufficient memory. + +**/ +CHAR16 * +EFIAPI +UefiDevicePathLibConvertDevicePathToText ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, + IN BOOLEAN DisplayOnly, + IN BOOLEAN AllowShortcuts + ); + +/** + Converts a device node to its string representation. + + @param DeviceNode A Pointer to the device node to be converted. + @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation + of the display node is used, where applicable. If DisplayOnly + is FALSE, then the longer text representation of the display node + is used. + @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text + representation for a device node can be used, where applicable. + + @return A pointer to the allocated text representation of the device node or NULL if DeviceNode + is NULL or there was insufficient memory. + +**/ +CHAR16 * +EFIAPI +UefiDevicePathLibConvertDeviceNodeToText ( + IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode, + IN BOOLEAN DisplayOnly, + IN BOOLEAN AllowShortcuts + ); + +/** + Convert text to the binary representation of a device node. + + @param TextDeviceNode TextDeviceNode points to the text representation of a device + node. Conversion starts with the first character and continues + until the first non-device node character. + + @return A pointer to the EFI device node or NULL if TextDeviceNode is NULL or there was + insufficient memory or text unsupported. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibConvertTextToDeviceNode ( + IN CONST CHAR16 *TextDeviceNode + ); + +/** + Convert text to the binary representation of a device path. + + + @param TextDevicePath TextDevicePath points to the text representation of a device + path. Conversion starts with the first character and continues + until the first non-device node character. + + @return A pointer to the allocated device path or NULL if TextDeviceNode is NULL or + there was insufficient memory. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +EFIAPI +UefiDevicePathLibConvertTextToDevicePath ( + IN CONST CHAR16 *TextDevicePath + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf b/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf new file mode 100644 index 0000000..536e57b --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf @@ -0,0 +1,43 @@ +## @file +# Instance of Device Path Library based on Memory Allocation Library. +# +# Device Path Library that layers on top of the Memory Allocation Library. +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = UefiDevicePathLibHost + FILE_GUID = 91c1677a-e57f-4191-8b8e-eb7711a716e0 + MODULE_TYPE = UEFI_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = DevicePathLib + + +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + DevicePathUtilities.c + UefiDevicePathLib.c + UefiDevicePathLib.h + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + BaseLib + MemoryAllocationLib + DebugLib + BaseMemoryLib + +[Pcd] + gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount ## SOMETIMES_CONSUMES + diff --git a/HBFA/UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.c b/HBFA/UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.c new file mode 100644 index 0000000..ccd40f3 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.c @@ -0,0 +1,57 @@ +/** @file + Entry point to a EFI/DXE driver. + +Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + + +#include + +#include + +#include +#include +#include +#include + + +/** + The entry point of PE/COFF Image for a DXE Driver, DXE Runtime Driver, DXE SMM + Driver, or UEFI Driver. + + This function is the entry point for a DXE Driver, DXE Runtime Driver, DXE SMM Driver, + or UEFI Driver. This function must call ProcessLibraryConstructorList() and + ProcessModuleEntryPointList(). If the return status from ProcessModuleEntryPointList() + is an error status, then ProcessLibraryDestructorList() must be called. The return + value from ProcessModuleEntryPointList() is returned. If _gDriverUnloadImageCount + is greater than zero, then an unload handler must be registered for this image + and the unload handler must invoke ProcessModuleUnloadList(). + If _gUefiDriverRevision is not zero and SystemTable->Hdr.Revision is less than + _gUefiDriverRevison, then return EFI_INCOMPATIBLE_VERSION. + + + @param ImageHandle The image handle of the DXE Driver, DXE Runtime Driver, + DXE SMM Driver, or UEFI Driver. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The DXE Driver, DXE Runtime Driver, DXE SMM + Driver, or UEFI Driver exited normally. + @retval EFI_INCOMPATIBLE_VERSION _gUefiDriverRevision is greater than + SystemTable->Hdr.Revision. + @retval Other Return value from ProcessModuleEntryPointList(). + +**/ +EFI_STATUS +EFIAPI +_ModuleEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + ASSERT(FALSE); + return EFI_UNSUPPORTED; +} + diff --git a/HBFA/UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf b/HBFA/UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf new file mode 100644 index 0000000..0fd220c --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf @@ -0,0 +1,61 @@ +## @file +# Module entry point library for UEFI driver, DXE driver and SMM driver. +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = UefiDriverEntryPointHost + FILE_GUID = CB86FEFE-621F-4C9E-98F3-845F7E7BBC2D + MODULE_TYPE = UEFI_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = UefiDriverEntryPoint|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER UEFI_DRIVER SMM_CORE DXE_SMM_DRIVER + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources] + UefiDriverEntryPointHost.c + + + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + UefiBootServicesTableLib + DebugLib + BaseLib + + +[Protocols] + gEfiLoadedImageProtocolGuid ## SOMETIMES_CONSUMES + + +# +# For UEFI drivers, these architectural protocols defined in PI 1.0 spec need +# to be appended and merged to the final dependency section. +# +[Depex.common.UEFI_DRIVER] + gEfiBdsArchProtocolGuid AND + gEfiCpuArchProtocolGuid AND + gEfiMetronomeArchProtocolGuid AND + gEfiMonotonicCounterArchProtocolGuid AND + gEfiRealTimeClockArchProtocolGuid AND + gEfiResetArchProtocolGuid AND + gEfiRuntimeArchProtocolGuid AND + gEfiSecurityArchProtocolGuid AND + gEfiTimerArchProtocolGuid AND + gEfiVariableWriteArchProtocolGuid AND + gEfiVariableArchProtocolGuid AND + gEfiWatchdogTimerArchProtocolGuid + diff --git a/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiDriverModel.c b/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiDriverModel.c new file mode 100644 index 0000000..ec63325 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiDriverModel.c @@ -0,0 +1,101 @@ +/** @file + Library functions that abstract driver model protocols + installation and uninstallation. + + Copyright (c) 2019, NVIDIA Corporation. All rights reserved. + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include "UefiLibInternal.h" + + +/** + Installs Driver Binding Protocol with optional Component Name and Component Name 2 Protocols. + + Initializes a driver by installing the Driver Binding Protocol together with the + optional Component Name and optional Component Name 2 protocols onto the driver's + DriverBindingHandle. If DriverBindingHandle is NULL, then the protocols are installed + onto a newly created handle. DriverBindingHandle is typically the same as the driver's + ImageHandle, but it can be different if the driver produces multiple Driver Binding Protocols. + If DriverBinding is NULL, then ASSERT(). + If the installation fails, then ASSERT(). + + @param ImageHandle The image handle of the driver. + @param SystemTable The EFI System Table that was passed to the driver's entry point. + @param DriverBinding A Driver Binding Protocol instance that this driver is producing. + @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this + parameter is NULL, then a new handle is created. + @param ComponentName A Component Name Protocol instance that this driver is producing. + @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing. + + @retval EFI_SUCCESS The protocol installation successfully completed. + @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols. + +**/ +EFI_STATUS +EFIAPI +EfiLibInstallDriverBindingComponentName2 ( + IN CONST EFI_HANDLE ImageHandle, + IN CONST EFI_SYSTEM_TABLE *SystemTable, + IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, + IN EFI_HANDLE DriverBindingHandle, + IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL + IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL + ) +{ + EFI_STATUS Status; + + ASSERT (DriverBinding != NULL); + + // + // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol + // + DriverBinding->ImageHandle = ImageHandle; + DriverBinding->DriverBindingHandle = DriverBindingHandle; + + if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) { + if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) { + Status = gBS->InstallMultipleProtocolInterfaces ( + &DriverBinding->DriverBindingHandle, + &gEfiDriverBindingProtocolGuid, DriverBinding, + NULL + ); + } else { + Status = gBS->InstallMultipleProtocolInterfaces ( + &DriverBinding->DriverBindingHandle, + &gEfiDriverBindingProtocolGuid, DriverBinding, + &gEfiComponentName2ProtocolGuid, ComponentName2, + NULL + ); + } + } else { + if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) { + Status = gBS->InstallMultipleProtocolInterfaces ( + &DriverBinding->DriverBindingHandle, + &gEfiDriverBindingProtocolGuid, DriverBinding, + &gEfiComponentNameProtocolGuid, ComponentName, + NULL + ); + } else { + Status = gBS->InstallMultipleProtocolInterfaces ( + &DriverBinding->DriverBindingHandle, + &gEfiDriverBindingProtocolGuid, DriverBinding, + &gEfiComponentNameProtocolGuid, ComponentName, + &gEfiComponentName2ProtocolGuid, ComponentName2, + NULL + ); + } + } + + // + // ASSERT if the call to InstallMultipleProtocolInterfaces() failed + // + ASSERT_EFI_ERROR (Status); + + return Status; +} + + diff --git a/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLib.c b/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLib.c new file mode 100644 index 0000000..f485540 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLib.c @@ -0,0 +1,157 @@ +/** @file + The UEFI Library provides functions and macros that simplify the development of + UEFI Drivers and UEFI Applications. These functions and macros help manage EFI + events, build simple locks utilizing EFI Task Priority Levels (TPLs), install + EFI Driver Model related protocols, manage Unicode string tables for UEFI Drivers, + and print messages on the console output and standard error devices. + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + + +#include "UefiLibInternal.h" + +/** + Compare whether two names of languages are identical. + + @param Language1 Name of language 1. + @param Language2 Name of language 2. + + @retval TRUE Language 1 and language 2 are the same. + @retval FALSE Language 1 and language 2 are not the same. + +**/ +BOOLEAN +CompareIso639LanguageCode ( + IN CONST CHAR8 *Language1, + IN CONST CHAR8 *Language2 + ) +{ + UINT32 Name1; + UINT32 Name2; + + Name1 = ReadUnaligned24 ((CONST UINT32 *) Language1); + Name2 = ReadUnaligned24 ((CONST UINT32 *) Language2); + + return (BOOLEAN) (Name1 == Name2); +} + +/** + This function looks up a Unicode string in UnicodeStringTable. + + If Language is a member of SupportedLanguages and a Unicode string is found in + UnicodeStringTable that matches the language code specified by Language, then + it is returned in UnicodeString. + + @param Language A pointer to an ASCII string containing the ISO 639-2 or the + RFC 4646 language code for the Unicode string to look up and + return. If Iso639Language is TRUE, then this ASCII string is + not assumed to be Null-terminated, and only the first three + characters are used. If Iso639Language is FALSE, then this ASCII + string must be Null-terminated. + @param SupportedLanguages A pointer to a Null-terminated ASCII string that contains a + set of ISO 639-2 or RFC 4646 language codes that the Unicode + string table supports. Language must be a member of this set. + If Iso639Language is TRUE, then this string contains one or more + ISO 639-2 language codes with no separator characters. If Iso639Language + is FALSE, then is string contains one or more RFC 4646 language + codes separated by ';'. + @param UnicodeStringTable A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE + is defined in "Related Definitions". + @param UnicodeString A pointer to the Null-terminated Unicode string from UnicodeStringTable + that matches the language specified by Language. + @param Iso639Language Specifies the supported language code format. If it is TRUE, then + Language and SupportedLanguages follow ISO 639-2 language code format. + Otherwise, they follow RFC 4646 language code format. + + + @retval EFI_SUCCESS The Unicode string that matches the language specified by Language + was found in the table of Unicode strings UnicodeStringTable, and + it was returned in UnicodeString. + @retval EFI_INVALID_PARAMETER Language is NULL. + @retval EFI_INVALID_PARAMETER UnicodeString is NULL. + @retval EFI_UNSUPPORTED SupportedLanguages is NULL. + @retval EFI_UNSUPPORTED UnicodeStringTable is NULL. + @retval EFI_UNSUPPORTED The language specified by Language is not a member of SupportedLanguages. + @retval EFI_UNSUPPORTED The language specified by Language is not supported by UnicodeStringTable. + +**/ +EFI_STATUS +EFIAPI +LookupUnicodeString2 ( + IN CONST CHAR8 *Language, + IN CONST CHAR8 *SupportedLanguages, + IN CONST EFI_UNICODE_STRING_TABLE *UnicodeStringTable, + OUT CHAR16 **UnicodeString, + IN BOOLEAN Iso639Language + ) +{ + BOOLEAN Found; + UINTN Index; + CHAR8 *LanguageString; + + // + // Make sure the parameters are valid + // + if (Language == NULL || UnicodeString == NULL) { + return EFI_INVALID_PARAMETER; + } + + // + // If there are no supported languages, or the Unicode String Table is empty, then the + // Unicode String specified by Language is not supported by this Unicode String Table + // + if (SupportedLanguages == NULL || UnicodeStringTable == NULL) { + return EFI_UNSUPPORTED; + } + + // + // Make sure Language is in the set of Supported Languages + // + Found = FALSE; + while (*SupportedLanguages != 0) { + if (Iso639Language) { + if (CompareIso639LanguageCode (Language, SupportedLanguages)) { + Found = TRUE; + break; + } + SupportedLanguages += 3; + } else { + for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++); + if ((AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) && (Language[Index] == 0)) { + Found = TRUE; + break; + } + SupportedLanguages += Index; + for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++); + } + } + + // + // If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED + // + if (!Found) { + return EFI_UNSUPPORTED; + } + + // + // Search the Unicode String Table for the matching Language specifier + // + while (UnicodeStringTable->Language != NULL) { + LanguageString = UnicodeStringTable->Language; + while (0 != *LanguageString) { + for (Index = 0 ;LanguageString[Index] != 0 && LanguageString[Index] != ';'; Index++); + if (AsciiStrnCmp(LanguageString, Language, Index) == 0) { + *UnicodeString = UnicodeStringTable->UnicodeString; + return EFI_SUCCESS; + } + LanguageString += Index; + for (Index = 0 ;LanguageString[Index] != 0 && LanguageString[Index] == ';'; Index++); + } + UnicodeStringTable++; + } + + return EFI_UNSUPPORTED; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLibHost.inf b/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLibHost.inf new file mode 100644 index 0000000..ac420a7 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLibHost.inf @@ -0,0 +1,47 @@ +## @file +# Instance of UEFI Library. +# +# The UEFI Library provides functions and macros that simplify the development of +# UEFI Drivers and UEFI Applications. These functions and macros help manage EFI +# events, build simple locks utilizing EFI Task Priority Levels (TPLs), install +# EFI Driver Model related protocols, manage Unicode string tables for UEFI Drivers, +# and print messages on the console output and standard error devices. +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = UefiLibHost + FILE_GUID = 3A6DF65D-806E-49FF-9CE5-074F49028378 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = UefiLib + + +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + UefiDriverModel.c + UefiLib.c + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + UefiBootServicesTableLib + +[Protocols] + gEfiComponentNameProtocolGuid | NOT gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable ## SOMETIMES_PRODUCES # User chooses to produce it + gEfiComponentName2ProtocolGuid | NOT gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable ## SOMETIMES_PRODUCES # User chooses to produce it + +[FeaturePcd] + gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable ## CONSUMES + gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable ## CONSUMES diff --git a/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLibInternal.h b/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLibInternal.h new file mode 100644 index 0000000..60b5297 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiLibHost/UefiLibInternal.h @@ -0,0 +1,39 @@ +/** @file + Internal include file for UefiLib. + + Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
    + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef __UEFI_LIB_INTERNAL_H_ +#define __UEFI_LIB_INTERNAL_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVarCertDB.c b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVarCertDB.c new file mode 100644 index 0000000..5c2ea7e --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVarCertDB.c @@ -0,0 +1,385 @@ +/** + Manage trusted certificate database. + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "OsVariable.h" +#include "AuthVarCertDB.h" + +extern LIST_ENTRY mVarListEntry; +CONST UINT32 gEfiCertDBAttr = (UINT32)(EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS | + EFI_VARIABLE_NON_VOLATILE | + EFI_VARIABLE_RUNTIME_ACCESS | + EFI_VARIABLE_BOOTSERVICE_ACCESS); + +/* + Function to get "certdb" variable according to Attributes parameter. + + @param[in] Attributes Attributes of authenticated variable. + @param[out] CertDBPtr Point to "certdb" variable buffer. + + @retval EFI_SUCCESS Find matching certs and output parameters. + @retval EFI_INVALID_PARAMETER CertDBPtr is NULL or Attributes is invalid. + @retval EFI_SECURITY_VIOLATION CertDB structure has been corrupted. + @retval EFI_NOT_FOUND Fail to find matching certs. +*/ +EFI_STATUS +GetCertDB ( + IN UINT32 Attributes, + OUT VOID **CertDBPtr + ) +{ + CHAR16 *CertDBName; + VARIABLE_INFO_PRIVATE *VariableInfo; + + if (CertDBPtr == NULL) { + return EFI_INVALID_PARAMETER; + } + + if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) { + CertDBName = EFI_CERT_DB; + } else { + return EFI_INVALID_PARAMETER; + } + + VariableInfo = FindVariableInfoPtr (CertDBName, &gEfiCertDbGuid); + if (VariableInfo == NULL || VariableInfo->Size == 0) { + return EFI_NOT_FOUND; + } + + if (*(UINT32 *)(VariableInfo->Buffer) != VariableInfo->Size) { + return EFI_SECURITY_VIOLATION; + } + + *CertDBPtr = VariableInfo; + return EFI_SUCCESS; +} + +/** + Find matching signer's certificates for common authenticated variable + by corresponding VariableName and VendorGuid from "certdb". + + @param[in] VariableName Name of authenticated Variable. + @param[in] VendorGuid Vendor GUID of authenticated Variable. + @param[in] Data Pointer to variable "certdb". + @param[in] DataSize Size of variable "certdb". + @param[out] CertNodeOffset Offset of matching AUTH_CERT_DB_DATA, from starting of Data. + @param[out] CertNodeSize Length of AUTH_CERT_DB_DATA in bytes. + @param[out] CertDataPtr Pointer to the matching CertData. + @param[out] CertDataSize Lenght of CertData in bytes. + + @retval EFI_INVALID_PARAMETER Any input parameter is invalid. + @retval EFI_NOT_FOUND Fail to find matching certs. + @retval EFI_SUCCESS Find matching certs and output parameters. +**/ +EFI_STATUS +FindCertsFromDb ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + OUT UINT32 *CertNodeOffset OPTIONAL, + OUT UINT32 *CertNodeSize OPTIONAL, + OUT UINT8 **CertDataPtr OPTIONAL, + OUT UINT32 *CertDataSize OPTIONAL + ) +{ + EFI_STATUS Status; + VARIABLE_INFO_PRIVATE *VariableInfo; + AUTH_CERT_DB_DATA *Ptr; + UINT32 CertDBListSize; + UINT32 Offset; + UINT32 NodeSize; + UINT32 NameSize; + UINT32 DataSize; + + Status = EFI_SUCCESS; + + if ((VariableName == NULL) || (VendorGuid == NULL)) { + return EFI_INVALID_PARAMETER; + } + + Status = GetCertDB (Attributes, (VOID **)&VariableInfo); + if (EFI_ERROR (Status)) { + return Status; + } + + if (VariableInfo->Buffer == NULL || VariableInfo->Size == 0) { + return EFI_NOT_FOUND; + } + + if (VariableInfo->Size != *((UINT32 *)VariableInfo->Buffer)) { + return EFI_NOT_FOUND; + } + + CertDBListSize = (UINT32)VariableInfo->Size; + Offset = sizeof (UINT32); + + // + // Traverse CertDB and try to matching certs. + // + while (Offset < CertDBListSize) { + Ptr = (AUTH_CERT_DB_DATA *) ((UINT8 *)VariableInfo->Buffer + Offset); + + NodeSize = ReadUnaligned32 (&Ptr->CertNodeSize); + NameSize = ReadUnaligned32 (&Ptr->NameSize); + DataSize = ReadUnaligned32 (&Ptr->CertDataSize); + + if (NodeSize != sizeof (EFI_GUID) + sizeof (UINT32) * 3 + DataSize + NameSize * sizeof (CHAR16)) { + return EFI_NOT_FOUND; + } + + Offset = Offset + sizeof (EFI_GUID) + sizeof (UINT32) * 3; + if ((CompareGuid (&Ptr->VendorGuid, VendorGuid) == 0) && + (NameSize == StrLen (VariableName)) && + (CompareMem (VariableName, VariableInfo->Buffer + Offset, NameSize * sizeof (CHAR16)) == 0) + ) { + if (CertNodeOffset != NULL) { + *CertNodeOffset = (UINT32) ((UINT8 *)Ptr - VariableInfo->Buffer); + } + if (CertNodeSize != NULL) { + *CertNodeSize = NodeSize; + } + if (CertDataPtr != NULL) { + *CertDataPtr = (UINT8 *)Ptr + sizeof (EFI_GUID) + sizeof (UINT32) * 3 + NameSize * sizeof (CHAR16); + } + if (CertDataSize != NULL) { + *CertDataSize = DataSize; + } + return EFI_SUCCESS; + } + Offset = Offset + NameSize * sizeof (CHAR16) + DataSize; + } + + return EFI_NOT_FOUND; +} + +/** + Delete matching signer's certificates when deleting common authenticated + variable by corresponding VariableName and VendorGuid from "certdb". + + @param[in] VariableName Name of authenticated Variable. + @param[in] VendorGuid Vendor GUID of authenticated Variable. + @param[in] Attributes Attributes of authenticated variable. + + @retval EFI_INVALID_PARAMETER Any input parameter is invalid. + @retval EFI_NOT_FOUND Fail to find "certdb" or matching certs. + @retval EFI_OUT_OF_RESOURCES The operation is failed due to lack of resources. + @retval EFI_SUCCESS The operation is completed successfully. +**/ +EFI_STATUS +DeleteCertsFromDb ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes + ) +{ + EFI_STATUS Status; + VARIABLE_INFO_PRIVATE *VariableInfo; + UINT32 CertNodeOffset; + UINT32 CertNodeSize; + UINT8 *NewBuffer; + UINTN NewBufferSize; + + Status = EFI_SUCCESS; + VariableInfo = NULL; + NewBuffer = NULL; + CertNodeOffset = 0; + CertNodeSize = 0; + + if (VariableName == NULL || VendorGuid == NULL) { + return EFI_INVALID_PARAMETER; + } + + Status = GetCertDB (Attributes, (VOID **)&VariableInfo); + if (EFI_ERROR (Status)) { + return Status; + } + + Status = FindCertsFromDb ( + VariableName, + VendorGuid, + Attributes, + &CertNodeOffset, + &CertNodeSize, + NULL, + NULL + ); + if (EFI_ERROR (Status)) { + return Status; + } + + NewBufferSize = VariableInfo->Size - CertNodeSize; + + // + // If the NewBufferSize == 4, it means no AUTH_CERT_DB_DATA in "certDB". + // + if (NewBufferSize == 4) { + return DeleteVariableList (&mVarListEntry, VariableInfo->Name, &gEfiCertDbGuid); + } + + NewBuffer = (UINT8 *)malloc (NewBufferSize); + if (NewBuffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + // + // Copy first-part from old buffer to new buffer. + // + CopyMem (NewBuffer, VariableInfo->Buffer, CertNodeOffset); + // + // Copy second-part to new buffer. + // + CopyMem ( + NewBuffer + CertNodeOffset, + VariableInfo->Buffer + CertNodeOffset + CertNodeSize, + VariableInfo->Size - CertNodeOffset - CertNodeSize + ); + + Status = CreateVariableList ( + &mVarListEntry, + VariableInfo->Name, + &gEfiCertDbGuid, + gEfiCertDBAttr, + NULL, + NewBufferSize, + NewBuffer, + FALSE + ); + + FREE_NON_NULL_PTR (NewBuffer); + return Status; +} + +/** + Insert signer's certificates for common authenticated variable + with VariableName and VendorGuid in AUTH_CERT_DB_DATA to "certdb". + + @param[in] VariableName Name of authenticated Variable. + @param[in] VendorGuid Vendor GUID of authenticated Variable. + @param[in] Attributes Attributes of authenticated variable. + @param[in] SignerCert Signer certificate data. + @param[in] SignerCertSize Length of signer certificate. + @param[in] TopLevelCert Top-level certificate data. + @param[in] TopLevelCertSize Length of top-level certificate. + + + @retval EFI_INVALID_PARAMETER Any input parameter is invalid. + @retval EFI_ACCESS_DENIED An AUTH_CERT_DB_DATA entry with same VariableName + and VendorGuid already exists. + @retval EFI_OUT_OF_RESOURCES The operation is failed due to lack of resources. + @retval EFI_SUCCESS Insert an AUTH_CERT_DB_DATA entry to "certdb" or "certdbv" +**/ +EFI_STATUS +InsertCertsToDb ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + IN UINT8 *SignerCert, + IN UINTN SignerCertSize, + IN UINT8 *TopLevelCert, + IN UINTN TopLevelCertSize + ) +{ + EFI_STATUS Status; + UINT8 Sha256Digest[SHA256_DIGEST_SIZE]; + UINT8 *NewBuffer; + UINTN NewBufferSize; + UINT32 NameSize; + UINT32 NodeSize; + UINT32 DataSize; + UINT32 Offset; + CHAR16 *CertDBName; + + Status = EFI_SUCCESS; + NewBuffer = NULL; + + if (VariableName == NULL || VendorGuid == NULL || SignerCert == NULL || TopLevelCert == NULL) { + return EFI_INVALID_PARAMETER; + } + + if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) { + CertDBName = EFI_CERT_DB; + } else { + return EFI_INVALID_PARAMETER; + } + + Status = FindCertsFromDb (VariableName, VendorGuid, Attributes, NULL, NULL, NULL, NULL); + if (Status == EFI_SUCCESS) { + return EFI_SECURITY_VIOLATION; + } else if (EFI_ERROR (Status) && Status != EFI_NOT_FOUND) { + return Status; + } + +#if 0 + Status = CalculatePrivAuthVarSignChainSHA256Digest ( + SignerCert, + SignerCertSize, + TopLevelCert, + TopLevelCertSize, + Sha256Digest + ); + if (EFI_ERROR (Status)) { + return Status; + } +#endif + + /// + /// AUTH_CERT_DB_DATA format: + /// + /// EFI_GUID VendorGuid; + /// UINT32 CertNodeSize; + /// UINT32 NameSize; + /// UINT32 CertDataSize; + /// CHAR16 VariableName[NameSize]; + /// UINT8 CertData[CertDataSize]; + /// + + NameSize = (UINT32)(StrLen (VariableName)); + DataSize = SHA256_DIGEST_SIZE; + NodeSize = sizeof (AUTH_CERT_DB_DATA) + NameSize * sizeof (CHAR16) + DataSize; + + NewBufferSize = sizeof (UINT32) + NodeSize; + + NewBuffer = (UINT8 *)malloc (NewBufferSize); + if (NewBuffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Offset = 0; + CopyMem (NewBuffer + Offset, &NewBufferSize, sizeof (UINT32)); + Offset = Offset + sizeof (UINT32); + + CopyMem (NewBuffer + Offset, VendorGuid, sizeof (EFI_GUID)); + Offset = Offset + sizeof (EFI_GUID); + + CopyMem (NewBuffer + Offset, &NodeSize, sizeof (UINT32)); + Offset = Offset + sizeof (UINT32); + + CopyMem (NewBuffer + Offset, &NameSize, sizeof (UINT32)); + Offset = Offset + sizeof (UINT32); + + CopyMem (NewBuffer + Offset, &DataSize, sizeof (UINT32)); + Offset = Offset + sizeof (UINT32); + + CopyMem (NewBuffer + Offset, VariableName, NameSize * sizeof (CHAR16)); + Offset = Offset + NameSize * sizeof (CHAR16); + + CopyMem (NewBuffer + Offset, Sha256Digest, DataSize); + + Status = CreateVariableList ( + &mVarListEntry, + CertDBName, + &gEfiCertDbGuid, + gEfiCertDBAttr, + NULL, + NewBufferSize, + NewBuffer, + FALSE + ); + + FREE_NON_NULL_PTR (NewBuffer); + return Status; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVarCertDB.h b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVarCertDB.h new file mode 100644 index 0000000..bab74f2 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVarCertDB.h @@ -0,0 +1,125 @@ +/** + Header file for trusted certificate database Management. + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _AUTH_CERTDB_H +#define _AUTH_CERTDB_H + +#include "VariableCommon.h" + +/// +/// "certdb" variable stores the signer's certificates for non PK/KEK/DB/DBX +/// variables with EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS|EFI_VARIABLE_NON_VOLATILE set. +/// +/// GUID: gEfiCertDbGuid +/// +/// We need maintain atomicity. +/// +/// Format: +/// +----------------------------+ +/// | UINT32 | <-- CertDbListSize, including this UINT32 +/// +----------------------------+ +/// | AUTH_CERT_DB_DATA | <-- First CERT +/// +----------------------------+ +/// | ........ | +/// +----------------------------+ +/// | AUTH_CERT_DB_DATA | <-- Last CERT +/// +----------------------------+ +/// + +#define EFI_CERT_DB L"certdb" + +#pragma pack(1) +typedef struct { + EFI_GUID VendorGuid; + UINT32 CertNodeSize; + UINT32 NameSize; + UINT32 CertDataSize; + /// CHAR16 VariableName[NameSize]; + /// UINT8 CertData[CertDataSize]; +} AUTH_CERT_DB_DATA; +#pragma pack() + +/** + Find matching signer's certificates for common authenticated variable + by corresponding VariableName and VendorGuid from "certdb". + + @param[in] VariableName Name of authenticated Variable. + @param[in] VendorGuid Vendor GUID of authenticated Variable. + @param[in] Data Pointer to variable "certdb". + @param[in] DataSize Size of variable "certdb". + @param[out] CertNodeOffset Offset of matching AUTH_CERT_DB_DATA, from starting of Data. + @param[out] CertNodeSize Length of AUTH_CERT_DB_DATA in bytes. + @param[out] CertDataPtr Pointer to the matching CertData. + @param[out] CertDataSize Lenght of CertData in bytes. + + @retval EFI_INVALID_PARAMETER Any input parameter is invalid. + @retval EFI_NOT_FOUND Fail to find matching certs. + @retval EFI_SUCCESS Find matching certs and output parameters. +**/ +EFI_STATUS +FindCertsFromDb ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + OUT UINT32 *CertNodeOffset OPTIONAL, + OUT UINT32 *CertNodeSize OPTIONAL, + OUT UINT8 **CertDataPtr OPTIONAL, + OUT UINT32 *CertDataSize OPTIONAL + ); + +/** + Delete matching signer's certificates when deleting common authenticated + variable by corresponding VariableName and VendorGuid from "certdb". + + @param[in] VariableName Name of authenticated Variable. + @param[in] VendorGuid Vendor GUID of authenticated Variable. + @param[in] Attributes Attributes of authenticated variable. + + @retval EFI_INVALID_PARAMETER Any input parameter is invalid. + @retval EFI_NOT_FOUND Fail to find "certdb" or matching certs. + @retval EFI_OUT_OF_RESOURCES The operation is failed due to lack of resources. + @retval EFI_SUCCESS The operation is completed successfully. +**/ +EFI_STATUS +DeleteCertsFromDb ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes + ); + +/** + Insert signer's certificates for common authenticated variable + with VariableName and VendorGuid in AUTH_CERT_DB_DATA to "certdb". + + @param[in] VariableName Name of authenticated Variable. + @param[in] VendorGuid Vendor GUID of authenticated Variable. + @param[in] Attributes Attributes of authenticated variable. + @param[in] SignerCert Signer certificate data. + @param[in] SignerCertSize Length of signer certificate. + @param[in] TopLevelCert Top-level certificate data. + @param[in] TopLevelCertSize Length of top-level certificate. + + + @retval EFI_INVALID_PARAMETER Any input parameter is invalid. + @retval EFI_ACCESS_DENIED An AUTH_CERT_DB_DATA entry with same VariableName + and VendorGuid already exists. + @retval EFI_OUT_OF_RESOURCES The operation is failed due to lack of resources. + @retval EFI_SUCCESS Insert an AUTH_CERT_DB_DATA entry to "certdb" or "certdbv" +**/ +EFI_STATUS +InsertCertsToDb ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + IN UINT8 *SignerCert, + IN UINTN SignerCertSize, + IN UINT8 *TopLevelCert, + IN UINTN TopLevelCertSize + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVariable.c b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVariable.c new file mode 100644 index 0000000..2b42da7 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVariable.c @@ -0,0 +1,479 @@ +/** + Manage & verify Timebased Authenticated varaibles. + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "AuthVariable.h" +#include + +extern LIST_ENTRY mVarListEntry; + +/* + Function will split the "Buffer" parameter and getting the Auth2 + descriptor, and doing verification. + + @param[in] Attributes Attribute value of the variable. + @param[in] Buffer Data pointer. + @param[in] BufferSize The size of Data in bytes. + @param[in] OrgTimeStamp Pointer to original time stamp, + original variable is not found if NULL. + + @retval EFI_SECURITY_VIOLATION Verification fail. + @retval EFI_SUCCESS Operation success. +*/ +EFI_STATUS +VerifyAuth2Descriptor ( + IN UINT32 Attributes, + IN VOID *Buffer, + IN UINTN BufferSize, + IN EFI_TIME *OrgTimeStamp, + OUT UINT8 **CertDataPtr, + OUT UINT32 *CertDataSize + ) +{ + EFI_VARIABLE_AUTHENTICATION_2 *Auth2Ptr; + EFI_TIME *Auth2TimeStamp; + + if (Buffer == NULL || CertDataPtr == NULL || CertDataSize == NULL) { + return EFI_INVALID_PARAMETER; + } + + Auth2Ptr = (EFI_VARIABLE_AUTHENTICATION_2 *)Buffer; + + Auth2TimeStamp = &Auth2Ptr->TimeStamp; + if ( (Auth2TimeStamp->Pad1 != 0) || + (Auth2TimeStamp->Pad2 != 0) || + (Auth2TimeStamp->Nanosecond != 0) || + (Auth2TimeStamp->TimeZone != 0) || + (Auth2TimeStamp->Daylight !=0) + ) { + return EFI_SECURITY_VIOLATION; + } + + if ((OrgTimeStamp != NULL) && ((Attributes & EFI_VARIABLE_APPEND_WRITE) == 0)) { + // + // TimeStamp check fail, suspicious replay attack, return EFI_SECURITY_VIOLATION. + // + if (CompareTimeStamp (Auth2TimeStamp, OrgTimeStamp)) { + return EFI_SECURITY_VIOLATION; + } + } + + if ( (Auth2Ptr->AuthInfo.Hdr.wCertificateType != WIN_CERT_TYPE_EFI_GUID) || + (!CompareGuid (&Auth2Ptr->AuthInfo.CertType, &gEfiCertPkcs7Guid)) + ) { + // + // Invalid AuthInfo type, return EFI_SECURITY_VIOLATION. + // + return EFI_SECURITY_VIOLATION; + } + + *CertDataPtr = ((UINT8 *)&Auth2Ptr->AuthInfo.CertType) + sizeof (EFI_GUID); + *CertDataSize = Auth2Ptr->AuthInfo.Hdr.dwLength - (UINT32)(OFFSET_OF (WIN_CERTIFICATE_UEFI_GUID, CertType)) - sizeof (EFI_GUID); + + return EFI_SUCCESS; +} + +/* + This function will according to the opeartion type to processing the + certs of auth variable. + + @param[in] VariableName Name of Variable to be found. + @param[in] VendorGuid Variable vendor GUID. + @param[in] Attributes Attribute value of the variable. + @param[in] OperationType Indicate the operation of auth variable. + @param[in] PayloadSize Indicate the size of payload in bytes. + @param[in] SignerCert A pointer to SignerCert data. + @param[in] SignerCertSize Length of SignerCert data. + @param[in] TopLevelCert A pointer to TopLevelCert data. + @param[in] TopLevelCertSize Length of TopLevelCert data. + + @retval EFI_INVALID_PARAMETER Invalid input parameters. + @retval EFI_SECURITY_VIOLATION Verify or update certs failed. + @retval EFI_SUCCESS The operation is finished successfully. + @retval Others Other errors as indicated. +*/ +EFI_STATUS +VerifyCertsAndUpdate ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + IN EFI_COMMAND_OPER_TYPE OperationType, + IN UINT32 PayloadSize, + IN UINT8 *SignerCert, + IN UINT32 SignerCertSize, + IN UINT8 *TopLevelCert, + IN UINT32 TopLevelCertSize + ) +{ + EFI_STATUS Status; + EFI_CERT_DATA *TempPtr; + UINT8 *CertDataPtr; + UINT32 CertDataSize; + VARIABLE_INFO_PRIVATE *PriVarInfo; + + Status = EFI_SUCCESS; + TempPtr = NULL; + CertDataPtr = NULL; + CertDataSize = 0; + + if ( OperationType >= VariableTypeMax || + VariableName == NULL || + VendorGuid == NULL || + SignerCert == NULL || + TopLevelCert == NULL + ) { + return EFI_INVALID_PARAMETER; + } + + PriVarInfo = FindVariableInfoPtr (VariableName, VendorGuid); + + /* + Add: + 1. Create: certdb, variable. OrgTimeStamp == NULL, payloadsize != 0. + 2. Modify: variable. OrgTimeStamp != NULL, payloadsize != 0. + + Del: + 1. Delete: certdb, variable. payloadsize == 0. + + Append:(No update timestamp) + 1. Create: certdb, variable. OrgTimeStamp == NULL, payloadsize != 0. + 2. Modify: variable. OrgTimeStamp != NULL, payloadsize != 0. + */ + + // + // Specified behavior is not matching the payload buffer. + // In this situation will delete certs from certdb but add variable. + // + if (OperationType == VariableTypeDel && PayloadSize != 0) { + return EFI_SECURITY_VIOLATION; + } + + // + // Specified behavior is not matching the payload buffer. + // In this situation will add certs into certdb but delete variable. + // + if ( (OperationType == VariableTypeAdd || OperationType == VariableTypeAppend) && + (PayloadSize == 0) + ) { + return EFI_SECURITY_VIOLATION; + } + + if ((OperationType == VariableTypeAdd || OperationType == VariableTypeAppend) && (PriVarInfo == NULL)) { + TempPtr = (EFI_CERT_DATA *)(SignerCert + 1); + Status = InsertCertsToDb ( + VariableName, + VendorGuid, + Attributes, + TempPtr->CertDataBuffer, + ReadUnaligned32 ((UINT32 *)&TempPtr->CertDataLength), + TopLevelCert, + TopLevelCertSize + ); + if (EFI_ERROR (Status)) { + return Status; + } + } else { + Status = FindCertsFromDb ( + VariableName, + VendorGuid, + Attributes, + NULL, + NULL, + &CertDataPtr, + &CertDataSize + ); + if (EFI_ERROR (Status)) { + return Status; + } + + if (CertDataSize == SHA256_DIGEST_SIZE) { +#if 0 + UINT8 Sha256Digest[SHA256_DIGEST_SIZE]; + TempPtr = (EFI_CERT_DATA *)(SignerCert + 1); + Status = CalculatePrivAuthVarSignChainSHA256Digest ( + TempPtr->CertDataBuffer, + ReadUnaligned32 ((UINT32 *)&TempPtr->CertDataLength), + TopLevelCert, + TopLevelCertSize, + Sha256Digest + ); + if (EFI_ERROR (Status)) { + return Status; + } + if (CompareMem (Sha256Digest, CertDataPtr, CertDataSize) != 0) { + return EFI_SECURITY_VIOLATION; + } +#endif + } else { + if (CertDataSize != TopLevelCertSize) { + return EFI_SECURITY_VIOLATION; + } + + if (CompareMem (SignerCert, CertDataPtr, CertDataSize) != 0) { + return EFI_SECURITY_VIOLATION; + } + } + } + + return EFI_SUCCESS; +} + +/** + Process variable with EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS set + + @param[in] VariableName Name of Variable to be found. + @param[in] VendorGuid Variable vendor GUID. + @param[in] Attributes Attribute value of the variable. + @param[in] Buffer Data pointer. + @param[in] BufferSize Size of Data found. If size is less than the + data, this value contains the required size. + @param[in] OrgTimeStamp Pointer to original time stamp, + original variable is not found if NULL. + @param[in] OperationType Indicates how to process the auth variable. + @param[out] VarPayloadPtr Pointer to variable payload address. + @param[out] VarPayloadSize Pointer to variable payload size. + @param[out] CertTimeStamp Pointer to timestamp of auth2 structure. + + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_SECURITY_VIOLATION The variable does NOT pass the validation + check carried out by the firmware. + @retval EFI_OUT_OF_RESOURCES Failed to process variable due to lack + of resources. + @retval EFI_SUCCESS Variable pass validation successfully. +**/ +EFI_STATUS +Auth2VerifyAndUpdate ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + IN VOID *Buffer, + IN UINTN BufferSize, + IN EFI_TIME *OrgTimeStamp, + IN EFI_COMMAND_OPER_TYPE OperationType, + OUT UINT8 **VarPayloadPtr, + OUT UINTN *VarPayloadSize, + OUT EFI_TIME **CertTimeStamp + ) +{ +#if 0 + EFI_STATUS Status; + BOOLEAN VerifyStatus; + EFI_VARIABLE_AUTHENTICATION_2 *Auth2Ptr; + UINT8 *CertDataPtr; + UINT32 CertDataSize; + UINT8 *PayloadPtr; + UINT32 PayloadSize; + UINT8 *Digest; + UINT32 DigestSize; + UINT8 *SignerCert; + UINT32 SignerCertSize; + UINT8 *TopLevelCert; + UINT32 TopLevelCertSize; + UINT32 Offset; + VARIABLE_INFO_PRIVATE *PriVarInfo; + + Status = EFI_SUCCESS; + Digest = NULL; + Offset = 0; + + PriVarInfo = FindVariableInfoPtr (VariableName, VendorGuid); + + Status = VerifyAuth2Descriptor ( + Attributes, + Buffer, + BufferSize, + PriVarInfo == NULL ? NULL : &PriVarInfo->TimeStamp, + &CertDataPtr, + &CertDataSize + ); + if (EFI_ERROR (Status)) { + return Status; + } + + Auth2Ptr = (EFI_VARIABLE_AUTHENTICATION_2 *)Buffer; + + // + // Find out the new data payload which follows Pkcs7 SignedData directly. + // + PayloadPtr = CertDataPtr + CertDataSize; + PayloadSize = (UINT32)(BufferSize - sizeof (EFI_TIME) - Auth2Ptr->AuthInfo.Hdr.dwLength); + + DigestSize = (UINT32)(PayloadSize + + StrLen (VariableName) * sizeof (CHAR16) + + sizeof (UINT32) + + sizeof (EFI_TIME) + + sizeof (EFI_GUID)); + Digest = (UINT8 *)malloc (DigestSize); + if (Digest == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + CopyMem (Digest + Offset, VariableName, StrLen (VariableName) * sizeof (CHAR16)); + Offset = (UINT32)(Offset + StrLen (VariableName) * sizeof (CHAR16)); + + CopyMem (Digest + Offset, VendorGuid, sizeof (EFI_GUID)); + Offset = Offset + sizeof (EFI_GUID); + + CopyMem (Digest + Offset, &Attributes, sizeof (UINT32)); + Offset = Offset + sizeof (UINT32); + + CopyMem (Digest + Offset, &Auth2Ptr->TimeStamp, sizeof (EFI_TIME)); + Offset = Offset + sizeof (EFI_TIME); + + CopyMem (Digest + Offset, PayloadPtr, PayloadSize); + + VerifyStatus = Pkcs7GetSigners ( + CertDataPtr, + CertDataSize, + &SignerCert, + (UINTN *)&SignerCertSize, + &TopLevelCert, + (UINTN *)&TopLevelCertSize + ); + if (!VerifyStatus) { + goto ON_EXIT; + } + + VerifyStatus = Pkcs7Verify ( + CertDataPtr, + CertDataSize, + TopLevelCert, + TopLevelCertSize, + Digest, + DigestSize + ); + if (!VerifyStatus) { + goto ON_EXIT; + } + + Status = VerifyCertsAndUpdate ( + VariableName, + VendorGuid, + Attributes, + OperationType, + PayloadSize, + SignerCert, + SignerCertSize, + TopLevelCert, + TopLevelCertSize + ); + + if (EFI_ERROR (Status)) { + VerifyStatus = FALSE; + } + +ON_EXIT: + Pkcs7FreeSigners (TopLevelCert); + Pkcs7FreeSigners (SignerCert); + + FREE_NON_NULL_PTR (Digest); + + if (!VerifyStatus) { + return EFI_SECURITY_VIOLATION; + } + + // + // Find out the new data payload which follows Pkcs7 SignedData directly. + // + *VarPayloadPtr = CertDataPtr + CertDataSize; + *VarPayloadSize = BufferSize - sizeof (EFI_TIME) - Auth2Ptr->AuthInfo.Hdr.dwLength; + *CertTimeStamp = &Auth2Ptr->TimeStamp; + + return EFI_SUCCESS; +#else + return EFI_UNSUPPORTED; +#endif +} + +/* + Process variable with EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS set. + + @param[in] Name Name of Variable to be processed. + @param[in] Guid Variable vendor GUID. + @param[in] Data Data pointer. + @param[in] DataSize The size of Data in bytes. + @param[in] Attributes Attribute value of the variable. + @param[in] OperType The operation type about variable. + + @retval EFI_SUCCESS The operation is finished successfully. + @retval EFI_INVALID_PARAMETER Invalid input parameters, Name, Guid or Data is NULL. + @retval EFI_OUT_OF_RESOURCES No more memory for allocation. + @retval Others Other errors as indicated. +*/ +EFI_STATUS +ProcessAuthVar ( + IN CHAR16 *Name, + IN EFI_GUID *Guid, + IN VOID *Data, + IN UINTN DataSize, + IN UINT32 Attributes, + IN EFI_COMMAND_OPER_TYPE OperType + ) +{ + EFI_STATUS Status; + EFI_TIME *CertTimeStamp; + LIST_ENTRY *ListEntry; + VARIABLE_INFO_PRIVATE *PriVarInfo; + UINT8 *PayloadPtr; + UINTN PayloadSize; + + Status = EFI_SUCCESS; + CertTimeStamp = NULL; + ListEntry = NULL; + PriVarInfo = NULL; + PayloadPtr = NULL; + PayloadSize = 0; + + if (Name == NULL || Guid == NULL || Data == NULL || OperType == VariableTypeMax) { + return EFI_INVALID_PARAMETER; + } + + // + // Try to get auth variable. + // + ListEntry = FindVariableList (&mVarListEntry, Name, Guid); + + if (ListEntry != NULL) { + PriVarInfo = VARIABLE_INFO_PRIVATE_FROM_LINK (ListEntry); + } + + Status = Auth2VerifyAndUpdate ( + Name, + Guid, + Attributes, + Data, + DataSize, + PriVarInfo == NULL ? NULL : &PriVarInfo->TimeStamp, + OperType, + &PayloadPtr, + &PayloadSize, + &CertTimeStamp + ); + if (EFI_ERROR (Status)) { + return Status; + } + + if (OperType == VariableTypeDel) { + Status = DeleteVariableList (&mVarListEntry, Name, Guid); + if (Status == EFI_SUCCESS) { + Status = DeleteCertsFromDb (Name, Guid, Attributes); + } + } else { + Status = CreateVariableList ( + &mVarListEntry, + Name, + Guid, + Attributes, + CertTimeStamp, + PayloadSize, + PayloadPtr, + OperType == VariableTypeAppend + ); + } + + return Status; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVariable.h b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVariable.h new file mode 100644 index 0000000..18c8823 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/AuthVariable.h @@ -0,0 +1,41 @@ +/** + Header file to Manage & verify Timebased Authenticated varaibles. + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _AUTH_VARIABLE_H +#define _AUTH_VARIABLE_H + +#include "OsVariable.h" +#include "VariableCommon.h" +#include "AuthVarCertDB.h" + +/* + Process variable with EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS set. + + @param[in] Name Name of Variable to be processed. + @param[in] Guid Variable vendor GUID. + @param[in] Data Data pointer. + @param[in] DataSize The size of Data in bytes. + @param[in] Attributes Attribute value of the variable. + @param[in] OperType The operation type about variable. + + @retval EFI_SUCCESS The operation is finished successfully. + @retval EFI_INVALID_PARAMETER Invalid input parameters, Name, Guid or Data is NULL. + @retval EFI_OUT_OF_RESOURCES No more memory for allocation. + @retval Others Other errors as indicated. +*/ +EFI_STATUS +ProcessAuthVar ( + IN CHAR16 *Name, + IN EFI_GUID *Guid, + IN VOID *Data, + IN UINTN DataSize, + IN UINT32 Attributes, + IN EFI_COMMAND_OPER_TYPE OperType + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/OsVariable.c b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/OsVariable.c new file mode 100644 index 0000000..f16f3bc --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/OsVariable.c @@ -0,0 +1,784 @@ +/** + Utility to enroll UEFI value, including PK, KEK, db/dbx/dbt in OS. + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "OsVariable.h" +#include "VariableCommon.h" +#include "AuthVariable.h" + +LIST_ENTRY mVarListEntry = INITIALIZE_LIST_HEAD_VARIABLE(mVarListEntry); + +/** + Compare two EFI_TIME data. + + + @param FirstTime A pointer to the first EFI_TIME data. + @param SecondTime A pointer to the second EFI_TIME data. + + @retval TRUE The FirstTime is not later than the SecondTime. + @retval FALSE The FirstTime is later than the SecondTime. + +**/ +BOOLEAN +CompareTimeStamp ( + IN EFI_TIME *FirstTime, + IN EFI_TIME *SecondTime + ) +{ + if (FirstTime->Year != SecondTime->Year) { + return (BOOLEAN) (FirstTime->Year < SecondTime->Year); + } else if (FirstTime->Month != SecondTime->Month) { + return (BOOLEAN) (FirstTime->Month < SecondTime->Month); + } else if (FirstTime->Day != SecondTime->Day) { + return (BOOLEAN) (FirstTime->Day < SecondTime->Day); + } else if (FirstTime->Hour != SecondTime->Hour) { + return (BOOLEAN) (FirstTime->Hour < SecondTime->Hour); + } else if (FirstTime->Minute != SecondTime->Minute) { + return (BOOLEAN) (FirstTime->Minute < SecondTime->Minute); + } + + return (BOOLEAN) (FirstTime->Second <= SecondTime->Second); +} + +VOID +GetCurrentTime ( + OUT EFI_TIME *TimeStamp + ) +{ + time_t CurTime; + struct tm *GmTime; + + memset (TimeStamp, 0, sizeof (*TimeStamp)); + + time (&CurTime); + GmTime = gmtime (&CurTime); + if (GmTime == NULL) { + return; + } + TimeStamp->Year = (UINT16)GmTime->tm_year + 1900; // Year is 1900-based + TimeStamp->Month = (UINT8)GmTime->tm_mon + 1; // Month is zero based. + TimeStamp->Day = (UINT8)GmTime->tm_mday; + TimeStamp->Hour = (UINT8)GmTime->tm_hour; + TimeStamp->Minute = (UINT8)GmTime->tm_min; + TimeStamp->Second = (UINT8)GmTime->tm_sec; +} + +VOID +DumpHex ( + IN UINT8 *Buffer, + IN UINTN BufferSize + ) +/*++ + +Routine Description: + + Dump hex data + +Arguments: + + Buffer - Buffer address + BufferSize - Buffer size + +Returns: + + None + +--*/ +{ + UINTN Index; + UINTN IndexJ; +#define COL_SIZE 16 + + for (Index = 0; Index < BufferSize/COL_SIZE; Index++) { + DEBUG ((DEBUG_INFO, " %04x: ", (UINT16) Index * COL_SIZE)); + for (IndexJ = 0; IndexJ < COL_SIZE; IndexJ++) { + DEBUG ((DEBUG_INFO, "%02x ", *(Buffer + Index * COL_SIZE + IndexJ))); + } + DEBUG ((DEBUG_INFO, "\n")); + } + if ((BufferSize % COL_SIZE) != 0) { + DEBUG ((DEBUG_INFO, " %04x: ", (UINT16) Index * COL_SIZE)); + for (IndexJ = 0; IndexJ < (BufferSize % COL_SIZE); IndexJ++) { + DEBUG ((DEBUG_INFO, "%02x ", *(Buffer + Index * COL_SIZE + IndexJ))); + } + DEBUG ((DEBUG_INFO, "\n")); + } +} + +LIST_ENTRY * +FindVariableList ( + IN LIST_ENTRY *StorageListHead, + IN CHAR16 *Name, + IN EFI_GUID *Guid + ) +{ + LIST_ENTRY *Link; + VARIABLE_INFO_PRIVATE *Storage; + + if (StorageListHead->ForwardLink != NULL) { + Link = GetFirstNode (StorageListHead); + while (!IsNull (StorageListHead, Link)) { + Storage = VARIABLE_INFO_PRIVATE_FROM_LINK (Link); + if ((CompareGuid (&Storage->Guid, Guid)) && + (StrCmp (Storage->Name, Name) == 0)) { + return Link; + } + Link = GetNextNode (StorageListHead, Link); + } + } + return NULL; +} + +/* + Find out the matching VARIABLE_INFO_PRIVATE by variable name and guid. + + @param[in] VariableName Name of variable to be find. + @param[in] VendorGuid Variable vendor GUID. + + @retval VARIABLE_INFO_PRIVATE A pointer to VARIABLE_INFO_PRIVATE. + @retval NULL Not find. +*/ +VARIABLE_INFO_PRIVATE* +FindVariableInfoPtr( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid + ) +{ + LIST_ENTRY *ListEntry; + + // + // Try to get auth variable by name and GUID. + // + ListEntry = FindVariableList (&mVarListEntry, VariableName, VendorGuid); + if (ListEntry != NULL) { + return VARIABLE_INFO_PRIVATE_FROM_LINK (ListEntry); + } + + return NULL; +} + +/** + Filter out the duplicated EFI_SIGNATURE_DATA from the new data by comparing to the original data. + And copy the combined data to final data. + + @param[in] Data Pointer to original EFI_SIGNATURE_LIST. + @param[in] DataSize Size of Data buffer. + @param[in] NewData Pointer to new EFI_SIGNATURE_LIST. + @param[in] NewDataSize Size of NewData buffer. + @param[out] FinalData Pointer to final combined EFI_SIGNATURE_LIST. + @param[out] FinalDataSize Size of FinalData buffer. + +**/ +VOID +FilterSignatureList ( + IN VOID *Data, + IN UINTN DataSize, + IN VOID *NewData, + IN UINTN NewDataSize, + OUT VOID *FinalData, + OUT UINTN *FinalDataSize + ) +{ + EFI_SIGNATURE_LIST *CertList; + EFI_SIGNATURE_DATA *Cert; + UINTN CertCount; + EFI_SIGNATURE_LIST *NewCertList; + EFI_SIGNATURE_DATA *NewCert; + UINTN NewCertCount; + UINTN Index; + UINTN Index2; + UINTN NewSize; + UINTN Size; + UINT8 *Tail; + UINTN CopiedCount; + UINTN SignatureListSize; + BOOLEAN IsNewCert; + + // + // Copy the original data to final data first. + // + CopyMem (FinalData, Data, DataSize); + *FinalDataSize = DataSize; + + if (NewDataSize == 0) { + return; + } + + Tail = (UINT8 *) FinalData + *FinalDataSize; + + NewSize = NewDataSize; + NewCertList = (EFI_SIGNATURE_LIST *) NewData; + while ((NewSize > 0) && (NewSize >= NewCertList->SignatureListSize)) { + NewCert = (EFI_SIGNATURE_DATA *) ((UINT8 *) NewCertList + sizeof (EFI_SIGNATURE_LIST) + NewCertList->SignatureHeaderSize); + NewCertCount = (NewCertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - NewCertList->SignatureHeaderSize) / NewCertList->SignatureSize; + + CopiedCount = 0; + for (Index = 0; Index < NewCertCount; Index++) { + IsNewCert = TRUE; + + Size = DataSize; + CertList = (EFI_SIGNATURE_LIST *) Data; + while ((Size > 0) && (Size >= CertList->SignatureListSize)) { + if ((CompareGuid (&CertList->SignatureType, &NewCertList->SignatureType)) && + (CertList->SignatureSize == NewCertList->SignatureSize)) { + Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) CertList + sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); + CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; + for (Index2 = 0; Index2 < CertCount; Index2++) { + // + // Iterate each Signature Data in this Signature List. + // + if (CompareMem (NewCert, Cert, CertList->SignatureSize) == 0) { + IsNewCert = FALSE; + break; + } + Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) Cert + CertList->SignatureSize); + } + } + + if (!IsNewCert) { + break; + } + Size -= CertList->SignatureListSize; + CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList + CertList->SignatureListSize); + } + + if (IsNewCert) { + DEBUG ((DEBUG_INFO, "found new cert!\n")); + // + // New EFI_SIGNATURE_DATA, keep it. + // + if (CopiedCount == 0) { + // + // Copy EFI_SIGNATURE_LIST header for only once. + // + CopyMem (Tail, NewCertList, sizeof (EFI_SIGNATURE_LIST) + NewCertList->SignatureHeaderSize); + Tail = Tail + sizeof (EFI_SIGNATURE_LIST) + NewCertList->SignatureHeaderSize; + } + + CopyMem (Tail, NewCert, NewCertList->SignatureSize); + Tail += NewCertList->SignatureSize; + CopiedCount++; + } + + NewCert = (EFI_SIGNATURE_DATA *) ((UINT8 *) NewCert + NewCertList->SignatureSize); + } + + // + // Update SignatureListSize in the kept EFI_SIGNATURE_LIST. + // + if (CopiedCount != 0) { + SignatureListSize = sizeof (EFI_SIGNATURE_LIST) + NewCertList->SignatureHeaderSize + (CopiedCount * NewCertList->SignatureSize); + CertList = (EFI_SIGNATURE_LIST *) (Tail - SignatureListSize); + CertList->SignatureListSize = (UINT32) SignatureListSize; + } + + NewSize -= NewCertList->SignatureListSize; + NewCertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) NewCertList + NewCertList->SignatureListSize); + } + + *FinalDataSize = (Tail - (UINT8 *) FinalData); +} + +EFI_STATUS +UpdateVariableList ( + IN LIST_ENTRY *Link, + IN CHAR16 *Name, + IN EFI_GUID *Guid, + IN UINT32 Attributes, + IN EFI_TIME *TimeStamp, + IN UINTN Size, + IN UINT8 *Buffer, + IN BOOLEAN Append + ) +{ + VARIABLE_INFO_PRIVATE *Storage; + UINTN NewSize; + UINT8 *NewBuffer; + + Storage = VARIABLE_INFO_PRIVATE_FROM_LINK (Link); + + Storage->Attributes = Attributes; + if (Append) { + if ((Attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0) { + // + // When the new TimeStamp value is later than the current timestamp associated + // with the variable, we need associate the new timestamp with the updated value. + // + if (CompareTimeStamp (&Storage->TimeStamp, TimeStamp)) { + CopyMem (&Storage->TimeStamp, TimeStamp, sizeof (*TimeStamp)); + } + } + NewSize = Storage->Size + Size; + NewBuffer = malloc (NewSize); + if (NewBuffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + ASSERT (Storage->Buffer != NULL); + if (((CompareGuid (Guid, &gEfiImageSecurityDatabaseGuid)) && + ((StrCmp (Name, EFI_IMAGE_SECURITY_DATABASE) == 0) || (StrCmp (Name, EFI_IMAGE_SECURITY_DATABASE1) == 0) || + (StrCmp (Name, EFI_IMAGE_SECURITY_DATABASE2) == 0))) || + ((CompareGuid (Guid, &gEfiGlobalVariableGuid)) && (StrCmp (Name, EFI_KEY_EXCHANGE_KEY_NAME) == 0))) { + FilterSignatureList ( + Storage->Buffer, + Storage->Size, + Buffer, + Size, + NewBuffer, + &NewSize + ); + } else { + CopyMem (NewBuffer, Storage->Buffer, Storage->Size); + CopyMem (NewBuffer + Storage->Size, Buffer, Size); + } + + Storage->Size = NewSize; + free (Storage->Buffer); + Storage->Buffer = NewBuffer; + } else { + if ((Attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0) { + CopyMem (&Storage->TimeStamp, TimeStamp, sizeof (*TimeStamp)); + } + Storage->Size = Size; + ASSERT (Storage->Buffer != NULL); + free (Storage->Buffer); + Storage->Buffer = malloc (Size); + if (Storage->Buffer == NULL) { + return EFI_OUT_OF_RESOURCES; + } + CopyMem (Storage->Buffer, Buffer, Size); + } + + return EFI_SUCCESS; +} + +EFI_STATUS +CreateVariableList ( + IN LIST_ENTRY *StorageListHead, + IN CHAR16 *Name, + IN EFI_GUID *Guid, + IN UINT32 Attributes, + IN EFI_TIME *TimeStamp, + IN UINTN Size, + IN UINT8 *Buffer, + IN BOOLEAN Append + ) +{ + VARIABLE_INFO_PRIVATE *Storage; + UINTN VarNameSize; + LIST_ENTRY *Link; + EFI_TIME TempTimeStamp; + + if (((Attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0) && + (TimeStamp == NULL)) { + // + // Fetch the current time based on UTC timezone + // + GetCurrentTime (&TempTimeStamp); + TimeStamp = &TempTimeStamp; + } + + // + // Check previous one + // + Link = FindVariableList (StorageListHead, Name, Guid); + if (Link != NULL) { + return UpdateVariableList ( + Link, + Name, + Guid, + Attributes, + TimeStamp, + Size, + Buffer, + Append + ); + } + + // + // Create new one + // + Storage = malloc (sizeof (*Storage)); + if (Storage == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Storage->Signature = VARIABLE_INFO_PRIVATE_SIGNATURE; + CopyMem (&Storage->Guid, Guid, sizeof(*Guid)); + VarNameSize = StrSize (Name); + Storage->Name = malloc (VarNameSize); + if (Storage->Name == NULL) { + free (Storage); + return EFI_OUT_OF_RESOURCES; + } + CopyMem (Storage->Name, Name, VarNameSize); + Storage->Attributes = Attributes; + Storage->Size = Size; + ASSERT (Storage->Size != 0); + Storage->Buffer = malloc (Size); + if (Storage->Buffer == NULL) { + free (Storage->Name); + free (Storage); + return EFI_OUT_OF_RESOURCES; + } + CopyMem (Storage->Buffer, Buffer, Size); + if ((Attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0) { + CopyMem (&Storage->TimeStamp, TimeStamp, sizeof (*TimeStamp)); + } + + InsertTailList(StorageListHead, &Storage->Link); + + return EFI_SUCCESS; +} + +EFI_STATUS +DeleteVariableList ( + IN LIST_ENTRY *StorageListHead, + IN CHAR16 *Name, + IN EFI_GUID *Guid + ) +{ + VARIABLE_INFO_PRIVATE *Storage; + LIST_ENTRY *Link; + + Link = FindVariableList (StorageListHead, Name, Guid); + if (Link == NULL) { + return EFI_NOT_FOUND; + } + + Storage = VARIABLE_INFO_PRIVATE_FROM_LINK (Link); + RemoveEntryList (&Storage->Link); + + return EFI_SUCCESS; +} + +EFI_STATUS +EnrollVar ( + IN CHAR16 *Name, + IN EFI_GUID *Guid, + IN UINT32 Attributes, + IN UINTN DataSize, + IN VOID *Data, + IN BOOLEAN TimeBased, + IN BOOLEAN Append + ) +{ + EFI_STATUS EfiStatus; + UINT8 *Payload; + UINTN PayloadSize; + EFI_TIME *TimeStamp; + + TimeStamp = NULL; + Payload = (UINT8 *) Data; + PayloadSize = DataSize; + if (TimeBased) { + TimeStamp = &((EFI_VARIABLE_AUTHENTICATION_2 *) Data)->TimeStamp; + Payload = (UINT8 *) Data + AUTHINFO2_SIZE (Data); + PayloadSize = DataSize - AUTHINFO2_SIZE (Data); + } + + EfiStatus = CreateVariableList ( + &mVarListEntry, + Name, + Guid, + Attributes, + TimeStamp, + PayloadSize, + Payload, + Append + ); + return EfiStatus; +} + +EFI_STATUS +DeleteVar ( + IN CHAR16 *Name, + IN EFI_GUID *Guid + ) +{ + EFI_STATUS EfiStatus; + + EfiStatus = DeleteVariableList ( + &mVarListEntry, + Name, + Guid + ); + return EfiStatus; +} + +EFI_STATUS +ProcessVar ( + IN CHAR16 *Name, + IN EFI_GUID *Guid, + IN VOID *Data, + IN UINTN DataSize, + IN UINT32 Attributes + ) +{ + EFI_COMMAND_OPER_TYPE CommandType; + EFI_STATUS Status; + BOOLEAN TimeBased; + + if ((Attributes == 0) || + ((DataSize == 0) && (Data == NULL))) { + CommandType = VariableTypeDel; + } else if ((Attributes & EFI_VARIABLE_APPEND_WRITE) != 0) { + CommandType = VariableTypeAppend; + } else { + CommandType = VariableTypeAdd; + } + + TimeBased = ((Attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0); + + if (CommandType == VariableTypeDel) { + Status = DeleteVar (Name, Guid); + } else { + Status = EnrollVar ( + Name, + Guid, + Attributes, + DataSize, + Data, + TimeBased, + CommandType == VariableTypeAppend ? TRUE : FALSE + ); + } + + return Status; +} + +VOID +DumpTimestamp ( + IN EFI_TIME *TimeOfRevocation + ) +{ + DEBUG ((DEBUG_INFO, " %02d/%02d/%04d %02d:%02d:%02d\n", + TimeOfRevocation->Month, + TimeOfRevocation->Day, + TimeOfRevocation->Year, + TimeOfRevocation->Hour, + TimeOfRevocation->Minute, + TimeOfRevocation->Second + )); +} + +VOID +DumpCert ( + IN UINT8 *Buffer, + IN UINTN Size + ) +{ + EFI_SIGNATURE_LIST *CertList; + EFI_SIGNATURE_DATA *Cert; + UINT32 CertCount; + UINT32 CertListIndex; + UINT32 CertIndex; + + CertListIndex = 0; + CertList = (EFI_SIGNATURE_LIST *)Buffer; + while ((UINTN)CertList < (UINTN)Buffer + Size) { + DEBUG ((DEBUG_INFO, "SIGNATURE_LIST[%d]\n", CertListIndex)); + DEBUG ((DEBUG_INFO, " SignatureType - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + CertList->SignatureType.Data1, + CertList->SignatureType.Data2, + CertList->SignatureType.Data3, + CertList->SignatureType.Data4[0], + CertList->SignatureType.Data4[1], + CertList->SignatureType.Data4[2], + CertList->SignatureType.Data4[3], + CertList->SignatureType.Data4[4], + CertList->SignatureType.Data4[5], + CertList->SignatureType.Data4[6], + CertList->SignatureType.Data4[7] + )); + DEBUG ((DEBUG_INFO, " SignatureListSize - %08x\n", CertList->SignatureListSize)); + DEBUG ((DEBUG_INFO, " SignatureHeaderSize - %08x\n", CertList->SignatureHeaderSize)); + DEBUG ((DEBUG_INFO, " SignatureSize - %08x\n", CertList->SignatureSize)); + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)CertList + sizeof(EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); + CertCount = (CertList->SignatureListSize - sizeof(EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; + for (CertIndex = 0; CertIndex < CertCount; CertIndex++) { + DEBUG ((DEBUG_INFO, " SIGNATURE_DATA[%d]\n", CertIndex)); + DEBUG ((DEBUG_INFO, " SignatureOwner - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + Cert->SignatureOwner.Data1, + Cert->SignatureOwner.Data2, + Cert->SignatureOwner.Data3, + Cert->SignatureOwner.Data4[0], + Cert->SignatureOwner.Data4[1], + Cert->SignatureOwner.Data4[2], + Cert->SignatureOwner.Data4[3], + Cert->SignatureOwner.Data4[4], + Cert->SignatureOwner.Data4[5], + Cert->SignatureOwner.Data4[6], + Cert->SignatureOwner.Data4[7] + )); + DEBUG ((DEBUG_INFO, " Signature - \n")); + if (CompareGuid (&CertList->SignatureType, &gEfiCertX509Sha256Guid)) { + EFI_CERT_X509_SHA256 *CertX509Sha256; + CertX509Sha256 = (EFI_CERT_X509_SHA256 *)Cert->SignatureData; + DEBUG ((DEBUG_INFO, " SHA256 - \n")); + DumpHex (CertX509Sha256->ToBeSignedHash, sizeof(CertX509Sha256->ToBeSignedHash)); + DEBUG ((DEBUG_INFO, " Timestamp - \n")); + DumpTimestamp (&CertX509Sha256->TimeOfRevocation); + } else if (CompareGuid (&CertList->SignatureType, &gEfiCertX509Sha384Guid)) { + EFI_CERT_X509_SHA384 *CertX509Sha384; + CertX509Sha384 = (EFI_CERT_X509_SHA384 *)Cert->SignatureData; + DEBUG ((DEBUG_INFO, " SHA384 - \n")); + DumpHex (CertX509Sha384->ToBeSignedHash, sizeof(CertX509Sha384->ToBeSignedHash)); + DEBUG ((DEBUG_INFO, " Timestamp - \n")); + DumpTimestamp (&CertX509Sha384->TimeOfRevocation); + } else if (CompareGuid (&CertList->SignatureType, &gEfiCertX509Sha512Guid)) { + EFI_CERT_X509_SHA512 *CertX509Sha512; + CertX509Sha512 = (EFI_CERT_X509_SHA512 *)Cert->SignatureData; + DEBUG ((DEBUG_INFO, " SHA512 - \n")); + DumpHex (CertX509Sha512->ToBeSignedHash, sizeof(CertX509Sha512->ToBeSignedHash)); + DEBUG ((DEBUG_INFO, " Timestamp - \n")); + DumpTimestamp (&CertX509Sha512->TimeOfRevocation); + } else { + DumpHex (Cert->SignatureData, CertList->SignatureSize - (sizeof(EFI_SIGNATURE_DATA) - 1)); + } + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)Cert + CertList->SignatureSize); + } + CertList = (EFI_SIGNATURE_LIST *)((UINT8 *)CertList + CertList->SignatureListSize); + CertListIndex ++; + } + +} + +VOID +DumpVarStorage ( + IN VARIABLE_INFO_PRIVATE *Storage, + IN BOOLEAN IsDumpCert + ) +{ + DEBUG ((DEBUG_INFO, "Variable:\n")); + DEBUG ((DEBUG_INFO, " Name - %s\n", Storage->Name)); + DEBUG ((DEBUG_INFO, " Guid - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + Storage->Guid.Data1, + Storage->Guid.Data2, + Storage->Guid.Data3, + Storage->Guid.Data4[0], + Storage->Guid.Data4[1], + Storage->Guid.Data4[2], + Storage->Guid.Data4[3], + Storage->Guid.Data4[4], + Storage->Guid.Data4[5], + Storage->Guid.Data4[6], + Storage->Guid.Data4[7] + )); + DEBUG ((DEBUG_INFO, " Attributes - %08x\n", Storage->Attributes)); + DEBUG ((DEBUG_INFO, " Size - %08x\n", (UINT32) Storage->Size)); + DEBUG ((DEBUG_INFO, " Buffer - \n")); + if (IsDumpCert) { + DumpCert (Storage->Buffer, Storage->Size); + } else { + DumpHex (Storage->Buffer, Storage->Size); + } + DEBUG ((DEBUG_INFO, "\n")); +} + +VOID +DumpInfo ( + IN CHAR16 *Name, + IN EFI_GUID *Guid + ) +{ + LIST_ENTRY *Link; + VARIABLE_INFO_PRIVATE *Storage; + + Link = FindVariableList ( + &mVarListEntry, + Name, + Guid + ); + if (Link == NULL) { + DEBUG ((DEBUG_INFO, "DumpInfo - not found!\n")); + return ; + } + Storage = VARIABLE_INFO_PRIVATE_FROM_LINK (Link); + + DumpVarStorage (Storage, TRUE); + + return ; +} + +VOID +DumpVariableList ( + IN LIST_ENTRY *StorageListHead + ) +{ + LIST_ENTRY *Link; + VARIABLE_INFO_PRIVATE *Storage; + + if (StorageListHead->ForwardLink != NULL) { + Link = GetFirstNode (StorageListHead); + while (!IsNull (StorageListHead, Link)) { + Storage = VARIABLE_INFO_PRIVATE_FROM_LINK (Link); + DumpVarStorage (Storage, FALSE); + Link = GetNextNode (StorageListHead, Link); + } + } +} + +EFI_STATUS +ProcessKey ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN VOID *Data, + IN UINTN DataSize, + IN UINT32 Attributes + ) +{ + return ProcessVar (VariableName, VendorGuid, Data, DataSize, Attributes); +} + +EFI_STATUS +EFIAPI +CoreSetVariable ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + IN UINTN DataSize, + IN VOID *Data + ) +{ + return ProcessKey (VariableName, VendorGuid, Data, DataSize, Attributes); +} + +EFI_STATUS +EFIAPI +CoreGetVariable ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + OUT UINT32 *Attributes, OPTIONAL + IN OUT UINTN *DataSize, + OUT VOID *Data OPTIONAL + ) +{ + VARIABLE_INFO_PRIVATE *VariableInfo; + + if (DataSize == NULL) { + return EFI_INVALID_PARAMETER; + } + + VariableInfo = FindVariableInfoPtr (VariableName, VendorGuid); + if (VariableInfo == NULL || VariableInfo->Size == 0) { + return EFI_NOT_FOUND; + } + if (*DataSize < VariableInfo->Size) { + *DataSize = VariableInfo->Size; + return EFI_BUFFER_TOO_SMALL; + } + *DataSize = VariableInfo->Size; + if (Data != NULL) { + CopyMem (Data, VariableInfo->Buffer, VariableInfo->Size); + } + + if (Attributes != NULL) { + *Attributes = VariableInfo->Attributes; + } + + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/OsVariable.h b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/OsVariable.h new file mode 100644 index 0000000..60fa9e4 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/OsVariable.h @@ -0,0 +1,71 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _OS_VARIABLE_H_ +#define _OS_VARIABLE_H_ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +// +// ASN.1 +// +#define TWO_BYTE_ENCODE 0x82 + +#define SHA256_DIGEST_SIZE 32 + +#define VARIABLE_INFO_PRIVATE_SIGNATURE SIGNATURE_32 ('V', 'K', 'E', 'S') + +typedef struct { + UINTN Signature; + LIST_ENTRY Link; + + EFI_GUID Guid; + CHAR16 *Name; + UINT32 Attributes; + EFI_TIME TimeStamp; + UINTN Size; + UINT8 *Buffer; +} VARIABLE_INFO_PRIVATE; + +#define VARIABLE_INFO_PRIVATE_FROM_LINK(a) CR (a, VARIABLE_INFO_PRIVATE, Link, VARIABLE_INFO_PRIVATE_SIGNATURE) + +#define FREE_NON_NULL_PTR(Pointer) \ + do { \ + if ((Pointer) != NULL) { \ + free ((Pointer)); \ + (Pointer) = NULL; \ + } \ + } while(FALSE) + +// +// Command operation type. +// +typedef enum { + VariableTypeAdd, // Indicate to create variable. + VariableTypeDel, // Indicate to delete. + VariableTypeAppend, // Indicate to append. + VariableTypeMax // Invalid type +} EFI_COMMAND_OPER_TYPE; + +BOOLEAN +CompareTimeStamp ( + IN EFI_TIME *FirstTime, + IN EFI_TIME *SecondTime + ); + +#endif diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Time.c b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Time.c new file mode 100644 index 0000000..5eb2e67 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Time.c @@ -0,0 +1,43 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +#include +#include +#include + +EFI_STATUS +EFIAPI +CoreGetTime ( + OUT EFI_TIME *Time, + OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL + ) +{ + time_t timer; + struct tm *info; + + if (Time != NULL) { + ZeroMem (Time, sizeof(*Time)); + time (&timer); + info = localtime (&timer); + Time->Year = (UINT16)(info->tm_year + 1900); + Time->Month = (UINT8)(info->tm_mon + 1); + Time->Day = (UINT8)info->tm_mday; + Time->Hour = (UINT8)info->tm_hour; + Time->Minute = (UINT8)info->tm_min; + Time->Second = (UINT8)info->tm_sec; + } + if (Capabilities != NULL) { + ZeroMem (Capabilities, sizeof(*Capabilities)); + } + return EFI_SUCCESS; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.c b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.c new file mode 100644 index 0000000..1a73b5a --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.c @@ -0,0 +1,160 @@ +/** @file + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +extern EFI_RUNTIME_SERVICES mEfiRuntimeServicesTableTemplate; + +EFI_RUNTIME_SERVICES *gRT = &mEfiRuntimeServicesTableTemplate; + + +/** + Place holder function until all the Boot Services and Runtime Services are + available. + + @param Arg1 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg1 ( + UINTN Arg1 + ); + + +/** + Place holder function until all the Boot Services and Runtime Services are available. + + @param Arg1 Undefined + @param Arg2 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg2 ( + UINTN Arg1, + UINTN Arg2 + ); + + +/** + Place holder function until all the Boot Services and Runtime Services are available. + + @param Arg1 Undefined + @param Arg2 Undefined + @param Arg3 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg3 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3 + ); + + +/** + Place holder function until all the Boot Services and Runtime Services are available. + + @param Arg1 Undefined + @param Arg2 Undefined + @param Arg3 Undefined + @param Arg4 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg4 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4 + ); + + +/** + Place holder function until all the Boot Services and Runtime Services are available. + + @param Arg1 Undefined + @param Arg2 Undefined + @param Arg3 Undefined + @param Arg4 Undefined + @param Arg5 Undefined + + @return EFI_NOT_AVAILABLE_YET + +**/ +EFI_STATUS +EFIAPI +CoreEfiNotAvailableYetArg5 ( + UINTN Arg1, + UINTN Arg2, + UINTN Arg3, + UINTN Arg4, + UINTN Arg5 + ); + +EFI_STATUS +EFIAPI +CoreGetTime ( + OUT EFI_TIME *Time, + OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL + ); + +EFI_STATUS +EFIAPI +CoreSetVariable ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + IN UINTN DataSize, + IN VOID *Data + ); + +EFI_STATUS +EFIAPI +CoreGetVariable ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + OUT UINT32 *Attributes, OPTIONAL + IN OUT UINTN *DataSize, + OUT VOID *Data OPTIONAL + ); + +EFI_RUNTIME_SERVICES mEfiRuntimeServicesTableTemplate = { + { + EFI_RUNTIME_SERVICES_SIGNATURE, // Signature + EFI_RUNTIME_SERVICES_REVISION, // Revision + sizeof (EFI_RUNTIME_SERVICES), // HeaderSize + 0, // CRC32 + 0 // Reserved + }, + (EFI_GET_TIME) CoreGetTime, // GetTime + (EFI_SET_TIME) CoreEfiNotAvailableYetArg1, // SetTime + (EFI_GET_WAKEUP_TIME) CoreEfiNotAvailableYetArg3, // GetWakeupTime + (EFI_SET_WAKEUP_TIME) CoreEfiNotAvailableYetArg2, // SetWakeupTime + (EFI_SET_VIRTUAL_ADDRESS_MAP) CoreEfiNotAvailableYetArg4, // SetVirtualAddressMap + (EFI_CONVERT_POINTER) CoreEfiNotAvailableYetArg2, // ConvertPointer + (EFI_GET_VARIABLE) CoreGetVariable, // GetVariable + (EFI_GET_NEXT_VARIABLE_NAME) CoreEfiNotAvailableYetArg3, // GetNextVariableName + (EFI_SET_VARIABLE) CoreSetVariable, // SetVariable + (EFI_GET_NEXT_HIGH_MONO_COUNT) CoreEfiNotAvailableYetArg1, // GetNextHighMonotonicCount + (EFI_RESET_SYSTEM) CoreEfiNotAvailableYetArg4, // ResetSystem + (EFI_UPDATE_CAPSULE) CoreEfiNotAvailableYetArg3, // UpdateCapsule + (EFI_QUERY_CAPSULE_CAPABILITIES) CoreEfiNotAvailableYetArg4, // QueryCapsuleCapabilities + (EFI_QUERY_VARIABLE_INFO) CoreEfiNotAvailableYetArg4 // QueryVariableInfo +}; diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.inf b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.inf new file mode 100644 index 0000000..984e313 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.inf @@ -0,0 +1,43 @@ +## @file +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = UefiRuntimeServicesTableLibHost + FILE_GUID = 2F5F71C6-932D-4F91-ACC2-ED886DE088A0 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = UefiRuntimeServicesTableLib + +[Sources] + UefiRuntimeServicesTableLibHost.c + Time.c + OsVariable.c + AuthVariable.c + AuthVarCertDB.c + Variable.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + SecurityPkg/SecurityPkg.dec + CryptoPkg/CryptoPkg.dec + UefiHostTestPkg/UefiHostTestPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + UefiBootServicesTableLib + +[Guids] + gEfiGlobalVariableGuid + gEfiImageSecurityDatabaseGuid + gEfiCertDbGuid + gEfiCertX509Sha256Guid + gEfiCertX509Sha384Guid + gEfiCertX509Sha512Guid + gEfiCertPkcs7Guid diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Variable.c b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Variable.c new file mode 100644 index 0000000..41730c1 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Variable.c @@ -0,0 +1,541 @@ +/** + Read and edit the EFI variable. + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "OsVariable.h" +#include "VariableCommon.h" +#include "Variable.h" +#include + +/** + + Gets the pointer to the first variable header in given variable store area. + + @param VarStoreHeader Pointer to the Variable Store Header. + + @return Pointer to the first variable header. + +**/ +VARIABLE_HEADER * +GetStartPointer ( + IN VARIABLE_STORE_HEADER *VarStoreHeader + ) +{ + // + // The end of variable store. + // + return (VARIABLE_HEADER *) HEADER_ALIGN (VarStoreHeader + 1); +} + +/** + + Gets the pointer to the end of the variable storage area. + + This function gets pointer to the end of the variable storage + area, according to the input variable store header. + + @param VarStoreHeader Pointer to the Variable Store Header. + + @return Pointer to the end of the variable storage area. + +**/ +VARIABLE_HEADER * +GetEndPointer ( + IN VARIABLE_STORE_HEADER *VarStoreHeader + ) +{ + // + // The end of variable store + // + return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) VarStoreHeader + VarStoreHeader->Size); +} + + +/** + + This code checks if variable header is valid or not. + + @param Variable Pointer to the Variable Header. + + @retval TRUE Variable header is valid. + @retval FALSE Variable header is not valid. + +**/ +BOOLEAN +IsValidVariableHeader ( + IN VARIABLE_HEADER *Variable + ) +{ + if ((Variable == NULL) || (Variable->Common.StartId != VARIABLE_DATA)) { + return FALSE; + } + + return TRUE; +} + +/** + + This code gets the size of name of variable. + + @param Variable Pointer to the Variable Header. + + @return UINTN Size of variable in bytes. + +**/ +UINTN +NameSizeOfVariable ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType + ) +{ + switch (VariableType) { + case VariableTypeNormal: + if ((Variable->Normal.State == (UINT8) (-1)) || + (Variable->Normal.DataSize == (UINT32) (-1)) || + (Variable->Normal.NameSize == (UINT32) (-1)) || + (Variable->Normal.Attributes == (UINT32) (-1)) + ) { + return 0; + } + return (UINTN) Variable->Normal.NameSize; + case VariableTypeCountBasedAuth: + if ((Variable->CountBasedAuth.State == (UINT8) (-1)) || + (Variable->CountBasedAuth.DataSize == (UINT32) (-1)) || + (Variable->CountBasedAuth.NameSize == (UINT32) (-1)) || + (Variable->CountBasedAuth.Attributes == (UINT32) (-1)) + ) { + return 0; + } + return (UINTN) Variable->CountBasedAuth.NameSize; + case VariableTypeTimeBasedAuth: + if ((Variable->TimeBasedAuth.State == (UINT8) (-1)) || + (Variable->TimeBasedAuth.DataSize == (UINT32) (-1)) || + (Variable->TimeBasedAuth.NameSize == (UINT32) (-1)) || + (Variable->TimeBasedAuth.Attributes == (UINT32) (-1)) + ) { + return 0; + } + return (UINTN) Variable->TimeBasedAuth.NameSize; + default: + return 0; + } +} + +/** + + This code gets the size of variable data. + + @param Variable Pointer to the Variable Header. + + @return Size of variable in bytes. + +**/ +UINTN +DataSizeOfVariable ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType + ) +{ + switch (VariableType) { + case VariableTypeNormal: + if ((Variable->Normal.State == (UINT8) (-1)) || + (Variable->Normal.DataSize == (UINT32) (-1)) || + (Variable->Normal.NameSize == (UINT32) (-1)) || + (Variable->Normal.Attributes == (UINT32) (-1)) + ) { + return 0; + } + return (UINTN) Variable->Normal.DataSize; + case VariableTypeCountBasedAuth: + if ((Variable->CountBasedAuth.State == (UINT8) (-1)) || + (Variable->CountBasedAuth.DataSize == (UINT32) (-1)) || + (Variable->CountBasedAuth.NameSize == (UINT32) (-1)) || + (Variable->CountBasedAuth.Attributes == (UINT32) (-1)) + ) { + return 0; + } + return (UINTN) Variable->CountBasedAuth.DataSize; + case VariableTypeTimeBasedAuth: + if ((Variable->TimeBasedAuth.State == (UINT8) (-1)) || + (Variable->TimeBasedAuth.DataSize == (UINT32) (-1)) || + (Variable->TimeBasedAuth.NameSize == (UINT32) (-1)) || + (Variable->TimeBasedAuth.Attributes == (UINT32) (-1)) + ) { + return 0; + } + return (UINTN) Variable->TimeBasedAuth.DataSize; + default: + return 0; + } +} + +/** + + This code gets the pointer to the variable name. + + @param Variable Pointer to the Variable Header. + + @return Pointer to Variable Name which is Unicode encoding. + +**/ +CHAR16 * +GetVariableNamePtr ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType + ) +{ + switch (VariableType) { + case VariableTypeNormal: + return (CHAR16 *) ((UINTN)Variable + sizeof(VARIABLE_HEADER_NORMAL)); + case VariableTypeCountBasedAuth: + return (CHAR16 *) ((UINTN)Variable + sizeof(VARIABLE_HEADER_COUNT_BASED_AUTH)); + case VariableTypeTimeBasedAuth: + return (CHAR16 *) ((UINTN)Variable + sizeof(VARIABLE_HEADER_TIME_BASED_AUTH)); + default: + return NULL; + } +} + +/** + + This code gets the pointer to the variable data. + + @param Variable Pointer to the Variable Header. + + @return Pointer to Variable Data. + +**/ +UINT8 * +GetVariableDataPtr ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType + ) +{ + UINTN Value; + + // + // Be careful about pad size for alignment. + // + Value = (UINTN) GetVariableNamePtr (Variable, VariableType); + Value += NameSizeOfVariable (Variable, VariableType); + Value += GET_PAD_SIZE (NameSizeOfVariable (Variable, VariableType)); + + return (UINT8 *) Value; +} + +/** + + This code gets the pointer to the next variable header. + + @param Variable Pointer to the Variable Header. + + @return Pointer to next variable header. + +**/ +VARIABLE_HEADER * +GetNextVariablePtr ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType + ) +{ + UINTN Value; + + if (!IsValidVariableHeader (Variable)) { + return NULL; + } + + Value = (UINTN) GetVariableDataPtr (Variable, VariableType); + Value += DataSizeOfVariable (Variable, VariableType); + Value += GET_PAD_SIZE (DataSizeOfVariable (Variable, VariableType)); + + // + // Be careful about pad size for alignment. + // + return (VARIABLE_HEADER *) HEADER_ALIGN (Value); +} + +/** + + This code gets the pointer to the variable GUID. + + @param Variable Pointer to the Variable Header. + + @return Pointer to variable GUID. + +**/ +EFI_GUID * +GetVariableGuidPtr ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType + ) +{ + switch (VariableType) { + case VariableTypeNormal: + return &Variable->Normal.VendorGuid; + case VariableTypeCountBasedAuth: + return &Variable->CountBasedAuth.VendorGuid; + case VariableTypeTimeBasedAuth: + return &Variable->TimeBasedAuth.VendorGuid; + default: + return NULL; + } +} + +/** + + This code gets the Attributes of variable data. + + @param Variable Pointer to the Variable Header. + + @return Attributes of variable. + +**/ +UINT32 +AttributesOfVariable ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType + ) +{ + return Variable->Normal.Attributes; +} + +VOID +SetVariableAttributes ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType, + IN UINT32 Attributes + ) +{ + Variable->Normal.Attributes = Attributes; +} + +VOID +SetVariableNameSize ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType, + IN UINT32 NameSize + ) +{ + switch (VariableType) { + case VariableTypeNormal: + Variable->Normal.NameSize = NameSize; + break; + case VariableTypeCountBasedAuth: + Variable->CountBasedAuth.NameSize = NameSize; + break; + case VariableTypeTimeBasedAuth: + Variable->TimeBasedAuth.NameSize = NameSize; + break; + default: + break; + } +} + +VOID +SetVariableDataSize ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType, + IN UINT32 DataSize + ) +{ + switch (VariableType) { + case VariableTypeNormal: + Variable->Normal.DataSize = DataSize; + break; + case VariableTypeCountBasedAuth: + Variable->CountBasedAuth.DataSize = DataSize; + break; + case VariableTypeTimeBasedAuth: + Variable->TimeBasedAuth.DataSize = DataSize; + break; + default: + break; + } +} + +VOID +SetVariableGuid ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType, + IN EFI_GUID *Guid + ) +{ + EFI_GUID *VendorGuid; + + VendorGuid = GetVariableGuidPtr (Variable, VariableType); + if (VendorGuid != NULL) { + memcpy (VendorGuid, Guid, sizeof (EFI_GUID)); + } +} + +VOID +SetVariableName ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType, + IN CHAR16 *Name, + IN UINTN NameSize + ) +{ + CHAR16 *VariableName; + + VariableName = GetVariableNamePtr (Variable, VariableType); + if (VariableName != NULL) { + memcpy (VariableName, Name, NameSize); + } +} + +VOID +SetVariableData ( + IN VARIABLE_HEADER *Variable, + IN VARIABLE_TYPE VariableType, + IN VOID *Buffer, + IN UINTN BuffferSize + ) +{ + memcpy (GetVariableDataPtr (Variable, VariableType), Buffer, BuffferSize); +} + +UINTN +SizeOfVariableHeader ( + IN VARIABLE_TYPE VariableType + ) +{ + switch (VariableType) { + case VariableTypeNormal: + return sizeof(VARIABLE_HEADER_NORMAL); + case VariableTypeCountBasedAuth: + return sizeof(VARIABLE_HEADER_COUNT_BASED_AUTH); + case VariableTypeTimeBasedAuth: + return sizeof(VARIABLE_HEADER_TIME_BASED_AUTH); + default: + return 0; + } +} + +/** + Search and get a free space in the EFI variable zone + + @param VariableStoreHeader The start of a EFI variable zone. + @param VarListSize The size of a variables needs to be allocated. + @param FreeBeginVar The dual pointer to the free NV space. + + @retval EFI_SUCCESS Return the beginning of a free variable space. + @retval RETURN_BUFFER_TOO_SMALL Failed. +**/ +EFI_STATUS +GetVariableVar ( + IN VARIABLE_STORE_HEADER *VariableStoreHeader, + IN VARIABLE_TYPE VariableType, + IN UINT32 VarListSize, + IN OUT CHAR8 **FreeBeginVar +) +{ + BOOLEAN Flag; + VARIABLE_HEADER *Variable; + VARIABLE_HEADER *EndOfVariable; + CHAR8 *BeginVar; + + BeginVar = NULL; + Flag = FALSE; + Variable = NULL; + EndOfVariable = NULL; + *FreeBeginVar = NULL; + + if (VariableStoreHeader == NULL) { + *FreeBeginVar = NULL; + return RETURN_INVALID_PARAMETER; + } + Variable = GetStartPointer (VariableStoreHeader); + EndOfVariable = GetEndPointer(VariableStoreHeader); + // + //Search the beginning of free NV + // + while (Variable != EndOfVariable) { + BeginVar = (CHAR8 *)Variable; + Variable = GetNextVariablePtr (Variable, VariableType); + if (Variable == NULL) { + Flag = TRUE; + break; + } + } + // + // Check whether the free space is more than what we want + // + if ((CHAR8 *)BeginVar + VarListSize > (CHAR8 *)EndOfVariable) { + return RETURN_BUFFER_TOO_SMALL; + } + // + // If not find the available space, return NULL + // + if (!Flag) { + return RETURN_BUFFER_TOO_SMALL; + } + *FreeBeginVar = BeginVar; + + return EFI_SUCCESS; +} + +/** + Search whether the variable in VarList has existed in current NV. + + Parse the FFS or Fd image, and find the valid variable pointer. + + @param VariableStoreHeader The start of a EFI variable zone. + @param VarList The pointer to the VarList + + @retval address If the variable existed in current NV, return address + @return NULL Otherwise, return NULL +**/ +VARIABLE_HEADER * +FindVariableInNv ( + IN VARIABLE_STORE_HEADER *VariableStoreHeader, + IN VARIABLE_TYPE VariableType, + IN VARIABLE_INFO_PRIVATE *Storage + ) +{ + BOOLEAN Flag; + VARIABLE_HEADER *Variable; + VARIABLE_HEADER *EndOfVariable; + CHAR16 *VariableName; + EFI_GUID *VendorGuid; + + Flag = FALSE; + Variable = NULL; + EndOfVariable = NULL; + VariableName = NULL; + VendorGuid = NULL; + + if ((VariableStoreHeader == NULL) || (Storage == NULL) || (Storage->Name == NULL)) { + return NULL; + } + Variable = GetStartPointer (VariableStoreHeader); + EndOfVariable = GetEndPointer(VariableStoreHeader); + // + // Parse and compare the variable in the NV space one by one + // + while ((Variable != EndOfVariable) && (Variable != NULL)) { + VariableName = (CHAR16 *)GetVariableNamePtr (Variable, VariableType); + if (NULL == VariableName) { + return NULL; + } + VendorGuid = GetVariableGuidPtr (Variable, VariableType); + if (NULL == VendorGuid) { + return NULL; + } + if ((CompareGuid (VendorGuid, &Storage->Guid)) && + (StrCmp (Storage->Name, VariableName) == 0) && + (Variable->Common.State == VAR_ADDED)) { + Flag = TRUE; + break; + } + Variable = GetNextVariablePtr (Variable, VariableType); + } + if (!Flag) { + return NULL; + } + return Variable; +} diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Variable.h b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Variable.h new file mode 100644 index 0000000..ca9e2da --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/Variable.h @@ -0,0 +1,257 @@ +/** @file + The header of Variable.c. + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __VARIABLE_FORMAT_H__ +#define __VARIABLE_FORMAT_H__ + +/// +/// Alignment of variable name and data, according to the architecture: +/// * For IA-32 and Intel(R) 64 architectures: 1. +/// * For IA-64 architecture: 8. +/// +#if defined (MDE_CPU_IPF) +#define ALIGNMENT 8 +#else +#define ALIGNMENT 1 +#endif + +/// +/// GET_PAD_SIZE calculates the miminal pad bytes needed to make the current pad size satisfy the alignment requirement. +/// +#if (ALIGNMENT == 1) +#define GET_PAD_SIZE(a) (0) +#else +#define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1)) +#endif + +/// +/// Alignment of Variable Data Header in Variable Store region. +/// +#define HEADER_ALIGNMENT 4 +#define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1))) + +/// +/// Status of Variable Store Region. +/// +typedef enum { + EfiRaw, + EfiValid, + EfiInvalid, + EfiUnknown +} VARIABLE_STORE_STATUS; + +#pragma pack(1) + +#define VARIABLE_STORE_SIGNATURE EFI_VARIABLE_GUID + +/// +/// Variable Store Header Format and State. +/// +#define VARIABLE_STORE_FORMATTED 0x5a +#define VARIABLE_STORE_HEALTHY 0xfe + +/// +/// Variable Store region header. +/// +typedef struct { + /// + /// Variable store region signature. + /// + EFI_GUID Signature; + /// + /// Size of entire variable store, + /// including size of variable store header but not including the size of FvHeader. + /// + UINT32 Size; + /// + /// Variable region format state. + /// + UINT8 Format; + /// + /// Variable region healthy state. + /// + UINT8 State; + UINT16 Reserved; + UINT32 Reserved1; +} VARIABLE_STORE_HEADER; + +/// +/// Variable data start flag. +/// +#define VARIABLE_DATA 0x55AA + +/// +/// Variable State flags. +/// +#define VAR_IN_DELETED_TRANSITION 0xfe ///< Variable is in obsolete transition. +#define VAR_DELETED 0xfd ///< Variable is obsolete. +#define VAR_HEADER_VALID_ONLY 0x7f ///< Variable header has been valid. +#define VAR_ADDED 0x3f ///< Variable has been completely added. + +/// +/// Single Variable Data Header Structure. +/// +typedef struct { + /// + /// Variable Data Start Flag. + /// + UINT16 StartId; + /// + /// Variable State defined above. + /// + UINT8 State; + UINT8 Reserved; + /// + /// Attributes of variable defined in UEFI specification. + /// + UINT32 Attributes; + /// + /// Size of variable null-terminated Unicode string name. + /// + UINT32 NameSize; + /// + /// Size of the variable data without this header. + /// + UINT32 DataSize; + /// + /// A unique identifier for the vendor that produces and consumes this varaible. + /// + EFI_GUID VendorGuid; +} VARIABLE_HEADER_NORMAL; + +/// +/// Single Variable Data Header Structure. +/// +typedef struct { + /// + /// Variable Data Start Flag. + /// + UINT16 StartId; + /// + /// Variable State defined above. + /// + UINT8 State; + UINT8 Reserved; + /// + /// Attributes of variable defined in UEFI spec + /// + UINT32 Attributes; + /// + /// Associated monotonic count value against replay attack. + /// + UINT64 MonotonicCount; + /// + /// Index of associated public key in database. + /// + UINT32 PubKeyIndex; + /// + /// Size of variable null-terminated Unicode string name. + /// + UINT32 NameSize; + /// + /// Size of the variable data without this header. + /// + UINT32 DataSize; + /// + /// A unique identifier for the vendor that produces and consumes this varaible. + /// + EFI_GUID VendorGuid; +} VARIABLE_HEADER_COUNT_BASED_AUTH; + +/// +/// Single Variable Data Header Structure. +/// +typedef struct { + /// + /// Variable Data Start Flag. + /// + UINT16 StartId; + /// + /// Variable State defined above. + /// + UINT8 State; + UINT8 Reserved; + /// + /// Attributes of variable defined in UEFI spec + /// + UINT32 Attributes; + /// + /// Associated monotonic count value against replay attack. + /// + UINT64 MonotonicCount; + /// + /// Associated TimeStamp value against replay attack. + /// + EFI_TIME TimeStamp; + /// + /// Index of associated public key in database. + /// + UINT32 PubKeyIndex; + /// + /// Size of variable null-terminated Unicode string name. + /// + UINT32 NameSize; + /// + /// Size of the variable data without this header. + /// + UINT32 DataSize; + /// + /// A unique identifier for the vendor that produces and consumes this varaible. + /// + EFI_GUID VendorGuid; +} VARIABLE_HEADER_TIME_BASED_AUTH; + +/// +/// Single Variable Data Header Structure. +/// +typedef struct { + /// + /// Variable Data Start Flag. + /// + UINT16 StartId; + /// + /// Variable State defined above. + /// + UINT8 State; + UINT8 Reserved; + // ...... +} VARIABLE_HEADER_COMMON; + +typedef union { + VARIABLE_HEADER_COMMON Common; + VARIABLE_HEADER_NORMAL Normal; + VARIABLE_HEADER_COUNT_BASED_AUTH CountBasedAuth; + VARIABLE_HEADER_TIME_BASED_AUTH TimeBasedAuth; +} VARIABLE_HEADER; + +#pragma pack() + +// +// Internal definition +// + +typedef struct _VARIABLE_INFO_ENTRY VARIABLE_INFO_ENTRY; + +/// +/// This structure contains the variable list that is put in EFI system table. +/// The variable driver collects all variables that were used at boot service time and produces this list. +/// This is an optional feature to dump all used variables in shell environment. +/// +struct _VARIABLE_INFO_ENTRY { + VARIABLE_INFO_ENTRY *Next; ///< Pointer to next entry. + EFI_GUID VendorGuid; ///< Guid of Variable. + CHAR16 *Name; ///< Name of Variable. + UINT32 Attributes; ///< Attributes of variable defined in UEFI specification. + UINT32 ReadCount; ///< Number of times to read this variable. + UINT32 WriteCount; ///< Number of times to write this variable. + UINT32 DeleteCount; ///< Number of times to delete this variable. + UINT32 CacheCount; ///< Number of times that cache hits this variable. + BOOLEAN Volatile; ///< TRUE if volatile, FALSE if non-volatile. +}; + +#endif // _EFI_VARIABLE_H_ diff --git a/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/VariableCommon.h b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/VariableCommon.h new file mode 100644 index 0000000..f751cc8 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/VariableCommon.h @@ -0,0 +1,51 @@ +/** @file + The header of common Variable.c + +Copyright (c) 2018, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __VARIABLE_COMMON_H__ +#define __VARIABLE_COMMON_H__ + +typedef enum { + VariableTypeNormal, + VariableTypeCountBasedAuth, + VariableTypeTimeBasedAuth, + VariableTypeUnknown, +} VARIABLE_TYPE; + +EFI_STATUS +CreateVariableList ( + IN LIST_ENTRY *StorageListHead, + IN CHAR16 *Name, + IN EFI_GUID *Guid, + IN UINT32 Attributes, + IN EFI_TIME *TimeStamp, + IN UINTN Size, + IN UINT8 *Buffer, + IN BOOLEAN Append + ); + +EFI_STATUS +DeleteVariableList ( + IN LIST_ENTRY *StorageListHead, + IN CHAR16 *Name, + IN EFI_GUID *Guid + ); + +LIST_ENTRY * +FindVariableList ( + IN LIST_ENTRY *StorageListHead, + IN CHAR16 *Name, + IN EFI_GUID *Guid + ); + +VARIABLE_INFO_PRIVATE* +FindVariableInfoPtr( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid + ); + +#endif // _EFI_VARIABLE_COMMON_H_ diff --git a/HBFA/UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.c b/HBFA/UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.c new file mode 100644 index 0000000..971688c --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.c @@ -0,0 +1,78 @@ +/** @file + Implementation functions and structures for var check services. + +Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
    +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Var check initialize at END_OF_DXE. + + This function needs to be called at END_OF_DXE. + Address pointers may be returned, + and caller needs to ConvertPointer() for the pointers. + + @param[in, out] AddressPointerCount Output pointer to address pointer count. + + @return Address pointer buffer, NULL if input AddressPointerCount is NULL. + +**/ +VOID *** +EFIAPI +VarCheckLibInitializeAtEndOfDxe ( + IN OUT UINTN *AddressPointerCount OPTIONAL + ) +{ + return NULL; +} + +EFI_STATUS +EFIAPI +VarCheckLibSetVariableCheck ( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT32 Attributes, + IN UINTN DataSize, + IN VOID *Data, + IN VAR_CHECK_REQUEST_SOURCE RequestSource + ) +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +VarCheckLibVariablePropertyGet ( + IN CHAR16 *Name, + IN EFI_GUID *Guid, + OUT VAR_CHECK_VARIABLE_PROPERTY *VariableProperty + ) +{ + return EFI_NOT_FOUND; +} + +EFI_STATUS +EFIAPI +VarCheckLibVariablePropertySet ( + IN CHAR16 *Name, + IN EFI_GUID *Guid, + IN VAR_CHECK_VARIABLE_PROPERTY *VariableProperty + ) +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +VarCheckLibRegisterSetVariableCheckHandler ( + IN VAR_CHECK_SET_VARIABLE_CHECK_HANDLER Handler + ) +{ + return EFI_SUCCESS; +} + diff --git a/HBFA/UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.inf b/HBFA/UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.inf new file mode 100644 index 0000000..c12bb05 --- /dev/null +++ b/HBFA/UefiHostTestPkg/Library/VarCheckLibNull/VarCheckLibNull.inf @@ -0,0 +1,43 @@ +## @file +# Provides variable check services and database management. +# +# Copyright (c) 2015, Intel Corporation. All rights reserved.
    +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = VarCheckLibNull + FILE_GUID = 531905B9-0DB7-4CB0-82A1-917DCEE51D6F + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = VarCheckLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + VarCheckLibNull.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + DebugLib + MemoryAllocationLib + +[Guids] + ## SOMETIMES_CONSUMES ## Variable:L"Boot####" + ## SOMETIMES_CONSUMES ## Variable:L"Driver####" + ## SOMETIMES_CONSUMES ## Variable:L"SysPrep####" + ## SOMETIMES_CONSUMES ## Variable:L"Key####" + gEfiGlobalVariableGuid + gEfiHardwareErrorVariableGuid ## SOMETIMES_CONSUMES ## Variable:L"HwErrRec####" diff --git a/HBFA/UefiHostTestPkg/UefiHostTestBuildOption.dsc b/HBFA/UefiHostTestPkg/UefiHostTestBuildOption.dsc new file mode 100644 index 0000000..5e0a4c4 --- /dev/null +++ b/HBFA/UefiHostTestPkg/UefiHostTestBuildOption.dsc @@ -0,0 +1,66 @@ +## @file UefiHostTestBuildOption.dsc +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /D _CRT_SECURE_NO_WARNINGS + + GCC:*_*_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_PP_FLAGS == -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + + GCC:*_*_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_GCC49_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" + GCC:*_GCC5_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -DUSING_LTO -Os + GCC:*_*_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + + GCC:*_GCC5_*_CC_FLAGS = --coverage + GCC:*_GCC5_*_DLINK_FLAGS = --coverage + + GCC:*_GCC5_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + +[BuildOptions.common.EDKII.USER_DEFINED] + MSFT:*_*_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2015_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2015x86_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2017_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"%VCToolsInstallDir%lib\x86" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_*_IA32_CC_FLAGS == /nologo /W4 /WX /Gy /c /D UNICODE /Od /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE + MSFT:*_*_IA32_PP_FLAGS == /nologo /E /TC /FIAutoGen.h + MSFT:*_*_IA32_ASM_FLAGS == /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi + MSFT:*_*_IA32_ASMLINK_FLAGS == /link /nologo /tiny + + MSFT:*_*_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2015_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2015x86_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_VS2017_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"%VCToolsInstallDir%lib\x64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib + MSFT:*_*_X64_CC_FLAGS == /nologo /W4 /WX /Gy /c /D UNICODE /Od /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE + MSFT:*_*_X64_PP_FLAGS == /nologo /E /TC /FIAutoGen.h + MSFT:*_*_X64_ASM_FLAGS == /nologo /W3 /WX /c /Cx /Zd /W0 /Zi + MSFT:*_*_X64_ASMLINK_FLAGS == /link /nologo + + GCC:*_*_IA32_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) -m32 -L/usr/X11R6/lib + GCC:*_*_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_PP_FLAGS == -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_IA32_DLINK2_FLAGS == -Wno-error -no-pie + + GCC:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) -m64 -L/usr/X11R6/lib + GCC:*_GCC5_X64_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME) -m64 -L/usr/X11R6/lib + GCC:*_*_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_GCC49_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" + GCC:*_GCC5_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -DUSING_LTO -Os + GCC:*_*_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h + GCC:*_*_X64_DLINK2_FLAGS == -Wno-error -no-pie + + GCC:*_GCC5_*_CC_FLAGS = -fstack-protector -fstack-protector-strong -fstack-protector-all + + GCC:*_GCC5_*_CC_FLAGS = --coverage + GCC:*_GCC5_*_DLINK_FLAGS = --coverage + + GCC:*_GCC5_X64_CC_FLAGS = "-DNO_MSABI_VA_FUNCS=TRUE" + diff --git a/HBFA/UefiHostTestPkg/UefiHostTestPkg.dec b/HBFA/UefiHostTestPkg/UefiHostTestPkg.dec new file mode 100644 index 0000000..f5fe1b7 --- /dev/null +++ b/HBFA/UefiHostTestPkg/UefiHostTestPkg.dec @@ -0,0 +1,15 @@ +## @file UefiHostTestPkg.dec +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION = 0x00010005 + PACKAGE_NAME = UefiHostTestPkg + PACKAGE_GUID = 1D212CA8-77BF-4957-80DA-75609227E70C + PACKAGE_VERSION = 0.11 + +[Includes.common] + Include \ No newline at end of file diff --git a/HBFA/UefiHostTestPkg/UefiHostTestPkg.dsc b/HBFA/UefiHostTestPkg/UefiHostTestPkg.dsc new file mode 100644 index 0000000..8bf5aaa --- /dev/null +++ b/HBFA/UefiHostTestPkg/UefiHostTestPkg.dsc @@ -0,0 +1,56 @@ +## @file UefiHostTestPkg.dsc +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = UefiHostTestPkg + PLATFORM_GUID = C2A9A6F1-57DC-4397-ACB6-BCF5DF454BC0 + PLATFORM_VERSION = 0.11 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/UefiHostTestPkg + SUPPORTED_ARCHITECTURES = IA32|X64 + BUILD_TARGETS = DEBUG|RELEASE + SKUID_IDENTIFIER = DEFAULT + +[LibraryClasses] + BaseLib|UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf + CacheMaintenanceLib|UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/BaseCacheMaintenanceLibHost.inf + BaseMemoryLib|UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf + MemoryAllocationLib|UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf + DebugLib|UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf + UefiBootServicesTableLib|UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf + HobLib|UefiHostTestPkg/Library/HobLibHost/HobLibHost.inf + SmmMemLib|UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf + DevicePathLib|UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf + + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf + +[LibraryClasses.common.USER_DEFINED] + +[Components] + UefiHostTestPkg/Library/BaseLibHost/BaseLibHost.inf + UefiHostTestPkg/Library/BaseLibNullCpuid/BaseLibNullCpuid.inf + UefiHostTestPkg/Library/BaseLibNullMsr/BaseLibNullMsr.inf + UefiHostTestPkg/Library/BaseCacheMaintenanceLibHost/BaseCacheMaintenanceLibHost.inf + UefiHostTestPkg/Library/BaseCpuLibHost/BaseCpuLibHost.inf + UefiHostTestPkg/Library/BaseMemoryLibHost/BaseMemoryLibHost.inf + UefiHostTestPkg/Library/BaseTimerLibHost/BaseTimerLibHost.inf + UefiHostTestPkg/Library/MemoryAllocationLibHost/MemoryAllocationLibHost.inf + UefiHostTestPkg/Library/DebugLibHost/DebugLibHost.inf + UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.inf + UefiHostTestPkg/Library/UefiRuntimeServicesTableLibHost/UefiRuntimeServicesTableLibHost.inf + UefiHostTestPkg/Library/DxeServicesTableLibHost/DxeServicesTableLibHost.inf + UefiHostTestPkg/Library/PeiServicesTablePointerLibHost/PeiServicesTablePointerLibHost.inf + UefiHostTestPkg/Library/HobLibHost/HobLibHost.inf + UefiHostTestPkg/Library/UefiDevicePathLibHost/UefiDevicePathLibHost.inf + UefiHostTestPkg/Library/SmmMemLibHost/SmmMemLibHost.inf + UefiHostTestPkg/Library/UefiLibHost/UefiLibHost.inf + UefiHostTestPkg/Library/PeimEntryPointHost/PeimEntryPointHost.inf + UefiHostTestPkg/Library/UefiDriverEntryPointHost/UefiDriverEntryPointHost.inf + UefiHostTestPkg/Library/OsServiceLibHost/OsServiceLibHost.inf + +!include UefiHostTestPkg/UefiHostTestBuildOption.dsc diff --git a/HBFA/UefiHostTestTools/HBFAEnvSetup.py b/HBFA/UefiHostTestTools/HBFAEnvSetup.py new file mode 100644 index 0000000..baef88a --- /dev/null +++ b/HBFA/UefiHostTestTools/HBFAEnvSetup.py @@ -0,0 +1,168 @@ +# @file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import shutil +import sys +import re + +__copyright__ = '' +__version__ = '0.11' +__prog__ = 'HBFAEnvSetup.py' + + +def HelpInfo(): + print("Usage: %s [Options]\n" % __prog__) + print("Create Conf specified for HBFA.\n") + print("Options: ") + print(" --help, -h, -? Print this help screen and exit.\n") + print(" --reconfig " + "Overwrite the UefiHostFuzzTestPkg/Conf/*.txt") + print(" files with the template " + "files from the BaseTools/Conf directory.\n") + print("Please note: This script must be put under HBFA/UefiHostTestTools," + " so the Conf can be generated.") + + +if len(sys.argv) == 2: + if sys.argv[1] == '-h' or sys.argv[1] == '-?' or \ + sys.argv[1] == '--help' or sys.argv[1] == 'help': + HelpInfo() + os._exit(0) + +# EDK_TOOLS_PATH +if 'EDK_TOOLS_PATH' in os.environ: + edk_tools_path = os.environ['EDK_TOOLS_PATH'] + if not os.path.exists(edk_tools_path): + print("EDK_TOOLS_PATH is incorrect, cannot find this folder.") + os._exit(0) +else: + print("EDK_TOOLS_PATH should be set, or you need to run " + "edksetup.sh/edksetup.bat") + os._exit(0) + +# Conf template path +ConfTemplate = os.path.join(edk_tools_path, 'Conf') +if not os.path.exists(ConfTemplate): + print("EDK_TOOLS_PATH is incorrect, cannot find Conf under this folder.") + os._exit(0) + +# HBFA package path +HBFA_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + +# extend parts of tools_def.txt +ExtendDefineFile = os.path.join(HBFA_PATH, 'UefiHostFuzzTestPkg', + 'Conf', 'tools_def.customized') + + +def GenerateNewToolsDef(Src, Dst): + src = open(Src, 'r') + lines = src.readlines() + src.close() + FlagVer = "GCC48_ALL_CC_FLAGS" + + for line in lines: + pattern = re.compile(r"GCC\d{1,2}_ALL_CC_FLAGS") + obj = pattern.findall(line) + if len(obj) != 0: + FlagVer = obj[0] + break + + extendSrc = open(ExtendDefineFile, 'r') + ExtendDefine = extendSrc.read() + extendSrc.close() + lines.append(ExtendDefine.replace("GCC48_ALL_CC_FLAGS", FlagVer)) + + dst = open(Dst, 'w+') + dst.writelines(lines) + dst.close() + + +def InsertContentToBuildRules(Src, Dst, SectionName, InsertContent): + src = open(Src, 'r') + lines = src.readlines() + src.close() + for i in range(len(lines)): + if SectionName in lines[i]: + StartPos = i + 1 + break + + lines.insert(StartPos, InsertContent) + + dst = open(Dst, 'w+') + dst.writelines(lines) + dst.close() + + +def ExtendOptionToBuildRules(Src, Dst, SectionName, TargetOption, + ExtendOption): + src = open(Src, 'r') + lines = src.readlines() + src.close() + + Sections = SectionName if isinstance(SectionName, list) else [SectionName] + for section in Sections: + for i in range(len(lines)): + if section in lines[i]: + break + for j in range(i, len(lines)): + if TargetOption in lines[j]: + OptionPos = j + break + lines[OptionPos] = lines[OptionPos].replace('>', ', ' + ExtendOption + + '>') + + dst = open(Dst, 'w+') + dst.writelines(lines) + dst.close() + + +def GenerateConfCustomized(ConfSrc, ConfPath, ReConfig): + if not os.path.exists(ConfPath): + os.makedirs(ConfPath) + if (not os.path.exists(os.path.join(ConfPath, 'target.txt'))) or ReConfig: + shutil.copy(os.path.join(ConfSrc, 'target.template'), + os.path.join(ConfPath, 'target.txt')) + if (not os.path.exists(os.path.join(ConfPath, 'build_rule.txt'))) \ + or ReConfig: + SectionName = '[Static-Library-File.USER_DEFINED, ' \ + + 'Static-Library-File.HOST_APPLICATION]' + InsertContent = ''' + echo $(STATIC_LIBRARY_FILES_LIST) + python $(SCRIPT_PATH) ${DLINK_FLAGS} -t $(DLINK) -d $(OUTPUT_DIR) + +''' + InsertContentToBuildRules(os.path.join(ConfSrc, 'build_rule.template'), + os.path.join(ConfPath, 'build_rule.txt'), + SectionName, InsertContent) + SectionNames = ['[Object-File]', '[Static-Library-File]', + '[Static-Library-File.USER_DEFINED, ' + 'Static-Library-File.HOST_APPLICATION]', + '[Dynamic-Library-File]', + '[Hii-Binary-Package.UEFI_HII]'] + TargetOption = 'Command.MSFT' + ExtendOption = 'Command.CLANGWIN' + ExtendOptionToBuildRules(os.path.join(ConfPath, 'build_rule.txt'), + os.path.join(ConfPath, 'build_rule.txt'), + SectionNames, TargetOption, ExtendOption) + if (not os.path.exists(os.path.join(ConfPath, 'tools_def.txt'))) \ + or ReConfig: + GenerateNewToolsDef(os.path.join(ConfSrc, 'tools_def.template'), + os.path.join(ConfPath, 'tools_def.txt')) + + +def main(ReConfig): + GenerateConfCustomized(ConfTemplate, + os.path.join(HBFA_PATH, 'UefiHostFuzzTestPkg', + 'Conf'), ReConfig) + + +if __name__ == "__main__": + if len(sys.argv) == 2: + if sys.argv[1] == '--reconfig': + main(ReConfig=True) + else: + main(ReConfig=False) diff --git a/HBFA/UefiHostTestTools/Report/GenCodeCoverage.py b/HBFA/UefiHostTestTools/Report/GenCodeCoverage.py new file mode 100644 index 0000000..da7080f --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GenCodeCoverage.py @@ -0,0 +1,319 @@ +#!/usr/bin/env python3 +# @file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import stat +import subprocess +import shutil +import platform +import argparse +from GenLLVMReport import GenLLVMReport + +__prog__ = 'GenCodeCoverage.py' +__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.' +__version__ = '{} Version {}'.format(__prog__, '0.11 ') + +WORK_DIR = os.getcwd() + +# Get System type info +SysType = platform.system() + +# HBFA package path +HBFA_PATH = os.path.dirname(os.path.dirname(os.path.dirname( + os.path.realpath(__file__)))) + +# WORKSPACE +workspace = '' + +# Check EDKII BUILD WORKSPACE whether be set in system environment variable +if 'WORKSPACE' not in os.environ: + print("Please set system environment variable 'WORKSPACE' before run " + "this script.") + os._exit(0) +workspace = os.environ['WORKSPACE'] + + +def CheckTestEnv(): + if SysType == "Windows" and "DRIO_PATH" not in os.environ: + print("Please set DRIO_PATH in system environment variables.") + os._exit(0) + + +def delete_gcda_file(TestModuleBinPath): + for root, dirs, files in os.walk(os.path.dirname(TestModuleBinPath)): + for file in files: + if file.endswith('.gcda'): + file_path = os.path.join(root, file) + try: + os.remove(file_path) + except Exception as err: + print(err) + + +def HasIni(path): + if os.listdir(path) == []: + return False + + for file in os.listdir(path): + if file.endswith(".ini"): + return True + + return False + + +def CreateGcovTool(path): + with open(path, 'w') as fd: + fd.write('#!/bin/bash\nexport PATH=$CLANG_PATH:$PATH\nexec ' + 'llvm-cov gcov "$@"') + os.chmod(path, stat.S_IEXEC) + + +def Run_All_Seeds(TestModuleBinPath, SeedPath, TestIniPath): + TestModuleBinFolder = os.path.dirname(TestModuleBinPath) + if SysType == "Windows": + LogDir = os.path.join(TestModuleBinFolder, "temp", "log") + if os.path.exists(os.path.dirname(LogDir)): + shutil.rmtree(os.path.dirname(LogDir)) + os.makedirs(LogDir) + for file in os.listdir(SeedPath): + SeedFilePath = os.path.join(SeedPath, file) + if os.path.isfile(SeedFilePath): + if "IA32" in TestModuleBinPath: + cmd = r"cd {} && %DRIO_PATH%\bin32".format(LogDir) + \ + r"\drrun.exe -c %DRIO_PATH%\tools\lib32\release" + \ + r"\drcov.dll " \ + r"-- {} {}".format(TestModuleBinPath, SeedFilePath) + elif "X64" in TestModuleBinPath: + cmd = r"cd {} && %DRIO_PATH%\bin64".format(LogDir) + \ + r"\drrun.exe -c %DRIO_PATH%\tools\lib64" + \ + r"\release\drcov.dll -- " + \ + r"{} {}".format(TestModuleBinPath, SeedFilePath) + try: + subprocess.run(cmd.split(' '), shell=False, check=True) + except subprocess.CalledProcessError as err: + print(err) + elif SysType == "Linux": + if TestIniPath != "": + for file in os.listdir(SeedPath): + SeedFilePath = os.path.join(SeedPath, file) + if os.path.isfile(SeedFilePath): + for IniFile in os.listdir(TestIniPath): + IniFilePath = os.path.join(TestIniPath, IniFile) + cmd = TestModuleBinPath + ' ' + SeedFilePath + ' ' \ + + IniFilePath + try: + subprocess.run(cmd.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + else: + for file in os.listdir(SeedPath): + SeedFilePath = os.path.join(SeedPath, file) + if os.path.isfile(SeedFilePath): + cmd = TestModuleBinPath + ' ' + SeedFilePath + try: + subprocess.run(cmd.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + + +def GenCodeCoverage(TestModuleBinPath, ReportPath): + TestModuleBinFolder = os.path.dirname(TestModuleBinPath) + if SysType == "Windows": + LogDir = os.path.join(TestModuleBinFolder, "temp", "log") + TempDir = os.path.join(TestModuleBinFolder, "temp") + if "IA32" in TestModuleBinPath: + run_command = \ + r"cd {} && %DRIO_PATH%\tools".format(TempDir) + \ + r"\bin32\drcov2lcov.exe -dir " + \ + r"{} -src_filter ".format(LogDir) + \ + r"{}".format(workspace.lower()) + try: + subprocess.run(run_command.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + run_command = \ + r"cd {} && perl ".format(TempDir) + \ + r"%DRIO_PATH%\tools\bin32\genhtml " + \ + r"coverage.info" + try: + subprocess.run(run_command.split(' '), + shell=False, check=True) + except subprocess.CalledProcessError as err: + print(err) + elif "X64" in TestModuleBinPath: + run_command = \ + r"cd {} && %DRIO_PATH%\tools".format(TempDir) + \ + r"\bin64\drcov2lcov.exe -dir " + \ + r"{} -src_filter ".format(LogDir) + \ + r"{}".format(workspace.lower()) + try: + subprocess.run(run_command.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + run_command = \ + r"cd {}".format(TempDir) + \ + r" && perl %DRIO_PATH%\tools" + \ + r"\bin64\genhtml coverage.info" + try: + subprocess.run(run_command.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + if os.path.exists(ReportPath): + shutil.rmtree(ReportPath) + shutil.copytree(os.path.join(TestModuleBinFolder, "temp"), ReportPath) + elif SysType == "Linux": + try: + if "LIBFUZZER" in TestModuleBinFolder: + genLLVMReports = GenLLVMReport(TestModuleBinPath, ReportPath) + genLLVMReports.gen_reports() + print("Please view code coverage report in " + "{}".format(ReportPath)) + return + elif "CLANG8" in TestModuleBinFolder: + GcovToolPath = os.path.join(WORK_DIR, 'llvm-gcov.sh') + if not os.path.exists(GcovToolPath): + CreateGcovTool(GcovToolPath) + run_command = \ + "lcov --capture --directory " + \ + "{} --gcov-tool ".format(TestModuleBinFolder) + \ + "{} ".format(GcovToolPath) + \ + "--output-file coverage.info" + try: + subprocess.run(run_command.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + os.remove(GcovToolPath) + os.remove(GcovToolPath) + else: + run_command = \ + "lcov --capture --directory " + \ + "{} ".format(TestModuleBinFolder) + \ + "--output-file coverage.info" + try: + subprocess.run(run_command.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + run_command = \ + "lcov -r coverage.info '*UefiHostTestPkg*' " + \ + "--output-file " + \ + "coverage.info" + try: + subprocess.run(run_command.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + except Exception as err: + print(err) + try: + run_command = \ + "genhtml coverage.info --output-directory " + \ + "{}".format(ReportPath) + try: + subprocess.run(run_command.split(' '), shell=False, + check=True) + except subprocess.CalledProcessError as err: + print(err) + os.remove('coverage.info') + os.remove('coverage.info') + except Exception as err: + print(err) + + print("Please view code coverage report in {}".format(ReportPath)) + return + + +# Parse command line options +def MyOptionParser(): + Parser = argparse.ArgumentParser() + Parser.add_argument("-e", "--execbinary", dest="ModuleBin", + help="Test module binary file name.") + Parser.add_argument("-d", "--dir", dest="SeedPath", + help="Test output seed directory path.") + Parser.add_argument("-t", "--testini", dest="TestIniPath", + help="Test ini files path for ErrorInjection, " + "only for ErrorInjection.") + Parser.add_argument("-r", "--report", dest="ReportPath", + help="Generated code coverage report path.") + + args = Parser.parse_args(sys.argv[1:]) + return args + + +def main(): + Option = MyOptionParser() + + CheckTestEnv() + + if not Option.ModuleBin: + print("Test module binary path should be set once by command -e " + "MODULEBIN, --execbinary=MODULEBIN.") + os._exit(0) + elif not os.path.exists(Option.ModuleBin): + print("Test module binary path: " + "{} does not exist.".format(os.path.abspath(Option.ModuleBin))) + os._exit(0) + else: + ModuleBinPath = Option.ModuleBin + + if not Option.ReportPath: + ReportPath = os.path.join(WORK_DIR, 'CodeCoverageReport') + elif os.path.isabs(Option.ReportPath): + ReportPath = os.path.join(Option.ReportPath, 'CodeCoverageReport') + elif not os.path.isabs(Option.ReportPath): + ReportPath = os.path.join(WORK_DIR, Option.ReportPath, + 'CodeCoverageReport') + else: + print("Please check the input report path.") + os._exit(0) + + if "CLANG8" not in ModuleBinPath: + if not Option.SeedPath: + print("Test output seed directory path should be set once by " + "command -d SEEDPATH, --dir=SEEDPATH.") + os._exit(0) + elif not os.path.exists(Option.SeedPath): + print("Test output seed directory path:" + + "{} ".format(os.path.abspath(Option.SeedPath)) + + "does not exist.") + os._exit(0) + else: + OutputSeedPath = Option.SeedPath + + if not Option.TestIniPath: + TestIniPath = "" + elif not os.path.exists(Option.TestIniPath): + print("Test ini path:" + + "{}".format(os.path.abspath(Option.TestIniPath)) + + " does not exist.") + os._exit(0) + elif not HasIni(Option.TestIniPath): + print("No .ini file in {}".format(Option.TestIniPath)) + os._exit(0) + else: + TestIniPath = Option.TestIniPath + + if SysType == "Linux": + # delete .gcda files before collect code coverage + delete_gcda_file(ModuleBinPath) + + # Run binary with all seeds + Run_All_Seeds(ModuleBinPath, OutputSeedPath, TestIniPath) + + # Generate Code coverage report + GenCodeCoverage(ModuleBinPath, ReportPath) + + +if __name__ == "__main__": + main() diff --git a/HBFA/UefiHostTestTools/Report/GenGdbHtmlReport.py b/HBFA/UefiHostTestTools/Report/GenGdbHtmlReport.py new file mode 100644 index 0000000..7867c53 --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GenGdbHtmlReport.py @@ -0,0 +1,199 @@ +# @file +# Transfer report.log file into HTML file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + + +import datetime +import os +import re + +try: + import ConfigParser as ConfigParser +except Exception: + import configparser as ConfigParser + +# report template folder +TemplatePath = os.path.dirname(os.path.realpath(__file__)) + + +class GenGdbHtmlReport(object): + def __init__(self, cfgPath, outputPath, Item): + self.__cfgPath = cfgPath + self.__Item = Item + self.__oldPathFile = os.path.join(TemplatePath, "IndexTemplate.html") + self.__newPathFile = \ + os.path.join(outputPath, + "IndexTemplate.html".replace( + 'Template', self.__Item.capitalize() + if self.__Item else 'Gdb'.capitalize())) + + def __Str2HyperLink(self, oldStr, link): + return oldStr.replace(link, '
    %s' % (link, link)) \ + if len(link.split('/' if '/' in link else '\\')) > 1 else oldStr + + def __ParseFailure(self, oriInfo): + filePath = "--" + lineNum = "--" + errorMessage = "--" + + stackInfo = oriInfo.split('\n') + InfoList = [fn for fn in stackInfo if fn] + + startPos = 0 + for index in range(len(InfoList)): + if "Program" in InfoList[index]: + startPos = index + errorMessage = InfoList[startPos] + break + + for index in range(startPos, len(InfoList)): + Info = InfoList[index] + if "#0" not in Info: + if " at " in Info: + patten = re.compile(r'/.*.c') + obj = patten.findall(Info) + if len(obj) != 0: + lineNum = \ + Info.split(':')[-1] if Info.split(':')[-1] \ + else "--" + filePath = obj[0] + break + elif " from " in Info: + lineNum = "--" + filePath = Info.split(' from ')[-1] + break + elif " in " in Info: + lineNum = "--" + filePath = Info.split(' in ')[-1] + break + + for index in range(len(InfoList)): + if " at " in InfoList[index]: + patten = re.compile(r'/.*.c') + obj = patten.findall(InfoList[index]) + if len(obj) != 0: + InfoList[index] = \ + self.__Str2HyperLink(InfoList[index], obj[0]) + elif " from " in InfoList[index]: + InfoList[index] = \ + self.__Str2HyperLink(InfoList[index], + InfoList[index].split(' from ')[-1]) + elif " in " in InfoList[index]: + InfoList[index] = \ + self.__Str2HyperLink(InfoList[index], + InfoList[index].split(' in ')[-1]) + InfoList[index] = InfoList[index] + '

    ' + + stackInfo = "".join(InfoList) if InfoList else "--" + return filePath, lineNum, errorMessage, stackInfo + + def __ContentTable(self): + file = open(self.__oldPathFile, "r") + lines = file.readlines() + file.close() + for i, line in enumerate(lines): + if "" in line: + self.__content_start = i + if '' in line: + self.__content_end = i + return lines[self.__content_start + 1: self.__content_end] + + def __InsertContent(self): + cfg = ConfigParser.ConfigParser() + cfg.read(self.__cfgPath) + sections = cfg.sections() + + # if not self.__Item: + # for index, section in enumerate(sections): + # if "no stack" in cfg.get(section, "stackinfo").lower(): + # sections.pop(index) + # sections.append(section) + + failNum = len(sections) + + file = open(self.__oldPathFile, "r") + fileData = file.readlines() + file.close() + date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + + itemDetail = "crashes'" if self.__Item.lower() == 'crashes' \ + else ("hangs'" if self.__Item.lower() == 'hangs' else "failures'") + itemNum = "Crash" if self.__Item.lower() == 'crashes' \ + else ("Hang" if self.__Item.lower() == 'hangs' else 'Failure') + + if (self.__Item.lower() in ['crashes', 'hangs']): + testMethod = "AFL" + elif (self.__Item): + testMethod = "libFuzzer" + else: + print("[!] Unexpected testMethod") + exit(1) + for i, line in enumerate(fileData): + if '$itemDetail' in fileData[i]: + fileData[i] = fileData[i].replace('$itemDetail', itemDetail) + if '$testMethod' in fileData[i]: + fileData[i] = fileData[i].replace('$testMethod', testMethod) + if '$itemNum' in fileData[i]: + fileData[i] = fileData[i].replace('$itemNum', itemNum) + if '$Date' in fileData[i]: + fileData[i] = fileData[i].replace('$Date', date) + if '$failNum' in fileData[i]: + fileData[i] = fileData[i].replace('$failNum', str(failNum)) + break + + contentTemplate = self.__ContentTable() + contentList = [] + + for section in sections: + info = cfg.get(section, 'stackinfo') + TotalSeedNum = cfg.get(section, 'totalseedsnum') + failType = section + filePath, lineNum, errorMessage, stackInfo = \ + self.__ParseFailure(info) + for line in contentTemplate: + if '$failure' in line: + line = \ + line.replace('$failure', + os.path.basename(failType).split(',')[0] + if self.__Item + else ('--' if errorMessage == '--' else + os.path.dirname(failType.split( + os.path.dirname( + os.path.dirname( + os.path.dirname(failType))) + + ('/' if '/' in failType + else '\\'))[-1]))) + if '$seedsPath' in line: + line = line.replace('$seedsPath', + os.path.dirname(failType)) + if '$seedsNum' in line: + line = line.replace('$seedsNum', TotalSeedNum) + if '$filePath' in line: + if len(filePath.split('/' if '/' in filePath else '\\')) \ + > 1: + line = \ + line.replace('$filePath', filePath).replace( + '$fileName', os.path.basename(filePath)) + else: + line = line.replace( + '$fileName', + os.path.basename(filePath)) + if '$lineNum' in line: + line = line.replace('$lineNum', lineNum) + if '$error' in line: + line = line.replace('$error', errorMessage) + if '$stack' in line: + line = line.replace('$stack', stackInfo) + contentList.append(line) + fileData[self.__content_start:self.__content_end] = contentList + + s = ''.join(fileData) + file = open(self.__newPathFile, "w") + file.write(s) + file.close() + + def GenerateHtml(self): + self.__InsertContent() diff --git a/HBFA/UefiHostTestTools/Report/GenGdbInfo.py b/HBFA/UefiHostTestTools/Report/GenGdbInfo.py new file mode 100644 index 0000000..b1deda8 --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GenGdbInfo.py @@ -0,0 +1,208 @@ +# @file +# Transfer report.log file into HTML file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import subprocess +import time +import sys +import re +try: + import ConfigParser as ConfigParser +except Exception: + import configparser as ConfigParser + +# python version +python_version = sys.version_info[0] + + +class GenGdbInfo(object): + def __init__(self, execFile, cfgPath): + self.__execFile = execFile + self.__cfgPath = cfgPath + self.__logPath = os.path.splitext(cfgPath)[0] + ".log" + self.__infoList = [] + + def __CompareList(self, list1, list2): + """ + :param list1: [] + :param list2: [] + """ + if len(list1) != len(list2): + return False + for index in range(len(list1)): + if list1[index] != list2[index]: + return False + return True + + def __GenerateCommand(self, file): + """ + :param file: str + """ + Template = "timeout 0.5s \'\' \'\'; " + \ + "if [ $? -eq 124 ]; then cp \'\' /tmp/uefi_hang && " + \ + "( gdb -batch -ex run -ex bt --args /tmp/uefi_hang \'\'" + \ + " & ) && sleep 0.5 && pkill uefi_hang && sleep 0.5 && " + \ + "rm -rf /tmp/uefi_hang; else (gdb -batch -ex run -ex bt " + \ + "--args \'\' \'\'); fi;" + CommandLine = \ + Template.replace("", + self.__execFile + ).replace("", file + ).replace("", + os.path.basename( + self.__execFile)) + return CommandLine + + def __CallCommand(self, CommandLine): + """ + :param CommandLine: str + """ + Cm = subprocess.Popen(CommandLine, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=False) + msg = list(Cm.communicate()) + return msg if python_version == 2 else \ + (msg[0].decode() if msg[0] else msg[0], + msg[1].decode() if msg[1] else msg[1]) + + def __GetKeyInfo(self, oriInfo): + """ + :param oriInfo: output from subprocess ('','') + """ + if "No stack" in oriInfo[-1]: + InfoList = oriInfo[-1].split('\n') + InfoList = [fn for fn in InfoList if fn] + else: + InfoList = oriInfo[0].split('\n') + InfoList = [fn for fn in InfoList if fn] + + DetailInfo = [] + for index in range(len(InfoList)): + if "Program" in InfoList[index]: + DetailInfo.append(InfoList[index]) + if "#" in InfoList[index]: + if " at " in InfoList[index]: + patten = re.compile(r'/.*.c') + obj = patten.findall(InfoList[index]) + if len(obj) != 0: + DetailInfo.append(obj[0] + + InfoList[index].split(obj[0])[-1] + ) + elif " from " in InfoList[index]: + DetailInfo.append(InfoList[index].split('from ')[-1]) + else: + DetailInfo.append(InfoList[index].split(' in ')[-1]) + InfoList = DetailInfo + return InfoList + + def __FilterInfoToCfg(self, newInfo, filterSwitch): + """ + :param newInfo: [seedName, InfoList] + :param filterSwitch: True False + """ + seedName = newInfo[0] + InfoList = newInfo[-1] + newStack = self.__GetKeyInfo(InfoList) + configPath = self.__cfgPath + + cfg = ConfigParser.ConfigParser() + cfg.read(configPath) + searchFlag = False + if filterSwitch: + if 'no stack' in newStack[-1].lower(): + searchFlag = True + else: + for section in cfg.sections(): + oldStack = cfg.get(section, 'stackinfo') + oldStack = self.__GetKeyInfo([oldStack]) + if self.__CompareList(newStack, oldStack): + searchFlag = True + cfg.set(section, 'TotalSeedsNum', + int(cfg.get(section, 'TotalSeedsNum')) + 1) + break + if not searchFlag: + cfg.add_section(seedName) + if 'no stack' in newStack[-1].lower(): + cfg.set(seedName, 'stackinfo', InfoList[-1]) + else: + cfg.set(seedName, 'stackinfo', InfoList[0]) + cfg.set(seedName, 'TotalSeedsNum', 1) + self.__infoList = [] + for section in cfg.sections(): + self.__infoList.append((time.asctime( + time.localtime(os.path.getmtime(section))), + section, + cfg.get(section, 'stackinfo'))) + cfg.write(open(configPath, 'w')) + + def __ClearRedundantInfo(self, oriInfo): + """ + :param oriInfo: output from subprocess ('','') + """ + InfoList = oriInfo[0].split('\n') + InfoList = [fn for fn in InfoList if fn] + Pos = 0 + for index in range(len(InfoList)): + if "Program" in InfoList[index]: + Pos = index + break + if Pos > 100: + InfoList = InfoList[Pos-100:] + oriInfoNew = ('\n'.join(InfoList), oriInfo[-1]) + return oriInfoNew + + def __UpdateInfoList(self, newInputList, filterSwitch): + """ + :param newInputList: [] + :param filterSwitch: True False + """ + for newInput in newInputList: + if os.path.isfile(newInput): + errorInfo = \ + self.__CallCommand(self.__GenerateCommand(newInput)) + errorInfo = self.__ClearRedundantInfo(errorInfo) + self.__FilterInfoToCfg([newInput, errorInfo], filterSwitch) + if filterSwitch: + self.__GenereteInfoFile( + [(time.asctime(time.localtime( + os.path.getmtime(newInput))), + newInput, + errorInfo)], + os.path.join(os.path.dirname(newInput), + os.path.basename(self.__logPath))) + else: + self.__GenereteInfoFile(self.__infoList, self.__logPath) + + def __GenereteInfoFile(self, infoList, infoPath): + """ + :param infoList: [] + :param infoPath: str + """ + info = "Processing \'%s\' :\n\n" % (self.__execFile) + for index in range(len(infoList)): + info += "------------------------------------------------" + \ + "------------\n" + info += "%s\n\'%s/%s/%s\' :\n" % \ + (infoList[index][0], + infoList[index][1].replace('\\', '/').split('/')[-3], + infoList[index][1].replace('\\', '/').split('/')[-2], + infoList[index][1].replace('\\', '/').split('/')[-1]) + for msg in infoList[index][2]: + info += "%s" % msg + info += '\n\n' + output = open(infoPath, 'w+') + output.writelines(info) + output.close() + + def Run(self, newInput, filterSwitch): + """ + :param newInput: [] + :param filterSwitch: True False + """ + self.__UpdateInfoList(newInput, filterSwitch) diff --git a/HBFA/UefiHostTestTools/Report/GenLLVMReport.py b/HBFA/UefiHostTestTools/Report/GenLLVMReport.py new file mode 100644 index 0000000..a7d8092 --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GenLLVMReport.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2024, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +import os +import sys +import subprocess +import re + + +class GenLLVMReport(object): + """A tool help streamline generation and collection of LLVM coverage \ + reports for the HBFA tool-suite.""" + def __init__(self, module_binary, report_path): + self.log_file = None + if self.validate_path_pattern(module_binary): + self.module_binary = module_binary + else: + print("[!] 'module_binary' path not valid: " + "{}".format(module_binary)) + sys.exit(1) + if self.validate_path_pattern(report_path): + self.report_base_path = report_path + else: + print("[!] Report path provided to GenLLVMReport not valid:" + " {}".format(report_path)) + sys.exit(1) + self.module_name = os.path.split(self.module_binary)[-1] + self.profraw_file = os.getenv('LLVM_PROFILE_FILE') + if not os.path.exists(self.profraw_file): + print("[!] Profraw file not found [self.profraw]") + sys.exit(1) + + def validate_path_pattern(self, path_uri): + """ + Apply a simple regex to sanity-check if a directory path URI is + valid + """ + regex_dir_pattern = re.compile('^(/[^/ ]*)+/?$') + return regex_dir_pattern.match(path_uri) + + def check_create_dir(self, dir_name): + """Check if a directory exists, if not then create it.""" + if not os.path.isdir(dir_name): + try: + os.makedirs(dir_name) + except OSError as error_msg: + print("[!] Error when attempting to create directory:" + " {}".format(error_msg)) + sys.exit(1) + + def run_command(self, command): + """Run a Linux OS command and return output.""" + try: + proc = subprocess.Popen(command.split(' '), + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=False) + msg = list(proc.communicate()) + except OSError as error: + print("Exception encountered: {}".format(error)) + sys.exit(1) + return msg + + def gen_reports(self): + """Leverage llvm-profdata and llvm-cov tools to create reports.""" + self.check_create_dir(self.report_base_path) + working_dir = self.report_base_path + '/llvm_coverage_report' + self.check_create_dir(working_dir) + commands = [ + 'llvm-profdata merge -sparse ' + self.profraw_file + ' -o ' + + working_dir + '/default.profdata', + 'llvm-cov show --output-dir=' + working_dir + + ' ' + self.module_binary + ' -instr-profile=' + + working_dir + '/default.profdata -format=html', + 'llvm-cov show --output-dir=' + working_dir + + ' ' + self.module_binary + ' -instr-profile=' + + working_dir + '/default.profdata' + ] + + for command in commands: + msg = self.run_command(command) + print(command) + print(msg) diff --git a/HBFA/UefiHostTestTools/Report/GenSanitizerHtmlReport.py b/HBFA/UefiHostTestTools/Report/GenSanitizerHtmlReport.py new file mode 100644 index 0000000..30b394f --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GenSanitizerHtmlReport.py @@ -0,0 +1,301 @@ +# @file +# Transfer report.log file into HTML file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + + +import datetime +import os +import re +try: + import ConfigParser as ConfigParser +except Exception: + import configparser as ConfigParser + + +class GenSanitizerHtmlReport(object): + def __init__(self, reportLogPath, item, outputPath): + self.__reportLogPath = reportLogPath + self.__oldPath = os.path.dirname(os.path.realpath(__file__)) + self.__classification = item + if ( + self.__classification == 'crashes' or + self.__classification == 'hangs' + ): + self.testMethod = 'AFL' + else: + self.testMethod = 'libFuzzer' + self.__oldPathFile = os.path.join(self.__oldPath, "IndexTemplate.html") + self.__newPathFile = os.path.join(outputPath, "IndexSanitizer.html") + self.__cfg = ConfigParser.ConfigParser() + self.__lcfg = ConfigParser.ConfigParser() + self.__AddressSanitizerLog = os.path.join(self.__reportLogPath, + 'AddressSanitizer.cfg') + self.__LeakSanitizerLog = os.path.join(self.__reportLogPath, + 'LeakSanitizer.cfg') + + def __GetContentsInfo(self, contents): + contents_list = contents.split('\n') + error_message = '--' + for content in contents_list: + match1 = re.search(r'ERROR: AddressSanitizer: (\S)+', content) + if match1: + error_message = match1.group(0) + elif 'ERROR: AddressSanitizer' in content: + error_message = content.split('==')[-1] + match2 = re.search(r'#0 0x(.)+', content) + if match2: + FilePath = match2.group().split(' ')[-1] + LineNum = FilePath.replace(':\\', '\\').split(':')[1] + FileName = \ + os.path.basename( + FilePath.replace(':\\', '\\').split(':')[0]) + TmpLink = \ + FilePath.replace(':\\', '\\').split(':')[0].split('\\') + TmpLink[0] = TmpLink[0].replace(TmpLink[0], TmpLink[0] + ':') \ + if len(TmpLink) > 1 else TmpLink[0] + FileLink = '\\'.join(TmpLink) + if 'allocated by' in content or re.search(r'Address 0x(\w)+ is ' + r'located in', content): + break + return FileName, FileLink, LineNum, error_message + + def __GetLContentsInfo(self, contents): + contents_list = contents.split('\n') + error_message = '--' + for content in contents_list: + match1 = re.search('ERROR: LeakSanitizer: (.)+', content) + if match1: + error_message = match1.group(0) + match2 = re.search(r'#0 0x(.)+', content) + if match2: + FilePath = match2.group().split(' ')[-1] + LineNum = FilePath.replace(':\\', '\\').split(':')[1] + FileName = \ + os.path.basename( + FilePath.replace(':\\', '\\').split(':')[0]) + TmpLink = \ + FilePath.replace(':\\', '\\').split(':')[0].split('\\') + TmpLink[0] = TmpLink[0].replace(TmpLink[0], TmpLink[0] + ':') \ + if len(TmpLink) > 1 else TmpLink[0] + FileLink = '\\'.join(TmpLink) + break + return FileName, FileLink, LineNum, error_message + + def __GetContentTable(self): + file = open(self.__oldPathFile, "r") + lines = file.readlines() + file.close() + for i, line in enumerate(lines): + if "" in line: + self.__content_start = i + if '' in line: + self.__content_end = i + return lines[self.__content_start + 1: self.__content_end] + + def __InsertContent(self, insertElem, failNum): + file = open(self.__oldPathFile, "r") + fileData = file.readlines() + file.close() + date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + for i, line in enumerate(fileData): + if '$Date' in line: + line = line.replace(line, '%s' + % date) + fileData[i] = line + if '$itemDetail' in line: + line = line.replace('$itemDetail', "failures'") + fileData[i] = line + if '$testMethod' in line: + line = line.replace('$testMethod', self.testMethod) + fileData[i] = line + if '$itemNum' in line: + line = line.replace('$itemNum', 'Failure Type') + fileData[i] = line + if '$failNum' in line: + line = line.replace(line, '%s' + % failNum) + fileData[i] = line + break + fileData[self.__content_start:self.__content_end] = insertElem + + s = ''.join(fileData) + file = open(self.__newPathFile, "w") + file.write(s) + file.close() + + def GenHtml(self): + afailNum = 0 + lfailNum = 0 + new_list = [] + contents = self.__GetContentTable() + if os.path.exists(self.__AddressSanitizerLog): + self.__cfg.read(self.__AddressSanitizerLog) + sections = self.__cfg.sections() + for item in sections: + amatch = re.search(r'number(\d)+_AddressSanitizer', item) + lmatch = re.search(r'number(\d)+_LeakSanitizer', item) + if (not amatch) and (not lmatch): + seedsPath = os.path.dirname(item) + if self.__classification != '': + if os.path.basename(seedsPath) in ['crashes', 'hangs']: + failType = os.path.join( + os.path.basename(seedsPath), + os.path.basename(item).split(',')[0]) + else: + failType = os.path.basename(item) + else: + failType = \ + os.path.basename(os.path.dirname( + os.path.dirname(item))) + '/' \ + + os.path.basename(os.path.dirname(item)) + else: + print("[!] Unable to match Sanitizer " + "(not AFL or LibFuzzer output)") + exit(1) + section_contents = self.__cfg.get(item, 'stackinfo') + totalseednum = self.__cfg.get(item, 'totalseedsnum') + afailNum = len(sections) + if section_contents != '': + fileName, fileLink, lineNum, errorMessage = \ + self.__GetContentsInfo(section_contents) + stack_info = section_contents.split('\n') + new_stack_info_list = [] + for sline in stack_info: + match = re.search(r'#\d 0x(.)+', sline) + if match: + FilePath = match.group().split(' ')[-1] + a = ' '.join(match.group().split(' ')[:-1]) + TmpLink = \ + FilePath.replace( + ':\\', '\\').split( + ':')[0].split('\\') + TmpLink[0] = \ + TmpLink[0].replace(TmpLink[0], + TmpLink[0] + + ':') \ + if len(TmpLink) > 1 \ + else TmpLink[0] + FileLink = '\\'.join(TmpLink) + if '(' in FileLink: + FileLink = FileLink.lstrip(r'\(') + FileLink = FileLink.rstrip(r'\)') + sline = sline.replace(sline, a + ('' + % FileLink) + + ' ' + FilePath + '') + sline = sline + '
    ' + new_stack_info_list.append(sline) + new_stack_info = ''.join(new_stack_info_list) + else: + fileName, fileLink, lineNum, errorMessage = \ + '--', '', '--', '--' + new_stack_info = 'No stack' + contents = self.__GetContentTable() + for line in contents: + if '$failure' in line: + line = line.replace('$failure', failType) + if '$filePath' in line: + if fileLink == '': + line = line.replace('', + '').replace('', '') + else: + line = line.replace('$filePath', fileLink) + if '$seedsNum' in line: + line = line.replace('$seedsNum', totalseednum) + if '$seedsPath' in line: + if seedsPath == '': + line = line.replace('', + '').replace('', '') + else: + line = line.replace('$seedsPath', seedsPath) + if '$fileName' in line: + line = line.replace('$fileName', fileName) + if '$lineNum' in line: + line = line.replace('$lineNum', lineNum) + if '$error' in line: + line = line.replace('$error', errorMessage) + if '$stack' in line: + line = line.replace('$stack', new_stack_info) + + new_list.append(line) + + if os.path.exists(self.__LeakSanitizerLog): + self.__lcfg.read(self.__LeakSanitizerLog) + section_names = self.__lcfg.sections() + for item in section_names: + amatch1 = re.search(r'number(\d)+_AddressSanitizer', item) + lmatch1 = re.search(r'number(\d)+_LeakSanitizer', item) + if (not amatch1) and (not lmatch1): + lseedsPath = os.path.dirname(item) + if self.__classification != '': + if os.path.basename(lseedsPath) in ['crashes', + 'hangs']: + lfailType = \ + os.path.join(os.path.basename(lseedsPath), + os.path.basename(item).split(',') + [0]) + else: + lfailType = os.path.basename(item) + else: + lfailType = \ + os.path.basename(os.path.dirname( + os.path.dirname(item))) + '/' + \ + os.path.basename(os.path.dirname(item)) + else: + lfailType = item + lseedsPath = os.path.join(self.__reportLogPath, + 'FailureSeeds', lfailType) + + section_contents = self.__lcfg.get(item, 'stackinfo') + totalseednum = '--' + lfailNum = len(section_names) + lfileName, lfileLink, llineNum, lerrorMessage = \ + self.__GetLContentsInfo(section_contents) + stack_info = section_contents.split('\n') + lnew_stack_info_list = [] + for sline in stack_info: + match = re.search(r'#\d 0x(.)+', sline) + if match: + FilePath = match.group().split(' ')[-1] + a = ' '.join(match.group().split(' ')[:-1]) + LtmpLink = \ + FilePath.replace(':\\', + '\\').split(':')[0].split('\\') + LtmpLink[0] = \ + LtmpLink[0].replace(LtmpLink[0], + LtmpLink[0] + ':') \ + if len(LtmpLink) > 1 else LtmpLink[0] + lfileLink = '\\'.join(LtmpLink) + if '(' in lfileLink: + lfileLink = lfileLink.lstrip(r'\(') + lfileLink = lfileLink.rstrip(r'\)') + sline = sline.replace(sline, a + + ('' % lfileLink) + + ' ' + FilePath + '') + sline = sline + '
    ' + lnew_stack_info_list.append(sline) + new_stack_info = ''.join(lnew_stack_info_list) + contents = self.__GetContentTable() + for line in contents: + if '$failure' in line: + line = line.replace('$failure', lfailType) + if '$filePath' in line: + line = line.replace('$filePath', lfileLink) + if '$seedsNum' in line: + line = line.replace('$seedsNum', totalseednum) + if '$seedsPath' in line: + line = line.replace('$seedsPath', lseedsPath) + if '$fileName' in line: + line = line.replace('$fileName', lfileName) + if '$lineNum' in line: + line = line.replace('$lineNum', llineNum) + if '$error' in line: + line = line.replace('$error', lerrorMessage) + if '$stack' in line: + line = line.replace('$stack', new_stack_info) + new_list.append(line) + + failNum = afailNum + lfailNum + self.__InsertContent(''.join(new_list), failNum) diff --git a/HBFA/UefiHostTestTools/Report/GenSanitizerInfo.py b/HBFA/UefiHostTestTools/Report/GenSanitizerInfo.py new file mode 100644 index 0000000..9ee376d --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GenSanitizerInfo.py @@ -0,0 +1,358 @@ +# @file +# Transfer report.log file into HTML file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import sys +import subprocess +import os +import time +try: + import ConfigParser as ConfigParser +except Exception: + import configparser as ConfigParser +import re +import argparse + + +class GenSanitizerInfo(object): + + def __init__(self, exefile, inputpath, output, silence=False, item=''): + self.__exefile = exefile + self.__inputpath = inputpath + self.__output_path = output + self.__silence = silence + self.__classification = item + if not os.path.exists(os.path.join(self.__output_path)): + os.makedirs(os.path.join(self.__output_path)) + self.__scfgPath = os.path.join(self.__output_path, + 'AddressSanitizer.cfg') + self.__lcfgPath = os.path.join(self.__output_path, + 'LeakSanitizer.cfg') + + def __CmpList(self, list1, list2): + + if len(list1) == 0 or len(list2) == 0: + return False + for i in list1: + if i not in list2: + return False + for i in list2: + if i not in list1: + return False + return True + + def __CmpLeakList(self, list1, list2): + list1_temp = [] + result_list = [] + for i in list1: + if ( + ' in ' in i and + (('Indirect leak of ') not in i + and ('Direct leak of') not in i) + ): + i = i.split(' in ')[1] + if ('Indirect leak of ') not in i and ('Direct leak of') not in i: + list1_temp.append(i.strip()) + for sublist in list2: + list2_temp = [] + for j in sublist: + if ( + ' in ' in j and (('Indirect leak of ') + not in j and ('Direct leak of') not in j) + ): + j = j.split(' in ')[1] + if ( + ('Indirect leak of ') not in j and ('Direct leak of') + not in j + ): + list2_temp.append(j.strip()) + result = self.__CmpList(list1_temp, list2_temp) + result_list.append(result) + return result_list + + def __UpdateFileNum(self, filepath, keyword): + file_data = "" + with open(filepath, 'r') as f: + for line in f: + if '%s' % keyword in line: + num = line.split(':')[1].strip() + num = int(num) + 1 + line = line.replace(line, '%s:%s\n' % (keyword, str(num))) + file_data += line + with open(filepath, 'w') as f: + f.write(file_data) + return num + + def __UpdateLFileNum(self, filepath, keyword, number): + file_data = "" + with open(filepath, 'r') as f: + for line in f: + if '%s' % keyword in line: + num = line.split(':')[1].strip() + num = int(num) + number + line = line.replace(line, '%s:%s\n' % (keyword, str(num))) + + file_data += line + with open(filepath, 'w') as f: + f.write(file_data) + return num + + def __GetRunTimes(self): + if not os.path.exists(os.path.join(self.__output_path, '.status')): + file = open(os.path.join(self.__output_path, '.status'), 'w+') + time_stamp = time.strftime("%m/%d/%Y %H:%M:%S", + time.localtime(time.time())) + file.write('start_time: %s\n' % time_stamp) + number = 1 + file.write('number:%s\n' % str(number)) + file.close() + else: + number = self.__UpdateFileNum(os.path.join(self.__output_path, + '.status'), 'number') + return number + + def __GetAcompareList(self, contentlines): + new_list = [] + for line in contentlines: + match1 = re.search(r'ERROR: AddressSanitizer: (\S)+', line) + if match1: + error_message = match1.group(0) + new_list.append(error_message) + match2 = re.search(r'#\d 0x(.)+', line) + if match2: + stack_info = \ + match2.group().split(' in ')[1] if \ + ' in ' in line else match2.group().split(' ')[-1] + new_list.append(stack_info) + if ( + 'allocated by' in line or + re.search(r'Address 0x(\w)+ is located in', line) + ): + break + return new_list + + def __GetLcompareList(self, contentlines): + lcompare_word_list = [] + list_key = [] + index = [] + for i, line in enumerate(contentlines): + match1 = re.search('ERROR: LeakSanitizer: (.)+', line) + if match1: + error_message = match1.group(0) + list_key.append(error_message) + if line == '': + index.append(i) + for i in range(1, len(index)): + if i == len(index) - 2: + break + list = contentlines[index[i] + 1:index[i + 1]] + list.insert(0, list_key[0]) + list = [j.strip() + '\n' for j in list] + lcompare_word_list.append(list) + return lcompare_word_list + + def __UpdateAcfg(self, screenlogs, number, inputpath): + errorlog_lines = screenlogs.split('\n') + compare_word_list = self.__GetAcompareList(errorlog_lines) + cfg = ConfigParser.ConfigParser() + cfg.read(self.__scfgPath) + error_list = cfg.sections() + if len(error_list) == 0: + flag = False + file = open(os.path.join(self.__output_path, '.status'), 'a+') + file.write('Atypenum:0\n') + file.write('Atotalnum:1\n') + file.close() + else: + self.__UpdateFileNum(os.path.join(self.__output_path, '.status'), + 'Atotalnum') + for item in error_list: + contents = cfg.get(item, 'stackinfo') + contents_list = contents.split('\n') + to_be_compared_list = self.__GetAcompareList(contents_list) + flag = self.__CmpList(to_be_compared_list, compare_word_list) + if flag is True: + seedsCount = cfg.get(item, 'TotalSeedsNum') + seedsCount = int(seedsCount) + 1 + cfg.set(item, 'TotalSeedsNum', seedsCount) + break + if flag is False and item == error_list[-1]: + self.__UpdateFileNum(os.path.join(self.__output_path, + '.status'), + 'Atypenum') + + if flag is not True: + item = inputpath + if item not in cfg.sections(): + cfg.add_section(item) + cfg.set(item, 'stackInfo', screenlogs) + seedsCount = 1 + cfg.set(item, 'TotalSeedsNum', seedsCount) + + error_list = cfg.sections() + if not self.__silence: + print('there are %s type errors,and they are : %s' + % (len(error_list), error_list)) + cfg.write(open(self.__scfgPath, "w")) + + def __UpdateLcfg(self, screenlogs, number, inputpath): + errorlog_lines = screenlogs.split('\n') + lcompare_word_list = self.__GetLcompareList(errorlog_lines) + cfg = ConfigParser.ConfigParser() + cfg.read(self.__lcfgPath) + error_list = cfg.sections() + if len(error_list) == 0: + flag = False + Ltypenum = 0 + file = open(os.path.join(self.__output_path, '.status'), 'a+') + file.write('Ltypenum:0\n') + file.write('Ltotalnum:1\n') + file.close() + else: + self.__UpdateFileNum(os.path.join(self.__output_path, + '.status'), 'Ltotalnum') + compare_result_list = [] + all_result_list = [] + for item in error_list: + to_be_compared_contents = cfg.get(item, 'stackinfo') + to_be_compared_list = to_be_compared_contents.split('\n') + flag = self.__CmpLeakList(to_be_compared_list, + lcompare_word_list) + compare_result_list.append(flag) + + for i in range(len(compare_result_list[0])): + column_list = [] + for j in range(len(compare_result_list)): + column_list.append(compare_result_list[j][i]) + + all_result_list.append(column_list) + for i, result in enumerate(all_result_list): + if True not in result: + Ltypenum = \ + self.__UpdateFileNum(os.path.join(self.__output_path, + '.status'), + 'Ltypenum') + item = 'number' + str(Ltypenum) + '_' + 'LeakSanitizer' + if item not in cfg.sections(): + cfg.add_section(item) + stackinfo = ''.join(lcompare_word_list[i]) + if not self.__silence: + print('NEW DIFFERENT STACK INFO: \n%s' % stackinfo) + cfg.set(item, 'stackInfo', stackinfo) + cfg.set(item, 'filepath', os.path.dirname(inputpath)) + + if flag is False: + Ltypenum = len(lcompare_word_list) + self.__UpdateLFileNum(os.path.join(self.__output_path, '.status'), + 'Ltypenum', Ltypenum) + for i in range(0, len(lcompare_word_list)): + Ltypenum = i + 1 + item = 'number' + str(Ltypenum) + '_' + 'LeakSanitizer' + if item not in cfg.sections(): + cfg.add_section(item) + stackinfo = ''.join(lcompare_word_list[i]) + cfg.set(item, 'stackInfo', stackinfo) + cfg.set(item, 'filepath', os.path.dirname(inputpath)) + cfg.write(open(self.__lcfgPath, "w")) + + def __GenSanitizerInfo(self, inputpath): + number = str(self.__GetRunTimes()) + command = [self.__exefile, inputpath] + ret = subprocess.Popen(command, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, shell=False) + error_logs = list(ret.communicate()) + if sys.version_info[0] == 3: + for num, submsg in enumerate(error_logs): + if submsg is not None: + error_logs[num] = submsg.decode() + if not self.__silence: + print(error_logs[0]) + print(error_logs[1]) + + logfile = os.path.splitext(inputpath)[0] + '.HBFA.Sanitizer.log' + error_logs_file = open(logfile, 'w+') + error_logs_file.write("{}\n{}".format(error_logs[0] if + error_logs[0] else '', + error_logs[1] if + error_logs[1] else '')) + error_logs_file.close() + + if 'ERROR: AddressSanitizer' in error_logs[0]: + self.__UpdateAcfg(error_logs[0], number, inputpath) + elif 'ERROR: LeakSanitizer:' in error_logs[0]: + self.__UpdateLcfg(error_logs[0], number, inputpath) + + def __GenAFLSanitizerInfo(self, inputpath): + command = [self.__exefile, inputpath] + ret = subprocess.Popen(command, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, shell=False) + error_logs = list(ret.communicate()) + if sys.version_info[0] == 3: + for num, submsg in enumerate(error_logs): + if submsg is not None: + error_logs[num] = submsg.decode() + if not self.__silence: + print(error_logs[0]) + print(error_logs[1]) + + logfile = os.path.join(self.__output_path, 'HBFA.Sanitizer.log') + error_logs_file = open(logfile, 'a+') + error_logs_file.write("{}\n{}".format(error_logs[0] if + error_logs[0] else '', + error_logs[1] if + error_logs[1] else '')) + error_logs_file.close() + item = inputpath + if 'ERROR: AddressSanitizer' in error_logs[0] or error_logs[0] == '': + cfg = ConfigParser.ConfigParser() + cfg.read(self.__scfgPath) + cfg.add_section(item) + cfg.set(item, 'stackInfo', error_logs[0]) + TotalSeedsNum = 1 + cfg.set(item, 'TotalSeedsNum', TotalSeedsNum) + cfg.write(open(self.__scfgPath, "w")) + elif 'ERROR: LeakSanitizer:' in error_logs[0]: + cfg = ConfigParser.ConfigParser() + cfg.read(self.__lcfgPath) + cfg.add_section(item) + cfg.set(item, 'stackInfo', error_logs[0]) + TotalSeedsNum = 1 + cfg.set(item, 'TotalSeedsNum', TotalSeedsNum) + cfg.write(open(self.__lcfgPath, "w")) + + def Run(self): + if type(self.__inputpath) is list and len(self.__inputpath) != 0: + for seedpath in self.__inputpath: + if self.__classification == '': + self.__GenSanitizerInfo(seedpath) + else: + self.__GenAFLSanitizerInfo(seedpath) + else: + if not self.__silence: + print('please verify input seeds exist') + + +if __name__ == "__main__": + parse = argparse.ArgumentParser() + parse.add_argument("-e", dest="execute", help="executable file path") + parse.add_argument("-i", dest="input", help="seed name") + parse.add_argument("-o", dest="output", help="sanitizer output log path") + parse.add_argument("-s", dest="silence", help="silence", default=False) + parse.add_argument("-t", dest="item", help="item", default='') + + options = parse.parse_args(sys.argv[1:]) + if options.execute: + if options.input: + if options.output: + genSInfo = GenSanitizerInfo(options.execute, options.input, + options.output, False, '') + genSInfo.Run() + else: + raise Exception("Plesase input -o output path.") + else: + raise Exception("Plesase input -i input seed name.") + else: + raise Exception("Please input -e executable file you use.") diff --git a/HBFA/UefiHostTestTools/Report/GenSummaryInfo.py b/HBFA/UefiHostTestTools/Report/GenSummaryInfo.py new file mode 100644 index 0000000..a373911 --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GenSummaryInfo.py @@ -0,0 +1,177 @@ +# @file +# Transfer report.log file into HTML file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + + +import os +import sys +try: + import ConfigParser as ConfigParser +except Exception: + import configparser as ConfigParser +import datetime +import time +import argparse + + +class GenSummaryInfo(object): + def __init__(self, inputSeedsPath, debugReportPath, methods, + reportType, silence): + self.__afcfg = os.path.join(debugReportPath, + 'AddressSanitizer.cfg') + self.__lcfg = os.path.join(debugReportPath, + 'LeakSanitizer.cfg') + self.__gdbcfg = os.path.join(debugReportPath, + 'HBFA.GDB.cfg') + self.__afl_gdbCrashcfg = os.path.join(debugReportPath, + 'HBFA.GDB.Crashes.cfg') + self.__afl_gdbHangcfg = os.path.join(debugReportPath, + 'HBFA.GDB.Hangs.cfg') + self.__inputPath = inputSeedsPath + self.__debugReportPath = debugReportPath + self.__methods = methods + self.__reportType = reportType + self.__silence = silence + + def __GetFailedTypeNum(self, logPath): + fail_num = 0 + if os.path.exists(logPath): + cfg = ConfigParser.ConfigParser() + cfg.read(logPath) + sections = cfg.sections() + fail_num = len(sections) + return fail_num + + def __GetCfgSeedsNum(self, logPath): + fail_num = 0 + if os.path.exists(logPath): + cfg = ConfigParser.ConfigParser() + cfg.read(logPath) + sections = cfg.sections() + for section in sections: + fail_num = fail_num + int(cfg.get(section, 'totalseedsnum')) + return fail_num + + def __GetSanitizerlNum(self, keyword, statuspath): + num = 0 + if os.path.exists(os.path.join(statuspath, '.status')): + with open(os.path.join(statuspath, '.status'), 'r') as f: + for line in f: + if keyword in line: + num = int(line.split(':')[1].strip()) + return num + + def __GetSanitizerlTime(self, statuspath): + if os.path.exists(os.path.join(statuspath, '.status')): + with open(os.path.join(statuspath, '.status'), 'r') as f: + for line in f: + if 'start_time' in line: + starttime = line.split(': ')[1].strip() + starttime = datetime.datetime.strptime( + starttime, '%m/%d/%Y %H:%M:%S') + break + endtime = time.localtime(os.path.getmtime(os.path.join(statuspath, + '.status'))) + endtime = time.strftime('%m/%d/%Y %H:%M:%S', endtime) + endtime = datetime.datetime.strptime(endtime, '%m/%d/%Y %H:%M:%S') + execTime = endtime - starttime + return execTime + + def __getAFLTotalSeeds(self): + num = 0 + if os.path.exists(os.path.join(self.__inputPath, 'fuzzer_stats')): + with ( + open(os.path.join(self.__inputPath, 'fuzzer_stats'), 'r') as f + ): + for line in f: + if 'execs_done' in line: + num = int(line.split(':')[-1].strip()) + return num + + def __GetAFLExecTime(self): + if os.path.exists(os.path.join(self.__inputPath, 'plot_data')): + with open(os.path.join(self.__inputPath, 'plot_data'), 'r') as f: + lines = f.readlines() + f.close() + if len(lines) > 1: + line_last = lines[-1] + time_start = int(lines[1].split(',')[0]) + time_start = time.strftime('%m/%d/%Y %H:%M:%S', + time.localtime(time_start)) + time_start = \ + datetime.datetime.strptime(time_start, + '%m/%d/%Y %H:%M:%S') + time_end = int(line_last.split(',')[0]) + time_end = time.strftime('%m/%d/%Y %H:%M:%S', + time.localtime(time_end)) + time_end = datetime.datetime.strptime(time_end, + '%m/%d/%Y %H:%M:%S') + execution_time = time_end - time_start + return execution_time + else: + return 0 + + def GenSumInfo(self): + if self.__methods.lower() == 'afl': + + if self.__reportType == "gdb": + crashNum = self.__GetFailedTypeNum(self.__afl_gdbCrashcfg) + hangNum = self.__GetFailedTypeNum(self.__afl_gdbHangcfg) + failNum = crashNum, hangNum + elif self.__reportType == "sanitizer": + AddressFailedNum = self.__GetFailedTypeNum(self.__acfg) + LeakFailedNum = self.__GetFailedTypeNum(self.__lcfg) + failNum = AddressFailedNum + LeakFailedNum + totalNum = self.__getAFLTotalSeeds() + execTime = self.__GetAFLExecTime() + + else: + if self.__reportType == "gdb": + failNum = self.__GetFailedTypeNum(self.__gdbcfg) + elif self.__reportType == "sanitizer": + AddressFailedNum = self.__GetFailedTypeNum(self.__afcfg) + LeakFailedNum = self.__GetFailedTypeNum(self.__lcfg) + failNum = AddressFailedNum + LeakFailedNum + totalNum = len(os.listdir(self.__inputPath)) + execTime = '--:--:--' + if not self.__silence: + print(str(totalNum) + ';' + str(failNum) + ';' + str(execTime)) + return totalNum, failNum, execTime + + +if __name__ == "__main__": + + parse = argparse.ArgumentParser() + parse.add_argument("-i", dest="input", help="seeds output path") + parse.add_argument("-o", dest="output", help="report output path") + parse.add_argument("-m", dest="method", + choices=['afl', 'libfuzzer'], + default="afl", help="test method") + parse.add_argument("-t", dest="reportType", + choices=['gdb', 'sanitizer'], default="gdb", + help="report type") + parse.add_argument("-s", dest="silence", help="silence") + options = parse.parse_args(sys.argv[1:]) + + if options.input: + if options.output: + if options.method: + if options.reportType: + genSInfo = GenSummaryInfo(options.input, options.output, + options.method, + options.reportType, + options.silence) + genSInfo.GenSumInfo() + else: + raise Exception("Please choose reportType: " + "gdb,sanitizer.") + else: + raise Exception("Please choose method: afl, " + "libfuzzer.") + else: + raise Exception("Please input -o output path.") + else: + raise Exception("Please input -i input path.") diff --git a/HBFA/UefiHostTestTools/Report/GenSummaryReport.py b/HBFA/UefiHostTestTools/Report/GenSummaryReport.py new file mode 100644 index 0000000..41cbddd --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GenSummaryReport.py @@ -0,0 +1,132 @@ +# @file +# Transfer report.log file into HTML file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + + +import os +import datetime + + +class GenSummaryReport(object): + def __init__(self, execfile, outputPath, methods, reportType, failNum, + totalNum, execTime): + self.__testCaseName = os.path.basename(execfile) + self.__totalNum = totalNum + self.__failNum = failNum + self.__execTime = str(execTime).split(':')[0] + ' hrs, ' + \ + str(execTime).split(':')[1] + ' mins, ' + \ + str(execTime).split(':')[2] + ' secs' + self.__methods = methods + self.__reportType = reportType + self.__oldPath = os.path.dirname(os.path.realpath(__file__)) + self.__oldPathFile = os.path.join(self.__oldPath, + "IndexSummaryTemplate.html") + self.__newSanitizerPathFile = \ + os.path.join(outputPath, "SanitizerSummaryReport.html") + self.__newGdbPathFile = \ + os.path.join(outputPath, "GdbSummaryReport.html") + self.__debugSanitizerReportlink = "IndexSanitizer.html" + self.__debugGdbReportlink = "IndexGdb.html" + self.__crashreportlink = "IndexCrashes.html" + self.__hangreportlink = "IndexHangs.html" + + def __GetContentTable(self): + file = open(self.__oldPathFile, "r") + lines = file.readlines() + file.close() + for i, line in enumerate(lines): + if "" in line: + self.__content_start = i + if '' in line: + self.__content_end = i + return lines[self.__content_start + 1: self.__content_end] + + def __InsertContent(self, insertElem, newreportPath): + if self.__methods == 'afl': + testMethod = 'AFL' + else: + testMethod = self.__methods.capitalize() + + file = open(self.__oldPathFile, "r") + fileData = file.readlines() + file.close() + date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + for i, line in enumerate(fileData): + if '$Testcase' in line: + line = line.replace('$Testcase', self.__testCaseName) + fileData[i] = line + if '$TestMethod' in line: + line = line.replace('$TestMethod', testMethod) + fileData[i] = line + if '$Date' in line: + line = line.replace(line, + '%s' % date) + fileData[i] = line + break + fileData[self.__content_start:self.__content_end] = insertElem + + s = ''.join(fileData) + file = open(newreportPath, "w") + file.write(s) + file.close() + + def __AddContentList(self, itemName, value, link): + contents = self.__GetContentTable() + new_list = [] + for line in contents: + if '$Item' in line: + line = line.replace('$Item', itemName) + if '$Value' in line: + line = line.replace('$Value', str(value)) + if '$Link' in line: + if link != '': + line = line.replace('$Link', link) + else: + line = line.replace('', '').replace('', + '') + new_list.append(line) + return new_list + + def __GenAFLGdbSumReport(self): + totalList = self.__AddContentList('Total Case Numbers:', + self.__totalNum, '') + crashesList = self.__AddContentList('Crashes Case Numbers:', + self.__failNum[0], + self.__crashreportlink) + hangsList = self.__AddContentList('Hangs Case Numbers: ', + self.__failNum[1], + self.__hangreportlink) + execTImeList = self.__AddContentList('Execution Time: ', + self.__execTime, '') + contentList = totalList + crashesList + hangsList + execTImeList + self.__InsertContent(''.join(contentList), self.__newGdbPathFile) + + def __GenOtherSumReport(self): + totalList = self.__AddContentList('Total Case Numbers: ', + self.__totalNum, '') + if self.__reportType == 'gdb': + failList = self.__AddContentList('Failure Type Numbers: ', + self.__failNum, + self.__debugGdbReportlink) + execTImeList = self.__AddContentList('Execution Time: ', + self.__execTime, '') + contentList = totalList + failList + execTImeList + self.__InsertContent(''.join(contentList), self.__newGdbPathFile) + elif self.__reportType == 'sanitizer': + failList = self.__AddContentList('Failure Type Numbers: ', + self.__failNum, + self.__debugSanitizerReportlink) + execTImeList = self.__AddContentList('Execution Time: ', + self.__execTime, '') + contentList = totalList + failList + execTImeList + self.__InsertContent(''.join(contentList), + self.__newSanitizerPathFile) + + def GenSumReport(self): + if self.__methods == 'afl' and self.__reportType == 'gdb': + self.__GenAFLGdbSumReport() + else: + self.__GenOtherSumReport() diff --git a/HBFA/UefiHostTestTools/Report/GetSeedsList.py b/HBFA/UefiHostTestTools/Report/GetSeedsList.py new file mode 100644 index 0000000..5bda737 --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/GetSeedsList.py @@ -0,0 +1,72 @@ +# @file +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
    +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +import os +import sys +import glob + +# python version +python_version = sys.version_info[0] + + +class GetSeedsList(object): + def __init__(self, seedsType, inputPath, silence): + self.__seedsType = seedsType + self.__inputPath = inputPath + self.__seedList = [[], []] if self.__seedsType.lower() == "afl" else [] + self.__silence = silence + + def __GetList(self): + seedList = [] + if self.__seedsType.lower() == 'afl': + for item in ['crashes', 'hangs']: + lists = [] + subdir = os.path.join(self.__inputPath, item) + if os.path.exists(subdir): + lists = glob.glob(os.path.join(subdir, 'id*')) + lists.sort(key=lambda fn: os.path.getmtime(fn), reverse=False) + seedList.append(lists) + elif self.__seedsType.lower() == 'libfuzzer': + seedList = [fn for fn in + glob.glob(os.path.join(self.__inputPath, '*')) + if os.path.isfile(fn)] + seedList.sort(key=lambda fn: os.path.getmtime(fn), reverse=False) + return seedList + + def SeekNewSeed(self): + """ + :return: afl [[crash], [hang]], libfuzzer [seed] + """ + newSeedList = self.__GetList() + + if self.__seedsType.lower() == 'afl': + newList = [[], []] + for index in range(len(self.__seedList)): + if len(newSeedList[index]) != len(self.__seedList[index]): + newList[index] = [fn for fn in + (newSeedList[index] + + self.__seedList[index]) + if fn not in self.__seedList[index]] + self.__seedList[index] = newSeedList[index] + if not self.__silence: + print('Current crashes number is %d, hangs' + ' number is %d' % + (len(self.__seedList[0]), + len(self.__seedList[1])) + ) + elif ( + self.__seedsType.lower() == 'libfuzzer' + ): + newList = [] + if len(newSeedList) != len(self.__seedList): + newList = [fn for fn in (newSeedList + self.__seedList) + if fn not in self.__seedList] + self.__seedList = newSeedList + if not self.__silence: + print('Current fault number is %d' % + (len(self.__seedList)) + ) + return newList diff --git a/HBFA/UefiHostTestTools/Report/IndexSummaryTemplate.html b/HBFA/UefiHostTestTools/Report/IndexSummaryTemplate.html new file mode 100644 index 0000000..97987ef --- /dev/null +++ b/HBFA/UefiHostTestTools/Report/IndexSummaryTemplate.html @@ -0,0 +1,241 @@ + + + + + + + Host-based Firmware Analyzer Debug Report + + + + +