[SCM] Samba Shared Repository - branch master updated

Matthias Dieter Wallnöfer mdw at samba.org
Mon May 24 14:19:45 MDT 2010


The branch, master has been updated
       via  189950c... s4:dsdb_enum_group_mem - use "unsigned" counters
       via  4d76c0a... s4:dsdb_lookup_rids - "unsigned" counters fit better than "signed" in this case
       via  9696bba... s4:dsdb_add_user - check the "cn"/"account_name" length (should be >= 1)
      from  2a91b00... Add in support for the NTLMSSP version reply.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 189950ce0615806b20a5536e6621d541044be42d
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Mon May 24 22:01:36 2010 +0200

    s4:dsdb_enum_group_mem - use "unsigned" counters
    
    "size_t" counters aren't really needed here (we don't check data lengths).
    And we save the result in a certain "num_sids" variable which is of type
    "unsigned".

commit 4d76c0aa80e58ce944419bf36c695e7104c73712
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Mon May 24 22:00:54 2010 +0200

    s4:dsdb_lookup_rids - "unsigned" counters fit better than "signed" in this case

commit 9696bba1d7e8e71ca1d186b174dfa13ac418c5c9
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date:   Mon May 24 21:53:34 2010 +0200

    s4:dsdb_add_user - check the "cn"/"account_name" length (should be >= 1)
    
    This needed by the "cn_name_len"-1 accesses.
    
    And use a "size_t"-typed variable for storing it (length specificators should
    always be stored using "size_t" variables).

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

Summary of changes:
 source4/dsdb/common/util_samr.c       |   28 +++++++++++++++++-----------
 source4/rpc_server/samr/dcesrv_samr.c |    8 +++-----
 2 files changed, 20 insertions(+), 16 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/common/util_samr.c b/source4/dsdb/common/util_samr.c
index 42f30e9..6a14f0a 100644
--- a/source4/dsdb/common/util_samr.c
+++ b/source4/dsdb/common/util_samr.c
@@ -42,7 +42,7 @@ NTSTATUS dsdb_add_user(struct ldb_context *ldb,
 	int ret;
 	const char *container, *obj_class=NULL;
 	char *cn_name;
-	int cn_name_len;
+	size_t cn_name_len;
 
 	const char *attrs[] = {
 		"objectSid",
@@ -81,21 +81,26 @@ NTSTATUS dsdb_add_user(struct ldb_context *ldb,
 		return NT_STATUS_USER_EXISTS;
 	}
 
-	msg = ldb_msg_new(tmp_ctx);
-	if (msg == NULL) {
+	cn_name = talloc_strdup(tmp_ctx, account_name);
+	if (!cn_name) {
 		ldb_transaction_cancel(ldb);
 		talloc_free(tmp_ctx);
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	cn_name   = talloc_strdup(tmp_ctx, account_name);
-	if (!cn_name) {
+	cn_name_len = strlen(cn_name);
+	if (cn_name_len < 1) {
 		ldb_transaction_cancel(ldb);
 		talloc_free(tmp_ctx);
-		return NT_STATUS_NO_MEMORY;
+		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	cn_name_len = strlen(cn_name);
+	msg = ldb_msg_new(tmp_ctx);
+	if (msg == NULL) {
+		ldb_transaction_cancel(ldb);
+		talloc_free(tmp_ctx);
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	/* This must be one of these values *only* */
 	if (acct_flags == ACB_NORMAL) {
@@ -405,10 +410,11 @@ NTSTATUS dsdb_enum_group_mem(struct ldb_context *ldb,
 			     TALLOC_CTX *mem_ctx,
 			     struct ldb_dn *dn,
 			     struct dom_sid **members_out,
-			     size_t *pnum_members)
+			     unsigned int *pnum_members)
 {
 	struct ldb_message *msg;
-	int i, ret;
+	unsigned int i;
+	int ret;
 	struct dom_sid *members;
 	struct ldb_message_element *member_el;
 	const char *attrs[] = { "member", NULL };
@@ -471,13 +477,13 @@ NTSTATUS dsdb_enum_group_mem(struct ldb_context *ldb,
 NTSTATUS dsdb_lookup_rids(struct ldb_context *ldb,
 			  TALLOC_CTX *mem_ctx,
 			  const struct dom_sid *domain_sid,
-			  int num_rids,
+			  unsigned int num_rids,
 			  uint32_t *rids,
 			  const char **names,
 			  enum lsa_SidType *lsa_attrs)
 {
 	const char *attrs[] = { "sAMAccountType", "sAMAccountName", NULL };
-	int i, num_mapped;
+	unsigned int i, num_mapped;
 
 	TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
 	NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
diff --git a/source4/rpc_server/samr/dcesrv_samr.c b/source4/rpc_server/samr/dcesrv_samr.c
index 246a2e1..fafa9d6 100644
--- a/source4/rpc_server/samr/dcesrv_samr.c
+++ b/source4/rpc_server/samr/dcesrv_samr.c
@@ -2113,9 +2113,8 @@ static NTSTATUS dcesrv_samr_QueryGroupMember(struct dcesrv_call_state *dce_call,
 	struct dcesrv_handle *h;
 	struct samr_account_state *a_state;
 	struct samr_RidTypeArray *array;
-	size_t i;
+	unsigned int i, num_members;
 	struct dom_sid *members_as_sids;
-	size_t num_members;
 	struct dom_sid *dom_sid;
 
 	DCESRV_PULL_HANDLE(h, r->in.group_handle, SAMR_HANDLE_GROUP);
@@ -2516,9 +2515,8 @@ static NTSTATUS dcesrv_samr_GetMembersInAlias(struct dcesrv_call_state *dce_call
 	struct samr_account_state *a_state;
 	struct samr_domain_state *d_state;
 	struct lsa_SidPtr *sids;
-	size_t i;
+	unsigned int i, num_members;
 	struct dom_sid *members;
-	size_t num_members;
 	NTSTATUS status;
 	DCESRV_PULL_HANDLE(h, r->in.alias_handle, SAMR_HANDLE_ALIAS);
 
@@ -2544,12 +2542,12 @@ static NTSTATUS dcesrv_samr_GetMembersInAlias(struct dcesrv_call_state *dce_call
 		return NT_STATUS_NO_MEMORY;
 
 	for (i=0; i<num_members; i++) {
-
 		sids[i].sid = dom_sid_dup(sids, &members[i]);
 		if (sids[i].sid == NULL) {
 			return NT_STATUS_NO_MEMORY;
 		}
 	}
+
 	r->out.sids->num_sids = num_members;
 	r->out.sids->sids = sids;
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list