Author: jra
Date: 2004-08-17 20:11:47 +0000 (Tue, 17 Aug 2004)
New Revision: 1870

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/&rev=1870&nolog=1

Log:
Patch from Luke Howard <[EMAIL PROTECTED]> to correctly use
uid_to_sid() and gid_to_sid() in pdb_set_sam_sids().
Jeremy.

Modified:
   trunk/source/passdb/passdb.c


Changeset:
Modified: trunk/source/passdb/passdb.c
===================================================================
--- trunk/source/passdb/passdb.c        2004-08-17 19:59:22 UTC (rev 1869)
+++ trunk/source/passdb/passdb.c        2004-08-17 20:11:47 UTC (rev 1870)
@@ -190,7 +190,9 @@
        const char *guest_account = lp_guestaccount();
        GROUP_MAP map;
        BOOL ret;
-       
+       DOM_SID user_sid;
+       DOM_SID group_sid;
+
        if (!account_data || !pwd) {
                return NT_STATUS_INVALID_PARAMETER;
        }
@@ -198,7 +200,7 @@
        /* this is a hack this thing should not be set
           this way --SSS */
        if (!(guest_account && *guest_account)) {
-               DEBUG(1, ("NULL guest account!?!?\n"));
+               DEBUG(1, ("pdb_set_sam_sids: NULL guest account!?!?\n"));
                return NT_STATUS_UNSUCCESSFUL;
        } else {
                /* Ensure this *must* be set right */
@@ -213,8 +215,13 @@
                }
        }
 
-       if (!pdb_set_user_sid_from_rid(account_data, 
algorithmic_pdb_uid_to_user_rid(pwd->pw_uid), PDB_SET)) {
-               DEBUG(0,("Can't set User SID from RID!\n"));
+       if (NT_STATUS_IS_OK(uid_to_sid(&user_sid, pwd->pw_uid))) {
+               if (!pdb_set_user_sid(account_data, &user_sid, PDB_SET)) {
+                       DEBUG(0,("pdb_set_sam_sids: Can't set User SID from mapped 
UID\n"));
+                       return NT_STATUS_INVALID_PARAMETER;
+               }
+       } else if (!pdb_set_user_sid_from_rid(account_data, 
algorithmic_pdb_uid_to_user_rid(pwd->pw_uid), PDB_SET)) {
+               DEBUG(0,("pdb_set_sam_sids: Can't set User SID from RID!\n"));
                return NT_STATUS_INVALID_PARAMETER;
        }
        
@@ -225,13 +232,18 @@
        
        if( ret ) {
                if (!pdb_set_group_sid(account_data, &map.sid, PDB_SET)){
-                       DEBUG(0,("Can't set Group SID!\n"));
+                       DEBUG(0,("pdb_set_sam_sids: Can't set Group SID!\n"));
                        return NT_STATUS_INVALID_PARAMETER;
                }
        } 
        else {
-               if (!pdb_set_group_sid_from_rid(account_data, 
pdb_gid_to_group_rid(pwd->pw_gid), PDB_SET)) {
-                       DEBUG(0,("Can't set Group SID\n"));
+               if (NT_STATUS_IS_OK(gid_to_sid(&group_sid, pwd->pw_gid))) {
+                       if (!pdb_set_group_sid(account_data, &group_sid, PDB_SET)) {
+                               DEBUG(0,("pdb_set_sam_sids: Can't set Group SID from 
mapped GID\n"));
+                               return NT_STATUS_INVALID_PARAMETER;
+                       }
+               } else if (!pdb_set_group_sid_from_rid(account_data, 
pdb_gid_to_group_rid(pwd->pw_gid), PDB_SET)) {
+                       DEBUG(0,("pdb_set_sam_sids: Can't set Group SID\n"));
                        return NT_STATUS_INVALID_PARAMETER;
                }
        }

Reply via email to