FCB->OobInline = InfoReq->Information.Boolean;
break;
case AFD_INFO_RECEIVE_WINDOW_SIZE:
- NewBuffer = ExAllocatePool(PagedPool, InfoReq->Information.Ulong);
+ NewBuffer = ExAllocatePoolWithTag(PagedPool,
+ InfoReq->Information.Ulong,
+ TAG_AFD_DATA_BUFFER);
+
if (NewBuffer)
{
if (FCB->Recv.Content > InfoReq->Information.Ulong)
FCB->Recv.Window,
FCB->Recv.Content);
- ExFreePool(FCB->Recv.Window);
+ ExFreePoolWithTag(FCB->Recv.Window, TAG_AFD_DATA_BUFFER);
}
FCB->Recv.Size = InfoReq->Information.Ulong;
}
break;
case AFD_INFO_SEND_WINDOW_SIZE:
- NewBuffer = ExAllocatePool(PagedPool, InfoReq->Information.Ulong);
+ NewBuffer = ExAllocatePoolWithTag(PagedPool,
+ InfoReq->Information.Ulong,
+ TAG_AFD_DATA_BUFFER);
+
if (NewBuffer)
{
if (FCB->Send.BytesUsed > InfoReq->Information.Ulong)
FCB->Send.Window,
FCB->Send.BytesUsed);
- ExFreePool(FCB->Send.Window);
+ ExFreePoolWithTag(FCB->Send.Window, TAG_AFD_DATA_BUFFER);
}
FCB->Send.Size = InfoReq->Information.Ulong;
PMDL Mdl = NULL;
UNREFERENCED_PARAMETER(DeviceObject);
+ ASSERT(Irp->MdlAddress == NULL);
if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
TDI_QUERY_ADDRESS_INFO,
Mdl );
}
+
+ /* Check if MmProbeAndLockPages or TdiQueryInformation failed and
+ * clean up Mdl */
+ if (!NT_SUCCESS(Status) && Irp->MdlAddress != Mdl)
+ IoFreeMdl(Mdl);
} else
Status = STATUS_INSUFFICIENT_RESOURCES;