]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: Factor out fsctl_get_reparse_point_int
authorVolker Lendecke <vl@samba.org>
Sun, 7 Jul 2024 18:37:49 +0000 (20:37 +0200)
committerJeremy Allison <jra@samba.org>
Fri, 12 Jul 2024 20:35:34 +0000 (20:35 +0000)
We'll use it for the other special files as well

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/modules/util_reparse.c

index b375cfa112af7122e5dab66d91d6b37794509ea3..d267cfb6f0c07c4fc92724f37864d617d6e6f632 100644 (file)
@@ -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,