mirror of
https://github.com/samba-team/samba.git
synced 2025-03-22 02:50:28 +03:00
s3: smbd: In filename_convert_dirfsp_nosymlink(), in SMB1-only POSIX mode, allow a pathname referencing a symlink to be returned.
Doesn't contain a valid smb_fname->fsp pointer of course, and is only used by the SMB1 code to take a reference to a smylink name for manipulation (unlinkat, readlinkat etc.). Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
parent
6fd8f7fd18
commit
5249cb3d0f
@ -2907,6 +2907,28 @@ static NTSTATUS filename_convert_dirfsp_nosymlink(
|
||||
char *normalized = NULL;
|
||||
|
||||
if (VALID_STAT(smb_fname_rel->st)) {
|
||||
#if defined(WITH_SMB1SERVER)
|
||||
/*
|
||||
* In SMB1 posix mode, if this is a symlink,
|
||||
* allow access to the name with a NULL smb_fname->fsp.
|
||||
*/
|
||||
if (!conn->sconn->using_smb2 &&
|
||||
posix &&
|
||||
S_ISLNK(smb_fname_rel->st.st_ex_mode)) {
|
||||
SMB_ASSERT(smb_fname_rel->fsp == NULL);
|
||||
SMB_ASSERT(streamname == NULL);
|
||||
|
||||
smb_fname = full_path_from_dirfsp_atname(
|
||||
mem_ctx,
|
||||
smb_dirname->fsp,
|
||||
smb_fname_rel);
|
||||
if (smb_fname == NULL) {
|
||||
status = NT_STATUS_NO_MEMORY;
|
||||
goto fail;
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* NT_STATUS_OBJECT_NAME_NOT_FOUND is
|
||||
* misleading: The object exists but might be
|
||||
|
Loading…
x
Reference in New Issue
Block a user