summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/librpc/idl/srvsvc.idl24
-rw-r--r--source4/torture/rpc/srvsvc.c12
2 files changed, 19 insertions, 17 deletions
diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl
index 6d8a596135..17e9491fbe 100644
--- a/source4/librpc/idl/srvsvc.idl
+++ b/source4/librpc/idl/srvsvc.idl
@@ -379,24 +379,24 @@
} srvsvc_NetDisk0;
typedef struct {
+ uint32 unknown;
uint32 count;
- uint32 unknown1;
- uint32 unknown2;
- srvsvc_NetDisk0 array[count];
+ [size_is(count)] srvsvc_NetDisk0 array[];
} srvsvc_NetDiskCtr0;
- typedef struct {
- uint32 num1;
- srvsvc_NetDiskCtr0 *ctr0;
+ typedef union {
+ [case(0)] srvsvc_NetDiskCtr0 *ctr0;
} srvsvc_NetDiskCtr;
WERROR srvsvc_NetDiskEnum(
- [in] unistr *server_unc,
- [in] uint32 level,
- [in,out] srvsvc_NetDiskCtr ctr,
- [in] uint32 preferred_len,
- [out] uint32 total,
- [in,out] uint32 *resume_handle
+ [in] unistr *server_unc,
+ [in] uint32 level,
+ [out] uint32 num_entries,
+ [in,switch_is(level)] srvsvc_NetDiskCtr ctr,
+ [out] srvsvc_NetDiskCtr0 *disks,
+ [in] uint32 unknown,
+ [out] uint32 max_entries,
+ [in,out] uint32 *resume_handle
);
/******************/
diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c
index 349fb82131..f699cb426b 100644
--- a/source4/torture/rpc/srvsvc.c
+++ b/source4/torture/rpc/srvsvc.c
@@ -159,10 +159,12 @@ static BOOL test_NetDiskEnum(struct dcerpc_pipe *p,
uint32 levels[] = {0};
int i;
BOOL ret = True;
+ uint32 resume_handle=0;
- r.in.server_unc = talloc_asprintf(mem_ctx,"\\\\%s",dcerpc_server_name(p));
- r.in.preferred_len = (uint32)-1;
- r.in.resume_handle = NULL;
+ r.in.server_unc = NULL;
+ r.in.unknown = 0;
+ r.in.resume_handle = &resume_handle;
+ r.in.ctr.ctr0 = NULL;
for (i=0;i<ARRAY_SIZE(levels);i++) {
r.in.level = levels[i];
@@ -273,11 +275,11 @@ BOOL torture_rpc_srvsvc(int dummy)
if (!test_NetShareEnumAll(p, mem_ctx)) {
ret = False;
}
-#if 0
+
if (!test_NetDiskEnum(p, mem_ctx)) {
ret = False;
}
-#endif
+
if (!test_NetTransportEnum(p, mem_ctx)) {
ret = False;
}