Author: sginsberg
Date: Sun Oct 11 23:57:52 2009
New Revision: 43382
URL:
http://svn.reactos.org/svn/reactos?rev=43382&view=rev
Log:
- Fix a critical bug in KeFindConfigurationEntry; it passed NULL to
KeFindConfigurationNextEntry instead of passing a pointer containing NULL.
KeFindConfigurationNextEntry dereferenced this and, because the old bootloader maps NULL,
read some bogus value. KeFindConfigurationNextEntry would then try to find something in
the configuration tree that matched this, but failed. This was no problem because we
currently have no callers of those routines in ReactOS. However, the kdcom.dll from
Windows 2003 calls KeFindConfigurationEntry to find COM port entries, and this would have
crashed if FreeLdr hadn't mapped it. As it is, it didn't, and kdcom fell back to
default values for the COM port (which worked). WinLdr doesn't map NULL and this
resulted in a crash during kdcom initialization. Bug introduced in revision 15911 over 4
years ago. KD64 now works when booting with the new boot method.
Modified:
trunk/reactos/ntoskrnl/ke/config.c
Modified: trunk/reactos/ntoskrnl/ke/config.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/config.c?rev=4…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/config.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/config.c [iso-8859-1] Sun Oct 11 23:57:52 2009
@@ -24,12 +24,14 @@
IN CONFIGURATION_TYPE Type,
IN PULONG ComponentKey OPTIONAL)
{
+ PCONFIGURATION_COMPONENT_DATA NextLink = NULL;
+
/* Start Search at Root */
return KeFindConfigurationNextEntry(Child,
Class,
Type,
ComponentKey,
- NULL);
+ &NextLink);
}
/*