From 6503bb48ca3fb839e703f8a88a1ff8601cc7cacd Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 8 Jun 2021 11:40:11 -0700 Subject: [PATCH] s3: smbd: smbd_calculate_maximum_allowed_access_fsp(), add parent dirfsp parameter and pass to can_delete_file_in_directory(). Pass the same fsp->conn->cwd_fsp parameter to can_delete_file_in_directory() dirfsp for now. Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- source3/smbd/open.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source3/smbd/open.c b/source3/smbd/open.c index aea2eaf27b8..a2c25605cc8 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -3157,6 +3157,7 @@ static void schedule_async_open(struct smb_request *req) ****************************************************************************/ static NTSTATUS smbd_calculate_maximum_allowed_access_fsp( + struct files_struct *dirfsp, struct files_struct *fsp, bool use_privs, uint32_t *p_access_mask) @@ -3233,7 +3234,7 @@ static NTSTATUS smbd_calculate_maximum_allowed_access_fsp( if (!(access_granted & DELETE_ACCESS)) { if (can_delete_file_in_directory(fsp->conn, - fsp->conn->cwd_fsp, + dirfsp, fsp->fsp_name)) { *p_access_mask |= DELETE_ACCESS; } @@ -3266,7 +3267,9 @@ NTSTATUS smbd_calculate_access_mask_fsp(struct files_struct *fsp, /* Calculate MAXIMUM_ALLOWED_ACCESS if requested. */ if (access_mask & MAXIMUM_ALLOWED_ACCESS) { - status = smbd_calculate_maximum_allowed_access_fsp(fsp, + status = smbd_calculate_maximum_allowed_access_fsp( + fsp->conn->cwd_fsp, + fsp, use_privs, &access_mask); -- 2.47.3