Hans Leidekker : server: Make returning used privileges optional in token_access_check.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Jul 17 08:03:41 CDT 2015
Module: wine
Branch: master
Commit: e0206d9f8a7a8c4abedad1346ade99305c48d042
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e0206d9f8a7a8c4abedad1346ade99305c48d042
Author: Hans Leidekker <hans at codeweavers.com>
Date: Fri Jul 17 12:37:24 2015 +0200
server: Make returning used privileges optional in token_access_check.
---
server/token.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/server/token.c b/server/token.c
index c235ece..42cfb3d 100644
--- a/server/token.c
+++ b/server/token.c
@@ -848,7 +848,7 @@ static unsigned int token_access_check( struct token *token,
/* fail if desired_access contains generic rights */
if (desired_access & (GENERIC_READ|GENERIC_WRITE|GENERIC_EXECUTE|GENERIC_ALL))
{
- *priv_count = 0;
+ if (priv_count) *priv_count = 0;
return STATUS_GENERIC_NOT_MAPPED;
}
@@ -856,14 +856,14 @@ static unsigned int token_access_check( struct token *token,
owner = sd_get_owner( sd );
if (!owner || !sd_get_group( sd ))
{
- *priv_count = 0;
+ if (priv_count) *priv_count = 0;
return STATUS_INVALID_SECURITY_DESCR;
}
/* 1: Grant desired access if the object is unprotected */
if (!dacl_present || !dacl)
{
- *priv_count = 0;
+ if (priv_count) *priv_count = 0;
*granted_access = desired_access;
return *status = STATUS_SUCCESS;
}
@@ -899,7 +899,7 @@ static unsigned int token_access_check( struct token *token,
}
else
{
- *priv_count = 0;
+ if (priv_count) *priv_count = 0;
*status = STATUS_PRIVILEGE_NOT_HELD;
return STATUS_SUCCESS;
}
@@ -1002,8 +1002,7 @@ int check_object_access(struct object *obj, unsigned int *access)
{
GENERIC_MAPPING mapping;
struct token *token = current->token ? current->token : current->process->token;
- LUID_AND_ATTRIBUTES priv;
- unsigned int status, priv_count = 1;
+ unsigned int status;
int res;
mapping.GenericAll = obj->ops->map_access( obj, GENERIC_ALL );
@@ -1019,7 +1018,7 @@ int check_object_access(struct object *obj, unsigned int *access)
mapping.GenericWrite = obj->ops->map_access( obj, GENERIC_WRITE );
mapping.GenericExecute = obj->ops->map_access( obj, GENERIC_EXECUTE );
- res = token_access_check( token, obj->sd, *access, &priv, &priv_count,
+ res = token_access_check( token, obj->sd, *access, NULL, NULL,
&mapping, access, &status ) == STATUS_SUCCESS &&
status == STATUS_SUCCESS;
More information about the wine-cvs
mailing list