Fix bug #6155 - "force group" is no longer working as expected.
[samba.git] / source3 / smbd / uid.c
index 4f059bdb59894f9efd00ce94e3b9dc2a4f7c786d..f8c55b1b8f8fbe4e6b19c2149a1a28ec9f5410ec 100644 (file)
@@ -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);
                }