diff options
author | Jeremy Allison <jra@samba.org> | 2011-08-20 20:49:59 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2011-10-24 19:15:36 +0200 |
commit | d43d24dae9781d38bf6df8a96e63d967f1ca4ef7 (patch) | |
tree | 4953d273c67d4242b0560eec5db140c25f2bd1f0 | |
parent | 1cf18bdf160ae5b137797c3b21327e7f2e642879 (diff) | |
download | samba-d43d24dae9781d38bf6df8a96e63d967f1ca4ef7.tar.gz samba-d43d24dae9781d38bf6df8a96e63d967f1ca4ef7.tar.xz samba-d43d24dae9781d38bf6df8a96e63d967f1ca4ef7.zip |
s3-vfs: Fix vfs_chown_fsp.
Fix bug #8370 (vfs_chown_fsp broken -- returns in the wrong directory).
(cherry picked from commit 0b1ce3f177b75e146fdae0b5531c54dedffada1d)
-rw-r--r-- | source3/modules/vfs_acl_common.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c index ee33f21d44f..b2098244422 100644 --- a/source3/modules/vfs_acl_common.c +++ b/source3/modules/vfs_acl_common.c @@ -825,6 +825,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)) { @@ -837,7 +844,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; @@ -890,7 +897,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; } |