r4434: - fix some NetShare* idl functions
authorStefan Metzmacher <metze@samba.org>
Fri, 31 Dec 2004 06:19:05 +0000 (06:19 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:07:49 +0000 (13:07 -0500)
- add torture test for NetShareCheck()

metze
(This used to be commit 96000a2261ed56fda613a45e3aa460eb3c87082a)

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

index c637d93841e3489a6827622b01ad13ddc8334bd5..5991284ee988d7f13b3136a86c6a673f2a3560f1 100644 (file)
        /* Function: 0x11 */
        WERROR srvsvc_NetShareSetInfo(
                [in]   unistr *server_unc,
-               [in]   unistr *share_name,
+               [in]   unistr share_name,
                [in]   uint32 level,
                [in,switch_is(level)] srvsvc_NetShareInfo info,
                [in,out]   uint32 *parm_error
        /* Function: 0x12 */
        WERROR srvsvc_NetShareDel(
                [in]   unistr *server_unc,
-               [in]   unistr *share_name,
+               [in]   unistr share_name,
                [in]   uint32 reserved
                );
 
        /* Function: 0x13 */
        WERROR srvsvc_NetShareDelSticky(
                [in]   unistr *server_unc,
-               [in]   unistr *share_name,
+               [in]   unistr share_name,
                [in]   uint32 reserved
                );
        
        /* Function: 0x14 */
        WERROR srvsvc_NetShareCheck(
                [in]   unistr *server_unc,
-               [in]   unistr *share_name,
+               [in]   unistr device_name,
                [out]   uint32 type
                );
 
index 4ddbbc72891b8efcebd59b5a2d63492c1999d7af..4cc7dc6291d488eecce5d09e33d08902d765b80d 100644 (file)
@@ -448,6 +448,32 @@ static BOOL test_NetShareGetInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
        return ret;
 }
 
+static BOOL test_NetShareCheck(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
+                              const char *device_name)
+{
+       NTSTATUS status;
+       struct srvsvc_NetShareCheck r;
+       BOOL ret = True;
+
+       r.in.server_unc = talloc_asprintf(mem_ctx, "\\\\%s", dcerpc_server_name(p));
+       r.in.device_name = device_name;
+
+       printf("testing NetShareCheck on device '%s'\n", r.in.device_name);
+
+       status = dcerpc_srvsvc_NetShareCheck(p, mem_ctx, &r);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("dcerpc_srvsvc_NetShareCheck on device '%s' failed - %s\n",
+                       r.in.device_name, nt_errstr(status));
+               ret = False;
+       } else if (!W_ERROR_IS_OK(r.out.result)) {
+               printf("NetShareCheck on device '%s' failed - %s\n",
+                       r.in.device_name, win_errstr(r.out.result));
+               ret = False;
+       }
+
+       return ret;
+}
+
 /**************************/
 /* srvsvc_NetShare        */
 /**************************/
@@ -489,13 +515,18 @@ static BOOL test_NetShareEnumAll(struct dcerpc_pipe *p,
                }
 
                /* call srvsvc_NetShareGetInfo for each returned share */
-               if (r.in.level == 1) {
-                       for (j=0;j<r.out.ctr.ctr1->count;j++) {
+               if (r.in.level == 2) {
+                       for (j=0;j<r.out.ctr.ctr2->count;j++) {
                                const char *name;
-                               name = r.out.ctr.ctr1->array[j].name;
+                               const char *device;
+                               name = r.out.ctr.ctr2->array[j].name;
                                if (!test_NetShareGetInfo(p, mem_ctx, name)) {
                                        ret = False;
                                }
+                               device = r.out.ctr.ctr2->array[j].path;
+                               if (!test_NetShareCheck(p, mem_ctx, device)) {
+                                       ret = False;
+                               }
                        }
                }
        }