vfs_fruit: fix ftruncating resource fork
authorRalph Boehme <slow@samba.org>
Wed, 11 Oct 2017 16:11:12 +0000 (18:11 +0200)
committerRalph Boehme <slow@samba.org>
Fri, 13 Oct 2017 15:40:07 +0000 (17:40 +0200)
fruit_ftruncate_rsrc_adouble() is called to effectively ftruncate() the
._ AppleDouble file to the requested size.

The VFS function SMB_VFS_NEXT_FTRUNCATE() otoh would attempt to truncate
to fsp *stream* in any way the next VFS module seems fit. As we know
we're stacked with a streams module, the module will attempt to truncate
the stream. So we're not truncating the ._ file.

This went unnoticed as the AppleDouble file header contains the
authorative resource fork size that was updated correctly.

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

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/modules/vfs_fruit.c

index 5c9e680d299b4a7b8d2bfae9e549033441c2a802..a774d238c0f1a8f6bfcd787f0046471134b4c254 100644 (file)
@@ -4902,7 +4902,7 @@ static int fruit_ftruncate_rsrc_adouble(struct vfs_handle_struct *handle,
 
        ad_off = ad_getentryoff(ad, ADEID_RFORK);
 
-       rc = SMB_VFS_NEXT_FTRUNCATE(handle, fsp, offset + ad_off);
+       rc = ftruncate(fsp->fh->fd, offset + ad_off);
        if (rc != 0) {
                TALLOC_FREE(ad);
                return -1;