OcXmlLib: Treat non-hex data as integer data

In 11.0 kc plist pointer data is in decimal
This commit is contained in:
vit9696 2020-07-04 16:04:02 +03:00
parent e09b29d7e0
commit 6fdd4a2834
5 changed files with 9 additions and 2 deletions

2
.gitignore vendored
View File

@ -18,7 +18,7 @@ Utilities/TestBmf/Bmf
Utilities/TestDiskImage/DiskImage
Utilities/TestHelloWorld/HelloWorld
Utilities/TestImg4/Img4
Utilities/TestKernelCollection/KernelCollection
Utilities/TestKernelCollection2/KernelCollection2
Utilities/TestKextInject/KextInject
Utilities/TestKextInject/Result.xml
Utilities/TestMacho/Macho

View File

@ -592,7 +592,7 @@ PrelinkedInjectComplete (
ASSERT (ChainSize <= Context->KextsFixupChains->Size);
Context->KextsFixupChains->Size = ChainSize;
Context->KextsFixupChains->PageCount = KextsSize / MACHO_PAGE_SIZE;
Context->KextsFixupChains->PageCount = (UINT16) (KextsSize / MACHO_PAGE_SIZE);
Status = KcRebuildMachHeader (Context);
if (EFI_ERROR (Status)) {

View File

@ -1550,6 +1550,10 @@ PlistIntegerValue (
++TempStr;
}
if (Hex && TempStr[0] != '0' && TempStr[1] != 'x') {
Hex = FALSE;
}
if (Hex) {
Temp = AsciiStrHexToUint64 (TempStr);
} else {

View File

@ -124,6 +124,9 @@ int main(int argc, char** argv) {
UINT32 AllocSize;
PRELINKED_CONTEXT Context;
PcdGet32 (PcdFixedDebugPrintErrorLevel) |= DEBUG_INFO;
PcdGet32 (PcdDebugPrintErrorLevel) |= DEBUG_INFO;
if ((Prelinked = readFile(argc > 1 ? argv[1] : "/System/Library/KernelCollections/BootKernelExtensions.kc", &PrelinkedSize)) == NULL) {
printf("Read fail\n");
return -1;