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:
parent
6a2dabe1a7
commit
95c69caef6
@ -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,
|
||||
|
@ -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
|
||||
);
|
||||
|
||||
/*******************/
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user