mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
smbd: Pass "dirfsp" and "smb_fname" to reopen_from_fsp()
Lift the conn->cwd_fsp reference one level, we might want to pass in a real dirfsp in the future. Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
This commit is contained in:
parent
0fedcf5939
commit
e316f82bb7
@ -1241,7 +1241,9 @@ static NTSTATUS reopen_from_procfd(struct files_struct *fsp,
|
|||||||
return NT_STATUS_OK;
|
return NT_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NTSTATUS reopen_from_fsp(struct files_struct *fsp,
|
static NTSTATUS reopen_from_fsp(struct files_struct *dirfsp,
|
||||||
|
struct smb_filename *smb_fname,
|
||||||
|
struct files_struct *fsp,
|
||||||
int flags,
|
int flags,
|
||||||
mode_t mode,
|
mode_t mode,
|
||||||
bool *p_file_created)
|
bool *p_file_created)
|
||||||
@ -1277,8 +1279,8 @@ static NTSTATUS reopen_from_fsp(struct files_struct *fsp,
|
|||||||
fsp->fsp_flags.is_pathref = false;
|
fsp->fsp_flags.is_pathref = false;
|
||||||
|
|
||||||
status = fd_open_atomic(
|
status = fd_open_atomic(
|
||||||
fsp->conn->cwd_fsp,
|
dirfsp,
|
||||||
fsp->fsp_name,
|
smb_fname,
|
||||||
fsp,
|
fsp,
|
||||||
flags,
|
flags,
|
||||||
mode,
|
mode,
|
||||||
@ -1472,7 +1474,9 @@ static NTSTATUS open_file(files_struct *fsp,
|
|||||||
* Actually do the open - if O_TRUNC is needed handle it
|
* Actually do the open - if O_TRUNC is needed handle it
|
||||||
* below under the share mode lock.
|
* below under the share mode lock.
|
||||||
*/
|
*/
|
||||||
status = reopen_from_fsp(fsp,
|
status = reopen_from_fsp(fsp->conn->cwd_fsp,
|
||||||
|
fsp->fsp_name,
|
||||||
|
fsp,
|
||||||
local_flags & ~O_TRUNC,
|
local_flags & ~O_TRUNC,
|
||||||
unx_mode,
|
unx_mode,
|
||||||
p_file_created);
|
p_file_created);
|
||||||
@ -4646,7 +4650,13 @@ static NTSTATUS open_directory(connection_struct *conn,
|
|||||||
FILE_ADD_SUBDIRECTORY;
|
FILE_ADD_SUBDIRECTORY;
|
||||||
|
|
||||||
if (access_mask & need_fd_access) {
|
if (access_mask & need_fd_access) {
|
||||||
status = reopen_from_fsp(fsp, O_RDONLY | O_DIRECTORY, 0, NULL);
|
status = reopen_from_fsp(
|
||||||
|
fsp->conn->cwd_fsp,
|
||||||
|
fsp->fsp_name,
|
||||||
|
fsp,
|
||||||
|
O_RDONLY | O_DIRECTORY,
|
||||||
|
0,
|
||||||
|
NULL);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
DBG_INFO("Could not open fd for [%s]: %s\n",
|
DBG_INFO("Could not open fd for [%s]: %s\n",
|
||||||
smb_fname_str_dbg(smb_dname),
|
smb_fname_str_dbg(smb_dname),
|
||||||
|
Loading…
Reference in New Issue
Block a user