- Don't load a module with the same name more than once.
authorAleksey Bragin <aleksey@reactos.org>
Sat, 9 Jun 2007 10:03:33 +0000 (10:03 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Sat, 9 Jun 2007 10:03:33 +0000 (10:03 +0000)
svn path=/trunk/; revision=27083

reactos/boot/freeldr/freeldr/arch/i386/loader.c

index 9fd6a57..b2a43d3 100644 (file)
@@ -596,6 +596,14 @@ FrLdrMapImage(IN FILE *Image,
     ULONG ImageSize;
     NTSTATUS Status = STATUS_SUCCESS;
 
+    /* Try to see, maybe it's loaded already */
+    if (LdrGetModuleObject(Name) != NULL)
+    {
+        /* It's loaded, return NULL. It would be wise to return 
+           correct LoadBase, but it seems to be ignored almost everywhere */
+        return NULL;
+    }
+
     /* Set the virtual (image) and physical (load) addresses */
     LoadBase = (PVOID)NextModuleBase;
     ImageBase = RVA(LoadBase , -KERNEL_BASE_PHYS + KSEG0_BASE);