1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-01 04:58:35 +03:00

s4-lsa: merge lsa_LookupPrivDisplayName from s3 lsa idl.

Guenther
This commit is contained in:
Günther Deschner 2008-10-21 01:53:32 +02:00
parent 6a2dabe1a7
commit 95c69caef6
4 changed files with 25 additions and 17 deletions

View File

@ -778,7 +778,7 @@ import "misc.idl", "security.idl";
/*******************/
/* Function: 0x21 */
NTSTATUS lsa_LookupPrivDisplayName (
NTSTATUS lsa_LookupPrivDisplayName(
[in] policy_handle *handle,
[in,ref] lsa_String *name,
[in] uint16 language_id,

View File

@ -773,14 +773,15 @@ import "misc.idl", "security.idl";
/*******************/
/* Function: 0x21 */
NTSTATUS lsa_LookupPrivDisplayName (
[in] policy_handle *handle,
[in] lsa_String *name,
[out,unique] lsa_StringLarge *disp_name,
NTSTATUS lsa_LookupPrivDisplayName(
[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
);
/*******************/

View File

@ -2729,6 +2729,7 @@ static NTSTATUS dcesrv_lsa_LookupPrivDisplayName(struct dcesrv_call_state *dce_c
{
struct dcesrv_handle *h;
struct lsa_policy_state *state;
struct lsa_StringLarge *disp_name = NULL;
int id;
DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
@ -2739,17 +2740,20 @@ static NTSTATUS dcesrv_lsa_LookupPrivDisplayName(struct dcesrv_call_state *dce_c
if (id == -1) {
return NT_STATUS_NO_SUCH_PRIVILEGE;
}
r->out.disp_name = talloc(mem_ctx, struct lsa_StringLarge);
if (r->out.disp_name == NULL) {
disp_name = talloc(mem_ctx, struct lsa_StringLarge);
if (disp_name == NULL) {
return NT_STATUS_NO_MEMORY;
}
r->out.disp_name->string = sec_privilege_display_name(id, r->in.language_id);
if (r->out.disp_name->string == NULL) {
disp_name->string = sec_privilege_display_name(id, &r->in.language_id);
if (disp_name->string == NULL) {
return NT_STATUS_INTERNAL_ERROR;
}
*r->out.disp_name = disp_name;
*r->out.returned_language_id = 0;
return NT_STATUS_OK;
}

View File

@ -1604,14 +1604,17 @@ static bool test_LookupPrivDisplayName(struct dcerpc_pipe *p,
/* produce a reasonable range of language output without screwing up
terminals */
uint16_t language_id = (random() % 4) + 0x409;
uint16_t returned_language_id = 0;
struct lsa_StringLarge *disp_name = NULL;
printf("\nTesting LookupPrivDisplayName(%s)\n", priv_name->string);
r.in.handle = handle;
r.in.name = priv_name;
r.in.language_id = &language_id;
r.out.language_id = &language_id;
r.in.unknown = 0;
r.in.language_id = language_id;
r.in.language_id_sys = 0;
r.out.returned_language_id = &returned_language_id;
r.out.disp_name = &disp_name;
status = dcerpc_lsa_LookupPrivDisplayName(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
@ -1619,8 +1622,8 @@ static bool test_LookupPrivDisplayName(struct dcerpc_pipe *p,
return false;
}
printf("%s -> \"%s\" (language 0x%x/0x%x)\n",
priv_name->string, r.out.disp_name->string,
*r.in.language_id, *r.out.language_id);
priv_name->string, disp_name->string,
r.in.language_id, *r.out.returned_language_id);
return true;
}