summaryrefslogtreecommitdiff
path: root/source3/smbd/sec_ctx.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2008-01-10 16:35:54 -0800
committerJeremy Allison <jra@samba.org>2008-01-10 16:35:54 -0800
commitf33f4ef4a24fcbf09eeba0d51e7db74e9b13b432 (patch)
treedfb7191eac84846a3edf20696f8f02516f04a8e8 /source3/smbd/sec_ctx.c
parent13785d5c62093540139094f6dfcf808100790939 (diff)
downloadsamba-f33f4ef4a24fcbf09eeba0d51e7db74e9b13b432.tar.gz
samba-f33f4ef4a24fcbf09eeba0d51e7db74e9b13b432.tar.bz2
samba-f33f4ef4a24fcbf09eeba0d51e7db74e9b13b432.zip
Don't switch user contexts unless you have to. Saves
a bunch of syscalls on close. Noticed by Volker. Jeremy. (This used to be commit 3caeeaea162e2083a087c242b850c107a3be1bf9)
Diffstat (limited to 'source3/smbd/sec_ctx.c')
-rw-r--r--source3/smbd/sec_ctx.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/source3/smbd/sec_ctx.c b/source3/smbd/sec_ctx.c
index 6edcc36764..0f307f6a64 100644
--- a/source3/smbd/sec_ctx.c
+++ b/source3/smbd/sec_ctx.c
@@ -33,6 +33,23 @@ static struct sec_ctx sec_ctx_stack[MAX_SEC_CTX_DEPTH + 1];
static int sec_ctx_stack_ndx;
/****************************************************************************
+ Are two UNIX tokens equal ?
+****************************************************************************/
+
+bool unix_token_equal(const UNIX_USER_TOKEN *t1, const UNIX_USER_TOKEN *t2)
+{
+ if (t1->uid != t2->uid || t1->gid != t2->gid ||
+ t1->ngroups != t2->ngroups) {
+ return false;
+ }
+ if (memcmp(t1->groups, t2->groups,
+ t1->ngroups*sizeof(gid_t)) != 0) {
+ return false;
+ }
+ return true;
+}
+
+/****************************************************************************
Become the specified uid.
****************************************************************************/