From 678fb5ae5f300bef974461625ac6574553fcfb6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 28 Nov 2005 23:21:24 +0000 Subject: [PATCH] Fix the fix to RtlFindMessage svn path=/trunk/; revision=19731 --- reactos/lib/kernel32/misc/errormsg.c | 2 +- reactos/lib/rtl/message.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/reactos/lib/kernel32/misc/errormsg.c b/reactos/lib/kernel32/misc/errormsg.c index 71c2a71c102..1862cdc316a 100644 --- a/reactos/lib/kernel32/misc/errormsg.c +++ b/reactos/lib/kernel32/misc/errormsg.c @@ -383,7 +383,7 @@ DWORD WINAPI FormatMessageW( LPWSTR from,f; DWORD width = dwFlags & FORMAT_MESSAGE_MAX_WIDTH_MASK; BOOL eos = FALSE; - CHAR ch; + WCHAR ch; TRACE("(0x%lx,%p,%ld,0x%lx,%p,%ld,%p)\n", dwFlags,lpSource,dwMessageId,dwLanguageId,lpBuffer,nSize,args); diff --git a/reactos/lib/rtl/message.c b/reactos/lib/rtl/message.c index bb786717e2b..c7530293d75 100644 --- a/reactos/lib/rtl/message.c +++ b/reactos/lib/rtl/message.c @@ -85,17 +85,20 @@ RtlFindMessage(PVOID BaseAddress, } } + if (MessageTable->NumberOfBlocks <= i) + { + return STATUS_MESSAGE_NOT_FOUND; + } + MessageEntry = (PRTL_MESSAGE_RESOURCE_ENTRY)((PUCHAR)MessageTable + MessageTable->Blocks[i].OffsetToEntries); DPRINT("EntryOffset 0x%08lx\n", EntryOffset); DPRINT("IdOffset 0x%08lx\n", IdOffset); DPRINT("MessageEntry: %p\n", MessageEntry); - - for (i = 0; i < MessageTable->NumberOfBlocks; i++) + for (i = 0; i < IdOffset; i++) { - if (MessageId >= MessageTable->Blocks[i].LowId && MessageId <= MessageTable->Blocks[i].HighId) - MessageEntry = (PRTL_MESSAGE_RESOURCE_ENTRY)((char *)MessageEntry + MessageEntry->Length); + MessageEntry = (PRTL_MESSAGE_RESOURCE_ENTRY)((PUCHAR)MessageEntry + (ULONG)MessageEntry->Length); } if (MessageEntry->Flags == 0)