mirror of
https://github.com/reactos/reactos.git
synced 2024-07-12 23:55:07 +00:00
[NTOSKRNL]
- Fix kernel memory corruption when a driver fails to initialize - Fix a handle leak in a failure case svn path=/trunk/; revision=55887
This commit is contained in:
parent
c61e296b73
commit
ac6c5a4738
|
@ -1538,6 +1538,10 @@ try_again:
|
||||||
KernelMode,
|
KernelMode,
|
||||||
(PVOID*)&DriverObject,
|
(PVOID*)&DriverObject,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
/* Close the extra handle */
|
||||||
|
ZwClose(hDriver);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Fail */
|
/* Fail */
|
||||||
|
@ -1546,9 +1550,6 @@ try_again:
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Close the extra handle */
|
|
||||||
ZwClose(hDriver);
|
|
||||||
|
|
||||||
DriverObject->HardwareDatabase = &IopHardwareDatabaseKey;
|
DriverObject->HardwareDatabase = &IopHardwareDatabaseKey;
|
||||||
DriverObject->DriverStart = ModuleObject ? ModuleObject->DllBase : 0;
|
DriverObject->DriverStart = ModuleObject ? ModuleObject->DllBase : 0;
|
||||||
DriverObject->DriverSize = ModuleObject ? ModuleObject->SizeOfImage : 0;
|
DriverObject->DriverSize = ModuleObject ? ModuleObject->SizeOfImage : 0;
|
||||||
|
@ -1564,6 +1565,7 @@ try_again:
|
||||||
DriverObject->DriverSection = NULL;
|
DriverObject->DriverSection = NULL;
|
||||||
ObMakeTemporaryObject(DriverObject);
|
ObMakeTemporaryObject(DriverObject);
|
||||||
ObDereferenceObject(DriverObject);
|
ObDereferenceObject(DriverObject);
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue