From f448c0e6db1384425e78531150aa1d3f6f8bd951 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 15 Dec 2011 16:33:37 -0800 Subject: [PATCH] Second part of fix for bug #8663 - deleting a symlink fails if the symlink target is outside of the share. Ensure we use UCF_UNIX_NAME_LOOKUP flags on filename_convert() when doing a UNIX infolevel in trans2setfilepathinfo(). --- source3/smbd/trans2.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 0126419393c..4417cb27e72 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -8007,6 +8007,7 @@ static void call_trans2setfilepathinfo(connection_struct *conn, } } else { char *fname = NULL; + uint32_t ucf_flags = 0; /* set path info */ if (total_params < 7) { @@ -8023,10 +8024,14 @@ static void call_trans2setfilepathinfo(connection_struct *conn, return; } + if (INFO_LEVEL_IS_UNIX(info_level)) { + ucf_flags |= UCF_UNIX_NAME_LOOKUP; + } + status = filename_convert(req, conn, req->flags2 & FLAGS2_DFS_PATHNAMES, fname, - 0, + ucf_flags, NULL, &smb_fname); if (!NT_STATUS_IS_OK(status)) { -- 2.34.1