From bc3dcc55dbbfe32f14815bf32a963ee169c21ca2 Mon Sep 17 00:00:00 2001 From: Download-Fritz Date: Thu, 21 Mar 2019 20:51:39 +0100 Subject: [PATCH] OcAppleKernelLib: Fix symbol location recursion --- Library/OcAppleKernelLib/Link.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Library/OcAppleKernelLib/Link.c b/Library/OcAppleKernelLib/Link.c index 040390e0..9358af2b 100644 --- a/Library/OcAppleKernelLib/Link.c +++ b/Library/OcAppleKernelLib/Link.c @@ -40,6 +40,8 @@ InternalOcGetSymbolWorker ( IN OC_GET_SYMBOL_LEVEL SymbolLevel ) { + CONST PRELINKED_KEXT_SYMBOL *Symbol; + UINTN Index; PRELINKED_KEXT *Dependency; CONST PRELINKED_KEXT_SYMBOL *Symbols; @@ -84,20 +86,26 @@ InternalOcGetSymbolWorker ( for (SymIndex = 0; SymIndex < NumSymbols; ++SymIndex) { Result = Predicate (Dependency, &Symbols[SymIndex], PredicateContext); if (Result) { + // FIXME: Dependency->Processed = FALSE; return &Symbols[SymIndex]; } } if (SymbolLevel == OcGetSymbolAnyLevel) { - InternalOcGetSymbolWorker ( - Dependency, - PredicateContext, - Predicate, - OcGetSymbolOnlyCxx - ); + Symbol = InternalOcGetSymbolWorker ( + Dependency, + PredicateContext, + Predicate, + OcGetSymbolOnlyCxx + ); + if (Symbol != NULL) { + // FIXME: + Dependency->Processed = FALSE; + return Symbol; + } } - + // FIXME: Dependency->Processed = FALSE; }