[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2036-gcf3a76b

Günther Deschner gd at samba.org
Fri Feb 8 21:57:11 GMT 2008


The branch, v3-2-test has been updated
       via  cf3a76bf19bfeb35800e0fc31e90dc4ea5c0ff85 (commit)
       via  aaf662a724f1bae5333666caf8b2fbe908f13992 (commit)
       via  5af6bf31d515c18b0b53237bf78f6c65c2606ca5 (commit)
       via  ac21838d74fa51a73c93272a2be8fac0bc492b49 (commit)
      from  ddefdc5bd70620dcb94660ba5d55520e136d8d0f (commit)

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


- Log -----------------------------------------------------------------
commit cf3a76bf19bfeb35800e0fc31e90dc4ea5c0ff85
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 18:54:38 2008 +0100

    Remove unused marshalling for LSA_GETSYSTEMACCOUNT.
    
    Guenther

commit aaf662a724f1bae5333666caf8b2fbe908f13992
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 18:54:02 2008 +0100

    Use pidl for _lsa_GetSystemAccessAccount().
    
    Guenther

commit 5af6bf31d515c18b0b53237bf78f6c65c2606ca5
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 22:54:28 2008 +0100

    Re-run make idl.
    
    Guenther

commit ac21838d74fa51a73c93272a2be8fac0bc492b49
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 8 18:36:19 2008 +0100

    Fill in IDL for lsa_GetSystemAccessAccount (based on samba3).
    
    Guenther

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

Summary of changes:
 source/include/rpc_lsa.h        |   12 -----------
 source/librpc/gen_ndr/cli_lsa.c |    6 ++++-
 source/librpc/gen_ndr/cli_lsa.h |    4 ++-
 source/librpc/gen_ndr/lsa.h     |    5 ++++
 source/librpc/gen_ndr/ndr_lsa.c |   36 +++++++++++++++++++++++++++++++++
 source/librpc/gen_ndr/srv_lsa.c |    7 ++++++
 source/librpc/idl/lsa.idl       |    5 +++-
 source/rpc_parse/parse_lsa.c    |   42 ---------------------------------------
 source/rpc_server/srv_lsa.c     |   24 +---------------------
 source/rpc_server/srv_lsa_nt.c  |   15 ++++---------
 10 files changed, 66 insertions(+), 90 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_lsa.h b/source/include/rpc_lsa.h
index a4c855a..5cdcd21 100644
--- a/source/include/rpc_lsa.h
+++ b/source/include/rpc_lsa.h
@@ -702,18 +702,6 @@ typedef struct lsa_r_enumprivsaccount
 	NTSTATUS status;
 } LSA_R_ENUMPRIVSACCOUNT;
 
-typedef struct lsa_q_getsystemaccount
-{
-	POLICY_HND pol; /* policy handle */
-} LSA_Q_GETSYSTEMACCOUNT;
-
-typedef struct lsa_r_getsystemaccount
-{
-	uint32 access;
-	NTSTATUS status;
-} LSA_R_GETSYSTEMACCOUNT;
-
-
 typedef struct {
 	UNIHDR hdr;
 	UNISTR2 unistring;
diff --git a/source/librpc/gen_ndr/cli_lsa.c b/source/librpc/gen_ndr/cli_lsa.c
index 779f3e7..9f963db 100644
--- a/source/librpc/gen_ndr/cli_lsa.c
+++ b/source/librpc/gen_ndr/cli_lsa.c
@@ -1004,12 +1004,15 @@ NTSTATUS rpccli_lsa_SetQuotasForAccount(struct rpc_pipe_client *cli,
 }
 
 NTSTATUS rpccli_lsa_GetSystemAccessAccount(struct rpc_pipe_client *cli,
-					   TALLOC_CTX *mem_ctx)
+					   TALLOC_CTX *mem_ctx,
+					   struct policy_handle *handle,
+					   uint32_t *access_mask)
 {
 	struct lsa_GetSystemAccessAccount r;
 	NTSTATUS status;
 
 	/* In parameters */
+	r.in.handle = handle;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(lsa_GetSystemAccessAccount, &r);
@@ -1035,6 +1038,7 @@ NTSTATUS rpccli_lsa_GetSystemAccessAccount(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
+	*access_mask = *r.out.access_mask;
 
 	/* Return result */
 	return r.out.result;
diff --git a/source/librpc/gen_ndr/cli_lsa.h b/source/librpc/gen_ndr/cli_lsa.h
index 26a37de..63e4d02 100644
--- a/source/librpc/gen_ndr/cli_lsa.h
+++ b/source/librpc/gen_ndr/cli_lsa.h
@@ -114,7 +114,9 @@ NTSTATUS rpccli_lsa_GetQuotasForAccount(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_lsa_SetQuotasForAccount(struct rpc_pipe_client *cli,
 					TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_GetSystemAccessAccount(struct rpc_pipe_client *cli,
-					   TALLOC_CTX *mem_ctx);
+					   TALLOC_CTX *mem_ctx,
+					   struct policy_handle *handle,
+					   uint32_t *access_mask);
 NTSTATUS rpccli_lsa_SetSystemAccessAccount(struct rpc_pipe_client *cli,
 					   TALLOC_CTX *mem_ctx,
 					   struct policy_handle *handle,
diff --git a/source/librpc/gen_ndr/lsa.h b/source/librpc/gen_ndr/lsa.h
index 131110c..8c2bab1 100644
--- a/source/librpc/gen_ndr/lsa.h
+++ b/source/librpc/gen_ndr/lsa.h
@@ -894,6 +894,11 @@ struct lsa_SetQuotasForAccount {
 
 struct lsa_GetSystemAccessAccount {
 	struct {
+		struct policy_handle *handle;/* [ref] */
+	} in;
+
+	struct {
+		uint32_t *access_mask;/* [ref] */
 		NTSTATUS result;
 	} out;
 
diff --git a/source/librpc/gen_ndr/ndr_lsa.c b/source/librpc/gen_ndr/ndr_lsa.c
index 8ca4b65..0d477ee 100644
--- a/source/librpc/gen_ndr/ndr_lsa.c
+++ b/source/librpc/gen_ndr/ndr_lsa.c
@@ -6633,8 +6633,16 @@ _PUBLIC_ void ndr_print_lsa_SetQuotasForAccount(struct ndr_print *ndr, const cha
 static enum ndr_err_code ndr_push_lsa_GetSystemAccessAccount(struct ndr_push *ndr, int flags, const struct lsa_GetSystemAccessAccount *r)
 {
 	if (flags & NDR_IN) {
+		if (r->in.handle == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
 	}
 	if (flags & NDR_OUT) {
+		if (r->out.access_mask == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.access_mask));
 		NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -6642,9 +6650,29 @@ static enum ndr_err_code ndr_push_lsa_GetSystemAccessAccount(struct ndr_push *nd
 
 static enum ndr_err_code ndr_pull_lsa_GetSystemAccessAccount(struct ndr_pull *ndr, int flags, struct lsa_GetSystemAccessAccount *r)
 {
+	TALLOC_CTX *_mem_save_handle_0;
+	TALLOC_CTX *_mem_save_access_mask_0;
 	if (flags & NDR_IN) {
+		ZERO_STRUCT(r->out);
+
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->in.handle);
+		}
+		_mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
+		NDR_PULL_ALLOC(ndr, r->out.access_mask);
+		ZERO_STRUCTP(r->out.access_mask);
 	}
 	if (flags & NDR_OUT) {
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.access_mask);
+		}
+		_mem_save_access_mask_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.access_mask, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.access_mask));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_access_mask_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -6660,11 +6688,19 @@ _PUBLIC_ void ndr_print_lsa_GetSystemAccessAccount(struct ndr_print *ndr, const
 	if (flags & NDR_IN) {
 		ndr_print_struct(ndr, "in", "lsa_GetSystemAccessAccount");
 		ndr->depth++;
+		ndr_print_ptr(ndr, "handle", r->in.handle);
+		ndr->depth++;
+		ndr_print_policy_handle(ndr, "handle", r->in.handle);
+		ndr->depth--;
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
 		ndr_print_struct(ndr, "out", "lsa_GetSystemAccessAccount");
 		ndr->depth++;
+		ndr_print_ptr(ndr, "access_mask", r->out.access_mask);
+		ndr->depth++;
+		ndr_print_uint32(ndr, "access_mask", *r->out.access_mask);
+		ndr->depth--;
 		ndr_print_NTSTATUS(ndr, "result", r->out.result);
 		ndr->depth--;
 	}
diff --git a/source/librpc/gen_ndr/srv_lsa.c b/source/librpc/gen_ndr/srv_lsa.c
index f8ef1ad..874cf4c 100644
--- a/source/librpc/gen_ndr/srv_lsa.c
+++ b/source/librpc/gen_ndr/srv_lsa.c
@@ -1823,6 +1823,13 @@ static bool api_lsa_GetSystemAccessAccount(pipes_struct *p)
 		NDR_PRINT_IN_DEBUG(lsa_GetSystemAccessAccount, r);
 	}
 
+	ZERO_STRUCT(r->out);
+	r->out.access_mask = talloc_zero(r, uint32_t);
+	if (r->out.access_mask == NULL) {
+		talloc_free(r);
+		return false;
+	}
+
 	r->out.result = _lsa_GetSystemAccessAccount(p, r);
 
 	if (p->rng_fault_state) {
diff --git a/source/librpc/idl/lsa.idl b/source/librpc/idl/lsa.idl
index 54d9b2f..9db4c83 100644
--- a/source/librpc/idl/lsa.idl
+++ b/source/librpc/idl/lsa.idl
@@ -480,7 +480,10 @@ import "security.idl";
 	NTSTATUS lsa_SetQuotasForAccount();
 	
 	/* Function:    0x17 */
-	NTSTATUS lsa_GetSystemAccessAccount();
+	NTSTATUS lsa_GetSystemAccessAccount(
+		[in]	policy_handle *handle,
+		[out,ref] uint32 *access_mask
+		);
 
 	/* Function:    0x18 */
 	NTSTATUS lsa_SetSystemAccessAccount(
diff --git a/source/rpc_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c
index 0e4cc9f..5f22a28 100644
--- a/source/rpc_parse/parse_lsa.c
+++ b/source/rpc_parse/parse_lsa.c
@@ -2138,48 +2138,6 @@ bool lsa_io_r_enum_privsaccount(const char *desc, LSA_R_ENUMPRIVSACCOUNT *out, p
 	return True;
 }
 
-
-
-/*******************************************************************
- Reads or writes an  LSA_Q_GETSYSTEMACCOUNTstructure.
-********************************************************************/
-
-bool lsa_io_q_getsystemaccount(const char *desc, LSA_Q_GETSYSTEMACCOUNT  *out, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "lsa_io_q_getsystemaccount");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
- 
-	if(!smb_io_pol_hnd("pol", &out->pol, ps, depth))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- Reads or writes an  LSA_R_GETSYSTEMACCOUNTstructure.
-********************************************************************/
-
-bool lsa_io_r_getsystemaccount(const char *desc, LSA_R_GETSYSTEMACCOUNT  *out, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "lsa_io_r_getsystemaccount");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
- 
-	if(!prs_uint32("access", ps, depth, &out->access))
-		return False;
-
-	if(!prs_ntstatus("status", ps, depth, &out->status))
-		return False;
-
-	return True;
-}
-
-
 void init_lsa_string( LSA_STRING *uni, const char *string )
 {
 	init_unistr2(&uni->unistring, string, UNI_FLAGS_NONE);
diff --git a/source/rpc_server/srv_lsa.c b/source/rpc_server/srv_lsa.c
index 057c8f6..24bc65c 100644
--- a/source/rpc_server/srv_lsa.c
+++ b/source/rpc_server/srv_lsa.c
@@ -356,29 +356,7 @@ static bool api_lsa_enum_privsaccount(pipes_struct *p)
 
 static bool api_lsa_getsystemaccount(pipes_struct *p)
 {
-	LSA_Q_GETSYSTEMACCOUNT q_u;
-	LSA_R_GETSYSTEMACCOUNT r_u;
-	
-	prs_struct *data = &p->in_data.data;
-	prs_struct *rdata = &p->out_data.rdata;
-
-	ZERO_STRUCT(q_u);
-	ZERO_STRUCT(r_u);
-
-	if(!lsa_io_q_getsystemaccount("", &q_u, data, 0)) {
-		DEBUG(0,("api_lsa_getsystemaccount: failed to unmarshall LSA_Q_GETSYSTEMACCOUNT.\n"));
-		return False;
-	}
-
-	r_u.status = _lsa_getsystemaccount(p, &q_u, &r_u);
-
-	/* store the response in the SMB stream */
-	if(!lsa_io_r_getsystemaccount("", &r_u, rdata, 0)) {
-		DEBUG(0,("api_lsa_getsystemaccount: Failed to marshall LSA_R_GETSYSTEMACCOUNT.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_lsa_call(p, NDR_LSA_GETSYSTEMACCESSACCOUNT);
 }
 
 
diff --git a/source/rpc_server/srv_lsa_nt.c b/source/rpc_server/srv_lsa_nt.c
index dd1ee3d..247a52d 100644
--- a/source/rpc_server/srv_lsa_nt.c
+++ b/source/rpc_server/srv_lsa_nt.c
@@ -1733,16 +1733,17 @@ NTSTATUS _lsa_enum_privsaccount(pipes_struct *p, prs_struct *ps, LSA_Q_ENUMPRIVS
 }
 
 /***************************************************************************
- 
+ _lsa_GetSystemAccessAccount
  ***************************************************************************/
 
-NTSTATUS _lsa_getsystemaccount(pipes_struct *p, LSA_Q_GETSYSTEMACCOUNT *q_u, LSA_R_GETSYSTEMACCOUNT *r_u)
+NTSTATUS _lsa_GetSystemAccessAccount(pipes_struct *p,
+				     struct lsa_GetSystemAccessAccount *r)
 {
 	struct lsa_info *info=NULL;
 
 	/* find the connection policy handle. */
 
-	if (!find_policy_by_hnd(p, &q_u->pol, (void **)(void *)&info))
+	if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&info))
 		return NT_STATUS_INVALID_HANDLE;
 
 	if (!lookup_sid(p->mem_ctx, &info->sid, NULL, NULL, NULL))
@@ -1757,7 +1758,7 @@ NTSTATUS _lsa_getsystemaccount(pipes_struct *p, LSA_Q_GETSYSTEMACCOUNT *q_u, LSA
 	  they can be ORed together
 	*/
 
-	r_u->access = PR_LOG_ON_LOCALLY | PR_ACCESS_FROM_NETWORK;
+	*r->out.access_mask = PR_LOG_ON_LOCALLY | PR_ACCESS_FROM_NETWORK;
 
 	return NT_STATUS_OK;
 }
@@ -2271,12 +2272,6 @@ NTSTATUS _lsa_SetQuotasForAccount(pipes_struct *p, struct lsa_SetQuotasForAccoun
 	return NT_STATUS_NOT_IMPLEMENTED;
 }
 
-NTSTATUS _lsa_GetSystemAccessAccount(pipes_struct *p, struct lsa_GetSystemAccessAccount *r)
-{
-	p->rng_fault_state = True;
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
 NTSTATUS _lsa_QueryTrustedDomainInfo(pipes_struct *p, struct lsa_QueryTrustedDomainInfo *r)
 {
 	p->rng_fault_state = True;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list