summaryrefslogtreecommitdiff
path: root/source3/locking
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2011-12-13 16:01:59 +0100
committerVolker Lendecke <vlendec@samba.org>2011-12-13 17:27:26 +0100
commit34d58c9d92f852e908acb78e040c1a22ce1591c1 (patch)
tree753483751f4ab5cff59a58f9fde0e786719690b5 /source3/locking
parent2d2d72e479142ad7d1a40955793bcf63d5b4ee14 (diff)
downloadsamba-34d58c9d92f852e908acb78e040c1a22ce1591c1.tar.gz
samba-34d58c9d92f852e908acb78e040c1a22ce1591c1.tar.bz2
samba-34d58c9d92f852e908acb78e040c1a22ce1591c1.zip
s3: Move can_set_delete_on_close to smbd/
Diffstat (limited to 'source3/locking')
-rw-r--r--source3/locking/locking.c59
-rw-r--r--source3/locking/proto.h1
2 files changed, 0 insertions, 60 deletions
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index c1f99430ed..b0f719bb48 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -1182,65 +1182,6 @@ bool downgrade_share_oplock(struct share_mode_lock *lck, files_struct *fsp)
return True;
}
-/****************************************************************************
- Check if setting delete on close is allowed on this fsp.
-****************************************************************************/
-
-NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32 dosmode)
-{
- /*
- * Only allow delete on close for writable files.
- */
-
- if ((dosmode & FILE_ATTRIBUTE_READONLY) &&
- !lp_delete_readonly(SNUM(fsp->conn))) {
- DEBUG(10,("can_set_delete_on_close: file %s delete on close "
- "flag set but file attribute is readonly.\n",
- fsp_str_dbg(fsp)));
- return NT_STATUS_CANNOT_DELETE;
- }
-
- /*
- * Only allow delete on close for writable shares.
- */
-
- if (!CAN_WRITE(fsp->conn)) {
- DEBUG(10,("can_set_delete_on_close: file %s delete on "
- "close flag set but write access denied on share.\n",
- fsp_str_dbg(fsp)));
- return NT_STATUS_ACCESS_DENIED;
- }
-
- /*
- * Only allow delete on close for files/directories opened with delete
- * intent.
- */
-
- if (!(fsp->access_mask & DELETE_ACCESS)) {
- DEBUG(10,("can_set_delete_on_close: file %s delete on "
- "close flag set but delete access denied.\n",
- fsp_str_dbg(fsp)));
- return NT_STATUS_ACCESS_DENIED;
- }
-
- /* Don't allow delete on close for non-empty directories. */
- if (fsp->is_directory) {
- SMB_ASSERT(!is_ntfs_stream_smb_fname(fsp->fsp_name));
-
- /* Or the root of a share. */
- if (ISDOT(fsp->fsp_name->base_name)) {
- DEBUG(10,("can_set_delete_on_close: can't set delete on "
- "close for the root of a share.\n"));
- return NT_STATUS_ACCESS_DENIED;
- }
-
- return can_delete_directory(fsp->conn,
- fsp->fsp_name->base_name);
- }
-
- return NT_STATUS_OK;
-}
-
/*************************************************************************
Return a talloced copy of a struct security_unix_token. NULL on fail.
(Should this be in locking.c.... ?).
diff --git a/source3/locking/proto.h b/source3/locking/proto.h
index b7c8990b1a..5be8acc920 100644
--- a/source3/locking/proto.h
+++ b/source3/locking/proto.h
@@ -172,7 +172,6 @@ void del_deferred_open_entry(struct share_mode_lock *lck, uint64_t mid,
struct server_id pid);
bool remove_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
bool downgrade_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
-NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32 dosmode);
const struct security_unix_token *get_delete_on_close_token(struct share_mode_lock *lck, uint32_t name_hash);
void set_delete_on_close_lck(files_struct *fsp,
struct share_mode_lock *lck,