From 1a1d10d22f7a2eebd22e76614c3c74b4d49e5c33 Mon Sep 17 00:00:00 2001 From: Tim Prouty Date: Wed, 8 Jul 2009 12:24:03 -0700 Subject: s3: Plumb smb_filename through dos_mode() and related funtions --- source3/modules/nfs4_acls.c | 12 +++++++++++- source3/modules/onefs_open.c | 3 +-- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'source3/modules') diff --git a/source3/modules/nfs4_acls.c b/source3/modules/nfs4_acls.c index 70bdaa8826..9b3c8725d5 100644 --- a/source3/modules/nfs4_acls.c +++ b/source3/modules/nfs4_acls.c @@ -743,12 +743,22 @@ NTSTATUS smb_set_nt_acl_nfs4(files_struct *fsp, } if (((newUID != (uid_t)-1) && (sbuf.st_ex_uid != newUID)) || ((newGID != (gid_t)-1) && (sbuf.st_ex_gid != newGID))) { - if(try_chown(fsp->conn, fsp->fsp_name, newUID, newGID)) { + struct smb_filename *smb_fname = NULL; + NTSTATUS status; + + status = create_synthetic_smb_fname_split(talloc_tos(), + fsp->fsp_name, NULL, &smb_fname); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + if(try_chown(fsp->conn, smb_fname, newUID, newGID)) { DEBUG(3,("chown %s, %u, %u failed. Error = %s.\n", fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID, strerror(errno))); + TALLOC_FREE(smb_fname); return map_nt_error_from_unix(errno); } + TALLOC_FREE(smb_fname); DEBUG(10,("chown %s, %u, %u succeeded.\n", fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID)); diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c index 20ce814518..60a1790f64 100644 --- a/source3/modules/onefs_open.c +++ b/source3/modules/onefs_open.c @@ -591,8 +591,7 @@ NTSTATUS onefs_open_file_ntcreate(connection_struct *conn, if (!posix_open) { new_dos_attributes &= SAMBA_ATTRIBUTES_MASK; if (file_existed) { - existing_dos_attributes = dos_mode(conn, fname, - &smb_fname->st); + existing_dos_attributes = dos_mode(conn, smb_fname); } } -- cgit