vfs_fruit: move storing of modified struct adouble to ad_convert()
authorRalph Boehme <slow@samba.org>
Fri, 5 Oct 2018 14:14:40 +0000 (16:14 +0200)
committerRalph Boehme <slow@samba.org>
Wed, 10 Oct 2018 20:22:13 +0000 (22:22 +0200)
ad_convert() modified it, so let ad_convert() also save it to disk. No
change in behaviour.

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

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/modules/vfs_fruit.c

index 7ed5830223d41894b455b114da7a30f6a95fedb0..57d3c800260f29501a6e1e7029d2f0772d9fd8de 100644 (file)
@@ -1071,6 +1071,7 @@ static int ad_convert(struct adouble *ad,
        int rc = 0;
        char *map = MAP_FAILED;
        size_t origlen;
+       ssize_t len;
        bool ok;
 
        origlen = ad_getentryoff(ad, ADEID_RFORK) +
@@ -1116,6 +1117,18 @@ static int ad_convert(struct adouble *ad,
                return -1;
        }
 
+       ok = ad_pack(ad);
+       if (!ok) {
+               DBG_WARNING("ad_pack [%s] failed\n", smb_fname->base_name);
+               return -1;
+       }
+
+       len = sys_pwrite(ad->ad_fd, ad->ad_data, AD_DATASZ_DOT_UND, 0);
+       if (len != AD_DATASZ_DOT_UND) {
+               DBG_ERR("%s: bad size: %zd\n", smb_fname->base_name, len);
+               return -1;
+       }
+
        return 0;
 }
 
@@ -1391,18 +1404,6 @@ static ssize_t ad_read_rsrc_adouble(struct adouble *ad,
                return len;
        }
 
-       ok = ad_pack(ad);
-       if (!ok) {
-               DBG_WARNING("ad_pack [%s] failed\n", smb_fname->base_name);
-               return -1;
-       }
-
-       len = sys_pwrite(ad->ad_fd, ad->ad_data, AD_DATASZ_DOT_UND, 0);
-       if (len != AD_DATASZ_DOT_UND) {
-               DBG_ERR("%s: bad size: %zd\n", smb_fname->base_name, len);
-               return -1;
-       }
-
        p_ad = ad_get_entry(ad, ADEID_FINDERI);
        if (p_ad == NULL) {
                return -1;