From 90881da68509ad673c1e921831ef4f36cabb9ea8 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 3 Jul 2012 15:32:10 -0700 Subject: Move copy_unix_token() from locking/locking.c to lib/util.c. Make public. --- source3/lib/util.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'source3/lib') diff --git a/source3/lib/util.c b/source3/lib/util.c index f1b815878d..697f7b143d 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -2460,3 +2460,33 @@ bool map_open_params_to_ntcreate(const char *smb_base_fname, return True; } + +/************************************************************************* + Return a talloced copy of a struct security_unix_token. NULL on fail. +*************************************************************************/ + +struct security_unix_token *copy_unix_token(TALLOC_CTX *ctx, const struct security_unix_token *tok) +{ + struct security_unix_token *cpy; + + cpy = talloc(ctx, struct security_unix_token); + if (!cpy) { + return NULL; + } + + cpy->uid = tok->uid; + cpy->gid = tok->gid; + cpy->ngroups = tok->ngroups; + if (tok->ngroups) { + /* Make this a talloc child of cpy. */ + cpy->groups = (gid_t *)talloc_memdup( + cpy, tok->groups, tok->ngroups * sizeof(gid_t)); + if (!cpy->groups) { + TALLOC_FREE(cpy); + return NULL; + } + } else { + cpy->groups = NULL; + } + return cpy; +} -- cgit