MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / FindBin

Function FindBin

rEFIt_UEFI/Platform/FixBiosDsdt.cpp:1332–1350  ·  view source on GitHub ↗

the procedure can find BIN array UNSIGNED CHAR8 sizeof N inside part of large array "dsdt" size of len return position or -1 if not found

Source from the content-addressed store, hash-verified

1330//the procedure can find BIN array UNSIGNED CHAR8 sizeof N inside part of large array "dsdt" size of len
1331// return position or -1 if not found
1332INT32 FindBin (UINT8 *dsdt, UINT32 len, const UINT8* bin, UINT32 N)
1333{
1334 UINT32 i, j;
1335 BOOLEAN eq;
1336
1337 for (i=0; len >= N && i < len - N; i++) {
1338 eq = TRUE;
1339 for (j=0; j<N; j++) {
1340 if (dsdt[i+j] != bin[j]) {
1341 eq = FALSE;
1342 break;
1343 }
1344 }
1345 if (eq) {
1346 return (INT32)i; // TODO that is an usafe cast !!!
1347 }
1348 }
1349 return -1;
1350}
1351INT32 FindBin (UINT8 *dsdt, size_t len, const XBuffer<UINT8>& bin) {
1352 if ( len > MAX_INT32 ) panic("FindBin : len > MAX_INT32"); // check against INT32, even though parameter of FindBin is UINT32. Because return value is INT32, parameter should not be > MAX_INT32
1353 if ( bin.size() > MAX_INT32 ) panic("FindBin : bin.size() > MAX_INT32");

Callers 8

getVTableMethod · 0.85
PatchCPUIDMethod · 0.85
KernelPanicNoKextDumpMethod · 0.85
FixADP1Function · 0.85
FixAnyFunction · 0.85
FixRenameByBridge2Function · 0.85
AddPNLFFunction · 0.85
RenameDevicesFunction · 0.85

Calls 3

panicFunction · 0.50
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected