From 1827e19108e93128856e5426a3c6fc5d0c106096 Mon Sep 17 00:00:00 2001 From: PMheart <17109513+PMheart@users.noreply.github.com> Date: Mon, 10 Jul 2023 15:28:31 +0200 Subject: [PATCH] Revert "Allow `KernelPatcher::findAndReplaceWithMask` to have different find/repl size" This reverts commit 09e2db5ec6ff561611e8ef4a7f25e3804e6345e6. --- Lilu/Sources/kern_patcher.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/Lilu/Sources/kern_patcher.cpp b/Lilu/Sources/kern_patcher.cpp index a2a66876..9d059621 100644 --- a/Lilu/Sources/kern_patcher.cpp +++ b/Lilu/Sources/kern_patcher.cpp @@ -649,15 +649,8 @@ bool KernelPatcher::findPattern(const void *pattern, const void *patternMask, si } bool KernelPatcher::findAndReplaceWithMask(void *data, size_t dataSize, const void *find, size_t findSize, const void *findMask, size_t findMaskSize, const void *replace, size_t replaceSize, const void *replaceMask, size_t replaceMaskSize, size_t count, size_t skip) { - if (dataSize < findSize) { - SYSLOG("patcher", "data size must not exceed find size!"); - return false; - } - if (findSize < replaceSize) { - SYSLOG("patcher", "find size must be larger or equivalent to repl size!"); - return false; - } - + if (dataSize < findSize) return false; + uint8_t *d = (uint8_t *) data; const uint8_t *repl = (const uint8_t *) replace; const uint8_t *replMsk = (const uint8_t *) replaceMask; @@ -689,8 +682,7 @@ bool KernelPatcher::findAndReplaceWithMask(void *data, size_t dataSize, const vo if (replaceMask == nullptr) { lilu_os_memcpy(&d[dataOffset], replace, replaceSize); } else { - // as replace can be shorter than find, we only replace up to the possibly shorter bytes. - for (size_t i = 0; i < replaceSize; i++) + for (size_t i = 0; i < findSize; i++) d[dataOffset + i] = (d[dataOffset + i] & ~replMsk[i]) | (repl[i] & replMsk[i]); } @@ -699,7 +691,7 @@ bool KernelPatcher::findAndReplaceWithMask(void *data, size_t dataSize, const vo } replCount++; - dataOffset += findSize; + dataOffset += replaceSize; // check replace count if requested if (count > 0) {