15#include <Library/BaseMemoryLib.h>
16#include <Library/DebugLib.h>
17#include <Library/MemoryAllocationLib.h>
63 if (Segment != NULL) {
66 if (Section != NULL) {
89 || ((Indirect != NULL) && (AsciiStrCmp (Indirect,
"__hack") == 0)))
145 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
152 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
158 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
164 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
170 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
203 if (Symbol != NULL) {
206 || ((Indirect != NULL) && (AsciiStrCmp (Indirect,
"__hack") == 0)))
251 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
263 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
270 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
276 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
282 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
288 && (AsciiStrCmp (
"SomeReallyLongStringJustInCaseToCheckIt", Out) == 0))
298 for (UINTN i = 0x1000000; i < MAX_UINTN; i += 0x1000000) {
319 DEBUG ((DEBUG_ERROR,
"Read fail\n"));
335 NewData = AllocatePool (
Size);
336 if (NewData != NULL) {
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
STATIC int FeedMacho(IN OUT VOID *File, IN UINT32 Size)
MACH_SEGMENT_COMMAND_64 mSeg
DMG_SIZE_DEVICE_PATH Size
BOOLEAN MachoRelocateSymbol64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 LinkAddress, IN OUT MACH_NLIST_64 *Symbol)
BOOLEAN MachoInitializeContext64(OUT OC_MACHO_CONTEXT *Context, IN VOID *FileData, IN UINT32 FileSize, IN UINT32 HeaderOffset, IN UINT32 InnerSize)
BOOLEAN MachoSymbolNameIsCxx(IN CONST CHAR8 *Name)
BOOLEAN MachoSymbolNameIsPadslot(IN CONST CHAR8 *Name)
MACH_NLIST_64 * MachoGetMetaclassSymbolFromSmcpSymbol64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Smcp)
BOOLEAN MachoGetClassNameFromMetaClassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *MetaClassName, IN UINTN ClassNameSize, OUT CHAR8 *ClassName)
MACH_NLIST_64 * MachoGetSymbolByIndex64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
BOOLEAN MachoGetClassNameFromSuperMetaClassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, IN UINTN ClassNameSize, OUT CHAR8 *ClassName)
UINT32 MachoGetFileSize(IN OUT OC_MACHO_CONTEXT *Context)
MACH_HEADER_64 * MachoGetMachHeader64(IN OUT OC_MACHO_CONTEXT *Context)
CONST CHAR8 * MachoGetClassNameFromVtableName(IN CONST CHAR8 *VtableName)
BOOLEAN MachoSymbolIsLocalDefined64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol)
MACH_NLIST_64 * MachoGetLocalDefinedSymbolByName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *Name)
CONST CHAR8 * MachoGetIndirectSymbolName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol)
BOOLEAN MachoGetFunctionPrefixFromClassName(IN CONST CHAR8 *ClassName, IN UINTN FunctionPrefixSize, OUT CHAR8 *FunctionPrefix)
UINT64 MachoGetLastAddress(IN OUT OC_MACHO_CONTEXT *Context)
CONST CHAR8 * MachoGetSymbolName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol)
BOOLEAN MachoGetFinalSymbolNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN FinalSymbolNameSize, OUT CHAR8 *FinalSymbolName)
MACH_SECTION_64 * MachoGetSectionByName64(IN OUT OC_MACHO_CONTEXT *Context, IN MACH_SEGMENT_COMMAND_64 *Segment, IN CONST CHAR8 *SectionName)
MACH_SECTION_64 * MachoGetSectionByAddress64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address)
BOOLEAN MachoSymbolIsSection64(IN CONST MACH_NLIST_64 *Symbol)
BOOLEAN MachoSymbolNameIsMetaclassPointer(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SymbolName)
BOOLEAN MachoIsSymbolValueInRange64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol)
BOOLEAN MachoSymbolIsDefined64(IN CONST MACH_NLIST_64 *Symbol)
MACH_SECTION_64 * MachoGetSectionByIndex64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT32 Index)
BOOLEAN MachoGetSymbolByRelocationOffset64(IN OUT OC_MACHO_CONTEXT *Context, IN UINT64 Address, OUT MACH_NLIST_64 **Symbol)
BOOLEAN MachoSymbolNameIsVtable(IN CONST CHAR8 *SymbolName)
BOOLEAN MachoGetVtableNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN VtableNameSize, OUT CHAR8 *VtableName)
MACH_SEGMENT_COMMAND_64 * MachoGetSegmentByName64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SegmentName)
BOOLEAN MachoSymbolNameIsSmcp(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SymbolName)
BOOLEAN MachoSymbolGetFileOffset64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST MACH_NLIST_64 *Symbol, OUT UINT32 *FileOffset, OUT UINT32 *MaxSize OPTIONAL)
BOOLEAN MachoGetVtableSymbolsFromSmcp64(IN OUT OC_MACHO_CONTEXT *Context, IN CONST CHAR8 *SmcpName, OUT CONST MACH_NLIST_64 **Vtable, OUT CONST MACH_NLIST_64 **MetaVtable)
BOOLEAN MachoSymbolNameIsPureVirtual(IN CONST CHAR8 *Name)
MACH_UUID_COMMAND * MachoGetUuid(IN OUT OC_MACHO_CONTEXT *Context)
BOOLEAN MachoGetMetaVtableNameFromClassName(IN CONST CHAR8 *ClassName, IN UINTN VtableNameSize, OUT CHAR8 *VtableName)
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
UINT8 * UserReadFile(IN CONST CHAR8 *FileName, OUT UINT32 *Size)