From 147fdde8485fa649d9a0b0231c184ccd8479bbf8 Mon Sep 17 00:00:00 2001 From: Joachim Bauch Date: Fri, 12 Apr 2013 18:35:12 +0200 Subject: [PATCH] Fixed potential endless loop while searching for resources (github issue #10). --- MemoryModule.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MemoryModule.c b/MemoryModule.c index a503301..1eae4e7 100644 --- a/MemoryModule.c +++ b/MemoryModule.c @@ -563,9 +563,9 @@ static PIMAGE_RESOURCE_DIRECTORY_ENTRY _MemorySearchResourceEntry( middle = (start + end) >> 1; entryName = (WORD) entries[middle].Name; if (check < entryName) { - end = middle; + end = (end != middle ? middle : middle-1); } else if (check > entryName) { - start = middle; + start = (start != middle ? middle : middle+1); } else { result = &entries[middle]; break; @@ -599,9 +599,9 @@ static PIMAGE_RESOURCE_DIRECTORY_ENTRY _MemorySearchResourceEntry( cmp = wcsncmp(key, resourceString->NameString, resourceString->Length); #endif if (cmp < 0) { - end = middle; + end = (middle != end ? middle : middle-1); } else if (cmp > 0) { - start = middle; + start = (middle != start ? middle : middle+1); } else { result = &entries[middle]; break;