vfs_fruit: only veto AppleDouble files with fruit:resource=file
authorRalph Boehme <slow@samba.org>
Thu, 19 Jan 2017 08:30:45 +0000 (09:30 +0100)
committerUri Simchoni <uri@samba.org>
Wed, 1 Mar 2017 23:32:23 +0000 (00:32 +0100)
vfs_fruit only creates AppleDouble files itself when "fruit:resource" is
set to "file" (the default). It is only then the these AppleDouble files
should be treated as an internal representation and should be
inaccessible from clients.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=12526>

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Uri Simchoni <uri@samba.org>
docs-xml/manpages/vfs_fruit.8.xml
source3/modules/vfs_fruit.c

index 31a4fe7e5a4f5ef7e438e17fae25fb72b0b57fc6..d209a228f2463b00e04fd4147ba69010c1d47fb8 100644 (file)
          <varlistentry>
            <term>fruit:veto_appledouble = yes | no</term>
            <listitem>
-             <para>Whether ._ AppleDouble files are vetoed which
-             prevents the client from seing and accessing internal
-             AppleDouble files created by vfs_fruit itself for the
-             purpose of storing a Mac resource fork.</para>
+             <para><emphasis>Note:</emphasis> this option only applies when
+             <parameter>fruit:resource</parameter> is set to
+             <parameter>file</parameter> (the default).</para>
+
+             <para>When <parameter>fruit:resource</parameter> is set to
+             <parameter>file</parameter>, vfs_fruit may create ._ AppleDouble
+             files. This options controls whether these ._ AppleDouble files
+             are vetoed which prevents the client from accessing them.</para>
              <para>Vetoing ._ files may break some applications, eg
              extracting Mac ZIP archives from Mac clients failes,
              because they contain ._ files. Setting this option to
index 81dfbd9774a04526d1d05332ea5edf47fad524b2..edac0cf49348f8b1a7d759442c9fa1678e918051 100644 (file)
@@ -1568,9 +1568,12 @@ static int init_fruit_config(vfs_handle_struct *handle)
        }
        config->encoding = (enum fruit_encoding)enumval;
 
-       config->veto_appledouble = lp_parm_bool(
-               SNUM(handle->conn), FRUIT_PARAM_TYPE_NAME,
-               "veto_appledouble", true);
+       if (config->rsrc == FRUIT_RSRC_ADFILE) {
+               config->veto_appledouble = lp_parm_bool(SNUM(handle->conn),
+                                                       FRUIT_PARAM_TYPE_NAME,
+                                                       "veto_appledouble",
+                                                       true);
+       }
 
        config->use_aapl = lp_parm_bool(
                -1, FRUIT_PARAM_TYPE_NAME, "aapl", true);