svn commit: samba r1871 - branches/SAMBA_3_0/source/passdb

jra at samba.org jra at samba.org
Tue Aug 17 20:11:52 GMT 2004


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

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

Log:
Patch from Luke Howard <lukeh at PADL.COM> to correctly use 
uid_to_sid() and gid_to_sid() in pdb_set_sam_sids().
Jeremy.

Modified:
   branches/SAMBA_3_0/source/passdb/passdb.c


Changeset:
Modified: branches/SAMBA_3_0/source/passdb/passdb.c
===================================================================
--- branches/SAMBA_3_0/source/passdb/passdb.c	2004-08-17 20:11:47 UTC (rev 1870)
+++ branches/SAMBA_3_0/source/passdb/passdb.c	2004-08-17 20:11:52 UTC (rev 1871)
@@ -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;
 		}
 	}



More information about the samba-cvs mailing list