server: Make enum_winstations enumerate all the window stations with WINSTA_ENUMERATE right.
This commit is contained in:
parent
fa7f16562e
commit
81069001ea
|
@ -37,6 +37,7 @@
|
||||||
#include "process.h"
|
#include "process.h"
|
||||||
#include "user.h"
|
#include "user.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
#include "security.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -636,16 +637,15 @@ DECL_HANDLER(set_user_object_info)
|
||||||
/* enumerate window stations */
|
/* enumerate window stations */
|
||||||
DECL_HANDLER(enum_winstation)
|
DECL_HANDLER(enum_winstation)
|
||||||
{
|
{
|
||||||
unsigned int index = req->index;
|
unsigned int index = 0;
|
||||||
obj_handle_t handle;
|
struct winstation *winsta;
|
||||||
struct object *obj;
|
|
||||||
|
|
||||||
while ((handle = enumerate_handles( current->process, &winstation_ops, &index )))
|
LIST_FOR_EACH_ENTRY( winsta, &winstation_list, struct winstation, entry )
|
||||||
{
|
{
|
||||||
if (!(obj = get_handle_obj( current->process, handle, WINSTA_ENUMERATE, &winstation_ops )))
|
unsigned int access = WINSTA_ENUMERATE;
|
||||||
continue;
|
if (req->index > index++) continue;
|
||||||
set_reply_data_obj_name( obj );
|
if (!check_object_access( &winsta->obj, &access )) continue;
|
||||||
release_object( obj );
|
set_reply_data_obj_name( &winsta->obj );
|
||||||
clear_error();
|
clear_error();
|
||||||
reply->next = index;
|
reply->next = index;
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue