diff --git a/drivers/network/afd/afd/main.c b/drivers/network/afd/afd/main.c index f3c263af747..8d5b914042d 100644 --- a/drivers/network/afd/afd/main.c +++ b/drivers/network/afd/afd/main.c @@ -114,9 +114,6 @@ AfdCreateSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, FCB->TdiDeviceName.MaximumLength = FCB->TdiDeviceName.Length; FCB->TdiDeviceName.Buffer = ExAllocatePool( NonPagedPool, FCB->TdiDeviceName.Length ); - RtlCopyMemory( FCB->TdiDeviceName.Buffer, - ConnectInfo->TransportName, - FCB->TdiDeviceName.Length ); if( !FCB->TdiDeviceName.Buffer ) { ExFreePool(FCB); @@ -126,6 +123,10 @@ AfdCreateSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, return STATUS_NO_MEMORY; } + RtlCopyMemory( FCB->TdiDeviceName.Buffer, + ConnectInfo->TransportName, + FCB->TdiDeviceName.Length ); + AFD_DbgPrint(MID_TRACE,("Success: %s %wZ\n", EaInfo->EaName, &FCB->TdiDeviceName)); } else { @@ -192,6 +193,9 @@ VOID DestroySocket( PAFD_FCB FCB ) { InFlightRequest[i]->InFlightRequest->IoStatus.Status = STATUS_CANCELLED; InFlightRequest[i]->InFlightRequest->IoStatus.Information = 0; IoCancelIrp( InFlightRequest[i]->InFlightRequest ); + InFlightRequest[i]->InFlightRequest = NULL; + if( InFlightRequest[i]->ConnectionCallInfo ) ExFreePool( InFlightRequest[i]->ConnectionCallInfo ); + if( InFlightRequest[i]->ConnectionReturnInfo ) ExFreePool( InFlightRequest[i]->ConnectionReturnInfo ); } }