Add more tests for old style hooks and winevent hooks, make them pass
under Wine.
diff --git a/server/hook.c b/server/hook.c
index ab86865..b269114 100644
--- a/server/hook.c
+++ b/server/hook.c
@@ -320,7 +320,14 @@
{
struct hook *hook;
- if (req->handle) hook = get_user_object( req->handle, USER_HOOK );
+ if (req->handle)
+ {
+ if (!(hook = get_user_object( req->handle, USER_HOOK )))
+ {
+ set_win32_error( ERROR_INVALID_HOOK_HANDLE );
+ return;
+ }
+ }
else
{
if (!req->proc || req->id < WH_MINHOOK || req->id > WH_MAXHOOK)
@@ -329,9 +336,12 @@
return;
}
if (!(hook = find_hook( current, req->id - WH_MINHOOK, req->proc )))
+ {
set_error( STATUS_INVALID_PARAMETER );
+ return;
+ }
}
- if (hook) remove_hook( hook );
+ remove_hook( hook );
}
diff --git a/server/trace.c b/server/trace.c
index 38d4c89..d54294d 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -3210,6 +3210,7 @@
NAME(TIMEOUT),
NAME(USER_APC),
NAME(WAS_LOCKED),
+ NAME_WIN32(ERROR_INVALID_HOOK_HANDLE),
NAME_WIN32(ERROR_INVALID_INDEX),
NAME_WIN32(ERROR_NEGATIVE_SEEK),
NAME_WIN32(ERROR_SEEK),