From 7983137edd6f80cbdb857aab3631b7c2b99de383 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sat, 17 Oct 2015 16:11:12 +0000 Subject: [PATCH] [KMTESTS:OB] - Move handle tests from ObReference to ObHandle where they belong svn path=/trunk/; revision=69568 --- rostests/kmtests/ntos_ob/ObHandle.c | 79 +++++++++++++++++++++++++- rostests/kmtests/ntos_ob/ObReference.c | 75 ------------------------ 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/rostests/kmtests/ntos_ob/ObHandle.c b/rostests/kmtests/ntos_ob/ObHandle.c index a0ad9b1c069..c5f4cfebd9a 100644 --- a/rostests/kmtests/ntos_ob/ObHandle.c +++ b/rostests/kmtests/ntos_ob/ObHandle.c @@ -6,8 +6,8 @@ */ #include - -#include +#define NDEBUG +#include #define CheckObject(Handle, Pointers, Handles, Attrib, Access) do \ { \ @@ -133,4 +133,79 @@ START_TEST(ObHandle) Status = ObCloseHandle(KernelDirectoryHandle, KernelMode); ok_eq_hex(Status, STATUS_SUCCESS); } + + /* Tests for closing handles */ + KmtStartSeh() + /* NtClose must accept everything */ + DPRINT("Closing null handle (NtClose)\n"); + Status = NtClose(NULL); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing null kernel handle (NtClose)\n"); + Status = NtClose((HANDLE)0x80000000); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing -1 handle (NtClose)\n"); + Status = NtClose((HANDLE)0x7FFFFFFF); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing -1 kernel handle (NtClose)\n"); + Status = NtClose((HANDLE)0xFFFFFFFF); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing 123 handle (NtClose)\n"); + Status = NtClose((HANDLE)123); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing 123 kernel handle (NtClose)\n"); + Status = NtClose((HANDLE)(123 | 0x80000000)); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + + /* ObCloseHandle with UserMode accepts everything */ + DPRINT("Closing null handle (ObCloseHandle, UserMode)\n"); + Status = ObCloseHandle(NULL, UserMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing null kernel handle (ObCloseHandle, UserMode)\n"); + Status = ObCloseHandle((HANDLE)0x80000000, UserMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing -1 handle (ObCloseHandle, UserMode)\n"); + Status = ObCloseHandle((HANDLE)0x7FFFFFFF, UserMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing -1 kernel handle (ObCloseHandle, UserMode)\n"); + Status = ObCloseHandle((HANDLE)0xFFFFFFFF, UserMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing 123 handle (ObCloseHandle, UserMode)\n"); + Status = ObCloseHandle((HANDLE)123, UserMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing 123 kernel handle (ObCloseHandle, UserMode)\n"); + Status = ObCloseHandle((HANDLE)(123 | 0x80000000), UserMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + + /* ZwClose only accepts 0 and -1 */ + DPRINT("Closing null handle (ZwClose)\n"); + Status = ZwClose(NULL); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing null kernel handle (ZwClose)\n"); + Status = ZwClose((HANDLE)0x80000000); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + /* INVALID_KERNEL_HANDLE, 0x7FFFFFFF + Status = ZwClose((HANDLE)0x7FFFFFFF);*/ + DPRINT("Closing -1 kernel handle (ZwClose)\n"); + Status = ZwClose((HANDLE)0xFFFFFFFF); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + /* INVALID_KERNEL_HANDLE, 0x7B, 1, 0, 0 + Status = ZwClose((HANDLE)123); + Status = ZwClose((HANDLE)(123 | 0x80000000));*/ + + /* ObCloseHandle with KernelMode accepts only 0 and -1 */ + DPRINT("Closing null handle (ObCloseHandle, KernelMode)\n"); + Status = ObCloseHandle(NULL, KernelMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + DPRINT("Closing null kernel handle (ObCloseHandle, KernelMode)\n"); + Status = ObCloseHandle((HANDLE)0x80000000, KernelMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + /* INVALID_KERNEL_HANDLE, 0x7FFFFFFF, 1, 0, 0 + Status = ObCloseHandle((HANDLE)0x7FFFFFFF, KernelMode);*/ + DPRINT("Closing -1 kernel handle (ObCloseHandle, KernelMode)\n"); + Status = ObCloseHandle((HANDLE)0xFFFFFFFF, KernelMode); + ok_eq_hex(Status, STATUS_INVALID_HANDLE); + /* INVALID_KERNEL_HANDLE, 0x7B, 1, 0, 0 + Status = ObCloseHandle((HANDLE)123, KernelMode); + Status = ObCloseHandle((HANDLE)(123 | 0x80000000), KernelMode);*/ + KmtEndSeh(STATUS_SUCCESS); } diff --git a/rostests/kmtests/ntos_ob/ObReference.c b/rostests/kmtests/ntos_ob/ObReference.c index bad4d4a24c5..2989b8cdeb3 100644 --- a/rostests/kmtests/ntos_ob/ObReference.c +++ b/rostests/kmtests/ntos_ob/ObReference.c @@ -239,81 +239,6 @@ START_TEST(ObReference) Status = ObReferenceObjectByPointer(NULL, 0, NULL, UserMode); Status = ObReferenceObjectByPointer(NULL, 0, NULL, KernelMode);*/ - KmtStartSeh() - /* TODO: this belongs in an ObHandle test if we ever have one */ - /* NtClose must accept everything */ - DPRINT("Closing null handle (NtClose)\n"); - Status = NtClose(NULL); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing null kernel handle (NtClose)\n"); - Status = NtClose((HANDLE)0x80000000); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing -1 handle (NtClose)\n"); - Status = NtClose((HANDLE)0x7FFFFFFF); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing -1 kernel handle (NtClose)\n"); - Status = NtClose((HANDLE)0xFFFFFFFF); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing 123 handle (NtClose)\n"); - Status = NtClose((HANDLE)123); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing 123 kernel handle (NtClose)\n"); - Status = NtClose((HANDLE)(123 | 0x80000000)); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - - /* ObCloseHandle with UserMode accepts everything */ - DPRINT("Closing null handle (ObCloseHandle, UserMode)\n"); - Status = ObCloseHandle(NULL, UserMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing null kernel handle (ObCloseHandle, UserMode)\n"); - Status = ObCloseHandle((HANDLE)0x80000000, UserMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing -1 handle (ObCloseHandle, UserMode)\n"); - Status = ObCloseHandle((HANDLE)0x7FFFFFFF, UserMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing -1 kernel handle (ObCloseHandle, UserMode)\n"); - Status = ObCloseHandle((HANDLE)0xFFFFFFFF, UserMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing 123 handle (ObCloseHandle, UserMode)\n"); - Status = ObCloseHandle((HANDLE)123, UserMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing 123 kernel handle (ObCloseHandle, UserMode)\n"); - Status = ObCloseHandle((HANDLE)(123 | 0x80000000), UserMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - - /* ZwClose only accepts 0 and -1 */ - DPRINT("Closing null handle (ZwClose)\n"); - Status = ZwClose(NULL); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing null kernel handle (ZwClose)\n"); - Status = ZwClose((HANDLE)0x80000000); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - /* INVALID_KERNEL_HANDLE, 0x7FFFFFFF - Status = ZwClose((HANDLE)0x7FFFFFFF);*/ - DPRINT("Closing -1 kernel handle (ZwClose)\n"); - Status = ZwClose((HANDLE)0xFFFFFFFF); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - /* INVALID_KERNEL_HANDLE, 0x7B, 1, 0, 0 - Status = ZwClose((HANDLE)123); - Status = ZwClose((HANDLE)(123 | 0x80000000));*/ - - /* ObCloseHandle with KernelMode accepts only 0 and -1 */ - DPRINT("Closing null handle (ObCloseHandle, KernelMode)\n"); - Status = ObCloseHandle(NULL, KernelMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - DPRINT("Closing null kernel handle (ObCloseHandle, KernelMode)\n"); - Status = ObCloseHandle((HANDLE)0x80000000, KernelMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - /* INVALID_KERNEL_HANDLE, 0x7FFFFFFF, 1, 0, 0 - Status = ObCloseHandle((HANDLE)0x7FFFFFFF, KernelMode);*/ - DPRINT("Closing -1 kernel handle (ObCloseHandle, KernelMode)\n"); - Status = ObCloseHandle((HANDLE)0xFFFFFFFF, KernelMode); - ok_eq_hex(Status, STATUS_INVALID_HANDLE); - /* INVALID_KERNEL_HANDLE, 0x7B, 1, 0, 0 - Status = ObCloseHandle((HANDLE)123, KernelMode); - Status = ObCloseHandle((HANDLE)(123 | 0x80000000), KernelMode);*/ - KmtEndSeh(STATUS_SUCCESS); - if (ObDirectoryObjectType) { ObDereferenceObject(ObDirectoryObjectType); -- 2.17.1