[BLUE] Perform size/rectangle boundary checks on read/write operations. CORE-15108
[reactos.git] / drivers / network / ndisuio / createclose.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS User I/O driver
4 * FILE: createclose.c
5 * PURPOSE: IRP_MJ_CREATE and IRP_MJ_CLOSE handling
6 * PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
7 */
8
9 #include "ndisuio.h"
10
11 //#define NDEBUG
12 #include <debug.h>
13
14 NTSTATUS
15 NTAPI
16 NduDispatchCreate(PDEVICE_OBJECT DeviceObject,
17 PIRP Irp)
18 {
19 PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
20
21 ASSERT(DeviceObject == GlobalDeviceObject);
22
23 DPRINT("Created file object 0x%x\n", IrpSp->FileObject);
24
25 /* This is associated with an adapter during IOCTL_NDISUIO_OPEN_(WRITE_)DEVICE */
26 IrpSp->FileObject->FsContext = NULL;
27 IrpSp->FileObject->FsContext2 = NULL;
28
29 /* Completed successfully */
30 Irp->IoStatus.Status = STATUS_SUCCESS;
31 Irp->IoStatus.Information = FILE_OPENED;
32 IoCompleteRequest(Irp, IO_NO_INCREMENT);
33
34 /* Return success */
35 return STATUS_SUCCESS;
36 }
37
38 NTSTATUS
39 NTAPI
40 NduDispatchClose(PDEVICE_OBJECT DeviceObject,
41 PIRP Irp)
42 {
43 PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
44 PNDISUIO_ADAPTER_CONTEXT AdapterContext = IrpSp->FileObject->FsContext;
45 PNDISUIO_OPEN_ENTRY OpenEntry = IrpSp->FileObject->FsContext2;
46
47 ASSERT(DeviceObject == GlobalDeviceObject);
48
49 DPRINT("Closing file object 0x%x\n", IrpSp->FileObject);
50
51 /* Check if this handle was ever associated with an adapter */
52 if (AdapterContext != NULL)
53 {
54 ASSERT(OpenEntry != NULL);
55
56 DPRINT("Removing binding to adapter %wZ\n", &AdapterContext->DeviceName);
57
58 /* Call the our helper */
59 DereferenceAdapterContextWithOpenEntry(AdapterContext, OpenEntry);
60 }
61
62 /* Completed */
63 Irp->IoStatus.Status = STATUS_SUCCESS;
64 Irp->IoStatus.Information = 0;
65 IoCompleteRequest(Irp, IO_NO_INCREMENT);
66
67 /* Return success */
68 return STATUS_SUCCESS;
69 }