diff options
author | Jeremy Allison <jra@samba.org> | 2008-01-10 16:35:54 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2008-01-10 16:35:54 -0800 |
commit | f33f4ef4a24fcbf09eeba0d51e7db74e9b13b432 (patch) | |
tree | dfb7191eac84846a3edf20696f8f02516f04a8e8 /source3/smbd/sec_ctx.c | |
parent | 13785d5c62093540139094f6dfcf808100790939 (diff) | |
download | samba-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.c | 17 |
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. ****************************************************************************/ |