s4-srvsvc: merge srvsvc_NetDiskEnum from s3 idl.
authorGünther Deschner <gd@samba.org>
Thu, 30 Oct 2008 10:21:52 +0000 (11:21 +0100)
committerGünther Deschner <gd@samba.org>
Fri, 31 Oct 2008 01:44:33 +0000 (02:44 +0100)
Guenther

source4/librpc/idl/srvsvc.idl
source4/rpc_server/srvsvc/dcesrv_srvsvc.c
source4/torture/rpc/srvsvc.c

index bb186e1a9472cc34f04be0da4001fe3c8748b870..755339ecfe3c08276fdb1ff63bf78ed063c3ffed 100644 (file)
@@ -1168,9 +1168,9 @@ import "security.idl", "svcctl.idl";
        WERROR srvsvc_NetDiskEnum(
                [in,unique]      [string,charset(UTF16)] uint16 *server_unc,
                [in]      uint32 level,
-               [in,out]  srvsvc_NetDiskInfo info,
+               [in,out,ref]  srvsvc_NetDiskInfo *info,
                [in]      uint32 maxlen,
-               [out]     uint32 totalentries,
+               [out,ref]     uint32 *totalentries,
                [in,out,unique]  uint32 *resume_handle
                );
 
index 9e43317ae82b58f72f6f13eef07d61a1a56f97b2..dc115547cf8a6c06eca5199e5386018cbe4679c5 100644 (file)
@@ -1558,27 +1558,26 @@ static WERROR dcesrv_srvsvc_NetSrvSetInfo(struct dcesrv_call_state *dce_call, TA
 static WERROR dcesrv_srvsvc_NetDiskEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                       struct srvsvc_NetDiskEnum *r)
 {
-       r->out.info.disks = NULL;
-       r->out.info.count = 0;
-       r->out.totalentries = 0;
-       r->out.resume_handle = NULL;
+       r->out.info->disks = NULL;
+       r->out.info->count = 0;
+       *r->out.totalentries = 0;
 
        switch (r->in.level) {
        case 0:
        {
                /* we can safely hardcode the reply and report we have only one disk (C:) */
                /* for some reason Windows wants 2 entries with the second being empty */
-               r->out.info.disks = talloc_array(mem_ctx, struct srvsvc_NetDiskInfo0, 2);
-               W_ERROR_HAVE_NO_MEMORY(r->out.info.disks);
-               r->out.info.count = 2;
+               r->out.info->disks = talloc_array(mem_ctx, struct srvsvc_NetDiskInfo0, 2);
+               W_ERROR_HAVE_NO_MEMORY(r->out.info->disks);
+               r->out.info->count = 2;
 
-               r->out.info.disks[0].disk = talloc_strdup(mem_ctx, "C:");
-               W_ERROR_HAVE_NO_MEMORY(r->out.info.disks[0].disk);
+               r->out.info->disks[0].disk = talloc_strdup(mem_ctx, "C:");
+               W_ERROR_HAVE_NO_MEMORY(r->out.info->disks[0].disk);
 
-               r->out.info.disks[1].disk = talloc_strdup(mem_ctx, "");
-               W_ERROR_HAVE_NO_MEMORY(r->out.info.disks[1].disk);
+               r->out.info->disks[1].disk = talloc_strdup(mem_ctx, "");
+               W_ERROR_HAVE_NO_MEMORY(r->out.info->disks[1].disk);
 
-               r->out.totalentries = 1;
+               *r->out.totalentries = 1;
                r->out.resume_handle = r->in.resume_handle;
 
                return WERR_OK;
index 2e78f8edf24157e6d94c5bb874ac76db2e9c685b..b513ccc9738a77ad709da09c8cec4dfb46eb6890 100644 (file)
@@ -796,16 +796,23 @@ static bool test_NetDiskEnum(struct torture_context *tctx,
 {
        NTSTATUS status;
        struct srvsvc_NetDiskEnum r;
+       struct srvsvc_NetDiskInfo info;
+       uint32_t totalentries = 0;
        uint32_t levels[] = {0};
        int i;
        uint32_t resume_handle=0;
 
-       ZERO_STRUCT(r.in);
+       ZERO_STRUCT(info);
+
        r.in.server_unc = NULL;
        r.in.resume_handle = &resume_handle;
+       r.in.info = &info;
+       r.out.info = &info;
+       r.out.totalentries = &totalentries;
+       r.out.resume_handle = &resume_handle;
 
        for (i=0;i<ARRAY_SIZE(levels);i++) {
-               ZERO_STRUCT(r.out);
+               ZERO_STRUCTP(r.out.info);
                r.in.level = levels[i];
                torture_comment(tctx, "testing NetDiskEnum level %u\n", r.in.level);
                status = dcerpc_srvsvc_NetDiskEnum(p, tctx, &r);