[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2015-g593768c

Günther Deschner gd at samba.org
Fri Feb 8 14:31:58 GMT 2008


The branch, v3-2-test has been updated
       via  593768c3e98d1ac34e6f9a8b3969662e9be3b707 (commit)
       via  38b635153466c160621a5444d37154369245809a (commit)
       via  a513ae630c9dc0b81215e5513c19f45f18cbc1f1 (commit)
       via  e62bfd2deea81f188cd4b5274218c3df64782aa7 (commit)
       via  64d11fad9b1e15edcd06a5cea52f99dfd9b5de78 (commit)
      from  ae9d386bcc9d5e0987ed4d6a209830438c280974 (commit)

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


- Log -----------------------------------------------------------------
commit 593768c3e98d1ac34e6f9a8b3969662e9be3b707
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 14:52:10 2008 +0100

    Remove unused marshalling for SAMR_LOOKUP_NAMES.
    
    Guenther

commit 38b635153466c160621a5444d37154369245809a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 14:50:04 2008 +0100

    Use rpccli_samr_LookupNames() in net rpc.
    
    Guenther

commit a513ae630c9dc0b81215e5513c19f45f18cbc1f1
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 14:49:30 2008 +0100

    Use rpccli_samr_LookupNames() in net.
    
    Guenther

commit e62bfd2deea81f188cd4b5274218c3df64782aa7
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 14:48:55 2008 +0100

    Use rpccli_samr_LookupNames() in libnetjoin.
    
    Guenther

commit 64d11fad9b1e15edcd06a5cea52f99dfd9b5de78
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 14:48:16 2008 +0100

    Use rpccli_samr_LookupNames() in rpcclient.
    
    Guenther

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

Summary of changes:
 source/include/rpc_samr.h     |   39 ------
 source/libnet/libnet_join.c   |   44 ++++---
 source/rpc_client/cli_samr.c  |   62 ----------
 source/rpc_parse/parse_samr.c |  229 ------------------------------------
 source/rpcclient/cmd_samr.c   |   97 +++++++++------
 source/utils/net_domain.c     |   45 ++++---
 source/utils/net_rpc.c        |  259 +++++++++++++++++++++++------------------
 source/utils/net_rpc_join.c   |   25 ++--
 8 files changed, 267 insertions(+), 533 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h
index 086f61e..7321495 100644
--- a/source/include/rpc_samr.h
+++ b/source/include/rpc_samr.h
@@ -689,45 +689,6 @@ typedef struct r_samr_query_user_info
 
 
 /****************************************************************************
-SAMR_Q_LOOKUP_NAMES - do a conversion from Names to RIDs+types.
-*****************************************************************************/
-/* SAMR_Q_LOOKUP_NAMES */
-typedef struct q_samr_lookup_names_info
-{
-	POLICY_HND pol;       /* policy handle */
-
-	uint32 num_names1;      /* number of names being looked up */
-	uint32 flags;           /* 0x0000 03e8 - unknown */
-	uint32 ptr;            /* 0x0000 0000 - 32 bit unknown */
-	uint32 num_names2;      /* number of names being looked up */
-
-	UNIHDR  *hdr_name; /* unicode account name header */
-	UNISTR2 *uni_name; /* unicode account name string */
-
-} SAMR_Q_LOOKUP_NAMES;
-
-
-/* SAMR_R_LOOKUP_NAMES */
-typedef struct r_samr_lookup_names_info
-{
-	uint32 num_rids1;      /* number of aliases being looked up */
-	uint32 ptr_rids;       /* pointer to aliases */
-	uint32 num_rids2;      /* number of aliases being looked up */
-
-	uint32 *rids; /* rids */
-
-	uint32 num_types1;      /* number of users in aliases being looked up */
-	uint32 ptr_types;       /* pointer to users in aliases */
-	uint32 num_types2;      /* number of users in aliases being looked up */
-
-	uint32 *types; /* SID_ENUM type */
-
-	NTSTATUS status; /* return code */
-
-} SAMR_R_LOOKUP_NAMES;
-
-
-/****************************************************************************
 SAMR_Q_LOOKUP_RIDS - do a conversion from RID groups to something.
 
 called to resolve domain RID groups.
diff --git a/source/libnet/libnet_join.c b/source/libnet/libnet_join.c
index 07d4960..6d9cc1f 100644
--- a/source/libnet/libnet_join.c
+++ b/source/libnet/libnet_join.c
@@ -595,11 +595,8 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 	POLICY_HND sam_pol, domain_pol, user_pol, lsa_pol;
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	char *acct_name;
-	const char *const_acct_name;
 	struct lsa_String lsa_acct_name;
 	uint32 user_rid;
-	uint32 num_rids, *name_types, *user_rids;
-	uint32 flags = 0x3e8;
 	uint32 acb_info = ACB_WSTRUST;
 	uint32 fields_present;
 	uchar pwbuf[532];
@@ -611,6 +608,8 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 	DATA_BLOB digested_session_key;
 	uchar md4_trust_password[16];
 	union lsa_PolicyInformation *info = NULL;
+	struct samr_Ids user_rids;
+	struct samr_Ids name_types;
 
 	if (!r->in.machine_password) {
 		r->in.machine_password = talloc_strdup(mem_ctx, generate_random_str(DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH));
@@ -693,7 +692,6 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 
 	acct_name = talloc_asprintf(mem_ctx, "%s$", r->in.machine_name);
 	strlower_m(acct_name);
-	const_acct_name = acct_name;
 
 	init_lsa_String(&lsa_acct_name, acct_name);
 
@@ -726,20 +724,22 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
 		}
 	}
 
-	status = rpccli_samr_lookup_names(pipe_hnd, mem_ctx,
-					  &domain_pol, flags, 1,
-					  &const_acct_name,
-					  &num_rids, &user_rids, &name_types);
+	status = rpccli_samr_LookupNames(pipe_hnd, mem_ctx,
+					 &domain_pol,
+					 1,
+					 &lsa_acct_name,
+					 &user_rids,
+					 &name_types);
 	if (!NT_STATUS_IS_OK(status)) {
 		goto done;
 	}
 
-	if (name_types[0] != SID_NAME_USER) {
+	if (name_types.ids[0] != SID_NAME_USER) {
 		status = NT_STATUS_INVALID_WORKSTATION;
 		goto done;
 	}
 
-	user_rid = user_rids[0];
+	user_rid = user_rids.ids[0];
 
 	status = rpccli_samr_OpenUser(pipe_hnd, mem_ctx,
 				      &domain_pol,
@@ -829,12 +829,12 @@ static NTSTATUS libnet_join_unjoindomain_rpc(TALLOC_CTX *mem_ctx,
 	POLICY_HND sam_pol, domain_pol, user_pol;
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	char *acct_name;
-	uint32 flags = 0x3e8;
-	const char *const_acct_name;
 	uint32 user_rid;
-	uint32 num_rids, *name_types, *user_rids;
 	SAM_USERINFO_CTR ctr, *qctr = NULL;
 	SAM_USER_INFO_16 p16;
+	struct lsa_String lsa_acct_name;
+	struct samr_Ids user_rids;
+	struct samr_Ids name_types;
 
 	status = cli_full_connection(&cli, NULL,
 				     r->in.dc_name,
@@ -873,22 +873,26 @@ static NTSTATUS libnet_join_unjoindomain_rpc(TALLOC_CTX *mem_ctx,
 
 	acct_name = talloc_asprintf(mem_ctx, "%s$", r->in.machine_name);
 	strlower_m(acct_name);
-	const_acct_name = acct_name;
 
-	status = rpccli_samr_lookup_names(pipe_hnd, mem_ctx,
-					  &domain_pol, flags, 1,
-					  &const_acct_name,
-					  &num_rids, &user_rids, &name_types);
+	init_lsa_String(&lsa_acct_name, acct_name);
+
+	status = rpccli_samr_LookupNames(pipe_hnd, mem_ctx,
+					 &domain_pol,
+					 1,
+					 &lsa_acct_name,
+					 &user_rids,
+					 &name_types);
+
 	if (!NT_STATUS_IS_OK(status)) {
 		goto done;
 	}
 
-	if (name_types[0] != SID_NAME_USER) {
+	if (name_types.ids[0] != SID_NAME_USER) {
 		status = NT_STATUS_INVALID_WORKSTATION;
 		goto done;
 	}
 
-	user_rid = user_rids[0];
+	user_rid = user_rids.ids[0];
 
 	status = rpccli_samr_OpenUser(pipe_hnd, mem_ctx,
 				      &domain_pol,
diff --git a/source/rpc_client/cli_samr.c b/source/rpc_client/cli_samr.c
index ea25ddf..54bfafe 100644
--- a/source/rpc_client/cli_samr.c
+++ b/source/rpc_client/cli_samr.c
@@ -586,68 +586,6 @@ NTSTATUS rpccli_samr_lookup_rids(struct rpc_pipe_client *cli,
 	return result;
 }
 
-/* Lookup names */
-
-NTSTATUS rpccli_samr_lookup_names(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 
-                               POLICY_HND *domain_pol, uint32 flags,
-                               uint32 num_names, const char **names,
-                               uint32 *num_rids, uint32 **rids,
-                               uint32 **rid_types)
-{
-	prs_struct qbuf, rbuf;
-	SAMR_Q_LOOKUP_NAMES q;
-	SAMR_R_LOOKUP_NAMES r;
-	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-	uint32 i;
-
-	DEBUG(10,("cli_samr_lookup_names\n"));
-
-	ZERO_STRUCT(q);
-	ZERO_STRUCT(r);
-
-	/* Marshall data and send request */
-
-	init_samr_q_lookup_names(mem_ctx, &q, domain_pol, flags,
-				 num_names, names);
-
-	CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_LOOKUP_NAMES,
-		q, r,
-		qbuf, rbuf,
-		samr_io_q_lookup_names,
-		samr_io_r_lookup_names,
-		NT_STATUS_UNSUCCESSFUL); 
-
-	/* Return output parameters */
-
-	if (!NT_STATUS_IS_OK(result = r.status)) {
-		goto done;
-	}
-
-	if (r.num_rids1 == 0) {
-		*num_rids = 0;
-		goto done;
-	}
-
-	*num_rids = r.num_rids1;
-	*rids = TALLOC_ARRAY(mem_ctx, uint32, r.num_rids1);
-	*rid_types = TALLOC_ARRAY(mem_ctx, uint32, r.num_rids1);
-
-	if ((*rids == NULL) || (*rid_types == NULL)) {
-		TALLOC_FREE(*rids);
-		TALLOC_FREE(*rid_types);
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	for (i = 0; i < r.num_rids1; i++) {
-		(*rids)[i] = r.rids[i];
-		(*rid_types)[i] = r.types[i];
-	}
-
- done:
-
-	return result;
-}
-
 /* Set userinfo */
 
 NTSTATUS rpccli_samr_set_userinfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 
diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c
index 09804f1..80f9498 100644
--- a/source/rpc_parse/parse_samr.c
+++ b/source/rpc_parse/parse_samr.c
@@ -1257,235 +1257,6 @@ bool samr_io_r_lookup_rids(const char *desc, SAMR_R_LOOKUP_RIDS * r_u,
 }
 
 /*******************************************************************
-inits a SAMR_Q_LOOKUP_NAMES structure.
-********************************************************************/
-
-NTSTATUS init_samr_q_lookup_names(TALLOC_CTX *ctx, SAMR_Q_LOOKUP_NAMES * q_u,
-			      POLICY_HND *pol, uint32 flags,
-			      uint32 num_names, const char **name)
-{
-	uint32 i;
-
-	DEBUG(5, ("init_samr_q_lookup_names\n"));
-
-	q_u->pol = *pol;
-
-	q_u->num_names1 = num_names;
-	q_u->flags = flags;
-	q_u->ptr = 0;
-	q_u->num_names2 = num_names;
-
-	if (num_names) {
-		if (!(q_u->hdr_name = TALLOC_ZERO_ARRAY(ctx, UNIHDR, num_names)))
-			return NT_STATUS_NO_MEMORY;
-
-		if (!(q_u->uni_name = TALLOC_ZERO_ARRAY(ctx, UNISTR2, num_names)))
-			return NT_STATUS_NO_MEMORY;
-	} else {
-		q_u->hdr_name = NULL;
-		q_u->uni_name = NULL;
-	}
-
-	for (i = 0; i < num_names; i++) {
-		init_unistr2(&q_u->uni_name[i], name[i], UNI_FLAGS_NONE);	/* unicode string for machine account */
-		init_uni_hdr(&q_u->hdr_name[i], &q_u->uni_name[i]);	/* unicode header for user_name */
-	}
-
-	return NT_STATUS_OK;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-bool samr_io_q_lookup_names(const char *desc, SAMR_Q_LOOKUP_NAMES * q_u,
-			    prs_struct *ps, int depth)
-{
-	uint32 i;
-
-	if (q_u == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "samr_io_q_lookup_names");
-	depth++;
-
-	if (UNMARSHALLING(ps))
-		ZERO_STRUCTP(q_u);
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!smb_io_pol_hnd("pol", &q_u->pol, ps, depth))
-		return False;
-
-	if(!prs_uint32("num_names1", ps, depth, &q_u->num_names1))
-		return False;
-	if(!prs_uint32("flags     ", ps, depth, &q_u->flags))
-		return False;
-	if(!prs_uint32("ptr       ", ps, depth, &q_u->ptr))
-		return False;
-	if(!prs_uint32("num_names2", ps, depth, &q_u->num_names2))
-		return False;
-
-	if (UNMARSHALLING(ps) && (q_u->num_names2 != 0)) {
-		q_u->hdr_name = PRS_ALLOC_MEM(ps, UNIHDR, q_u->num_names2);
-		q_u->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, q_u->num_names2);
-		if (!q_u->hdr_name || !q_u->uni_name)
-			return False;
-	}
-
-	for (i = 0; i < q_u->num_names2; i++) {
-		if(!smb_io_unihdr("", &q_u->hdr_name[i], ps, depth))
-			return False;
-	}
-
-	for (i = 0; i < q_u->num_names2; i++) {
-		if(!smb_io_unistr2("", &q_u->uni_name[i], q_u->hdr_name[i].buffer, ps, depth))
-			return False;
-	}
-
-	return True;
-}
-
-/*******************************************************************
-inits a SAMR_R_LOOKUP_NAMES structure.
-********************************************************************/
-
-NTSTATUS init_samr_r_lookup_names(TALLOC_CTX *ctx, SAMR_R_LOOKUP_NAMES * r_u,
-			      uint32 num_rids,
-			      uint32 *rid, enum lsa_SidType *type,
-			      NTSTATUS status)
-{
-	DEBUG(5, ("init_samr_r_lookup_names\n"));
-
-	if (NT_STATUS_IS_OK(status) && (num_rids != 0))	{
-		uint32 i;
-
-		r_u->num_types1 = num_rids;
-		r_u->ptr_types = 1;
-		r_u->num_types2 = num_rids;
-
-		r_u->num_rids1 = num_rids;
-		r_u->ptr_rids = 1;
-		r_u->num_rids2 = num_rids;
-
-		if (!(r_u->rids = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids)))
-			return NT_STATUS_NO_MEMORY;
-		if (!(r_u->types = TALLOC_ZERO_ARRAY(ctx, uint32, num_rids)))
-			return NT_STATUS_NO_MEMORY;
-
-		for (i = 0; i < num_rids; i++) {
-			r_u->rids[i] = rid[i];
-			r_u->types[i] = type[i];
-		}
-	} else {
-
-		r_u->num_types1 = 0;
-		r_u->ptr_types = 0;
-		r_u->num_types2 = 0;
-
-		r_u->num_rids1 = 0;
-		r_u->ptr_rids = 0;
-		r_u->num_rids2 = 0;
-
-		r_u->rids = NULL;
-		r_u->types = NULL;
-	}
-
-	r_u->status = status;
-
-	return NT_STATUS_OK;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-bool samr_io_r_lookup_names(const char *desc, SAMR_R_LOOKUP_NAMES * r_u,
-			    prs_struct *ps, int depth)
-{
-	uint32 i;
-	fstring tmp;
-
-	if (r_u == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "samr_io_r_lookup_names");
-	depth++;
-
-	if (UNMARSHALLING(ps))
-		ZERO_STRUCTP(r_u);
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("num_rids1", ps, depth, &r_u->num_rids1))
-		return False;
-	if(!prs_uint32("ptr_rids ", ps, depth, &r_u->ptr_rids))
-		return False;
-
-	if (r_u->ptr_rids != 0)	{
-		if(!prs_uint32("num_rids2", ps, depth, &r_u->num_rids2))
-			return False;
-
-		if (r_u->num_rids2 != r_u->num_rids1) {
-			/* RPC fault */
-			return False;
-		}
-
-		if (UNMARSHALLING(ps) && r_u->num_rids2) {
-			r_u->rids = PRS_ALLOC_MEM(ps, uint32, r_u->num_rids2);
-
-			if (!r_u->rids) {
-				DEBUG(0, ("NULL rids in samr_io_r_lookup_names\n"));
-				return False;
-			}
-		}
-
-		for (i = 0; i < r_u->num_rids2; i++) {
-			slprintf(tmp, sizeof(tmp) - 1, "rid[%02d]  ", i);
-			if(!prs_uint32(tmp, ps, depth, &r_u->rids[i]))
-				return False;
-		}
-	}
-
-	if(!prs_uint32("num_types1", ps, depth, &r_u->num_types1))
-		return False;
-	if(!prs_uint32("ptr_types ", ps, depth, &r_u->ptr_types))
-		return False;
-
-	if (r_u->ptr_types != 0) {
-		if(!prs_uint32("num_types2", ps, depth, &r_u->num_types2))
-			return False;
-
-		if (r_u->num_types2 != r_u->num_types1) {
-			/* RPC fault */
-			return False;
-		}
-
-		if (UNMARSHALLING(ps) && r_u->num_types2) {
-			r_u->types = PRS_ALLOC_MEM(ps, uint32, r_u->num_types2);
-
-			if (!r_u->types) {
-				DEBUG(0, ("NULL types in samr_io_r_lookup_names\n"));
-				return False;
-			}
-		}
-
-		for (i = 0; i < r_u->num_types2; i++) {
-			slprintf(tmp, sizeof(tmp) - 1, "type[%02d]  ", i);
-			if(!prs_uint32(tmp, ps, depth, &r_u->types[i]))
-				return False;
-		}
-	}
-
-	if(!prs_ntstatus("status", ps, depth, &r_u->status))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
 inits a SAMR_Q_QUERY_USERINFO structure.
 ********************************************************************/
 
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index f36e633..bec7227 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -359,19 +359,23 @@ static NTSTATUS cmd_samr_query_user(struct rpc_pipe_client *cli,
 	    (user_rid == 0)) {
 
 		/* Probably this was a user name, try lookupnames */
-		uint32 num_rids;
-		uint32 *rids, *types;
+		struct samr_Ids rids, types;
+		struct lsa_String lsa_acct_name;
 
-		result = rpccli_samr_lookup_names(cli, mem_ctx, &domain_pol,
-						  1000, 1, &argv[1],
-						  &num_rids, &rids,
-						  &types);
+		init_lsa_String(&lsa_acct_name, argv[1]);
+
+		result = rpccli_samr_LookupNames(cli, mem_ctx,
+						 &domain_pol,
+						 1,
+						 &lsa_acct_name,
+						 &rids,
+						 &types);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list