From 1cc8981800a09b41ec5a440732d2e76576f80faa Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 30 Aug 2008 02:53:20 +0000 Subject: [PATCH] - Check if TdiBuildNullConnectionInfo completed successfully - Add a comment - Fail if we can't allocate Qelt svn path=/branches/aicom-network-fixes/; revision=35786 --- drivers/network/afd/afd/listen.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/network/afd/afd/listen.c b/drivers/network/afd/afd/listen.c index c7dfa20e77d..144811341fa 100644 --- a/drivers/network/afd/afd/listen.c +++ b/drivers/network/afd/afd/listen.c @@ -98,7 +98,7 @@ static NTSTATUS NTAPI ListenComplete ( PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context ) { - NTSTATUS Status = STATUS_FILE_CLOSED; + NTSTATUS Status = STATUS_SUCCESS; PAFD_FCB FCB = (PAFD_FCB)Context; PAFD_TDI_OBJECT_QELT Qelt; @@ -107,7 +107,7 @@ static NTSTATUS NTAPI ListenComplete return STATUS_CANCELLED; } - if( !SocketAcquireStateLock( FCB ) ) return Status; + if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED; FCB->ListenIrp.InFlightRequest = NULL; @@ -122,8 +122,10 @@ static NTSTATUS NTAPI ListenComplete Qelt = ExAllocatePool( NonPagedPool, sizeof(*Qelt) ); if( !Qelt ) { + /* Is this correct? */ TdiCloseDevice( FCB->Connection.Handle, FCB->Connection.Object ); + Status = STATUS_NO_MEMORY; } else { UINT AddressType = FCB->LocalAddress->Address[0].AddressType; @@ -136,11 +138,12 @@ static NTSTATUS NTAPI ListenComplete ConnectionReturnInfo->RemoteAddress)); TdiBuildNullConnectionInfo( &Qelt->ConnInfo, AddressType ); - TaCopyTransportAddressInPlace - ( Qelt->ConnInfo->RemoteAddress, - FCB->ListenIrp.ConnectionReturnInfo->RemoteAddress ); - - InsertTailList( &FCB->PendingConnections, &Qelt->ListEntry ); + if( Qelt->ConnInfo ) { + TaCopyTransportAddressInPlace + ( Qelt->ConnInfo->RemoteAddress, + FCB->ListenIrp.ConnectionReturnInfo->RemoteAddress ); + InsertTailList( &FCB->PendingConnections, &Qelt->ListEntry ); + } else Status = STATUS_NO_MEMORY; } /* Satisfy a pre-accept request if one is available */ @@ -168,7 +171,7 @@ static NTSTATUS NTAPI ListenComplete SocketStateUnlock( FCB ); - return STATUS_SUCCESS; + return Status; } NTSTATUS AfdListenSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp,