s3: smbd: Add a dirfsp parameter to smbd_calculate_access_mask().
authorJeremy Allison <jra@samba.org>
Fri, 1 May 2020 17:13:58 +0000 (10:13 -0700)
committerRalph Boehme <slow@samba.org>
Mon, 4 May 2020 13:55:34 +0000 (13:55 +0000)
Not yet used. Currently always conn->cwd_fsp.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/modules/vfs_fruit.c
source3/smbd/fake_file.c
source3/smbd/globals.h
source3/smbd/open.c
source3/smbd/smb2_create.c

index 86870f8f9cf50a930675c3844ccaeec4246f90e1..bdfb4f0ff45a7b60b2d7072e6d6714429c744c09 100644 (file)
@@ -4081,6 +4081,7 @@ static NTSTATUS fruit_readdir_attr(struct vfs_handle_struct *handle,
        } else {
                status = smbd_calculate_access_mask(
                        handle->conn,
+                       handle->conn->cwd_fsp,
                        fname,
                        false,
                        SEC_FLAG_MAXIMUM_ALLOWED,
index 9a87bad4812b4de887eb844fd5acbffd2b4b45d5..90921a65e36e931878933c166d9e765dd2317927 100644 (file)
@@ -132,6 +132,7 @@ NTSTATUS open_fake_file(struct smb_request *req, connection_struct *conn,
        NTSTATUS status;
 
        status = smbd_calculate_access_mask(conn,
+                                       conn->cwd_fsp,
                                        smb_fname,
                                        false,
                                        access_mask,
index 68a39e277fc9731eb7cf60849f44849f3f8eee7a..79086b3c81c9470903442df598e36b45c2f7bf62 100644 (file)
@@ -212,6 +212,7 @@ NTSTATUS smbd_dirptr_lanman2_entry(TALLOC_CTX *ctx,
                               struct file_id *file_id);
 
 NTSTATUS smbd_calculate_access_mask(connection_struct *conn,
+                       struct files_struct *dirfsp,
                        const struct smb_filename *smb_fname,
                        bool use_privs,
                        uint32_t access_mask,
index 2e32062dbbf8a7e057406b9b30e51b02f8e72aab..c842bb3fff497d5ad5cfc87c866e5ec4c8663654 100644 (file)
@@ -398,6 +398,7 @@ static NTSTATUS check_base_file_access(struct connection_struct *conn,
        NTSTATUS status;
 
        status = smbd_calculate_access_mask(conn,
+                                       conn->cwd_fsp,
                                        smb_fname,
                                        false,
                                        access_mask,
@@ -3102,6 +3103,7 @@ static NTSTATUS smbd_calculate_maximum_allowed_access(
 }
 
 NTSTATUS smbd_calculate_access_mask(connection_struct *conn,
+                       struct files_struct *dirfsp,
                        const struct smb_filename *smb_fname,
                        bool use_privs,
                        uint32_t access_mask,
@@ -3111,6 +3113,8 @@ NTSTATUS smbd_calculate_access_mask(connection_struct *conn,
        uint32_t orig_access_mask = access_mask;
        uint32_t rejected_share_access;
 
+       SMB_ASSERT(dirfsp == conn->cwd_fsp);
+
        if (access_mask & SEC_MASK_INVALID) {
                DBG_DEBUG("access_mask [%8x] contains invalid bits\n",
                          access_mask);
@@ -3507,6 +3511,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
        }
 
        status = smbd_calculate_access_mask(conn,
+                                       conn->cwd_fsp,
                                        smb_fname,
                                        false,
                                        access_mask,
@@ -4266,6 +4271,7 @@ static NTSTATUS open_directory(connection_struct *conn,
                 file_attributes);
 
        status = smbd_calculate_access_mask(conn,
+                                       conn->cwd_fsp,
                                        smb_dname,
                                        false,
                                        access_mask,
index 5fad0640ef4c7bb4c9b31adce4d2aaafb79dd31f..0418ca34f95086f67159b0946941c34c03a46c16 100644 (file)
@@ -1341,6 +1341,7 @@ static void smbd_smb2_create_after_exec(struct tevent_req *req)
                        DATA_BLOB blob = data_blob_const(p, sizeof(p));
 
                        status = smbd_calculate_access_mask(smb1req->conn,
+                                       smb1req->conn->cwd_fsp,
                                        state->result->fsp_name,
                                        false,
                                        SEC_FLAG_MAXIMUM_ALLOWED,