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);
}
/*