[SCM] Samba Shared Repository - branch v3-6-test updated

Volker Lendecke vlendec at samba.org
Thu Mar 10 14:29:40 MST 2011


The branch, v3-6-test has been updated
       via  a13560b s3: sid->domain_sid in winbindd_samr sam_rids_to_names
       via  0ea36b1 Quite some callers of sid_split_rid do not care about the rid (cherry picked from commit 16b007c2232cc8432fa9e93409e16367d72b149e)
       via  01c3c04 s3: Fix paranoia check in sam_rids_to_names (cherry picked from commit 8d0e2415309ee15fbf509d44caf3e1df5b900620)
      from  902fb32 frstrans.idl: add idl for RawGetFileDataAsync() and RdcGetFileDataAsync()

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit a13560ba9d373b89c7050a096be058f13ff2b33b
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Mar 10 16:23:20 2011 +0100

    s3: sid->domain_sid in winbindd_samr sam_rids_to_names
    
    Autobuild-User: Volker Lendecke <vlendec at samba.org>
    Autobuild-Date: Thu Mar 10 19:33:47 CET 2011 on sn-devel-104
    (cherry picked from commit 257f0491cbcc6d8a7d05520ccb3ffa7dd7c27273)

commit 0ea36b18c1c7503854e4b9576ffb4cc24ef1afb9
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Mar 10 16:19:17 2011 +0100

    Quite some callers of sid_split_rid do not care about the rid
    (cherry picked from commit 16b007c2232cc8432fa9e93409e16367d72b149e)

commit 01c3c044ceae2da194792f6ec140b2af29240678
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Mar 10 16:07:36 2011 +0100

    s3: Fix paranoia check in sam_rids_to_names
    (cherry picked from commit 8d0e2415309ee15fbf509d44caf3e1df5b900620)

-----------------------------------------------------------------------

Summary of changes:
 libcli/security/util_sid.c       |    4 +++-
 source3/auth/token_util.c        |    4 +---
 source3/lib/util_sid.c           |    3 +--
 source3/libads/ldap.c            |    3 +--
 source3/passdb/lookup_sid.c      |    3 +--
 source3/passdb/machine_sid.c     |    3 +--
 source3/passdb/util_builtin.c    |    5 ++---
 source3/passdb/util_unixsids.c   |    6 ++----
 source3/passdb/util_wellknown.c  |    5 ++---
 source3/winbindd/winbindd_samr.c |   18 ++++++++----------
 10 files changed, 22 insertions(+), 32 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/security/util_sid.c b/libcli/security/util_sid.c
index 535e81c..cf1f7f3 100644
--- a/libcli/security/util_sid.c
+++ b/libcli/security/util_sid.c
@@ -167,7 +167,9 @@ bool sid_split_rid(struct dom_sid *sid, uint32_t *rid)
 {
 	if (sid->num_auths > 0) {
 		sid->num_auths--;
-		*rid = sid->sub_auths[sid->num_auths];
+		if (rid != NULL) {
+			*rid = sid->sub_auths[sid->num_auths];
+		}
 		return true;
 	}
 	return false;
diff --git a/source3/auth/token_util.c b/source3/auth/token_util.c
index 4a702ef..3694188 100644
--- a/source3/auth/token_util.c
+++ b/source3/auth/token_util.c
@@ -849,8 +849,6 @@ NTSTATUS create_token_from_username(TALLOC_CTX *mem_ctx, const char *username,
 		 * correct info. AD might prohibit winbind looking up that
 		 * information. */
 
-		uint32 dummy;
-
 		/* We must always assign the *uid. */
 		if (!sid_to_uid(&user_sid, uid)) {
 			DEBUG(1, ("winbindd case, sid_to_uid for %s (%s) failed\n",
@@ -868,7 +866,7 @@ NTSTATUS create_token_from_username(TALLOC_CTX *mem_ctx, const char *username,
 		}
 
 		sid_copy(&group_sids[0], &user_sid);
-		sid_split_rid(&group_sids[0], &dummy);
+		sid_split_rid(&group_sids[0], NULL);
 		sid_append_rid(&group_sids[0], DOMAIN_RID_USERS);
 
 		if (!sid_to_gid(&group_sids[0], gid)) {
diff --git a/source3/lib/util_sid.c b/source3/lib/util_sid.c
index 0a026a1..f6210c1 100644
--- a/source3/lib/util_sid.c
+++ b/source3/lib/util_sid.c
@@ -95,10 +95,9 @@ bool sid_linearize(char *outbuf, size_t len, const struct dom_sid *sid)
 bool non_mappable_sid(struct dom_sid *sid)
 {
 	struct dom_sid dom;
-	uint32 rid;
 
 	sid_copy(&dom, sid);
-	sid_split_rid(&dom, &rid);
+	sid_split_rid(&dom, NULL);
 
 	if (dom_sid_equal(&dom, &global_sid_Builtin))
 		return True;
diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c
index c1af5b5..3ce7a7e 100644
--- a/source3/libads/ldap.c
+++ b/source3/libads/ldap.c
@@ -3644,11 +3644,10 @@ ADS_STATUS ads_leave_realm(ADS_STRUCT *ads, const char *hostname)
 		 * domsid */
 
 		struct dom_sid domsid;
-		uint32 dummy_rid;
 
 		sid_copy(&domsid, &tmp_user_sid);
 
-		if (!sid_split_rid(&domsid, &dummy_rid)) {
+		if (!sid_split_rid(&domsid, NULL)) {
 			ads_msgfree(ads, res);
 			return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
 		}
diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c
index cd5cd7d..c0abea0 100644
--- a/source3/passdb/lookup_sid.c
+++ b/source3/passdb/lookup_sid.c
@@ -259,7 +259,6 @@ bool lookup_name(TALLOC_CTX *mem_ctx,
 
 	if (IS_DC && winbind_lookup_name("", name, &sid, &type)) {
 		struct dom_sid dom_sid;
-		uint32 tmp_rid;
 		enum lsa_SidType domain_type;
 		
 		if (type == SID_NAME_DOMAIN) {
@@ -273,7 +272,7 @@ bool lookup_name(TALLOC_CTX *mem_ctx,
 		 * domain it figured out itself. Maybe fix that later... */
 
 		sid_copy(&dom_sid, &sid);
-		sid_split_rid(&dom_sid, &tmp_rid);
+		sid_split_rid(&dom_sid, NULL);
 
 		if (!winbind_lookup_sid(tmp_ctx, &dom_sid, &domain, NULL,
 					&domain_type) ||
diff --git a/source3/passdb/machine_sid.c b/source3/passdb/machine_sid.c
index 4de51b8..977cd20 100644
--- a/source3/passdb/machine_sid.c
+++ b/source3/passdb/machine_sid.c
@@ -243,9 +243,8 @@ bool sid_check_is_domain(const struct dom_sid *sid)
 bool sid_check_is_in_our_domain(const struct dom_sid *sid)
 {
 	struct dom_sid dom_sid;
-	uint32 rid;
 
 	sid_copy(&dom_sid, sid);
-	sid_split_rid(&dom_sid, &rid);
+	sid_split_rid(&dom_sid, NULL);
 	return sid_check_is_domain(&dom_sid);
 }
diff --git a/source3/passdb/util_builtin.c b/source3/passdb/util_builtin.c
index a2cbbc7..9cd6780 100644
--- a/source3/passdb/util_builtin.c
+++ b/source3/passdb/util_builtin.c
@@ -115,11 +115,10 @@ bool sid_check_is_builtin(const struct dom_sid *sid)
 bool sid_check_is_in_builtin(const struct dom_sid *sid)
 {
 	struct dom_sid dom_sid;
-	uint32 rid;
 
 	sid_copy(&dom_sid, sid);
-	sid_split_rid(&dom_sid, &rid);
-	
+	sid_split_rid(&dom_sid, NULL);
+
 	return sid_check_is_builtin(&dom_sid);
 }
 
diff --git a/source3/passdb/util_unixsids.c b/source3/passdb/util_unixsids.c
index 1f830b3..00cab22 100644
--- a/source3/passdb/util_unixsids.c
+++ b/source3/passdb/util_unixsids.c
@@ -28,10 +28,9 @@ bool sid_check_is_unix_users(const struct dom_sid *sid)
 bool sid_check_is_in_unix_users(const struct dom_sid *sid)
 {
 	struct dom_sid dom_sid;
-	uint32 rid;
 
 	sid_copy(&dom_sid, sid);
-	sid_split_rid(&dom_sid, &rid);
+	sid_split_rid(&dom_sid, NULL);
 
 	return sid_check_is_unix_users(&dom_sid);
 }
@@ -86,10 +85,9 @@ bool sid_check_is_unix_groups(const struct dom_sid *sid)
 bool sid_check_is_in_unix_groups(const struct dom_sid *sid)
 {
 	struct dom_sid dom_sid;
-	uint32 rid;
 
 	sid_copy(&dom_sid, sid);
-	sid_split_rid(&dom_sid, &rid);
+	sid_split_rid(&dom_sid, NULL);
 
 	return sid_check_is_unix_groups(&dom_sid);
 }
diff --git a/source3/passdb/util_wellknown.c b/source3/passdb/util_wellknown.c
index 5ca26db..2d83ebe 100644
--- a/source3/passdb/util_wellknown.c
+++ b/source3/passdb/util_wellknown.c
@@ -89,11 +89,10 @@ bool sid_check_is_wellknown_domain(const struct dom_sid *sid, const char **name)
 bool sid_check_is_in_wellknown_domain(const struct dom_sid *sid)
 {
 	struct dom_sid dom_sid;
-	uint32 rid;
 
 	sid_copy(&dom_sid, sid);
-	sid_split_rid(&dom_sid, &rid);
-	
+	sid_split_rid(&dom_sid, NULL);
+
 	return sid_check_is_wellknown_domain(&dom_sid, NULL);
 }
 
diff --git a/source3/winbindd/winbindd_samr.c b/source3/winbindd/winbindd_samr.c
index d33a309..887f5ac 100644
--- a/source3/winbindd/winbindd_samr.c
+++ b/source3/winbindd/winbindd_samr.c
@@ -751,7 +751,7 @@ done:
 
 static NTSTATUS sam_rids_to_names(struct winbindd_domain *domain,
 				  TALLOC_CTX *mem_ctx,
-				  const struct dom_sid *sid,
+				  const struct dom_sid *domain_sid,
 				  uint32 *rids,
 				  size_t num_rids,
 				  char **pdomain_name,
@@ -772,15 +772,13 @@ static NTSTATUS sam_rids_to_names(struct winbindd_domain *domain,
 	ZERO_STRUCT(lsa_policy);
 
 	/* Paranoia check */
-	if (!sid_check_is_in_builtin(sid) &&
-	    !sid_check_is_in_our_domain(sid) &&
-	    !sid_check_is_in_unix_users(sid) &&
-	    !sid_check_is_unix_users(sid) &&
-	    !sid_check_is_in_unix_groups(sid) &&
-	    !sid_check_is_unix_groups(sid) &&
-	    !sid_check_is_in_wellknown_domain(sid)) {
+	if (!sid_check_is_builtin(domain_sid) &&
+	    !sid_check_is_domain(domain_sid) &&
+	    !sid_check_is_unix_users(domain_sid) &&
+	    !sid_check_is_unix_groups(domain_sid) &&
+	    !sid_check_is_in_wellknown_domain(domain_sid)) {
 		DEBUG(0, ("sam_rids_to_names: possible deadlock - trying to "
-			  "lookup SID %s\n", sid_string_dbg(sid)));
+			  "lookup SID %s\n", sid_string_dbg(domain_sid)));
 		return NT_STATUS_NONE_MAPPED;
 	}
 
@@ -800,7 +798,7 @@ static NTSTATUS sam_rids_to_names(struct winbindd_domain *domain,
 				   lsa_pipe,
 				   &lsa_policy,
 				   domain,
-				   sid,
+				   domain_sid,
 				   rids,
 				   num_rids,
 				   &domain_name,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list