]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Fix bug #8515 - Empty CIFS share can be blocked for other clients by deleting it...
authorVolodymyr Khomenko <Volodymyr_Khomenko@dell.com>
Wed, 12 Oct 2011 16:57:57 +0000 (09:57 -0700)
committerKarolin Seeger <kseeger@samba.org>
Sat, 15 Oct 2011 18:48:48 +0000 (20:48 +0200)
Disallow "." in can_set_delete_on_close().

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Wed Oct 12 21:07:27 CEST 2011 on sn-devel-104
(cherry picked from commit bd260f03ab492d03c2890db47dc6fb4f1b824a1a)
(cherry picked from commit 0953c4b9ebc06518920b9d49de16dfaeb7d69a35)

source3/locking/locking.c

index ba363501d8cb1bf64474d82fa2695d0604904ebb..ddd469de289f27df9c53310a3c00af17c9b9b6ce 100644 (file)
@@ -1459,6 +1459,14 @@ NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32 dosmode)
        /* 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);
        }