summaryrefslogtreecommitdiff
path: root/source3/passdb
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2003-08-06 19:16:17 +0000
committerGerald Carter <jerry@samba.org>2003-08-06 19:16:17 +0000
commit44e6c30f711fe227dad9e77aeb1c2b06d7ce5993 (patch)
tree2c36ab7d7b326e40045ee32de36d1978c43bdb42 /source3/passdb
parentdf2337692aea7d5ee9a6898434ad94a1ca646e8c (diff)
downloadsamba-44e6c30f711fe227dad9e77aeb1c2b06d7ce5993.tar.gz
samba-44e6c30f711fe227dad9e77aeb1c2b06d7ce5993.tar.bz2
samba-44e6c30f711fe227dad9e77aeb1c2b06d7ce5993.zip
fix bug #208; have to get the gid of the user's primary group for %G
(This used to be commit 575483a1efe18a90055490117ba6894512ae568a)
Diffstat (limited to 'source3/passdb')
-rw-r--r--source3/passdb/passdb.c7
-rw-r--r--source3/passdb/pdb_ldap.c11
2 files changed, 17 insertions, 1 deletions
diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c
index 8871cd7832..e005913eb2 100644
--- a/source3/passdb/passdb.c
+++ b/source3/passdb/passdb.c
@@ -1300,6 +1300,7 @@ BOOL init_sam_from_buffer(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen)
BOOL ret = True;
uid_t uid = -1;
gid_t gid = -1;
+ struct passwd *pw = NULL;
if(sampass == NULL || buf == NULL) {
DEBUG(0, ("init_sam_from_buffer: NULL parameters found!\n"));
@@ -1355,6 +1356,12 @@ BOOL init_sam_from_buffer(SAM_ACCOUNT *sampass, uint8 *buf, uint32 buflen)
pdb_set_nt_username(sampass, nt_username, PDB_SET);
pdb_set_fullname(sampass, fullname, PDB_SET);
+
+ if ( (pw=Get_Pwnam(username)) != NULL ) {
+ uid = pw->pw_uid;
+ gid = pw->pw_gid;
+ }
+
if (homedir) {
pdb_set_homedir(sampass, homedir, PDB_SET);
}
diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
index aee6495759..d458267b08 100644
--- a/source3/passdb/pdb_ldap.c
+++ b/source3/passdb/pdb_ldap.c
@@ -419,8 +419,9 @@ static BOOL init_sam_from_ldap (struct ldapsam_privates *ldap_state,
uint32 hours_len;
uint8 hours[MAX_HOURS_LEN];
pstring temp;
+ struct passwd *pw = NULL;
uid_t uid = -1;
- gid_t gid = getegid();
+ gid_t gid = -1;
/*
* do a little initialization
@@ -455,6 +456,14 @@ static BOOL init_sam_from_ldap (struct ldapsam_privates *ldap_state,
DEBUG(2, ("Entry found for user: %s\n", username));
+ /* I'm not going to fail here, since there are checks
+ higher up the cal stack to do this --jerry */
+
+ if ( (pw=Get_Pwnam(username)) != NULL ) {
+ uid = pw->pw_uid;
+ gid = pw->pw_gid;
+ }
+
pstrcpy(nt_username, username);
pstrcpy(domain, ldap_state->domain_name);