[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2074-gd853f4f

Günther Deschner gd at samba.org
Mon Feb 11 18:18:40 GMT 2008


The branch, v3-2-test has been updated
       via  d853f4f2634a3273c193cc52e7aaa4e7234a827c (commit)
       via  be932cbdfa51eefafe79a81fa393ffea1fa4e25e (commit)
       via  c86640320199898cc5e3040bc3339db683e98da8 (commit)
       via  73e34102b68518ec45986869c20b2356909d67c0 (commit)
       via  64559fbabb7e1e6654540b9176bef462e5f78996 (commit)
      from  eadd15c9363a57c214ede3c489057646baca48f8 (commit)

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


- Log -----------------------------------------------------------------
commit d853f4f2634a3273c193cc52e7aaa4e7234a827c
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 11 18:11:11 2008 +0100

    Remove unused marshalling for LSA_PRIV_GET_DISPNAME.
    
    Guenther

commit be932cbdfa51eefafe79a81fa393ffea1fa4e25e
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 11 12:17:27 2008 +0100

    Use rpccli_lsa_LookupPrivDisplayName() in net and rpcclient.
    
    Guenther

commit c86640320199898cc5e3040bc3339db683e98da8
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 11 11:57:29 2008 +0100

    Use pidl for _lsa_LookupPrivDisplayName().
    
    Guenther

commit 73e34102b68518ec45986869c20b2356909d67c0
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 11 17:56:22 2008 +0100

    Re-run make idl.
    
    Guenther

commit 64559fbabb7e1e6654540b9176bef462e5f78996
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 11 11:56:15 2008 +0100

    Fix IDL for lsa_LookupPrivDisplayName (based on samba3 code).
    
    Guenther

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

Summary of changes:
 source/include/rpc_lsa.h        |   21 ---------
 source/lib/privileges_basic.c   |    4 ++
 source/librpc/gen_ndr/cli_lsa.c |   15 +++----
 source/librpc/gen_ndr/cli_lsa.h |    7 ++-
 source/librpc/gen_ndr/lsa.h     |    8 ++--
 source/librpc/gen_ndr/ndr_lsa.c |   87 ++++++++++++++++++++-------------------
 source/librpc/gen_ndr/srv_lsa.c |    9 +++-
 source/librpc/idl/lsa.idl       |   11 +++--
 source/rpc_client/cli_lsarpc.c  |   40 ------------------
 source/rpc_parse/parse_lsa.c    |   80 -----------------------------------
 source/rpc_server/srv_lsa.c     |   23 +----------
 source/rpc_server/srv_lsa_nt.c  |   51 ++++++++++-------------
 source/rpcclient/cmd_lsarpc.c   |   24 +++++++----
 source/utils/net_rpc_rights.c   |   48 ++++++++++++++++------
 14 files changed, 151 insertions(+), 277 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_lsa.h b/source/include/rpc_lsa.h
index 3dc5ea9..9f8beae 100644
--- a/source/include/rpc_lsa.h
+++ b/source/include/rpc_lsa.h
@@ -535,27 +535,6 @@ typedef struct
 } LSA_R_REMOVE_ACCT_RIGHTS;
 
 
-/* LSA_Q_PRIV_GET_DISPNAME - LSA get privilege display name */
-typedef struct lsa_q_priv_get_dispname
-{
-	POLICY_HND pol; /* policy handle */
-	UNIHDR hdr_name;
-	UNISTR2 name;
-	uint16 lang_id;
-	uint16 lang_id_sys;
-} LSA_Q_PRIV_GET_DISPNAME;
-
-typedef struct lsa_r_priv_get_dispname
-{
-	uint32 ptr_info;
-	UNIHDR hdr_desc;
-	UNISTR2 desc;
-	/* Don't align ! */
-	uint16 lang_id;
-	/* align */
-	NTSTATUS status;
-} LSA_R_PRIV_GET_DISPNAME;
-
 /* LSA_Q_ENUM_ACCOUNTS */
 typedef struct lsa_q_enum_accounts
 {
diff --git a/source/lib/privileges_basic.c b/source/lib/privileges_basic.c
index ea566c7..753f726 100644
--- a/source/lib/privileges_basic.c
+++ b/source/lib/privileges_basic.c
@@ -317,6 +317,10 @@ const char* get_privilege_dispname( const char *name )
 {
 	int i;
 
+	if (!name) {
+		return NULL;
+	}
+
 	for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
 	
 		if ( strequal( privs[i].name, name ) ) {
diff --git a/source/librpc/gen_ndr/cli_lsa.c b/source/librpc/gen_ndr/cli_lsa.c
index 5ff1d14..d2c54ef 100644
--- a/source/librpc/gen_ndr/cli_lsa.c
+++ b/source/librpc/gen_ndr/cli_lsa.c
@@ -1451,9 +1451,10 @@ NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli,
 					  TALLOC_CTX *mem_ctx,
 					  struct policy_handle *handle,
 					  struct lsa_String *name,
-					  struct lsa_StringLarge *disp_name,
-					  uint16_t *language_id,
-					  uint16_t unknown)
+					  uint16_t language_id,
+					  uint16_t language_id_sys,
+					  struct lsa_StringLarge **disp_name,
+					  uint16_t *returned_language_id)
 {
 	struct lsa_LookupPrivDisplayName r;
 	NTSTATUS status;
@@ -1462,7 +1463,7 @@ NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli,
 	r.in.handle = handle;
 	r.in.name = name;
 	r.in.language_id = language_id;
-	r.in.unknown = unknown;
+	r.in.language_id_sys = language_id_sys;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(lsa_LookupPrivDisplayName, &r);
@@ -1488,10 +1489,8 @@ NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	if (disp_name && r.out.disp_name) {
-		*disp_name = *r.out.disp_name;
-	}
-	*language_id = *r.out.language_id;
+	*disp_name = *r.out.disp_name;
+	*returned_language_id = *r.out.returned_language_id;
 
 	/* 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 f868197..5e40a17 100644
--- a/source/librpc/gen_ndr/cli_lsa.h
+++ b/source/librpc/gen_ndr/cli_lsa.h
@@ -166,9 +166,10 @@ NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli,
 					  TALLOC_CTX *mem_ctx,
 					  struct policy_handle *handle,
 					  struct lsa_String *name,
-					  struct lsa_StringLarge *disp_name,
-					  uint16_t *language_id,
-					  uint16_t unknown);
+					  uint16_t language_id,
+					  uint16_t language_id_sys,
+					  struct lsa_StringLarge **disp_name,
+					  uint16_t *returned_language_id);
 NTSTATUS rpccli_lsa_DeleteObject(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 0df0dde..d829c1f 100644
--- a/source/librpc/gen_ndr/lsa.h
+++ b/source/librpc/gen_ndr/lsa.h
@@ -1036,13 +1036,13 @@ struct lsa_LookupPrivDisplayName {
 	struct {
 		struct policy_handle *handle;/* [ref] */
 		struct lsa_String *name;/* [ref] */
-		uint16_t unknown;
-		uint16_t *language_id;/* [ref] */
+		uint16_t language_id;
+		uint16_t language_id_sys;
 	} in;
 
 	struct {
-		struct lsa_StringLarge *disp_name;/* [unique] */
-		uint16_t *language_id;/* [ref] */
+		struct lsa_StringLarge **disp_name;/* [ref] */
+		uint16_t *returned_language_id;/* [ref] */
 		NTSTATUS result;
 	} out;
 
diff --git a/source/librpc/gen_ndr/ndr_lsa.c b/source/librpc/gen_ndr/ndr_lsa.c
index ef93d6b..69feaed 100644
--- a/source/librpc/gen_ndr/ndr_lsa.c
+++ b/source/librpc/gen_ndr/ndr_lsa.c
@@ -7585,21 +7585,21 @@ static enum ndr_err_code ndr_push_lsa_LookupPrivDisplayName(struct ndr_push *ndr
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
 		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
-		if (r->in.language_id == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.language_id));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.unknown));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.language_id));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.language_id_sys));
 	}
 	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.disp_name));
-		if (r->out.disp_name) {
-			NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.disp_name));
+		if (r->out.disp_name == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.disp_name));
+		if (*r->out.disp_name) {
+			NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.disp_name));
 		}
-		if (r->out.language_id == NULL) {
+		if (r->out.returned_language_id == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->out.language_id));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->out.returned_language_id));
 		NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -7611,7 +7611,8 @@ static enum ndr_err_code ndr_pull_lsa_LookupPrivDisplayName(struct ndr_pull *ndr
 	TALLOC_CTX *_mem_save_handle_0;
 	TALLOC_CTX *_mem_save_name_0;
 	TALLOC_CTX *_mem_save_disp_name_0;
-	TALLOC_CTX *_mem_save_language_id_0;
+	TALLOC_CTX *_mem_save_disp_name_1;
+	TALLOC_CTX *_mem_save_returned_language_id_0;
 	if (flags & NDR_IN) {
 		ZERO_STRUCT(r->out);
 
@@ -7629,37 +7630,39 @@ static enum ndr_err_code ndr_pull_lsa_LookupPrivDisplayName(struct ndr_pull *ndr
 		NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.language_id);
-		}
-		_mem_save_language_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.language_id, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.language_id));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_language_id_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.unknown));
-		NDR_PULL_ALLOC(ndr, r->out.language_id);
-		*r->out.language_id = *r->in.language_id;
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.language_id));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.language_id_sys));
+		NDR_PULL_ALLOC(ndr, r->out.disp_name);
+		ZERO_STRUCTP(r->out.disp_name);
+		NDR_PULL_ALLOC(ndr, r->out.returned_language_id);
+		ZERO_STRUCTP(r->out.returned_language_id);
 	}
 	if (flags & NDR_OUT) {
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.disp_name);
+		}
+		_mem_save_disp_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.disp_name, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_disp_name));
 		if (_ptr_disp_name) {
-			NDR_PULL_ALLOC(ndr, r->out.disp_name);
+			NDR_PULL_ALLOC(ndr, *r->out.disp_name);
 		} else {
-			r->out.disp_name = NULL;
+			*r->out.disp_name = NULL;
 		}
-		if (r->out.disp_name) {
-			_mem_save_disp_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->out.disp_name, 0);
-			NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.disp_name));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_disp_name_0, 0);
+		if (*r->out.disp_name) {
+			_mem_save_disp_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, *r->out.disp_name, 0);
+			NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.disp_name));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_disp_name_1, 0);
 		}
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_disp_name_0, LIBNDR_FLAG_REF_ALLOC);
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.language_id);
+			NDR_PULL_ALLOC(ndr, r->out.returned_language_id);
 		}
-		_mem_save_language_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.language_id, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->out.language_id));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_language_id_0, LIBNDR_FLAG_REF_ALLOC);
+		_mem_save_returned_language_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.returned_language_id, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->out.returned_language_id));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_returned_language_id_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -7683,11 +7686,8 @@ _PUBLIC_ void ndr_print_lsa_LookupPrivDisplayName(struct ndr_print *ndr, const c
 		ndr->depth++;
 		ndr_print_lsa_String(ndr, "name", r->in.name);
 		ndr->depth--;
-		ndr_print_ptr(ndr, "language_id", r->in.language_id);
-		ndr->depth++;
-		ndr_print_uint16(ndr, "language_id", *r->in.language_id);
-		ndr->depth--;
-		ndr_print_uint16(ndr, "unknown", r->in.unknown);
+		ndr_print_uint16(ndr, "language_id", r->in.language_id);
+		ndr_print_uint16(ndr, "language_id_sys", r->in.language_id_sys);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
@@ -7695,13 +7695,16 @@ _PUBLIC_ void ndr_print_lsa_LookupPrivDisplayName(struct ndr_print *ndr, const c
 		ndr->depth++;
 		ndr_print_ptr(ndr, "disp_name", r->out.disp_name);
 		ndr->depth++;
-		if (r->out.disp_name) {
-			ndr_print_lsa_StringLarge(ndr, "disp_name", r->out.disp_name);
+		ndr_print_ptr(ndr, "disp_name", *r->out.disp_name);
+		ndr->depth++;
+		if (*r->out.disp_name) {
+			ndr_print_lsa_StringLarge(ndr, "disp_name", *r->out.disp_name);
 		}
 		ndr->depth--;
-		ndr_print_ptr(ndr, "language_id", r->out.language_id);
+		ndr->depth--;
+		ndr_print_ptr(ndr, "returned_language_id", r->out.returned_language_id);
 		ndr->depth++;
-		ndr_print_uint16(ndr, "language_id", *r->out.language_id);
+		ndr_print_uint16(ndr, "returned_language_id", *r->out.returned_language_id);
 		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 50830ff..b460001 100644
--- a/source/librpc/gen_ndr/srv_lsa.c
+++ b/source/librpc/gen_ndr/srv_lsa.c
@@ -2601,13 +2601,18 @@ static bool api_lsa_LookupPrivDisplayName(pipes_struct *p)
 	}
 
 	ZERO_STRUCT(r->out);
-	r->out.disp_name = talloc_zero(r, struct lsa_StringLarge);
+	r->out.disp_name = talloc_zero(r, struct lsa_StringLarge *);
 	if (r->out.disp_name == NULL) {
 		talloc_free(r);
 		return false;
 	}
 
-	r->out.language_id = r->in.language_id;
+	r->out.returned_language_id = talloc_zero(r, uint16_t);
+	if (r->out.returned_language_id == NULL) {
+		talloc_free(r);
+		return false;
+	}
+
 	r->out.result = _lsa_LookupPrivDisplayName(p, r);
 
 	if (p->rng_fault_state) {
diff --git a/source/librpc/idl/lsa.idl b/source/librpc/idl/lsa.idl
index 53bf17d..7cacd64 100644
--- a/source/librpc/idl/lsa.idl
+++ b/source/librpc/idl/lsa.idl
@@ -653,13 +653,14 @@ import "security.idl";
 	/*******************/
 	/* Function:  0x21 */
 	NTSTATUS lsa_LookupPrivDisplayName (
-		[in]     policy_handle *handle,
-		[in]     lsa_String *name,
-		[out,unique]        lsa_StringLarge *disp_name,
+		[in] policy_handle *handle,
+		[in,ref] lsa_String *name,
+		[in] uint16 language_id,
+		[in] uint16 language_id_sys,
+		[out,ref] lsa_StringLarge **disp_name,
 		/* see http://www.microsoft.com/globaldev/nlsweb/ for
 		   language definitions */
-		[in,out] uint16 *language_id,
-		[in]         uint16 unknown
+		[out,ref] uint16 *returned_language_id
 		);
 
 	/* Function:        0x22 */
diff --git a/source/rpc_client/cli_lsarpc.c b/source/rpc_client/cli_lsarpc.c
index b82d72b..d547c3e 100644
--- a/source/rpc_client/cli_lsarpc.c
+++ b/source/rpc_client/cli_lsarpc.c
@@ -537,46 +537,6 @@ NTSTATUS rpccli_lsa_enum_trust_dom(struct rpc_pipe_client *cli,
 	return out.status;
 }
 
-/** Get privilege name */
-
-NTSTATUS rpccli_lsa_get_dispname(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			      POLICY_HND *pol, const char *name,
-			      uint16 lang_id, uint16 lang_id_sys,
-			      fstring description, uint16 *lang_id_desc)
-{
-	prs_struct qbuf, rbuf;
-	LSA_Q_PRIV_GET_DISPNAME q;
-	LSA_R_PRIV_GET_DISPNAME r;
-	NTSTATUS result;
-
-	ZERO_STRUCT(q);
-	ZERO_STRUCT(r);
-
-	init_lsa_priv_get_dispname(&q, pol, name, lang_id, lang_id_sys);
-
-	CLI_DO_RPC( cli, mem_ctx, PI_LSARPC, LSA_PRIV_GET_DISPNAME,
-		q, r,
-		qbuf, rbuf,
-		lsa_io_q_priv_get_dispname,
-		lsa_io_r_priv_get_dispname,
-		NT_STATUS_UNSUCCESSFUL);
-
-	result = r.status;
-
-	if (!NT_STATUS_IS_OK(result)) {
-		goto done;
-	}
-
-	/* Return output parameters */
-
-	rpcstr_pull_unistr2_fstring(description , &r.desc);
-	*lang_id_desc = r.lang_id;
-
- done:
-
-	return result;
-}
-
 /** Enumerate list of SIDs  */
 
 NTSTATUS rpccli_lsa_enum_sids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
diff --git a/source/rpc_parse/parse_lsa.c b/source/rpc_parse/parse_lsa.c
index 5f9fb12..ded4b7a 100644
--- a/source/rpc_parse/parse_lsa.c
+++ b/source/rpc_parse/parse_lsa.c
@@ -1412,86 +1412,6 @@ bool lsa_io_r_lookup_names4(const char *desc, LSA_R_LOOKUP_NAMES4 *out, prs_stru
 	return True;
 }
 
-void init_lsa_priv_get_dispname(LSA_Q_PRIV_GET_DISPNAME *trn, POLICY_HND *hnd, const char *name, uint16 lang_id, uint16 lang_id_sys)
-{
-	memcpy(&trn->pol, hnd, sizeof(trn->pol));
-
-	init_unistr2(&trn->name, name, UNI_FLAGS_NONE);
-	init_uni_hdr(&trn->hdr_name, &trn->name);
-	trn->lang_id = lang_id;
-	trn->lang_id_sys = lang_id_sys;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-bool lsa_io_q_priv_get_dispname(const char *desc, LSA_Q_PRIV_GET_DISPNAME *in, prs_struct *ps, int depth)
-{
-	if (in == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "lsa_io_q_priv_get_dispname");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if (!smb_io_pol_hnd("", &in->pol, ps, depth))
-		return False;
-
-	if (!smb_io_unihdr("hdr_name", &in->hdr_name, ps, depth))
-		return False;
-
-	if (!smb_io_unistr2("name", &in->name, in->hdr_name.buffer, ps, depth))
-		return False;
-
-	if(!prs_uint16("lang_id    ", ps, depth, &in->lang_id))
-		return False;
-	if(!prs_uint16("lang_id_sys", ps, depth, &in->lang_id_sys))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-reads or writes a structure.
-********************************************************************/
-bool lsa_io_r_priv_get_dispname(const char *desc, LSA_R_PRIV_GET_DISPNAME *out, prs_struct *ps, int depth)
-{
-	if (out == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "lsa_io_r_priv_get_dispname");
-	depth++;
-
-	if (!prs_align(ps))
-		return False;
-
-	if (!prs_uint32("ptr_info", ps, depth, &out->ptr_info))
-		return False;
-
-	if (out->ptr_info){
-		if (!smb_io_unihdr("hdr_name", &out->hdr_desc, ps, depth))
-			return False;
-
-		if (!smb_io_unistr2("desc", &out->desc, out->hdr_desc.buffer, ps, depth))
-			return False;
-	}
-/*
-	if(!prs_align(ps))
-		return False;
-*/
-	if(!prs_uint16("lang_id", ps, depth, &out->lang_id))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-	if(!prs_ntstatus("status", ps, depth, &out->status))
-		return False;
-
-	return True;
-}
-
 /*
   initialise a LSA_Q_ENUM_ACCOUNTS structure
 */
diff --git a/source/rpc_server/srv_lsa.c b/source/rpc_server/srv_lsa.c
index d24929b..9f3dd90 100644
--- a/source/rpc_server/srv_lsa.c
+++ b/source/rpc_server/srv_lsa.c
@@ -195,28 +195,7 @@ static bool api_lsa_enum_privs(pipes_struct *p)
 
 static bool api_lsa_priv_get_dispname(pipes_struct *p)
 {
-	LSA_Q_PRIV_GET_DISPNAME q_u;
-	LSA_R_PRIV_GET_DISPNAME 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_priv_get_dispname("", &q_u, data, 0)) {
-		DEBUG(0,("api_lsa_priv_get_dispname: failed to unmarshall LSA_Q_PRIV_GET_DISPNAME.\n"));
-		return False;
-	}
-
-	r_u.status = _lsa_priv_get_dispname(p, &q_u, &r_u);
-
-	/* store the response in the SMB stream */
-	if(!lsa_io_r_priv_get_dispname("", &r_u, rdata, 0)) {
-		DEBUG(0,("api_lsa_priv_get_dispname: Failed to marshall LSA_R_PRIV_GET_DISPNAME.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_lsa_call(p, NDR_LSA_LOOKUPPRIVDISPLAYNAME);
 }
 
 /***************************************************************************
diff --git a/source/rpc_server/srv_lsa_nt.c b/source/rpc_server/srv_lsa_nt.c
index 60414a9..bb87422 100644
--- a/source/rpc_server/srv_lsa_nt.c
+++ b/source/rpc_server/srv_lsa_nt.c
@@ -1470,16 +1470,17 @@ NTSTATUS _lsa_EnumPrivs(pipes_struct *p,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list