The Samba-Bugzilla – Attachment 6778 Details for
Bug 8370
vfs_chown_fsp broken -- returns in the wrong directory
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Final (?) version of this patch for 3.6.0
look (text/plain), 2.34 KB, created by
Jeremy Allison
on 2011-08-11 21:44:49 UTC
(
hide
)
Description:
Final (?) version of this patch for 3.6.0
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2011-08-11 21:44:49 UTC
Size:
2.34 KB
patch
obsolete
>diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c >index 0dd2fc3..b6fcbb0 100644 >--- a/source3/modules/vfs_acl_common.c >+++ b/source3/modules/vfs_acl_common.c >@@ -830,6 +830,13 @@ static int acl_common_remove_object(vfs_handle_struct *handle, > const char *final_component = NULL; > struct smb_filename local_fname; > int saved_errno = 0; >+ char *saved_dir = NULL; >+ >+ saved_dir = vfs_GetWd(talloc_tos(),conn); >+ if (!saved_dir) { >+ saved_errno = errno; >+ goto out; >+ } > > if (!parent_dirname(talloc_tos(), path, > &parent_dir, &final_component)) { >@@ -842,7 +849,7 @@ static int acl_common_remove_object(vfs_handle_struct *handle, > parent_dir, final_component )); > > /* cd into the parent dir to pin it. */ >- ret = SMB_VFS_CHDIR(conn, parent_dir); >+ ret = vfs_ChDir(conn, parent_dir); > if (ret == -1) { > saved_errno = errno; > goto out; >@@ -896,7 +903,9 @@ static int acl_common_remove_object(vfs_handle_struct *handle, > > TALLOC_FREE(parent_dir); > >- vfs_ChDir(conn, conn->connectpath); >+ if (saved_dir) { >+ vfs_ChDir(conn, saved_dir); >+ } > if (saved_errno) { > errno = saved_errno; > } >diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c >index bdcb8e4..35a8331 100644 >--- a/source3/smbd/vfs.c >+++ b/source3/smbd/vfs.c >@@ -1500,7 +1500,7 @@ NTSTATUS vfs_chown_fsp(files_struct *fsp, uid_t uid, gid_t gid) > } > > /* cd into the parent dir to pin it. */ >- ret = SMB_VFS_CHDIR(fsp->conn, parent_dir); >+ ret = vfs_ChDir(fsp->conn, parent_dir); > if (ret == -1) { > return map_nt_error_from_unix(errno); > } >@@ -1511,12 +1511,14 @@ NTSTATUS vfs_chown_fsp(files_struct *fsp, uid_t uid, gid_t gid) > /* Must use lstat here. */ > ret = SMB_VFS_LSTAT(fsp->conn, &local_fname); > if (ret == -1) { >- return map_nt_error_from_unix(errno); >+ status = map_nt_error_from_unix(errno); >+ goto out; > } > > /* Ensure it matches the fsp stat. */ > if (!check_same_stat(&local_fname.st, &fsp->fsp_name->st)) { >- return NT_STATUS_ACCESS_DENIED; >+ status = NT_STATUS_ACCESS_DENIED; >+ goto out; > } > path = final_component; > } else { >@@ -1539,6 +1541,8 @@ NTSTATUS vfs_chown_fsp(files_struct *fsp, uid_t uid, gid_t gid) > status = map_nt_error_from_unix(errno); > } > >+ out: >+ > if (as_root) { > vfs_ChDir(fsp->conn,saved_dir); > TALLOC_FREE(saved_dir);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
vl
:
review+
ambi
:
review+
Actions:
View
Attachments on
bug 8370
:
6772
|
6776
|
6777
| 6778 |
6779