From 7ae1667bda9eb395110dc94c6f0cf32b55a92fde Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Fri, 24 May 2019 14:51:17 +0200 Subject: [PATCH] vfs_fruit: use VFS functions in ad_read_rsrc_adouble() Bug: https://bugzilla.samba.org/show_bug.cgi?id=13968 Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison (cherry picked from commit 9fe84a6345bf5d9fdb1df87a853db3380e6fb0f7) --- source3/modules/vfs_fruit.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c index ed31f27cfca..defded77716 100644 --- a/source3/modules/vfs_fruit.c +++ b/source3/modules/vfs_fruit.c @@ -1665,16 +1665,16 @@ static ssize_t ad_read_rsrc_adouble(vfs_handle_struct *handle, struct adouble *ad, const struct smb_filename *smb_fname) { - SMB_STRUCT_STAT sbuf; char *p_ad = NULL; size_t size; ssize_t len; int ret; bool ok; - ret = sys_fstat(ad->ad_fsp->fh->fd, &sbuf, lp_fake_directory_create_times( - SNUM(handle->conn))); + ret = SMB_VFS_NEXT_FSTAT(handle, ad->ad_fsp, &ad->ad_fsp->fsp_name->st); if (ret != 0) { + DBG_ERR("fstat [%s] failed: %s\n", + fsp_str_dbg(ad->ad_fsp), strerror(errno)); return -1; } @@ -1686,7 +1686,7 @@ static ssize_t ad_read_rsrc_adouble(vfs_handle_struct *handle, * * Read as much as we can up to AD_XATTR_MAX_HDR_SIZE. */ - size = sbuf.st_ex_size; + size = ad->ad_fsp->fsp_name->st.st_ex_size; if (size > talloc_array_length(ad->ad_data)) { if (size > AD_XATTR_MAX_HDR_SIZE) { size = AD_XATTR_MAX_HDR_SIZE; @@ -1698,8 +1698,7 @@ static ssize_t ad_read_rsrc_adouble(vfs_handle_struct *handle, ad->ad_data = p_ad; } - len = sys_pread(ad->ad_fsp->fh->fd, ad->ad_data, - talloc_array_length(ad->ad_data), 0); + len = SMB_VFS_NEXT_PREAD(handle, ad->ad_fsp, ad->ad_data, talloc_array_length(ad->ad_data), 0); if (len != talloc_array_length(ad->ad_data)) { DBG_NOTICE("%s %s: bad size: %zd\n", smb_fname->base_name, strerror(errno), len); @@ -1707,7 +1706,7 @@ static ssize_t ad_read_rsrc_adouble(vfs_handle_struct *handle, } /* Now parse entries */ - ok = ad_unpack(ad, ADEID_NUM_DOT_UND, sbuf.st_ex_size); + ok = ad_unpack(ad, ADEID_NUM_DOT_UND, size); if (!ok) { DBG_ERR("invalid AppleDouble resource %s\n", smb_fname->base_name); -- 2.47.2