From 68255f907c889d781eabf107cd148957864a5fe1 Mon Sep 17 00:00:00 2001 From: Kevin Bataille Date: Tue, 21 Jul 2026 19:34:01 +0200 Subject: [PATCH] fix: IndexOfPattern alignment for multi-byte encodings Stride the scan by pattern.Length (1 for ASCII/UTF-8, 2 for UTF-16, 4 for UTF-32) to avoid matching a misaligned null-terminator pattern mid-character. --- WhiteMagic/MemoryBase.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WhiteMagic/MemoryBase.cs b/WhiteMagic/MemoryBase.cs index 88f59d6..2b518fd 100644 --- a/WhiteMagic/MemoryBase.cs +++ b/WhiteMagic/MemoryBase.cs @@ -273,7 +273,8 @@ public abstract class MemoryBase : IDisposable private static int IndexOfPattern(byte[] data, byte[] pattern) { int lastStart = data.Length - pattern.Length; - for (int i = 0; i <= lastStart; i++) + int stride = Math.Max(1, pattern.Length); + for (int i = 0; i <= lastStart; i += stride) { bool match = true; for (int j = 0; j < pattern.Length; j++)