From c005de07aee30307c9d584130ec825bd7097961b Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 2 Jan 2023 16:35:16 +0100 Subject: [PATCH] smbd: list reparse tag in QUERY_DIRECTORY Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Tue Jun 4 17:39:21 UTC 2024 on atb-devel-224 --- selftest/knownfail.d/reparse | 1 - source3/smbd/smb2_trans2.c | 12 ++++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/selftest/knownfail.d/reparse b/selftest/knownfail.d/reparse index 0e6654b2084..11d094aa5c6 100644 --- a/selftest/knownfail.d/reparse +++ b/selftest/knownfail.d/reparse @@ -1,3 +1,2 @@ ^samba.tests.reparsepoints.samba.tests.reparsepoints.ReparsePoints.test_create_reparse_directory ^samba.tests.reparsepoints.samba.tests.reparsepoints.ReparsePoints.test_create_reparse_nonempty_directory -^samba.tests.reparsepoints.samba.tests.reparsepoints.ReparsePoints.test_query_dir_reparse diff --git a/source3/smbd/smb2_trans2.c b/source3/smbd/smb2_trans2.c index 3c44a97d74c..65940295248 100644 --- a/source3/smbd/smb2_trans2.c +++ b/source3/smbd/smb2_trans2.c @@ -1064,11 +1064,15 @@ static bool smbd_dirptr_lanman2_match_fn(TALLOC_CTX *ctx, static uint32_t get_dirent_ea_size(uint32_t mode, files_struct *fsp) { - if (!(mode & FILE_ATTRIBUTE_REPARSE_POINT)) { - unsigned ea_size = estimate_ea_size(fsp); - return ea_size; + uint32_t ea_size = IO_REPARSE_TAG_DFS; + + if (mode & FILE_ATTRIBUTE_REPARSE_POINT) { + (void)fsctl_get_reparse_tag(fsp, &ea_size); + } else { + ea_size = estimate_ea_size(fsp); } - return IO_REPARSE_TAG_DFS; + + return ea_size; } static NTSTATUS smbd_marshall_dir_entry(TALLOC_CTX *ctx, -- 2.47.3