Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
24af6f3e
Commit
24af6f3e
authored
Apr 21, 2009
by
Hans Leidekker
Committed by
Alexandre Julliard
Apr 21, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Add requests to set and retrieve default dacl.
parent
2f4423e4
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
128 additions
and
1 deletion
+128
-1
server_protocol.h
include/wine/server_protocol.h
+31
-1
protocol.def
server/protocol.def
+12
-0
request.h
server/request.h
+9
-0
token.c
server/token.c
+46
-0
trace.c
server/trace.c
+30
-0
No files found.
include/wine/server_protocol.h
View file @
24af6f3e
...
...
@@ -4100,6 +4100,30 @@ struct get_token_groups_reply
char
__pad_12
[
4
];
};
struct
get_token_default_dacl_request
{
struct
request_header
__header
;
obj_handle_t
handle
;
};
struct
get_token_default_dacl_reply
{
struct
reply_header
__header
;
data_size_t
acl_len
;
/* VARARG(acl,ACL); */
char
__pad_12
[
4
];
};
struct
set_token_default_dacl_request
{
struct
request_header
__header
;
obj_handle_t
handle
;
/* VARARG(acl,ACL); */
};
struct
set_token_default_dacl_reply
{
struct
reply_header
__header
;
};
struct
set_security_object_request
{
struct
request_header
__header
;
...
...
@@ -4765,6 +4789,8 @@ enum request
REQ_access_check
,
REQ_get_token_user
,
REQ_get_token_groups
,
REQ_get_token_default_dacl
,
REQ_set_token_default_dacl
,
REQ_set_security_object
,
REQ_get_security_object
,
REQ_create_mailslot
,
...
...
@@ -5008,6 +5034,8 @@ union generic_request
struct
access_check_request
access_check_request
;
struct
get_token_user_request
get_token_user_request
;
struct
get_token_groups_request
get_token_groups_request
;
struct
get_token_default_dacl_request
get_token_default_dacl_request
;
struct
set_token_default_dacl_request
set_token_default_dacl_request
;
struct
set_security_object_request
set_security_object_request
;
struct
get_security_object_request
get_security_object_request
;
struct
create_mailslot_request
create_mailslot_request
;
...
...
@@ -5249,6 +5277,8 @@ union generic_reply
struct
access_check_reply
access_check_reply
;
struct
get_token_user_reply
get_token_user_reply
;
struct
get_token_groups_reply
get_token_groups_reply
;
struct
get_token_default_dacl_reply
get_token_default_dacl_reply
;
struct
set_token_default_dacl_reply
set_token_default_dacl_reply
;
struct
set_security_object_reply
set_security_object_reply
;
struct
get_security_object_reply
get_security_object_reply
;
struct
create_mailslot_reply
create_mailslot_reply
;
...
...
@@ -5280,6 +5310,6 @@ union generic_reply
struct
set_window_layered_info_reply
set_window_layered_info_reply
;
};
#define SERVER_PROTOCOL_VERSION 38
5
#define SERVER_PROTOCOL_VERSION 38
6
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
server/protocol.def
View file @
24af6f3e
...
...
@@ -2896,6 +2896,18 @@ enum message_type
VARARG(user,token_groups); /* groups the token's user belongs to */
@END
@REQ(get_token_default_dacl)
obj_handle_t handle; /* handle to the token */
@REPLY
data_size_t acl_len; /* length needed to store access control list */
VARARG(acl,ACL); /* access control list */
@END
@REQ(set_token_default_dacl)
obj_handle_t handle; /* handle to the token */
VARARG(acl,ACL); /* default dacl to set */
@END
@REQ(set_security_object)
obj_handle_t handle; /* handle to the object */
unsigned int security_info; /* which parts of security descriptor to set */
...
...
server/request.h
View file @
24af6f3e
...
...
@@ -318,6 +318,8 @@ DECL_HANDLER(duplicate_token);
DECL_HANDLER
(
access_check
);
DECL_HANDLER
(
get_token_user
);
DECL_HANDLER
(
get_token_groups
);
DECL_HANDLER
(
get_token_default_dacl
);
DECL_HANDLER
(
set_token_default_dacl
);
DECL_HANDLER
(
set_security_object
);
DECL_HANDLER
(
get_security_object
);
DECL_HANDLER
(
create_mailslot
);
...
...
@@ -560,6 +562,8 @@ static const req_handler req_handlers[REQ_NB_REQUESTS] =
(
req_handler
)
req_access_check
,
(
req_handler
)
req_get_token_user
,
(
req_handler
)
req_get_token_groups
,
(
req_handler
)
req_get_token_default_dacl
,
(
req_handler
)
req_set_token_default_dacl
,
(
req_handler
)
req_set_security_object
,
(
req_handler
)
req_get_security_object
,
(
req_handler
)
req_create_mailslot
,
...
...
@@ -1750,6 +1754,11 @@ C_ASSERT( sizeof(struct get_token_user_reply) == 16 );
C_ASSERT
(
FIELD_OFFSET
(
struct
get_token_groups_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
get_token_groups_reply
,
user_len
)
==
8
);
C_ASSERT
(
sizeof
(
struct
get_token_groups_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
get_token_default_dacl_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
get_token_default_dacl_reply
,
acl_len
)
==
8
);
C_ASSERT
(
sizeof
(
struct
get_token_default_dacl_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
set_token_default_dacl_request
,
handle
)
==
12
);
C_ASSERT
(
sizeof
(
struct
set_token_default_dacl_request
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
set_security_object_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
set_security_object_request
,
security_info
)
==
16
);
C_ASSERT
(
sizeof
(
struct
set_security_object_request
)
==
24
);
...
...
server/token.c
View file @
24af6f3e
...
...
@@ -1344,3 +1344,49 @@ DECL_HANDLER(get_token_statistics)
release_object
(
token
);
}
}
DECL_HANDLER
(
get_token_default_dacl
)
{
struct
token
*
token
;
reply
->
acl_len
=
0
;
if
((
token
=
(
struct
token
*
)
get_handle_obj
(
current
->
process
,
req
->
handle
,
TOKEN_QUERY
,
&
token_ops
)))
{
if
(
token
->
default_dacl
)
reply
->
acl_len
=
token
->
default_dacl
->
AclSize
;
if
(
reply
->
acl_len
<=
get_reply_max_size
())
{
ACL
*
acl_reply
=
set_reply_data_size
(
reply
->
acl_len
);
if
(
acl_reply
)
memcpy
(
acl_reply
,
token
->
default_dacl
,
reply
->
acl_len
);
}
else
set_error
(
STATUS_BUFFER_TOO_SMALL
);
release_object
(
token
);
}
}
DECL_HANDLER
(
set_token_default_dacl
)
{
struct
token
*
token
;
if
((
token
=
(
struct
token
*
)
get_handle_obj
(
current
->
process
,
req
->
handle
,
TOKEN_ADJUST_DEFAULT
,
&
token_ops
)))
{
const
ACL
*
acl
=
get_req_data
();
unsigned
int
acl_size
=
get_req_data_size
();
free
(
token
->
default_dacl
);
token
->
default_dacl
=
NULL
;
if
(
acl_size
)
token
->
default_dacl
=
memdup
(
acl
,
acl_size
);
release_object
(
token
);
}
}
server/trace.c
View file @
24af6f3e
...
...
@@ -907,6 +907,13 @@ static void dump_inline_acl( const char *prefix, const ACL *acl, data_size_t siz
fputc
(
'}'
,
stderr
);
}
static
void
dump_varargs_ACL
(
const
char
*
prefix
,
data_size_t
size
)
{
const
ACL
*
acl
=
cur_data
;
dump_inline_acl
(
prefix
,
acl
,
size
);
remove_data
(
size
);
}
static
void
dump_inline_security_descriptor
(
const
char
*
prefix
,
const
struct
security_descriptor
*
sd
,
data_size_t
size
)
{
fprintf
(
stderr
,
"%s{"
,
prefix
);
...
...
@@ -3461,6 +3468,23 @@ static void dump_get_token_groups_reply( const struct get_token_groups_reply *re
dump_varargs_token_groups
(
", user="
,
cur_size
);
}
static
void
dump_get_token_default_dacl_request
(
const
struct
get_token_default_dacl_request
*
req
)
{
fprintf
(
stderr
,
" handle=%04x"
,
req
->
handle
);
}
static
void
dump_get_token_default_dacl_reply
(
const
struct
get_token_default_dacl_reply
*
req
)
{
fprintf
(
stderr
,
" acl_len=%u"
,
req
->
acl_len
);
dump_varargs_ACL
(
", acl="
,
cur_size
);
}
static
void
dump_set_token_default_dacl_request
(
const
struct
set_token_default_dacl_request
*
req
)
{
fprintf
(
stderr
,
" handle=%04x"
,
req
->
handle
);
dump_varargs_ACL
(
", acl="
,
cur_size
);
}
static
void
dump_set_security_object_request
(
const
struct
set_security_object_request
*
req
)
{
fprintf
(
stderr
,
" handle=%04x"
,
req
->
handle
);
...
...
@@ -3995,6 +4019,8 @@ static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
(
dump_func
)
dump_access_check_request
,
(
dump_func
)
dump_get_token_user_request
,
(
dump_func
)
dump_get_token_groups_request
,
(
dump_func
)
dump_get_token_default_dacl_request
,
(
dump_func
)
dump_set_token_default_dacl_request
,
(
dump_func
)
dump_set_security_object_request
,
(
dump_func
)
dump_get_security_object_request
,
(
dump_func
)
dump_create_mailslot_request
,
...
...
@@ -4234,6 +4260,8 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
(
dump_func
)
dump_access_check_reply
,
(
dump_func
)
dump_get_token_user_reply
,
(
dump_func
)
dump_get_token_groups_reply
,
(
dump_func
)
dump_get_token_default_dacl_reply
,
NULL
,
NULL
,
(
dump_func
)
dump_get_security_object_reply
,
(
dump_func
)
dump_create_mailslot_reply
,
...
...
@@ -4473,6 +4501,8 @@ static const char * const req_names[REQ_NB_REQUESTS] = {
"access_check"
,
"get_token_user"
,
"get_token_groups"
,
"get_token_default_dacl"
,
"set_token_default_dacl"
,
"set_security_object"
,
"get_security_object"
,
"create_mailslot"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment