summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2007-02-16 15:13:57 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:18:01 -0500
commit637b01b63d799af5b66cd6d62f56b2f0b00c935f (patch)
treea2656c24aa376fbdb95a822c6e010183589abd42
parent4003edf0df14b69fca0d1af923badbd682c0008c (diff)
downloadsamba-637b01b63d799af5b66cd6d62f56b2f0b00c935f.tar.gz
samba-637b01b63d799af5b66cd6d62f56b2f0b00c935f.tar.bz2
samba-637b01b63d799af5b66cd6d62f56b2f0b00c935f.zip
r21387: Another important fix for non-AD domains:
Avoid assigning 0 as primary group id for users in NSS calls. Jerry, please check. Guenther (This used to be commit 03f5f7d0140c99411c137e7e2eac7e2d0c08202e)
-rw-r--r--source3/nsswitch/winbindd_rpc.c2
-rw-r--r--source3/nsswitch/winbindd_user.c8
2 files changed, 3 insertions, 7 deletions
diff --git a/source3/nsswitch/winbindd_rpc.c b/source3/nsswitch/winbindd_rpc.c
index c3d7066098..11d9fe0dbb 100644
--- a/source3/nsswitch/winbindd_rpc.c
+++ b/source3/nsswitch/winbindd_rpc.c
@@ -416,6 +416,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
user_info->homedir = NULL;
user_info->shell = NULL;
+ user_info->primary_gid = (gid_t)-1;
SAFE_FREE(user);
@@ -454,6 +455,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
&ctr->info.id21->uni_full_name);
user_info->homedir = NULL;
user_info->shell = NULL;
+ user_info->primary_gid = (gid_t)-1;
return NT_STATUS_OK;
}
diff --git a/source3/nsswitch/winbindd_user.c b/source3/nsswitch/winbindd_user.c
index aa9ece7d89..9df3a6a3bc 100644
--- a/source3/nsswitch/winbindd_user.c
+++ b/source3/nsswitch/winbindd_user.c
@@ -286,6 +286,7 @@ static void getpwsid_sid2gid_recv(void *private_data, BOOL success, gid_t gid)
call worked or not. --jerry */
if ( s->gid == (gid_t)-1 ) {
+
if (!success) {
DEBUG(5, ("Could not query user's %s\\%s\n gid",
s->domain->name, s->username));
@@ -296,13 +297,6 @@ static void getpwsid_sid2gid_recv(void *private_data, BOOL success, gid_t gid)
s->gid = gid;
}
- /* allow the nss backend to override the primary group ID.
- If the gid has already been set, then keep it */
-
- if ( s->gid == (gid_t)-1 ) {
- s->gid = gid;
- }
-
pw = &s->state->response.data.pw;
pw->pw_uid = s->uid;
pw->pw_gid = s->gid;