diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-09-03 05:16:25 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:58:30 -0500 |
commit | a560082c60e618de327170dbcb8107ab988913fb (patch) | |
tree | 9d760100fa7dad0ef8eb21951f5cb2cad0e9ad76 | |
parent | 37dc4e9bf757710c30d05ff9cba3c960ce76989a (diff) | |
download | samba-a560082c60e618de327170dbcb8107ab988913fb.tar.gz samba-a560082c60e618de327170dbcb8107ab988913fb.tar.bz2 samba-a560082c60e618de327170dbcb8107ab988913fb.zip |
r2199: the unknown 16 bit number in lsa_LookupPrivDisplayName() is a language
ID, so the client can choose what language they get the privilege
description in.
this is the first time I've seen a language ID on the wire in CIFS.
(This used to be commit e99d88915fbfcfb50b04330cd1a32b90222fbca3)
-rw-r--r-- | source4/librpc/idl/lsa.idl | 7 | ||||
-rw-r--r-- | source4/torture/rpc/lsa.c | 9 |
2 files changed, 12 insertions, 4 deletions
diff --git a/source4/librpc/idl/lsa.idl b/source4/librpc/idl/lsa.idl index fecb1b00d2..fe3aa1d51b 100644 --- a/source4/librpc/idl/lsa.idl +++ b/source4/librpc/idl/lsa.idl @@ -458,10 +458,11 @@ NTSTATUS lsa_LookupPrivDisplayName ( [in,ref] policy_handle *handle, [in,ref] lsa_Name *name, - [in] uint16 unknown, /* 0x0409 */ - [in] uint16 unknown2, /* 0x0409 */ [out] lsa_Name *disp_name, - [out] uint16 unknown3 /* 0x0409 */ + /* see http://www.microsoft.com/globaldev/nlsweb/ for + language definitions */ + [in,out,ref] uint16 *language_id, + [in] uint16 unknown ); /* Function: 0x22 */ diff --git a/source4/torture/rpc/lsa.c b/source4/torture/rpc/lsa.c index 5a306fef4d..135e50fb5a 100644 --- a/source4/torture/rpc/lsa.c +++ b/source4/torture/rpc/lsa.c @@ -642,19 +642,26 @@ static BOOL test_LookupPrivDisplayName(struct dcerpc_pipe *p, { struct lsa_LookupPrivDisplayName r; NTSTATUS status; + /* produce a reasonable range of language output without screwing up + terminals */ + uint16 language_id = (random() % 4) + 0x409; printf("testing LookupPrivDisplayName(%s)\n", priv_name->name); 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.unknown2 = 0; status = dcerpc_lsa_LookupPrivDisplayName(p, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { printf("LookupPrivDisplayName failed - %s\n", nt_errstr(status)); return False; } + printf("%s -> \"%s\" (language 0x%x/0x%x)\n", + priv_name->name, r.out.disp_name->name, + *r.in.language_id, *r.out.language_id); return True; } |