From: Noel Power Date: Fri, 11 Jun 2021 14:46:30 +0000 (+0100) Subject: VFS: shadow_copy2: Add SMB_VFS_FCHFLAGS implementation X-Git-Tag: tevent-0.11.0~126 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d8e5ffa94e9caf0a43864be6eadd36da4dec680e;p=thirdparty%2Fsamba.git VFS: shadow_copy2: Add SMB_VFS_FCHFLAGS implementation Signed-off-by: Noel Power Reviewed-by: Jeremy Allison --- diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c index d45b76950d1..252ea3b4697 100644 --- a/source3/modules/vfs_shadow_copy2.c +++ b/source3/modules/vfs_shadow_copy2.c @@ -2185,6 +2185,26 @@ static int shadow_copy2_chflags(vfs_handle_struct *handle, return SMB_VFS_NEXT_CHFLAGS(handle, smb_fname, flags); } +static int shadow_copy2_fchflags(vfs_handle_struct *handle, + struct files_struct *fsp, + unsigned int flags) +{ + time_t timestamp = 0; + + if (!shadow_copy2_strip_snapshot(talloc_tos(), + handle, + fsp->fsp_name, + ×tamp, + NULL)) { + return -1; + } + if (timestamp != 0) { + errno = EROFS; + return -1; + } + return SMB_VFS_NEXT_FCHFLAGS(handle, fsp, flags); +} + static ssize_t shadow_copy2_getxattr(vfs_handle_struct *handle, const struct smb_filename *smb_fname, const char *aname, @@ -3205,6 +3225,7 @@ static struct vfs_fn_pointers vfs_shadow_copy2_fns = { .getxattrat_recv_fn = vfs_not_implemented_getxattrat_recv, .fsetxattr_fn = shadow_copy2_fsetxattr, .chflags_fn = shadow_copy2_chflags, + .fchflags_fn = shadow_copy2_fchflags, .get_real_filename_fn = shadow_copy2_get_real_filename, .pwrite_fn = shadow_copy2_pwrite, .pwrite_send_fn = shadow_copy2_pwrite_send,