[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