[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-1970-g03dff01

Günther Deschner gd at samba.org
Thu Feb 7 12:41:51 GMT 2008


The branch, v3-2-test has been updated
       via  03dff0194b917099d0fab78f94075d29b553f3ad (commit)
       via  5bf6c8b6d83708ba2f11e72fc952e932f0db59a6 (commit)
       via  62dacea87ad2323870e5356a348d1d192b3fa888 (commit)
      from  eaba373747e7de5f911b25952ee396ab1bae75d9 (commit)

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


- Log -----------------------------------------------------------------
commit 03dff0194b917099d0fab78f94075d29b553f3ad
Author: Günther Deschner <gd at samba.org>
Date:   Thu Feb 7 13:22:18 2008 +0100

    Remove unused marshalling for SAMR_QUERY_ALIAS_INFO.
    
    Guenther

commit 5bf6c8b6d83708ba2f11e72fc952e932f0db59a6
Author: Günther Deschner <gd at samba.org>
Date:   Thu Feb 7 13:07:07 2008 +0100

    Use rpccli_samr_QueryAliasInfo() in net.
    
    Guenther

commit 62dacea87ad2323870e5356a348d1d192b3fa888
Author: Günther Deschner <gd at samba.org>
Date:   Thu Feb 7 13:14:40 2008 +0100

    Use pidl for _samr_QueryAliasInfo().
    
    Guenther

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

Summary of changes:
 source/include/rpc_samr.h       |   35 -------
 source/rpc_client/cli_samr.c    |   40 -------
 source/rpc_parse/parse_samr.c   |  215 ++------------------------------------
 source/rpc_server/srv_samr.c    |   24 +----
 source/rpc_server/srv_samr_nt.c |   63 ++++++-----
 source/utils/net_rpc.c          |   28 +++---
 6 files changed, 61 insertions(+), 344 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h
index 271ecbf..2b23339 100644
--- a/source/include/rpc_samr.h
+++ b/source/include/rpc_samr.h
@@ -883,41 +883,6 @@ typedef struct r_samr_query_groupinfo_info
 
 
 /********************************************************/
-
-typedef struct {
-	UNISTR4 name;
-	UNISTR4 description;
-	uint32 num_member;
-} ALIAS_INFO1;
-
-typedef struct {
-	UNISTR4 name;
-} ALIAS_INFO2;
-
-typedef struct {
-	UNISTR4 description;
-} ALIAS_INFO3;
-
-typedef struct {
-	POLICY_HND pol;        /* policy handle */
-	uint16 level;    /* 0x0003 seen */
-} SAMR_Q_QUERY_ALIASINFO;
-
-typedef struct {
-	uint16 level;
-	union {
-		ALIAS_INFO1 info1;
-		ALIAS_INFO2 info2;
-		ALIAS_INFO3 info3;
-	} alias;
-} ALIAS_INFO_CTR;
-
-typedef struct {
-	ALIAS_INFO_CTR *ctr;
-	NTSTATUS status;
-} SAMR_R_QUERY_ALIASINFO;
-
-
 /********************************************************/
 
 /* SAMR_Q_QUERY_USERGROUPS - */
diff --git a/source/rpc_client/cli_samr.c b/source/rpc_client/cli_samr.c
index d454f95..19c59f2 100644
--- a/source/rpc_client/cli_samr.c
+++ b/source/rpc_client/cli_samr.c
@@ -366,46 +366,6 @@ NTSTATUS rpccli_samr_enum_als_groups(struct rpc_pipe_client *cli,
 	return result;
 }
 
-/* Query alias info */
-
-NTSTATUS rpccli_samr_query_alias_info(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				   POLICY_HND *alias_pol, uint16 switch_value,
-				   ALIAS_INFO_CTR *ctr)
-{
-	prs_struct qbuf, rbuf;
-	SAMR_Q_QUERY_ALIASINFO q;
-	SAMR_R_QUERY_ALIASINFO r;
-	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
-	DEBUG(10,("cli_samr_query_alias_info\n"));
-
-	ZERO_STRUCT(q);
-	ZERO_STRUCT(r);
-
-	/* Marshall data and send request */
-
-	init_samr_q_query_aliasinfo(&q, alias_pol, switch_value);
-
-	CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_ALIASINFO,
-		q, r,
-		qbuf, rbuf,
-		samr_io_q_query_aliasinfo,
-		samr_io_r_query_aliasinfo,
-		NT_STATUS_UNSUCCESSFUL); 
-
-	/* Return output parameters */
-
-	if (!NT_STATUS_IS_OK(result = r.status)) {
-		goto done;
-	}
-
-	*ctr = *r.ctr;
-
-  done:
-
-	return result;
-}
-
 /* User change password */
 
 NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli,
diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c
index dad35ec..436e284 100644
--- a/source/rpc_parse/parse_samr.c
+++ b/source/rpc_parse/parse_samr.c
@@ -2169,222 +2169,31 @@ bool samr_io_r_enum_dom_aliases(const char *desc, SAMR_R_ENUM_DOM_ALIASES * r_u,
 }
 
 /*******************************************************************
-inits a ALIAS_INFO1 structure.
+ inits a samr_AliasInfoAll structure.
 ********************************************************************/
 
-void init_samr_alias_info1(ALIAS_INFO1 * al1, char *acct_name, uint32 num_member, char *acct_desc)
+void init_samr_alias_info1(struct samr_AliasInfoAll *r,
+			   const char *name,
+			   uint32_t num_members,
+			   const char *description)
 {
 	DEBUG(5, ("init_samr_alias_info1\n"));
 
-	init_unistr4(&al1->name, acct_name, UNI_FLAGS_NONE);
-	al1->num_member = num_member;
-	init_unistr4(&al1->description, acct_desc, UNI_FLAGS_NONE);
+	init_lsa_String(&r->name, name);
+	r->num_members = num_members;
+	init_lsa_String(&r->description, description);
 }
 
 /*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-bool samr_io_alias_info1(const char *desc, ALIAS_INFO1 * al1,
-			 prs_struct *ps, int depth)
-{
-	if (al1 == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "samr_io_alias_info1");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if ( !prs_unistr4_hdr("name", ps, depth, &al1->name) )
-		return False;
-	if ( !prs_uint32("num_member", ps, depth, &al1->num_member) )
-		return False;
-	if ( !prs_unistr4_hdr("description", ps, depth, &al1->description) )
-		return False;
-
-	if ( !prs_unistr4_str("name", ps, depth, &al1->name) )
-		return False;
-	if ( !prs_align(ps) )
-		return False;
-	if ( !prs_unistr4_str("description", ps, depth, &al1->description) )
-		return False;
-	if ( !prs_align(ps) )
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-inits a ALIAS_INFO3 structure.
+inits a lsa_String structure.
 ********************************************************************/
 
-void init_samr_alias_info3(ALIAS_INFO3 * al3, const char *acct_desc)
+void init_samr_alias_info3(struct lsa_String *r,
+			   const char *description)
 {
 	DEBUG(5, ("init_samr_alias_info3\n"));
 
-	init_unistr4(&al3->description, acct_desc, UNI_FLAGS_NONE);
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-bool samr_io_alias_info3(const char *desc, ALIAS_INFO3 *al3,
-			 prs_struct *ps, int depth)
-{
-	if (al3 == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "samr_io_alias_info3");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if (!prs_unistr4("description", ps, depth, &al3->description))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-bool samr_io_alias_info2(const char *desc, ALIAS_INFO2 *al2,
-			 prs_struct *ps, int depth)
-{
-	if (al2 == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "samr_io_alias_info2");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if (!prs_unistr4("name", ps, depth, &al2->name))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-bool samr_alias_info_ctr(const char *desc, prs_struct *ps, int depth, ALIAS_INFO_CTR * ctr)
-{
-	if ( !ctr )
-		return False;
-
-	prs_debug(ps, depth, desc, "samr_alias_info_ctr");
-	depth++;
-
-	if ( !prs_uint16("level", ps, depth, &ctr->level) )
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-	switch (ctr->level) {
-	case 1: 
-		if(!samr_io_alias_info1("alias_info1", &ctr->alias.info1, ps, depth))
-			return False;
-		break;
-	case 2: 
-		if(!samr_io_alias_info2("alias_info2", &ctr->alias.info2, ps, depth))
-			return False;
-		break;
-	case 3: 
-		if(!samr_io_alias_info3("alias_info3", &ctr->alias.info3, ps, depth))
-			return False;
-		break;
-	default:
-		DEBUG(0,("samr_alias_info_ctr: unsupported switch level\n"));
-		break;
-	}
-
-	return True;
-}
-
-/*******************************************************************
-inits a SAMR_Q_QUERY_ALIASINFO structure.
-********************************************************************/
-
-void init_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO * q_e,
-				 POLICY_HND *pol, uint32 switch_level)
-{
-	DEBUG(5, ("init_samr_q_query_aliasinfo\n"));
-
-	q_e->pol = *pol;
-	q_e->level = switch_level;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-bool samr_io_q_query_aliasinfo(const char *desc, SAMR_Q_QUERY_ALIASINFO *in,
-			       prs_struct *ps, int depth)
-{
-	if ( !in )
-		return False;
-
-	prs_debug(ps, depth, desc, "samr_io_q_query_aliasinfo");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if ( !smb_io_pol_hnd("pol", &(in->pol), ps, depth) )
-		return False;
-
-	if ( !prs_uint16("level", ps, depth, &in->level) )
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-inits a SAMR_R_QUERY_ALIASINFO structure.
-********************************************************************/
-
-void init_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO *out,
-				 ALIAS_INFO_CTR * ctr, NTSTATUS status)
-{
-	DEBUG(5, ("init_samr_r_query_aliasinfo\n"));
-
-	out->ctr = ctr;
-	out->status = status;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-
-bool samr_io_r_query_aliasinfo(const char *desc, SAMR_R_QUERY_ALIASINFO *out,
-			       prs_struct *ps, int depth)
-{
-	if ( !out )
-		return False;
-
-	prs_debug(ps, depth, desc, "samr_io_r_query_aliasinfo");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if ( !prs_pointer("alias", ps, depth, (void*)&out->ctr, sizeof(ALIAS_INFO_CTR), (PRS_POINTER_CAST)samr_alias_info_ctr))
-		return False;
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_ntstatus("status", ps, depth, &out->status))
-		return False;
-
-	return True;
+	init_lsa_String(r, description);
 }
 
 /*******************************************************************
diff --git a/source/rpc_server/srv_samr.c b/source/rpc_server/srv_samr.c
index 2fea3c1..70fe85d 100644
--- a/source/rpc_server/srv_samr.c
+++ b/source/rpc_server/srv_samr.c
@@ -230,29 +230,7 @@ static bool api_samr_query_dispinfo(pipes_struct *p)
 
 static bool api_samr_query_aliasinfo(pipes_struct *p)
 {
-	SAMR_Q_QUERY_ALIASINFO q_u;
-	SAMR_R_QUERY_ALIASINFO r_u;
-	prs_struct *data = &p->in_data.data;
-	prs_struct *rdata = &p->out_data.rdata;
-
-	ZERO_STRUCT(q_u);
-	ZERO_STRUCT(r_u);
-
-	/* grab the samr open */
-	if(!samr_io_q_query_aliasinfo("", &q_u, data, 0)) {
-		DEBUG(0,("api_samr_query_aliasinfo: unable to unmarshall SAMR_Q_QUERY_ALIASINFO.\n"));
-		return False;
-	}
-
-	r_u.status = _samr_query_aliasinfo(p, &q_u, &r_u);
-
-	/* store the response in the SMB stream */
-	if(!samr_io_r_query_aliasinfo("", &r_u, rdata, 0)) {
-		DEBUG(0,("api_samr_query_aliasinfo: unable to marshall SAMR_R_QUERY_ALIASINFO.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_samr_call(p, NDR_SAMR_QUERYALIASINFO);
 }
 
 /*******************************************************************
diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c
index 092624d..836ff35 100644
--- a/source/rpc_server/srv_samr_nt.c
+++ b/source/rpc_server/srv_samr_nt.c
@@ -1341,25 +1341,36 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u,
 }
 
 /*******************************************************************
- samr_reply_query_aliasinfo
+ _samr_QueryAliasInfo
  ********************************************************************/
 
-NTSTATUS _samr_query_aliasinfo(pipes_struct *p, SAMR_Q_QUERY_ALIASINFO *q_u, SAMR_R_QUERY_ALIASINFO *r_u)
+NTSTATUS _samr_QueryAliasInfo(pipes_struct *p,
+			      struct samr_QueryAliasInfo *r)
 {
 	DOM_SID   sid;
 	struct acct_info info;
 	uint32    acc_granted;
 	NTSTATUS status;
+	union samr_AliasInfo *alias_info = NULL;
+	const char *alias_name = NULL;
+	const char *alias_description = NULL;
 
-	r_u->status = NT_STATUS_OK;
+	DEBUG(5,("_samr_QueryAliasInfo: %d\n", __LINE__));
 
-	DEBUG(5,("_samr_query_aliasinfo: %d\n", __LINE__));
+	alias_info = TALLOC_ZERO_P(p->mem_ctx, union samr_AliasInfo);
+	if (!alias_info) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	/* find the policy handle.  open a policy on it. */
-	if (!get_lsa_policy_samr_sid(p, &q_u->pol, &sid, &acc_granted, NULL))
+	if (!get_lsa_policy_samr_sid(p, r->in.alias_handle, &sid, &acc_granted, NULL))
 		return NT_STATUS_INVALID_HANDLE;
-	if (!NT_STATUS_IS_OK(r_u->status = access_check_samr_function(acc_granted, SA_RIGHT_ALIAS_LOOKUP_INFO, "_samr_query_aliasinfo"))) {
-		return r_u->status;
+
+	status = access_check_samr_function(acc_granted,
+					    SA_RIGHT_ALIAS_LOOKUP_INFO,
+					    "_samr_QueryAliasInfo");
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
 	}
 
 	become_root();
@@ -1369,26 +1380,30 @@ NTSTATUS _samr_query_aliasinfo(pipes_struct *p, SAMR_Q_QUERY_ALIASINFO *q_u, SAM
 	if ( !NT_STATUS_IS_OK(status))
 		return status;
 
-	if ( !(r_u->ctr = TALLOC_ZERO_P( p->mem_ctx, ALIAS_INFO_CTR )) )
-		return NT_STATUS_NO_MEMORY;
-
+	/* FIXME: info contains fstrings */
+	alias_name = talloc_strdup(r, info.acct_name);
+	alias_description = talloc_strdup(r, info.acct_desc);
 
-	switch (q_u->level ) {
-	case 1:
-		r_u->ctr->level = 1;
-		init_samr_alias_info1(&r_u->ctr->alias.info1, info.acct_name, 1, info.acct_desc);
+	switch (r->in.level) {
+	case ALIASINFOALL:
+		init_samr_alias_info1(&alias_info->all,
+				      alias_name,
+				      1,
+				      alias_description);
 		break;
-	case 3:
-		r_u->ctr->level = 3;
-		init_samr_alias_info3(&r_u->ctr->alias.info3, info.acct_desc);
+	case ALIASINFODESCRIPTION:
+		init_samr_alias_info3(&alias_info->description,
+				      alias_description);
 		break;
 	default:
 		return NT_STATUS_INVALID_INFO_CLASS;
 	}
 
-	DEBUG(5,("_samr_query_aliasinfo: %d\n", __LINE__));
+	*r->out.info = alias_info;
 
-	return r_u->status;
+	DEBUG(5,("_samr_QueryAliasInfo: %d\n", __LINE__));
+
+	return NT_STATUS_OK;
 }
 
 #if 0
@@ -5218,16 +5233,6 @@ NTSTATUS _samr_SetMemberAttributesOfGroup(pipes_struct *p,
 /****************************************************************
 ****************************************************************/
 
-NTSTATUS _samr_QueryAliasInfo(pipes_struct *p,
-			      struct samr_QueryAliasInfo *r)
-{
-	p->rng_fault_state = true;
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/****************************************************************
-****************************************************************/
-
 NTSTATUS _samr_QueryUserInfo(pipes_struct *p,
 			     struct samr_QueryUserInfo *r)
 {
diff --git a/source/utils/net_rpc.c b/source/utils/net_rpc.c
index 560125b..8530767 100644
--- a/source/utils/net_rpc.c
+++ b/source/utils/net_rpc.c
@@ -2700,25 +2700,25 @@ static NTSTATUS rpc_group_list_internals(const DOM_SID *domain_sid,
 						 
 		for (i = 0; i < num_entries; i++) {
 
-			char *description = NULL;
+			const char *description = NULL;
 
 			if (opt_long_list_entries) {
 
 				POLICY_HND alias_pol;
-				ALIAS_INFO_CTR ctr;
+				union samr_AliasInfo *info = NULL;
 
 				if ((NT_STATUS_IS_OK(rpccli_samr_OpenAlias(pipe_hnd, mem_ctx,
 									   &domain_pol,
 									   0x8,
 									   groups[i].rid,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list