1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-27 14:04:05 +03:00

s3: VFS: streams_depot. Allow unlinkat to cope with dangling symlinks.

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

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(cherry picked from commit 295d7d026babe3cd5123d0f53adcb16868907f05)
(backported from commit 7a4173809a87350bc3580240232978042ec2ceca)
[pfilipen@redhat.com: code in 4.15 uses different variable name]
This commit is contained in:
Jeremy Allison 2021-10-25 12:01:58 -07:00 committed by Jule Anger
parent 67c85f0ce8
commit 37804062ea

View File

@ -739,6 +739,16 @@ static int streams_depot_unlink_internal(vfs_handle_struct *handle,
ret = SMB_VFS_NEXT_LSTAT(handle, smb_fname_base);
} else {
ret = SMB_VFS_NEXT_STAT(handle, smb_fname_base);
if (ret == -1 && (errno == ENOENT || errno == ELOOP)) {
if (VALID_STAT(smb_fname->st) &&
S_ISLNK(smb_fname->st.st_ex_mode)) {
/*
* Original name was a link - Could be
* trying to remove a dangling symlink.
*/
ret = SMB_VFS_NEXT_LSTAT(handle, smb_fname_base);
}
}
}
if (ret == -1) {