]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: Move srvstr_get_path* to smb2_reply.c
authorDavid Mulder <dmulder@suse.com>
Tue, 15 Mar 2022 22:32:34 +0000 (16:32 -0600)
committerJeremy Allison <jra@samba.org>
Thu, 7 Apr 2022 17:37:29 +0000 (17:37 +0000)
Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/proto.h
source3/smbd/reply.c
source3/smbd/smb2_reply.c

index 6cc980eab6f2838ed95ebfb8ba073962f3fd3356..978e98eb1ea54d6eb990042fa8efc0c3f902d5f3 100644 (file)
@@ -912,25 +912,6 @@ bool disk_quotas(connection_struct *conn, struct smb_filename *fname,
 
 /* The following definitions come from smbd/reply.c  */
 
-size_t srvstr_get_path(TALLOC_CTX *ctx,
-                       const char *inbuf,
-                       uint16_t smb_flags2,
-                       char **pp_dest,
-                       const char *src,
-                       size_t src_len,
-                       int flags,
-                       NTSTATUS *err);
-size_t srvstr_get_path_posix(TALLOC_CTX *ctx,
-                       const char *inbuf,
-                       uint16_t smb_flags2,
-                       char **pp_dest,
-                       const char *src,
-                       size_t src_len,
-                       int flags,
-                       NTSTATUS *err);
-size_t srvstr_get_path_req(TALLOC_CTX *mem_ctx, struct smb_request *req,
-                          char **pp_dest, const char *src, int flags,
-                          NTSTATUS *err);
 size_t srvstr_pull_req_talloc(TALLOC_CTX *ctx, struct smb_request *req,
                              char **dest, const uint8_t *src, int flags);
 bool check_fsp_open(connection_struct *conn, struct smb_request *req,
@@ -1036,6 +1017,25 @@ void reply_getattrE(struct smb_request *req);
 
 NTSTATUS check_path_syntax(char *path);
 NTSTATUS check_path_syntax_posix(char *path);
+size_t srvstr_get_path(TALLOC_CTX *ctx,
+                       const char *inbuf,
+                       uint16_t smb_flags2,
+                       char **pp_dest,
+                       const char *src,
+                       size_t src_len,
+                       int flags,
+                       NTSTATUS *err);
+size_t srvstr_get_path_posix(TALLOC_CTX *ctx,
+                       const char *inbuf,
+                       uint16_t smb_flags2,
+                       char **pp_dest,
+                       const char *src,
+                       size_t src_len,
+                       int flags,
+                       NTSTATUS *err);
+size_t srvstr_get_path_req(TALLOC_CTX *mem_ctx, struct smb_request *req,
+                          char **pp_dest, const char *src, int flags,
+                          NTSTATUS *err);
 
 /* The following definitions come from smbd/seal.c  */
 
index 8b216681e2fcf702bbc9fc8fe75bd6254eb63d51..2ec4149c2f876290757cba983b557a118c7cbe1a 100644 (file)
 #include "source3/printing/rap_jobid.h"
 #include "source3/lib/substitute.h"
 
-/****************************************************************************
- Pull a string and check the path allowing a wildcard - provide for error return.
- Passes in posix flag.
-****************************************************************************/
-
-static size_t srvstr_get_path_internal(TALLOC_CTX *ctx,
-                       const char *base_ptr,
-                       uint16_t smb_flags2,
-                       char **pp_dest,
-                       const char *src,
-                       size_t src_len,
-                       int flags,
-                       bool posix_pathnames,
-                       NTSTATUS *err)
-{
-       size_t ret;
-
-       *pp_dest = NULL;
-
-       ret = srvstr_pull_talloc(ctx, base_ptr, smb_flags2, pp_dest, src,
-                                src_len, flags);
-
-       if (!*pp_dest) {
-               *err = NT_STATUS_INVALID_PARAMETER;
-               return ret;
-       }
-
-       if (smb_flags2 & FLAGS2_DFS_PATHNAMES) {
-               /*
-                * For a DFS path the function parse_dfs_path()
-                * will do the path processing, just make a copy.
-                */
-               *err = NT_STATUS_OK;
-               return ret;
-       }
-
-       if (posix_pathnames) {
-               *err = check_path_syntax_posix(*pp_dest);
-       } else {
-               *err = check_path_syntax(*pp_dest);
-       }
-
-       return ret;
-}
-
-/****************************************************************************
- Pull a string and check the path - provide for error return.
-****************************************************************************/
-
-size_t srvstr_get_path(TALLOC_CTX *ctx,
-                       const char *base_ptr,
-                       uint16_t smb_flags2,
-                       char **pp_dest,
-                       const char *src,
-                       size_t src_len,
-                       int flags,
-                       NTSTATUS *err)
-{
-       return srvstr_get_path_internal(ctx,
-                       base_ptr,
-                       smb_flags2,
-                       pp_dest,
-                       src,
-                       src_len,
-                       flags,
-                       false,
-                       err);
-}
-
-/****************************************************************************
- Pull a string and check the path - provide for error return.
- posix_pathnames version.
-****************************************************************************/
-
-size_t srvstr_get_path_posix(TALLOC_CTX *ctx,
-                       const char *base_ptr,
-                       uint16_t smb_flags2,
-                       char **pp_dest,
-                       const char *src,
-                       size_t src_len,
-                       int flags,
-                       NTSTATUS *err)
-{
-       return srvstr_get_path_internal(ctx,
-                       base_ptr,
-                       smb_flags2,
-                       pp_dest,
-                       src,
-                       src_len,
-                       flags,
-                       true,
-                       err);
-}
-
-
-size_t srvstr_get_path_req(TALLOC_CTX *mem_ctx, struct smb_request *req,
-                                char **pp_dest, const char *src, int flags,
-                                NTSTATUS *err)
-{
-       ssize_t bufrem = smbreq_bufrem(req, src);
-
-       if (bufrem < 0) {
-               *err = NT_STATUS_INVALID_PARAMETER;
-               return 0;
-       }
-
-       if (req->posix_pathnames) {
-               return srvstr_get_path_internal(mem_ctx,
-                               (const char *)req->inbuf,
-                               req->flags2,
-                               pp_dest,
-                               src,
-                               bufrem,
-                               flags,
-                               true,
-                               err);
-       } else {
-               return srvstr_get_path_internal(mem_ctx,
-                               (const char *)req->inbuf,
-                               req->flags2,
-                               pp_dest,
-                               src,
-                               bufrem,
-                               flags,
-                               false,
-                               err);
-       }
-}
-
 /**
  * pull a string from the smb_buf part of a packet. In this case the
  * string can either be null terminated or it can be terminated by the
index ba5ad648fea73cdba64d7961620dedb952701379..4048284990eb2be4ed1d1f1f13cd722e844980be 100644 (file)
@@ -243,3 +243,132 @@ NTSTATUS check_path_syntax_posix(char *path)
 {
        return check_path_syntax_internal(path, true);
 }
+
+/****************************************************************************
+ Pull a string and check the path allowing a wildcard - provide for error return.
+ Passes in posix flag.
+****************************************************************************/
+
+static size_t srvstr_get_path_internal(TALLOC_CTX *ctx,
+                       const char *base_ptr,
+                       uint16_t smb_flags2,
+                       char **pp_dest,
+                       const char *src,
+                       size_t src_len,
+                       int flags,
+                       bool posix_pathnames,
+                       NTSTATUS *err)
+{
+       size_t ret;
+
+       *pp_dest = NULL;
+
+       ret = srvstr_pull_talloc(ctx, base_ptr, smb_flags2, pp_dest, src,
+                                src_len, flags);
+
+       if (!*pp_dest) {
+               *err = NT_STATUS_INVALID_PARAMETER;
+               return ret;
+       }
+
+       if (smb_flags2 & FLAGS2_DFS_PATHNAMES) {
+               /*
+                * For a DFS path the function parse_dfs_path()
+                * will do the path processing, just make a copy.
+                */
+               *err = NT_STATUS_OK;
+               return ret;
+       }
+
+       if (posix_pathnames) {
+               *err = check_path_syntax_posix(*pp_dest);
+       } else {
+               *err = check_path_syntax(*pp_dest);
+       }
+
+       return ret;
+}
+
+/****************************************************************************
+ Pull a string and check the path - provide for error return.
+****************************************************************************/
+
+size_t srvstr_get_path(TALLOC_CTX *ctx,
+                       const char *base_ptr,
+                       uint16_t smb_flags2,
+                       char **pp_dest,
+                       const char *src,
+                       size_t src_len,
+                       int flags,
+                       NTSTATUS *err)
+{
+       return srvstr_get_path_internal(ctx,
+                       base_ptr,
+                       smb_flags2,
+                       pp_dest,
+                       src,
+                       src_len,
+                       flags,
+                       false,
+                       err);
+}
+
+/****************************************************************************
+ Pull a string and check the path - provide for error return.
+ posix_pathnames version.
+****************************************************************************/
+
+size_t srvstr_get_path_posix(TALLOC_CTX *ctx,
+                       const char *base_ptr,
+                       uint16_t smb_flags2,
+                       char **pp_dest,
+                       const char *src,
+                       size_t src_len,
+                       int flags,
+                       NTSTATUS *err)
+{
+       return srvstr_get_path_internal(ctx,
+                       base_ptr,
+                       smb_flags2,
+                       pp_dest,
+                       src,
+                       src_len,
+                       flags,
+                       true,
+                       err);
+}
+
+
+size_t srvstr_get_path_req(TALLOC_CTX *mem_ctx, struct smb_request *req,
+                                char **pp_dest, const char *src, int flags,
+                                NTSTATUS *err)
+{
+       ssize_t bufrem = smbreq_bufrem(req, src);
+
+       if (bufrem < 0) {
+               *err = NT_STATUS_INVALID_PARAMETER;
+               return 0;
+       }
+
+       if (req->posix_pathnames) {
+               return srvstr_get_path_internal(mem_ctx,
+                               (const char *)req->inbuf,
+                               req->flags2,
+                               pp_dest,
+                               src,
+                               bufrem,
+                               flags,
+                               true,
+                               err);
+       } else {
+               return srvstr_get_path_internal(mem_ctx,
+                               (const char *)req->inbuf,
+                               req->flags2,
+                               pp_dest,
+                               src,
+                               bufrem,
+                               flags,
+                               false,
+                               err);
+       }
+}