From ca142ab0656942776b994d0a0ca279bc0d7c77cb Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 20 Feb 2014 21:41:33 +0000 Subject: [PATCH] [AfD] In AfdBindSocket, open a usermode handle and return that to the caller, instead of returning the kernel mode handle. svn path=/trunk/; revision=62272 --- reactos/drivers/network/afd/afd/bind.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/reactos/drivers/network/afd/afd/bind.c b/reactos/drivers/network/afd/afd/bind.c index e16ab26874c..a66e967cc0e 100644 --- a/reactos/drivers/network/afd/afd/bind.c +++ b/reactos/drivers/network/afd/afd/bind.c @@ -77,6 +77,7 @@ AfdBindSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, PFILE_OBJECT FileObject = IrpSp->FileObject; PAFD_FCB FCB = FileObject->FsContext; PAFD_BIND_DATA BindReq; + HANDLE UserHandle; UNREFERENCED_PARAMETER(DeviceObject); @@ -99,9 +100,20 @@ AfdBindSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, AFD_DbgPrint(MID_TRACE,("FCB->Flags %x\n", FCB->Flags)); if (NT_SUCCESS(Status)) - FCB->State = SOCKET_STATE_BOUND; + { + UserHandle = NULL; + Status = ObOpenObjectByPointer(FCB->AddressFile.Object, + 0, + NULL, + MAXIMUM_ALLOWED, + IoFileObjectType, + Irp->RequestorMode, + &UserHandle); + if (NT_SUCCESS(Status)) + FCB->State = SOCKET_STATE_BOUND; + } /* MSAFD relies on us returning the address file handle in the IOSB */ return UnlockAndMaybeComplete( FCB, Status, Irp, - (ULONG_PTR)FCB->AddressFile.Handle ); + (ULONG_PTR)UserHandle); }