From cd7889deb8713f03d493acb93400270357e6f65e Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 7 Jul 2024 20:39:30 +0200 Subject: [PATCH] smbd: Report sockets as NFS style reparse points Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- selftest/knownfail.d/reparse | 1 - source3/modules/util_reparse.c | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/selftest/knownfail.d/reparse b/selftest/knownfail.d/reparse index 1b07b904c56..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_sock_reparse diff --git a/source3/modules/util_reparse.c b/source3/modules/util_reparse.c index d267cfb6f0c..9a2ae531e7f 100644 --- a/source3/modules/util_reparse.c +++ b/source3/modules/util_reparse.c @@ -120,6 +120,21 @@ static NTSTATUS fsctl_get_reparse_point_fifo(struct files_struct *fsp, fsp, &reparse_data, ctx, _out_data, max_out_len, _out_len); } +static NTSTATUS fsctl_get_reparse_point_sock(struct files_struct *fsp, + TALLOC_CTX *ctx, + uint8_t **_out_data, + uint32_t max_out_len, + uint32_t *_out_len) +{ + struct reparse_data_buffer reparse_data = { + .tag = IO_REPARSE_TAG_NFS, + .parsed.nfs.type = NFS_SPECFILE_SOCK, + }; + + return fsctl_get_reparse_point_int( + fsp, &reparse_data, ctx, _out_data, max_out_len, _out_len); +} + NTSTATUS fsctl_get_reparse_point(struct files_struct *fsp, TALLOC_CTX *mem_ctx, uint32_t *_reparse_tag, @@ -151,6 +166,11 @@ NTSTATUS fsctl_get_reparse_point(struct files_struct *fsp, status = fsctl_get_reparse_point_fifo( fsp, mem_ctx, &out_data, max_out_len, &out_len); break; + case S_IFSOCK: + DBG_DEBUG("%s is a socket\n", fsp_str_dbg(fsp)); + status = fsctl_get_reparse_point_sock( + fsp, mem_ctx, &out_data, max_out_len, &out_len); + break; default: break; } -- 2.47.3