diff options
-rw-r--r-- | source4/librpc/idl/srvsvc.idl | 24 | ||||
-rw-r--r-- | source4/torture/rpc/srvsvc.c | 12 |
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; } |