aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
authorSimon Rozman <simon@rozman.si>2021-04-20 10:53:17 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2021-05-10 11:24:44 +0200
commit71e1ab6940432c9bfd0a238dc02144e8bfad52a7 (patch)
tree25a261fc27eb04184c87e10c46993756c64488f5 /driver
parentdriver: cleanup unused DBG define (diff)
downloadwintun-71e1ab6940432c9bfd0a238dc02144e8bfad52a7.tar.xz
wintun-71e1ab6940432c9bfd0a238dc02144e8bfad52a7.zip
driver: fix memory leak on pre-Windows 7
Should NDIS version check fail the DriverEntry() bailed out without releasing the TunDispatchSecurityDescriptor. Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'driver')
-rw-r--r--driver/wintun.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/driver/wintun.c b/driver/wintun.c
index 931b7e8..6366ebd 100644
--- a/driver/wintun.c
+++ b/driver/wintun.c
@@ -1457,15 +1457,14 @@ DriverEntry(DRIVER_OBJECT *DriverObject, UNICODE_STRING *RegistryPath)
{
NTSTATUS Status;
- if (!NT_SUCCESS(Status = TunInitializeDispatchSecurityDescriptor()))
- return Status;
-
NdisVersion = NdisGetVersion();
if (NdisVersion < NDIS_MINIPORT_VERSION_MIN)
return NDIS_STATUS_UNSUPPORTED_REVISION;
if (NdisVersion > NDIS_MINIPORT_VERSION_MAX)
NdisVersion = NDIS_MINIPORT_VERSION_MAX;
+ if (!NT_SUCCESS(Status = TunInitializeDispatchSecurityDescriptor()))
+ return Status;
ExInitializeResourceLite(&TunDispatchCtxGuard);
ExInitializeResourceLite(&TunDispatchDeviceListLock);