From c6ee3e16efc86bcac690e9f243d8fba41c9dcdb0 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 12 Nov 2013 19:23:42 +0000 Subject: [PATCH] [NTOSKRNL] Fix freeing of the driver string, this should only be done, if the lowest bit is set. svn path=/trunk/; revision=60965 --- reactos/ntoskrnl/mm/ARM3/sysldr.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/mm/ARM3/sysldr.c b/reactos/ntoskrnl/mm/ARM3/sysldr.c index c77cc99bc12..052ff720300 100644 --- a/reactos/ntoskrnl/mm/ARM3/sysldr.c +++ b/reactos/ntoskrnl/mm/ARM3/sysldr.c @@ -3214,11 +3214,20 @@ LoaderScan: &LoadedImports); if (!NT_SUCCESS(Status)) { + BOOLEAN NeedToFreeString = FALSE; + + /* If the lowest bit is set to 1, this is a hint that we need to free */ + if (*(ULONG_PTR*)MissingDriverName & 1) + { + NeedToFreeString = TRUE; + *(ULONG_PTR*)MissingDriverName &= ~1; + } + DPRINT1("MiResolveImageReferences failed with status 0x%x\n", Status); DPRINT1(" Missing driver '%ws', missing API '%s'\n", MissingDriverName, MissingApiName); - if (MissingDriverName != NULL) + if (NeedToFreeString) { ExFreePoolWithTag(MissingDriverName, TAG_LDR_WSTR); }