From 09c82a1ce192112a7264d19f6d8888bad49f6a82 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Fri, 2 Dec 2016 09:04:37 +0100 Subject: [PATCH] vfs_fruit: fix fruit_chown() for the fruit:resource!=file case The following code must only be executed for the fruit:resource=file case. While at it, remove an unnecessary lstat, use the stat info from smb_fname. Otherwise no change in behaviour for the fruit:resource=file case (the default). BUG: https://bugzilla.samba.org/show_bug.cgi?id=12427 Signed-off-by: Ralph Boehme Reviewed-by: Uri Simchoni --- source3/modules/vfs_fruit.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c index 5ad0e9c86b7..a305adad410 100644 --- a/source3/modules/vfs_fruit.c +++ b/source3/modules/vfs_fruit.c @@ -3053,7 +3053,6 @@ static int fruit_chown(vfs_handle_struct *handle, char *adp = NULL; struct fruit_config_data *config = NULL; struct smb_filename *adp_smb_fname = NULL; - SMB_STRUCT_STAT sb; rc = SMB_VFS_NEXT_CHOWN(handle, smb_fname, uid, gid); if (rc != 0) { @@ -3063,14 +3062,16 @@ static int fruit_chown(vfs_handle_struct *handle, SMB_VFS_HANDLE_GET_DATA(handle, config, struct fruit_config_data, return -1); - if (config->rsrc == FRUIT_RSRC_XATTR) { - return rc; + if (config->rsrc != FRUIT_RSRC_ADFILE) { + return 0; } - /* FIXME: direct sys_lstat(), need non-const smb_fname */ - rc = sys_lstat(smb_fname->base_name, &sb, false); - if (rc != 0 || !S_ISREG(sb.st_ex_mode)) { - return rc; + if (!VALID_STAT(smb_fname->st)) { + return 0; + } + + if (!S_ISREG(smb_fname->st.st_ex_mode)) { + return 0; } rc = adouble_path(talloc_tos(), smb_fname->base_name, &adp); -- 2.47.3