]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
CI: fix check for correct mdsvc resonse when connecting to a share with Spotlight...
authorRalph Boehme <slow@samba.org>
Tue, 7 Jun 2022 07:52:53 +0000 (09:52 +0200)
committerNoel Power <npower@samba.org>
Tue, 12 Jul 2022 14:45:36 +0000 (14:45 +0000)
A Mac SMB server returns an all zero handle and an empty path if Spotlight is
disabled on a share. We must return the exact same error return in order to
trigger client-side searching.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=15086
pcap: https://www.samba.org/~slow/pcaps/mac-bigsur-smbserver-spotlight-disabled.pcapng.gz

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Noel Power <npower@samba.org>
selftest/knownfail.d/samba3.rpc.mdssvc [new file with mode: 0644]
source3/selftest/tests.py
source4/torture/rpc/mdssvc.c

diff --git a/selftest/knownfail.d/samba3.rpc.mdssvc b/selftest/knownfail.d/samba3.rpc.mdssvc
new file mode 100644 (file)
index 0000000..7a6ed0f
--- /dev/null
@@ -0,0 +1 @@
+^samba3.rpc.mdssvc.rpccmd.open_spotlight_disabled\(fileserver\)
index dc3cd4f71a37954b4a25e8e47714db8074cbc331..5acf89b0be4c77689f89f6746b58c5d936d85f46 100755 (executable)
@@ -895,7 +895,7 @@ for t in tests:
         # (there is rpc.lsa.secrets fails due to OpenPolicy2 for example)
         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
     elif t == "rpc.mdssvc":
-        plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:no_spotlight_localdir=$SELFTEST_PREFIX/fileserver/share')
+        plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
     elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay" or t == "smb2.durable-v2-delay":
         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
index 17e895a8cc2b575fd54dfc3dc3e98a76c6c03b01..8f16af664766434235ca912c09bcb6b008249705 100644 (file)
@@ -264,7 +264,7 @@ static bool test_mdssvc_open_spotlight_disabled(struct torture_context *tctx,
                data, struct torture_mdsscv_state);
        struct dcerpc_binding_handle *b = state->p->binding_handle;
        struct policy_handle ph;
-       const char *localdir = NULL;
+       struct policy_handle nullh;
        uint32_t device_id;
        uint32_t unkn2;
        uint32_t unkn3;
@@ -282,17 +282,12 @@ static bool test_mdssvc_open_spotlight_disabled(struct torture_context *tctx,
        share_mount_path = torture_setting_string(
                tctx, "share_mount_path", "/foo/bar");
 
-       localdir = torture_setting_string(
-               tctx, "no_spotlight_localdir", NULL);
-       torture_assert_not_null_goto(
-               tctx, localdir, ok, done,
-               "need 'no_spotlight_localdir' torture option \n");
-
        device_id_out = device_id = generate_random();
        unkn2_out = unkn2 = 23;
        unkn3_out = unkn3 = 0;
 
        ZERO_STRUCT(ph);
+       ZERO_STRUCT(nullh);
 
        status = dcerpc_mdssvc_open(b,
                                    tctx,
@@ -315,8 +310,12 @@ static bool test_mdssvc_open_spotlight_disabled(struct torture_context *tctx,
        torture_assert_u32_equal_goto(tctx, unkn3, unkn3_out,
                                      ok, done, "Bad unkn3\n");
 
-       torture_assert_str_equal_goto(tctx, share_path, localdir, ok, done,
-                                     "Wrong share path\n");
+       torture_assert_goto(tctx, share_path[0] == '\0', ok, done,
+                           "Expected empty string as share path\n");
+
+       torture_assert_mem_equal_goto(tctx, &ph, &nullh,
+                                     sizeof(ph), ok, done,
+                                     "Expected all-zero policy handle\n");
 
 done:
        return ok;