diff options
author | Jeremy Allison <jra@samba.org> | 2017-06-29 11:29:33 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2017-07-01 03:07:11 +0200 |
commit | 6acb0d6ca08d72f776d3ba9dc934261a481aa737 (patch) | |
tree | 0ca605c49d66648ce79c274ec7fdbbfa7a3571a3 /source3/rpc_server | |
parent | 73bee8b690edcc946f2e98aca711dd77d104e76e (diff) | |
download | samba-6acb0d6ca08d72f776d3ba9dc934261a481aa737.tar.gz |
s3: VFS: Change SMB_VFS_CHDIR to use const struct smb_filename * instead of const char *.
We need to migrate all pathname based VFS calls to use a struct
to finish modernising the VFS with extra timestamp and flags parameters.
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
Diffstat (limited to 'source3/rpc_server')
-rw-r--r-- | source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c index fdf42ea030b..f3173aee42f 100644 --- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c @@ -2323,7 +2323,7 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p, struct sec_desc_buf *sd_buf = NULL; files_struct *fsp = NULL; int snum; - char *oldcwd = NULL; + struct smb_filename *oldcwd_fname = NULL; uint32_t ucf_flags = 0; ZERO_STRUCT(st); @@ -2348,7 +2348,7 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p, server_messaging_context(), &conn, snum, lp_path(talloc_tos(), snum), - p->session_info, &oldcwd); + p->session_info, &oldcwd_fname); if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(10, ("create_conn_struct failed: %s\n", nt_errstr(nt_status))); @@ -2423,12 +2423,7 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p, *r->out.sd_buf = sd_buf; - close_file(NULL, fsp, NORMAL_CLOSE); - vfs_ChDir(conn, oldcwd); - SMB_VFS_DISCONNECT(conn); - conn_free(conn); werr = WERR_OK; - goto done; error_exit: @@ -2436,8 +2431,9 @@ error_exit: close_file(NULL, fsp, NORMAL_CLOSE); } - if (oldcwd) { - vfs_ChDir(conn, oldcwd); + if (oldcwd_fname) { + vfs_ChDir(conn, oldcwd_fname); + TALLOC_FREE(oldcwd_fname); } if (conn) { @@ -2445,8 +2441,6 @@ error_exit: conn_free(conn); } - done: - TALLOC_FREE(smb_fname); return werr; @@ -2468,7 +2462,7 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p, WERROR werr; connection_struct *conn = NULL; int snum; - char *oldcwd = NULL; + struct smb_filename *oldcwd_fname = NULL; struct security_descriptor *psd = NULL; uint32_t security_info_sent = 0; uint32_t ucf_flags = 0; @@ -2497,7 +2491,7 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p, server_messaging_context(), &conn, snum, lp_path(talloc_tos(), snum), - p->session_info, &oldcwd); + p->session_info, &oldcwd_fname); if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(10, ("create_conn_struct failed: %s\n", nt_errstr(nt_status))); @@ -2555,12 +2549,7 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p, goto error_exit; } - close_file(NULL, fsp, NORMAL_CLOSE); - vfs_ChDir(conn, oldcwd); - SMB_VFS_DISCONNECT(conn); - conn_free(conn); werr = WERR_OK; - goto done; error_exit: @@ -2568,8 +2557,9 @@ error_exit: close_file(NULL, fsp, NORMAL_CLOSE); } - if (oldcwd) { - vfs_ChDir(conn, oldcwd); + if (oldcwd_fname) { + vfs_ChDir(conn, oldcwd_fname); + TALLOC_FREE(oldcwd_fname); } if (conn) { @@ -2577,7 +2567,6 @@ error_exit: conn_free(conn); } - done: TALLOC_FREE(smb_fname); return werr; |