[SCM] Samba Shared Repository - branch master updated

Noel Power npower at samba.org
Thu Jun 10 09:17:01 UTC 2021


The branch, master has been updated
       via  f44918e6c83 s3: VFS: default: Add proc_fd's fallback for vfswrap_fchown().
      from  767287920aa selftest/gdb_backtrace: remove duplicate assignment.

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit f44918e6c83c89936156eb24c982a897c9c45f61
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Jun 9 15:57:38 2021 -0700

    s3: VFS: default: Add proc_fd's fallback for vfswrap_fchown().
    
    https://bugzilla.samba.org/show_bug.cgi?id=14734
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>
    
    Autobuild-User(master): Noel Power <npower at samba.org>
    Autobuild-Date(master): Thu Jun 10 09:16:22 UTC 2021 on sn-devel-184

-----------------------------------------------------------------------

Summary of changes:
 source3/modules/vfs_default.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 187b68a78cf..79531f83483 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -2514,7 +2514,31 @@ static int vfswrap_fchown(vfs_handle_struct *handle, files_struct *fsp, uid_t ui
 	int result;
 
 	START_PROFILE(syscall_fchown);
-	result = fchown(fsp_get_io_fd(fsp), uid, gid);
+	if (!fsp->fsp_flags.is_pathref) {
+		result = fchown(fsp_get_io_fd(fsp), uid, gid);
+		END_PROFILE(syscall_fchown);
+		return result;
+	}
+
+	if (fsp->fsp_flags.have_proc_fds) {
+		int fd = fsp_get_pathref_fd(fsp);
+		const char *p = NULL;
+		char buf[PATH_MAX];
+
+		p = sys_proc_fd_path(fd, buf, sizeof(buf));
+		if (p != NULL) {
+			result = chown(p, uid, gid);
+		} else {
+			result = -1;
+		}
+		END_PROFILE(syscall_fchown);
+		return result;
+	}
+
+	/*
+	 * This is no longer a handle based call.
+	 */
+	result = chown(fsp->fsp_name->base_name, uid, gid);
 	END_PROFILE(syscall_fchown);
 	return result;
 #else


-- 
Samba Shared Repository



More information about the samba-cvs mailing list