1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-27 03:21:53 +03:00

s3: smbd: Switch get_referred_path() over to use the new dfs_path_lookup().

New function doesn't need a TWRP argument and returns NT_STATUS_OK
on successful redirect, not NT_STATUS_PATH_NOT_COVERED.

Comment out the old dfs_path_lookup().

There are now no more users of unix_convert().

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15144

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
This commit is contained in:
Jeremy Allison 2022-08-09 12:11:07 -07:00
parent 22d4f62537
commit 88e8bfec59

View File

@ -713,7 +713,6 @@ bool is_msdfs_link(struct files_struct *dirfsp,
return (NT_STATUS_IS_OK(status)); return (NT_STATUS_IS_OK(status));
} }
#if 0
/***************************************************************** /*****************************************************************
Used by other functions to decide if a dfs path is remote, Used by other functions to decide if a dfs path is remote,
and to get the list of referred locations for that remote path. and to get the list of referred locations for that remote path.
@ -972,8 +971,8 @@ static NTSTATUS dfs_path_lookup(TALLOC_CTX *ctx,
TALLOC_FREE(canon_dfspath); TALLOC_FREE(canon_dfspath);
return status; return status;
} }
#endif
#if 0
/***************************************************************** /*****************************************************************
Used by other functions to decide if a dfs path is remote, Used by other functions to decide if a dfs path is remote,
and to get the list of referred locations for that remote path. and to get the list of referred locations for that remote path.
@ -1162,6 +1161,7 @@ static NTSTATUS dfs_path_lookup(TALLOC_CTX *ctx,
TALLOC_FREE(smb_fname); TALLOC_FREE(smb_fname);
return status; return status;
} }
#endif
/***************************************************************** /*****************************************************************
Decides if a dfs pathname should be redirected or not. Decides if a dfs pathname should be redirected or not.
@ -1420,40 +1420,21 @@ NTSTATUS get_referred_path(TALLOC_CTX *ctx,
} }
} }
/* If this is a DFS path dfs_lookup should return
* NT_STATUS_PATH_NOT_COVERED. */
status = dfs_path_lookup(ctx, status = dfs_path_lookup(ctx,
conn, conn,
dfs_path, dfs_path,
reqpath, reqpath,
0, /* ucf_flags */ 0, /* ucf_flags */
NULL,
consumedcntp, consumedcntp,
&jucn->referral_list, &jucn->referral_list,
&jucn->referral_count); &jucn->referral_count);
if (!NT_STATUS_EQUAL(status, NT_STATUS_PATH_NOT_COVERED)) { if (!NT_STATUS_IS_OK(status)) {
DEBUG(3,("get_referred_path: No valid referrals for path %s\n", DBG_NOTICE("No valid referrals for path %s (%s)\n",
dfs_path)); dfs_path,
if (NT_STATUS_IS_OK(status)) { nt_errstr(status));
/*
* We are in an error path here (we
* know it's not a DFS path), but
* dfs_path_lookup() can return
* NT_STATUS_OK. Ensure we always
* return a valid error code.
*
* #9588 - ACLs are not inherited to directories
* for DFS shares.
*/
status = NT_STATUS_NOT_FOUND;
}
goto err_exit;
} }
status = NT_STATUS_OK;
err_exit:
TALLOC_FREE(frame); TALLOC_FREE(frame);
return status; return status;
} }