From 5b0359652912baee3767d14d394eb951301c0e8f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 15 Dec 2003 10:21:09 +0000 Subject: fixed srvsvc DiskEnum call strangely, the output doesn't seem to contain an info level. Some programmer stuffed up the IDL :) (This used to be commit a39ee5d00341e1dbde0b38474ba4d5e980e74538) --- source4/librpc/idl/srvsvc.idl | 24 ++++++++++++------------ 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