From 5ee60afbf222a8e47b13ff6ac8cecd717f17a983 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 7 Apr 2009 05:07:09 +0000 Subject: [PATCH] - Don't leave a bad handle or object pointer - Make sure we don't try to dereference a non-referenced handle svn path=/trunk/; revision=40412 --- reactos/drivers/network/afd/afd/lock.c | 3 +++ reactos/drivers/network/afd/afd/tdi.c | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/reactos/drivers/network/afd/afd/lock.c b/reactos/drivers/network/afd/afd/lock.c index cb226727ba5..d8ada70d5a2 100644 --- a/reactos/drivers/network/afd/afd/lock.c +++ b/reactos/drivers/network/afd/afd/lock.c @@ -187,6 +187,9 @@ PAFD_HANDLE LockHandles( PAFD_HANDLE HandleArray, UINT HandleCount ) { (PVOID*)&FileObjects[i].Handle, NULL ); } + + if( !NT_SUCCESS(Status) ) + FileObjects[i].Handle = 0; } if( !NT_SUCCESS(Status) ) { diff --git a/reactos/drivers/network/afd/afd/tdi.c b/reactos/drivers/network/afd/afd/tdi.c index 2567ce14bc2..4d023e75ef3 100644 --- a/reactos/drivers/network/afd/afd/tdi.c +++ b/reactos/drivers/network/afd/afd/tdi.c @@ -137,14 +137,17 @@ static NTSTATUS TdiOpenDevice( if (!NT_SUCCESS(Status)) { AFD_DbgPrint(MIN_TRACE, ("ObReferenceObjectByHandle() failed with status (0x%X).\n", Status)); ZwClose(*Handle); - *Handle = NULL; } else { AFD_DbgPrint(MAX_TRACE, ("Got handle (0x%X) Object (0x%X)\n", *Handle, *Object)); } } else { AFD_DbgPrint(MIN_TRACE, ("ZwCreateFile() failed with status (0x%X)\n", Status)); + } + + if (!NT_SUCCESS(Status)) { *Handle = NULL; + *Object = NULL; } return Status;