From c5cbe481a759316be5d598123233cc859078d74a Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 15 Dec 2011 16:55:32 -0800 Subject: [PATCH] Third part of fix for bug #8663 - deleting a symlink fails if the symlink target is outside of the share. smbd_check_access_rights() - we can always delete a symlink. Autobuild-User: Jeremy Allison Autobuild-Date: Fri Dec 16 03:32:15 CET 2011 on sn-devel-104 --- source3/smbd/open.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source3/smbd/open.c b/source3/smbd/open.c index 5abc64dc99..9174388a8b 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -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 | -- 2.34.1