diff --git a/drivers/network/afd/afd/bind.c b/drivers/network/afd/afd/bind.c index 74967aa8bc0..4745b841b51 100644 --- a/drivers/network/afd/afd/bind.c +++ b/drivers/network/afd/afd/bind.c @@ -53,6 +53,7 @@ AfdBindSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, return UnlockAndMaybeComplete( FCB, STATUS_NO_MEMORY, Irp, 0, NULL ); + if( FCB->LocalAddress ) ExFreePool( FCB->LocalAddress ); FCB->LocalAddress = TaCopyTransportAddress( &BindReq->Address ); if( FCB->LocalAddress ) diff --git a/drivers/network/afd/afd/connect.c b/drivers/network/afd/afd/connect.c index 905b9ccd997..bea3b3a9dc6 100644 --- a/drivers/network/afd/afd/connect.c +++ b/drivers/network/afd/afd/connect.c @@ -166,6 +166,7 @@ AfdStreamSocketConnect(PDEVICE_OBJECT DeviceObject, PIRP Irp, return LeaveIrpUntilLater( FCB, Irp, FUNCTION_CONNECT ); case SOCKET_STATE_CREATED: + if( FCB->LocalAddress ) ExFreePool( FCB->LocalAddress ); FCB->LocalAddress = TaCopyTransportAddress( &ConnectReq->RemoteAddress ); @@ -193,6 +194,7 @@ AfdStreamSocketConnect(PDEVICE_OBJECT DeviceObject, PIRP Irp, /* Drop through to SOCKET_STATE_BOUND */ case SOCKET_STATE_BOUND: + if( FCB->RemoteAddress ) ExFreePool( FCB->RemoteAddress ); FCB->RemoteAddress = TaCopyTransportAddress( &ConnectReq->RemoteAddress ); diff --git a/drivers/network/afd/afd/listen.c b/drivers/network/afd/afd/listen.c index 4ee33419887..7df2e43a614 100644 --- a/drivers/network/afd/afd/listen.c +++ b/drivers/network/afd/afd/listen.c @@ -28,6 +28,8 @@ static VOID SatisfyAccept( PAFD_DEVICE_EXTENSION DeviceExt, FCB->State = SOCKET_STATE_CONNECTED; FCB->Connection = Qelt->Object; + + if( FCB->RemoteAddress ) ExFreePool( FCB->RemoteAddress ); FCB->RemoteAddress = TaCopyTransportAddress( Qelt->ConnInfo->RemoteAddress );