From 3491f6d119d1f4c7e0a259a9993ce96783b77e23 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 8 Apr 2010 21:24:23 -0700 Subject: [PATCH] Simplify call_trans2qfilepathinfo() and smbd_do_qfilepathinfo() Remove the bool ms_dfs_link parameter from smbd_do_qfilepathinfo. It is not possible for this to be a DFS link. Remove the check_msdfs_link() call from call_trans2qfilepathinfo() - the call to filename_convert() above with a ucf_flags of zero *MUST* catch a DFS link and return NT_STATUS_PATH_NOT_COVERED in this case, so the code below checking for msdfs links is redundent. Don't add this to 3.5.x, as it's an optimization but not needed to fix bug #7339 - MSDFS is non-functional in 3.5.x. Jeremy. --- source3/smbd/globals.h | 1 - source3/smbd/smb2_getinfo.c | 2 -- source3/smbd/trans2.c | 21 ++++----------------- 3 files changed, 4 insertions(+), 20 deletions(-) diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index f9fd71ed751..033a77783a7 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -187,7 +187,6 @@ NTSTATUS smbd_do_qfilepathinfo(connection_struct *conn, struct smb_filename *smb_fname, bool delete_pending, struct timespec write_time_ts, - bool ms_dfs_link, struct ea_list *ea_list, int lock_data_count, char *lock_data, diff --git a/source3/smbd/smb2_getinfo.c b/source3/smbd/smb2_getinfo.c index 3b50ab9cd7a..3a8c07757e9 100644 --- a/source3/smbd/smb2_getinfo.c +++ b/source3/smbd/smb2_getinfo.c @@ -246,7 +246,6 @@ static struct tevent_req *smbd_smb2_getinfo_send(TALLOC_CTX *mem_ctx, struct ea_list *ea_list = NULL; int lock_data_count = 0; char *lock_data = NULL; - bool ms_dfs_link = false; NTSTATUS status; ZERO_STRUCT(write_time_ts); @@ -328,7 +327,6 @@ static struct tevent_req *smbd_smb2_getinfo_send(TALLOC_CTX *mem_ctx, fsp->fsp_name, delete_pending, write_time_ts, - ms_dfs_link, ea_list, lock_data_count, lock_data, diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 06b454ab397..991b6058e00 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -4154,7 +4154,6 @@ NTSTATUS smbd_do_qfilepathinfo(connection_struct *conn, struct smb_filename *smb_fname, bool delete_pending, struct timespec write_time_ts, - bool ms_dfs_link, struct ea_list *ea_list, int lock_data_count, char *lock_data, @@ -4189,12 +4188,7 @@ NTSTATUS smbd_do_qfilepathinfo(connection_struct *conn, smb_fname_str_dbg(smb_fname), fsp ? fsp->fnum : -1, info_level, max_data_bytes)); - if (ms_dfs_link) { - mode = dos_mode_msdfs(conn, smb_fname); - } else { - mode = dos_mode(conn, smb_fname); - } - + mode = dos_mode(conn, smb_fname); nlink = psbuf->st_ex_nlink; if (nlink && (mode&aDIR)) { @@ -4976,7 +4970,6 @@ static void call_trans2qfilepathinfo(connection_struct *conn, struct ea_list *ea_list = NULL; int lock_data_count = 0; char *lock_data = NULL; - bool ms_dfs_link = false; NTSTATUS status = NT_STATUS_OK; if (!params) { @@ -5188,14 +5181,8 @@ static void call_trans2qfilepathinfo(connection_struct *conn, return; } - } else if (!VALID_STAT(smb_fname->st) && - SMB_VFS_STAT(conn, smb_fname) && - (info_level != SMB_INFO_IS_NAME_VALID)) { - ms_dfs_link = check_msdfs_link(conn, - smb_fname->base_name, - &smb_fname->st); - - if (!ms_dfs_link) { + } else { + if (SMB_VFS_STAT(conn, smb_fname) != 0) { DEBUG(3,("call_trans2qfilepathinfo: " "SMB_VFS_STAT of %s failed (%s)\n", smb_fname_str_dbg(smb_fname), @@ -5319,7 +5306,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd status = smbd_do_qfilepathinfo(conn, req, info_level, fsp, smb_fname, delete_pending, write_time_ts, - ms_dfs_link, ea_list, + ea_list, lock_data_count, lock_data, req->flags2, max_data_bytes, ppdata, &data_size); -- 2.11.4.GIT