mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +00:00
[NTOSKRNL]
* Fix several null pointer dereferences. CID 731608. CORE-6681 svn path=/trunk/; revision=60572
This commit is contained in:
parent
96c8ce5d9d
commit
599e34cb17
1 changed files with 30 additions and 12 deletions
|
@ -1064,8 +1064,11 @@ MiResolveImageReferences(IN PVOID ImageBase,
|
|||
if ((GdiLink) && (NormalLink))
|
||||
{
|
||||
/* It's not, it's importing stuff it shouldn't be! */
|
||||
if (LoadedImports)
|
||||
{
|
||||
MiDereferenceImports(LoadedImports);
|
||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
}
|
||||
return STATUS_PROCEDURE_NOT_FOUND;
|
||||
}
|
||||
|
||||
|
@ -1078,8 +1081,11 @@ MiResolveImageReferences(IN PVOID ImageBase,
|
|||
!(_strnicmp(ImportName, "gdi32", sizeof("gdi32") - 1)))
|
||||
{
|
||||
/* This is not kernel code */
|
||||
if (LoadedImports)
|
||||
{
|
||||
MiDereferenceImports(LoadedImports);
|
||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
}
|
||||
return STATUS_PROCEDURE_NOT_FOUND;
|
||||
}
|
||||
|
||||
|
@ -1103,8 +1109,11 @@ MiResolveImageReferences(IN PVOID ImageBase,
|
|||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Failed */
|
||||
if (LoadedImports)
|
||||
{
|
||||
MiDereferenceImports(LoadedImports);
|
||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
}
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -1226,8 +1235,11 @@ CheckDllState:
|
|||
{
|
||||
/* Cleanup and return */
|
||||
RtlFreeUnicodeString(&NameString);
|
||||
if (LoadedImports)
|
||||
{
|
||||
MiDereferenceImports(LoadedImports);
|
||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
}
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -1259,8 +1271,11 @@ CheckDllState:
|
|||
if (!ExportDirectory)
|
||||
{
|
||||
/* Cleanup and return */
|
||||
if (LoadedImports)
|
||||
{
|
||||
MiDereferenceImports(LoadedImports);
|
||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
}
|
||||
DPRINT1("Warning: Driver failed to load, %S not found\n", *MissingDriver);
|
||||
return STATUS_DRIVER_ENTRYPOINT_NOT_FOUND;
|
||||
}
|
||||
|
@ -1289,8 +1304,11 @@ CheckDllState:
|
|||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Cleanup and return */
|
||||
if (LoadedImports)
|
||||
{
|
||||
MiDereferenceImports(LoadedImports);
|
||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||
}
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue