[NTOS:IO] Don't call IopCompleteRequest with uninitialized context values. CID 716761

NormalContext and NormalRoutine are just for good measure, but
SystemArgument2 is actually used by the function.
And yes, this appears to be a bug in Win 2003.
This commit is contained in:
Thomas Faber
2021-10-28 11:17:03 -04:00
parent 8254585be5
commit a74ff5be17

View File

@@ -148,6 +148,8 @@ IopPerformSynchronousRequest(IN PDEVICE_OBJECT DeviceObject,
if (Status != STATUS_PENDING)
{
/* Complete it ourselves */
NormalRoutine = NULL;
NormalContext = NULL;
ASSERT(!Irp->PendingReturned);
KeRaiseIrql(APC_LEVEL, &OldIrql);
IopCompleteRequest(&Irp->Tail.Apc,
@@ -2640,6 +2642,8 @@ NtQueryInformationFile(IN HANDLE FileHandle,
Irp->UserIosb = IoStatusBlock;
/* The IRP wasn't completed, complete it ourselves */
NormalRoutine = NULL;
NormalContext = NULL;
KeRaiseIrql(APC_LEVEL, &OldIrql);
IopCompleteRequest(&Irp->Tail.Apc,
&NormalRoutine,
@@ -3480,6 +3484,8 @@ NtSetInformationFile(IN HANDLE FileHandle,
Irp->UserIosb = IoStatusBlock;
/* The IRP wasn't completed, complete it ourselves */
NormalRoutine = NULL;
NormalContext = NULL;
KeRaiseIrql(APC_LEVEL, &OldIrql);
IopCompleteRequest(&Irp->Tail.Apc,
&NormalRoutine,