summaryrefslogtreecommitdiff
path: root/source3/smbd/uid.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2009-03-03 16:08:56 -0800
committerJeremy Allison <jra@samba.org>2009-03-03 16:08:56 -0800
commit35f4ea221e75ebb4101cbacc6bc24bd1a3604f0f (patch)
tree8e05a69ae8d2a4e306393eeb1e8501ba0c9c1614 /source3/smbd/uid.c
parent243d4e8a0846f9b873573ec504fb2f811be7d25c (diff)
downloadsamba-35f4ea221e75ebb4101cbacc6bc24bd1a3604f0f.tar.gz
samba-35f4ea221e75ebb4101cbacc6bc24bd1a3604f0f.tar.bz2
samba-35f4ea221e75ebb4101cbacc6bc24bd1a3604f0f.zip
Fix bug #6155 - "force group" is no longer working as expected.
We need to store the "force group" uid separately from the conn->server_info token as we need to apply it separately also. Volker PLEASE CHECK ! Jeremy.
Diffstat (limited to 'source3/smbd/uid.c')
-rw-r--r--source3/smbd/uid.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c
index 4f059bdb59..f8c55b1b8f 100644
--- a/source3/smbd/uid.c
+++ b/source3/smbd/uid.c
@@ -254,6 +254,8 @@ bool change_to_user(connection_struct *conn, uint16 vuid)
if((group_c = *lp_force_group(snum))) {
+ SMB_ASSERT(conn->force_group_gid != (gid_t)-1);
+
if(group_c == '+') {
/*
@@ -266,15 +268,18 @@ bool change_to_user(connection_struct *conn, uint16 vuid)
int i;
for (i = 0; i < num_groups; i++) {
if (group_list[i]
- == conn->server_info->utok.gid) {
- gid = conn->server_info->utok.gid;
+ == conn->force_group_gid) {
+ conn->server_info->utok.gid =
+ conn->force_group_gid;
+ gid = conn->force_group_gid;
gid_to_sid(&conn->server_info->ptok
->user_sids[1], gid);
break;
}
}
} else {
- gid = conn->server_info->utok.gid;
+ conn->server_info->utok.gid = conn->force_group_gid;
+ gid = conn->force_group_gid;
gid_to_sid(&conn->server_info->ptok->user_sids[1],
gid);
}