From: Jeremy Allison Date: Fri, 7 Feb 2014 18:19:26 +0000 (-0800) Subject: s3: modules: streaminfo: As we have no VFS function SMB_VFS_LLISTXATTR we can't cope... X-Git-Tag: samba-4.0.15~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c10bc8830df84797166742e3d628deb39ea59f26;p=thirdparty%2Fsamba.git s3: modules: streaminfo: As we have no VFS function SMB_VFS_LLISTXATTR we can't cope with a symlink when lp_posix_pathnames() is true. Fix bug : Bug 10429 - samba returns STATUS_OBJECT_NAME_NOT_FOUND when attempting to remove dangling symlink https://bugzilla.samba.org/show_bug.cgi?id=10429 Signed-off-by: Jeremy Allison Reviewed-by: Jeff Layton Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Sat Feb 8 00:01:16 CET 2014 on sn-devel-104 (cherry picked from commit 17adbbcad7e401dd544dfa76f7ec9aeb6a847381) Autobuild-User(v4-0-test): Karolin Seeger Autobuild-Date(v4-0-test): Fri Feb 14 22:35:40 CET 2014 on sn-devel-104 --- diff --git a/source3/modules/vfs_streams_depot.c b/source3/modules/vfs_streams_depot.c index 620a5807538..202cc78fe5e 100644 --- a/source3/modules/vfs_streams_depot.c +++ b/source3/modules/vfs_streams_depot.c @@ -892,8 +892,19 @@ static NTSTATUS streams_depot_streaminfo(vfs_handle_struct *handle, state.handle = handle; state.status = NT_STATUS_OK; - status = walk_streams(handle, smb_fname_base, NULL, collect_one_stream, + if (S_ISLNK(smb_fname_base->st.st_ex_mode)) { + /* + * Currently we do't have SMB_VFS_LLISTXATTR + * inside the VFS which means there's no way + * to cope with a symlink when lp_posix_pathnames(). + * returns true. For now ignore links. + * FIXME - by adding SMB_VFS_LLISTXATTR. JRA. + */ + status = NT_STATUS_OK; + } else { + status = walk_streams(handle, smb_fname_base, NULL, collect_one_stream, &state); + } if (!NT_STATUS_IS_OK(status)) { TALLOC_FREE(state.streams); diff --git a/source3/modules/vfs_streams_xattr.c b/source3/modules/vfs_streams_xattr.c index 6650021af17..c4d86ee6852 100644 --- a/source3/modules/vfs_streams_xattr.c +++ b/source3/modules/vfs_streams_xattr.c @@ -799,8 +799,19 @@ static NTSTATUS streams_xattr_streaminfo(vfs_handle_struct *handle, state.handle = handle; state.status = NT_STATUS_OK; - status = walk_xattr_streams(handle->conn, fsp, fname, + if (S_ISLNK(sbuf.st_ex_mode)) { + /* + * Currently we do't have SMB_VFS_LLISTXATTR + * inside the VFS which means there's no way + * to cope with a symlink when lp_posix_pathnames(). + * returns true. For now ignore links. + * FIXME - by adding SMB_VFS_LLISTXATTR. JRA. + */ + status = NT_STATUS_OK; + } else { + status = walk_xattr_streams(handle->conn, fsp, fname, collect_one_stream, &state); + } if (!NT_STATUS_IS_OK(status)) { TALLOC_FREE(state.streams);