From: Jeremy Allison Date: Fri, 1 May 2020 17:18:08 +0000 (-0700) Subject: s3: smbd: Add a dirfsp parameter to smbd_calculate_maximum_allowed_access(). X-Git-Tag: ldb-2.2.0~760 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=29cbfd0ba39505ae51442b086fe58bda38c54a69;p=thirdparty%2Fsamba.git s3: smbd: Add a dirfsp parameter to smbd_calculate_maximum_allowed_access(). Not yet used. Currently always conn->cwd_fsp. Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme Autobuild-User(master): Ralph Böhme Autobuild-Date(master): Mon May 4 15:33:09 UTC 2020 on sn-devel-184 --- diff --git a/source3/smbd/open.c b/source3/smbd/open.c index e24a8614c83..5f612533267 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -3031,6 +3031,7 @@ static void schedule_async_open(struct smb_request *req) static NTSTATUS smbd_calculate_maximum_allowed_access( connection_struct *conn, + struct files_struct *dirfsp, const struct smb_filename *smb_fname, bool use_privs, uint32_t *p_access_mask) @@ -3039,6 +3040,8 @@ static NTSTATUS smbd_calculate_maximum_allowed_access( uint32_t access_granted; NTSTATUS status; + SMB_ASSERT(dirfsp == conn->cwd_fsp); + if (!use_privs && (get_current_uid(conn) == (uid_t)0)) { *p_access_mask |= FILE_GENERIC_ALL; return NT_STATUS_OK; @@ -3131,6 +3134,7 @@ NTSTATUS smbd_calculate_access_mask(connection_struct *conn, if (access_mask & MAXIMUM_ALLOWED_ACCESS) { status = smbd_calculate_maximum_allowed_access(conn, + dirfsp, smb_fname, use_privs, &access_mask);