From 3326ffa8d02b04abf91d1b5a03f18fbaf8fde633 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 7 Jul 2024 20:37:49 +0200 Subject: [PATCH] smbd: Factor out fsctl_get_reparse_point_int We'll use it for the other special files as well Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- source3/modules/util_reparse.c | 37 ++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/source3/modules/util_reparse.c b/source3/modules/util_reparse.c index b375cfa112a..d267cfb6f0c 100644 --- a/source3/modules/util_reparse.c +++ b/source3/modules/util_reparse.c @@ -73,20 +73,18 @@ fail: return status; } -static NTSTATUS fsctl_get_reparse_point_fifo(struct files_struct *fsp, - TALLOC_CTX *ctx, - uint8_t **_out_data, - uint32_t max_out_len, - uint32_t *_out_len) +static NTSTATUS fsctl_get_reparse_point_int( + struct files_struct *fsp, + const struct reparse_data_buffer *reparse_data, + 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_FIFO, - }; uint8_t *out_data = NULL; ssize_t out_len; - out_len = reparse_data_buffer_marshall(&reparse_data, NULL, 0); + out_len = reparse_data_buffer_marshall(reparse_data, NULL, 0); if (out_len == -1) { return NT_STATUS_INSUFFICIENT_RESOURCES; } @@ -99,9 +97,7 @@ static NTSTATUS fsctl_get_reparse_point_fifo(struct files_struct *fsp, return NT_STATUS_NO_MEMORY; } - reparse_data_buffer_marshall(&reparse_data, - out_data, - out_len); + reparse_data_buffer_marshall(reparse_data, out_data, out_len); *_out_data = out_data; *_out_len = out_len; @@ -109,6 +105,21 @@ static NTSTATUS fsctl_get_reparse_point_fifo(struct files_struct *fsp, return NT_STATUS_OK; } +static NTSTATUS fsctl_get_reparse_point_fifo(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_FIFO, + }; + + 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, -- 2.47.3