summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/librpc/idl/samr.idl30
-rw-r--r--source4/torture/rpc/samr.c28
2 files changed, 57 insertions, 1 deletions
diff --git a/source4/librpc/idl/samr.idl b/source4/librpc/idl/samr.idl
index 8604f311cf..0723354662 100644
--- a/source4/librpc/idl/samr.idl
+++ b/source4/librpc/idl/samr.idl
@@ -645,7 +645,35 @@
/************************/
/* Function 0x28 */
- NTSTATUS samr_QUERY_DISPINFO();
+
+ typedef struct {
+ uint32 idx;
+ uint32 rid;
+ uint32 acct_flags;
+ samr_Name username;
+ samr_Name full_name;
+ samr_Name description;
+ } samr_DispEntry1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] samr_DispEntry1 *entries;
+ } samr_DispInfo1;
+
+ typedef union {
+ [case(1)] samr_DispInfo1 info1;
+ } samr_DispInfo;
+
+ NTSTATUS samr_QueryDisplayInfo(
+ [in,ref] policy_handle *handle,
+ [in] uint16 level,
+ [in] uint32 start_idx,
+ [in] uint32 max_entries,
+ [in] uint32 buf_size,
+ [out] uint32 total_size,
+ [out] uint32 returned_size,
+ [out,switch_is(level)] samr_DispInfo info
+ );
/************************/
/* Function 0x29 */
diff --git a/source4/torture/rpc/samr.c b/source4/torture/rpc/samr.c
index 49984aeea0..345347a344 100644
--- a/source4/torture/rpc/samr.c
+++ b/source4/torture/rpc/samr.c
@@ -651,6 +651,30 @@ static BOOL test_EnumDomainAliases(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
return ret;
}
+static BOOL test_QueryDisplayInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
+ struct policy_handle *handle)
+{
+ NTSTATUS status;
+ struct samr_QueryDisplayInfo r;
+ BOOL ret = True;
+
+ printf("Testing QueryDisplayInfo\n");
+
+ r.in.handle = handle;
+ r.in.level = 1;
+ r.in.start_idx = 0;
+ r.in.max_entries = 100;
+ r.in.buf_size = (uint32)-1;
+
+ status = dcerpc_samr_QueryDisplayInfo(p, mem_ctx, &r);
+ if (!NT_STATUS_IS_OK(status)) {
+ printf("QueryDisplayInfo failed - %s\n", nt_errstr(status));
+ return False;
+ }
+
+ return ret;
+}
+
static BOOL test_QueryDomainInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
struct policy_handle *handle)
{
@@ -723,6 +747,10 @@ static BOOL test_OpenDomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
ret = False;
}
+ if (!test_QueryDisplayInfo(p, mem_ctx, &domain_handle)) {
+ ret = False;
+ }
+
if (!test_Close(p, mem_ctx, &domain_handle)) {
ret = False;
}