Jacek Caban : ntoskrnl.exe: Use ObGetObjectType in kernel_object_from_handle.
Alexandre Julliard
julliard at winehq.org
Wed May 1 16:37:06 CDT 2019
Module: wine
Branch: master
Commit: 73b99d296c5c981e0afe614b72e339b41eb250d2
URL: https://source.winehq.org/git/wine.git/?a=commit;h=73b99d296c5c981e0afe614b72e339b41eb250d2
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed May 1 17:54:05 2019 +0200
ntoskrnl.exe: Use ObGetObjectType in kernel_object_from_handle.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntoskrnl.exe/ntoskrnl.c | 27 +++++++++++----------------
1 file changed, 11 insertions(+), 16 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 0bb83cb..1a2a6d1 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -366,6 +366,15 @@ static void ObReferenceObject( void *obj )
LeaveCriticalSection( &obref_cs );
}
+/***********************************************************************
+ * ObGetObjectType (NTOSKRNL.EXE.@)
+ */
+POBJECT_TYPE WINAPI ObGetObjectType( void *object )
+{
+ struct object_header *header = (struct object_header *)object - 1;
+ return header->type;
+}
+
static const POBJECT_TYPE *known_types[] =
{
&ExEventObjectType,
@@ -389,7 +398,6 @@ static CRITICAL_SECTION handle_map_cs = { &handle_map_critsect_debug, -1, 0, 0,
NTSTATUS kernel_object_from_handle( HANDLE handle, POBJECT_TYPE type, void **ret )
{
- struct object_header *header;
void *obj;
NTSTATUS status;
@@ -409,12 +417,7 @@ NTSTATUS kernel_object_from_handle( HANDLE handle, POBJECT_TYPE type, void **ret
return status;
}
- if (obj)
- {
- header = (struct object_header *)obj - 1;
- if (type && header->type != type) status = STATUS_OBJECT_TYPE_MISMATCH;
- }
- else
+ if (!obj)
{
char buf[256];
OBJECT_TYPE_INFORMATION *type_info = (OBJECT_TYPE_INFORMATION *)buf;
@@ -459,6 +462,7 @@ NTSTATUS kernel_object_from_handle( HANDLE handle, POBJECT_TYPE type, void **ret
}
if (!obj) status = STATUS_NO_MEMORY;
}
+ else if (type && ObGetObjectType( obj ) != type) status = STATUS_OBJECT_TYPE_MISMATCH;
LeaveCriticalSection( &handle_map_cs );
if (!status) *ret = obj;
@@ -489,15 +493,6 @@ NTSTATUS WINAPI ObReferenceObjectByHandle( HANDLE handle, ACCESS_MASK access,
}
/***********************************************************************
- * ObGetObjectType (NTOSKRNL.EXE.@)
- */
-POBJECT_TYPE WINAPI ObGetObjectType( void *object )
-{
- struct object_header *header = (struct object_header *)object - 1;
- return header->type;
-}
-
-/***********************************************************************
* ObOpenObjectByPointer (NTOSKRNL.EXE.@)
*/
NTSTATUS WINAPI ObOpenObjectByPointer( void *obj, ULONG attr, ACCESS_STATE *access_state,
More information about the wine-cvs
mailing list