summaryrefslogtreecommitdiff
path: root/source/lib/util_nttoken.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/lib/util_nttoken.c')
-rw-r--r--source/lib/util_nttoken.c54
1 files changed, 3 insertions, 51 deletions
diff --git a/source/lib/util_nttoken.c b/source/lib/util_nttoken.c
index 774ef498b7..13c66a5f45 100644
--- a/source/lib/util_nttoken.c
+++ b/source/lib/util_nttoken.c
@@ -7,7 +7,6 @@
* Copyright (C) Rafal Szczesniak 2002
* Copyright (C) Volker Lendecke 2006
* Copyright (C) Michael Adam 2007
- * Copyright (C) Guenther Deschner 2007
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -38,12 +37,14 @@ NT_USER_TOKEN *dup_nt_token(TALLOC_CTX *mem_ctx, const NT_USER_TOKEN *ptoken)
if (!ptoken)
return NULL;
- token = TALLOC_ZERO_P(mem_ctx, NT_USER_TOKEN);
+ token = TALLOC_P(mem_ctx, NT_USER_TOKEN);
if (token == NULL) {
DEBUG(0, ("talloc failed\n"));
return NULL;
}
+ ZERO_STRUCTP(token);
+
if (ptoken->user_sids && ptoken->num_sids) {
token->user_sids = (DOM_SID *)talloc_memdup(
token, ptoken->user_sids, sizeof(DOM_SID) * ptoken->num_sids );
@@ -66,52 +67,3 @@ NT_USER_TOKEN *dup_nt_token(TALLOC_CTX *mem_ctx, const NT_USER_TOKEN *ptoken)
return token;
}
-/****************************************************************************
- merge NT tokens
-****************************************************************************/
-
-NTSTATUS merge_nt_token(TALLOC_CTX *mem_ctx,
- const struct nt_user_token *token_1,
- const struct nt_user_token *token_2,
- struct nt_user_token **token_out)
-{
- struct nt_user_token *token = NULL;
- NTSTATUS status;
- int i;
-
- if (!token_1 || !token_2 || !token_out) {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- token = TALLOC_ZERO_P(mem_ctx, struct nt_user_token);
- NT_STATUS_HAVE_NO_MEMORY(token);
-
- for (i=0; i < token_1->num_sids; i++) {
- status = add_sid_to_array_unique(mem_ctx,
- &token_1->user_sids[i],
- &token->user_sids,
- &token->num_sids);
- if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(token);
- return status;
- }
- }
-
- for (i=0; i < token_2->num_sids; i++) {
- status = add_sid_to_array_unique(mem_ctx,
- &token_2->user_sids[i],
- &token->user_sids,
- &token->num_sids);
- if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(token);
- return status;
- }
- }
-
- se_priv_add(&token->privileges, &token_1->privileges);
- se_priv_add(&token->privileges, &token_2->privileges);
-
- *token_out = token;
-
- return NT_STATUS_OK;
-}