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))
|
if ((GdiLink) && (NormalLink))
|
||||||
{
|
{
|
||||||
/* It's not, it's importing stuff it shouldn't be! */
|
/* It's not, it's importing stuff it shouldn't be! */
|
||||||
MiDereferenceImports(LoadedImports);
|
if (LoadedImports)
|
||||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
{
|
||||||
|
MiDereferenceImports(LoadedImports);
|
||||||
|
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||||
|
}
|
||||||
return STATUS_PROCEDURE_NOT_FOUND;
|
return STATUS_PROCEDURE_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1078,8 +1081,11 @@ MiResolveImageReferences(IN PVOID ImageBase,
|
||||||
!(_strnicmp(ImportName, "gdi32", sizeof("gdi32") - 1)))
|
!(_strnicmp(ImportName, "gdi32", sizeof("gdi32") - 1)))
|
||||||
{
|
{
|
||||||
/* This is not kernel code */
|
/* This is not kernel code */
|
||||||
MiDereferenceImports(LoadedImports);
|
if (LoadedImports)
|
||||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
{
|
||||||
|
MiDereferenceImports(LoadedImports);
|
||||||
|
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||||
|
}
|
||||||
return STATUS_PROCEDURE_NOT_FOUND;
|
return STATUS_PROCEDURE_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1103,8 +1109,11 @@ MiResolveImageReferences(IN PVOID ImageBase,
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Failed */
|
/* Failed */
|
||||||
MiDereferenceImports(LoadedImports);
|
if (LoadedImports)
|
||||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
{
|
||||||
|
MiDereferenceImports(LoadedImports);
|
||||||
|
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||||
|
}
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1226,8 +1235,11 @@ CheckDllState:
|
||||||
{
|
{
|
||||||
/* Cleanup and return */
|
/* Cleanup and return */
|
||||||
RtlFreeUnicodeString(&NameString);
|
RtlFreeUnicodeString(&NameString);
|
||||||
MiDereferenceImports(LoadedImports);
|
if (LoadedImports)
|
||||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
{
|
||||||
|
MiDereferenceImports(LoadedImports);
|
||||||
|
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||||
|
}
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1259,8 +1271,11 @@ CheckDllState:
|
||||||
if (!ExportDirectory)
|
if (!ExportDirectory)
|
||||||
{
|
{
|
||||||
/* Cleanup and return */
|
/* Cleanup and return */
|
||||||
MiDereferenceImports(LoadedImports);
|
if (LoadedImports)
|
||||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
{
|
||||||
|
MiDereferenceImports(LoadedImports);
|
||||||
|
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||||
|
}
|
||||||
DPRINT1("Warning: Driver failed to load, %S not found\n", *MissingDriver);
|
DPRINT1("Warning: Driver failed to load, %S not found\n", *MissingDriver);
|
||||||
return STATUS_DRIVER_ENTRYPOINT_NOT_FOUND;
|
return STATUS_DRIVER_ENTRYPOINT_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
@ -1289,8 +1304,11 @@ CheckDllState:
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Cleanup and return */
|
/* Cleanup and return */
|
||||||
MiDereferenceImports(LoadedImports);
|
if (LoadedImports)
|
||||||
if (LoadedImports) ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
{
|
||||||
|
MiDereferenceImports(LoadedImports);
|
||||||
|
ExFreePoolWithTag(LoadedImports, TAG_LDR_IMPORTS);
|
||||||
|
}
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue