Third part of fix for bug #8663 - deleting a symlink fails if the symlink target...
authorJeremy Allison <jra@samba.org>
Fri, 16 Dec 2011 00:55:32 +0000 (16:55 -0800)
committerJeremy Allison <jra@samba.org>
Fri, 16 Dec 2011 02:32:15 +0000 (03:32 +0100)
smbd_check_access_rights() - we can always delete a symlink.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Fri Dec 16 03:32:15 CET 2011 on sn-devel-104

source3/smbd/open.c

index 5abc64dc99d5027347c47dea3dec8434d094df4b..9174388a8b4e270bf13ba7704e61d633e4714882 100644 (file)
@@ -99,6 +99,14 @@ NTSTATUS smbd_check_access_rights(struct connection_struct *conn,
                return NT_STATUS_OK;
        }
 
+       if (access_mask == DELETE_ACCESS && S_ISLNK(smb_fname->st.st_ex_mode)) {
+               /* We can always delete a symlink. */
+               DEBUG(10,("smbd_check_access_rights: not checking ACL "
+                       "on DELETE_ACCESS on symlink %s.\n",
+                       smb_fname_str_dbg(smb_fname) ));
+               return NT_STATUS_OK;
+       }
+
        status = SMB_VFS_GET_NT_ACL(conn, smb_fname->base_name,
                        (SECINFO_OWNER |
                        SECINFO_GROUP |