fix bug #208; have to get the gid of the user's primary group for %G
authorGerald Carter <jerry@samba.org>
Wed, 6 Aug 2003 19:16:17 +0000 (19:16 +0000)
committerGerald Carter <jerry@samba.org>
Wed, 6 Aug 2003 19:16:17 +0000 (19:16 +0000)
(This used to be commit 575483a1efe18a90055490117ba6894512ae568a)

source3/passdb/passdb.c
source3/passdb/pdb_ldap.c

index 8871cd7832dd67382f59b9ceb1188bb85a18640b..e005913eb27add4bc2b84c148759b96bbd6c375c 100644 (file)
@@ -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);
        }
index aee6495759308a362026277c5ef6794c9bd6b3e4..d458267b08b6a9f50ccc55fcda41e1d7ce869b00 100644 (file)
@@ -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);