]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
vfs: Convert streams_xattr_get_name() to return 0/errno
authorVolker Lendecke <vl@samba.org>
Wed, 9 Oct 2024 09:17:20 +0000 (11:17 +0200)
committerRalph Boehme <slow@samba.org>
Tue, 12 Nov 2024 12:09:35 +0000 (12:09 +0000)
This function is pretty simple, this avoids a few calls to
map_errno_from_nt_status in the callers

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/modules/vfs_streams_xattr.c

index 572bd2960bab6528ba719df7198dbae0156907cd..bfa5113a53070ed62ea17ddf9e2556c216358465 100644 (file)
@@ -66,17 +66,19 @@ static ssize_t get_xattr_size_fsp(struct files_struct *fsp,
  * Given a stream name, populate xattr_name with the xattr name to use for
  * accessing the stream.
  */
-static NTSTATUS streams_xattr_get_name(vfs_handle_struct *handle,
-                                      TALLOC_CTX *ctx,
-                                      const char *stream_name,
-                                      char **xattr_name)
+static int streams_xattr_get_name(vfs_handle_struct *handle,
+                                 TALLOC_CTX *ctx,
+                                 const char *stream_name,
+                                 char **xattr_name)
 {
        size_t stream_name_len = strlen(stream_name);
        char *stype;
        struct streams_xattr_config *config;
 
-       SMB_VFS_HANDLE_GET_DATA(handle, config, struct streams_xattr_config,
-                               return NT_STATUS_UNSUCCESSFUL);
+       SMB_VFS_HANDLE_GET_DATA(handle,
+                               config,
+                               struct streams_xattr_config,
+                               return EACCES);
 
        SMB_ASSERT(stream_name[0] == ':');
        stream_name += 1;
@@ -102,7 +104,7 @@ static NTSTATUS streams_xattr_get_name(vfs_handle_struct *handle,
                 * We only support one stream type: "$DATA"
                 */
                if (strcasecmp_m(stype, ":$DATA") != 0) {
-                       return NT_STATUS_INVALID_PARAMETER;
+                       return EINVAL;
                }
 
                /* Split name and type */
@@ -115,18 +117,18 @@ static NTSTATUS streams_xattr_get_name(vfs_handle_struct *handle,
                                      stream_name,
                                      config->store_stream_type ? ":$DATA" : "");
        if (*xattr_name == NULL) {
-               return NT_STATUS_NO_MEMORY;
+               return ENOMEM;
        }
 
        DEBUG(10, ("xattr_name: %s, stream_name: %s\n", *xattr_name,
                   stream_name));
 
-       return NT_STATUS_OK;
+       return 0;
 }
 
 static bool streams_xattr_recheck(struct stream_io *sio)
 {
-       NTSTATUS status;
+       int ret;
        char *xattr_name = NULL;
 
        if (sio->fsp->fsp_name == sio->fsp_name_ptr) {
@@ -139,10 +141,11 @@ static bool streams_xattr_recheck(struct stream_io *sio)
                return false;
        }
 
-       status = streams_xattr_get_name(sio->handle, talloc_tos(),
-                                       sio->fsp->fsp_name->stream_name,
-                                       &xattr_name);
-       if (!NT_STATUS_IS_OK(status)) {
+       ret = streams_xattr_get_name(sio->handle,
+                                    talloc_tos(),
+                                    sio->fsp->fsp_name->stream_name,
+                                    &xattr_name);
+       if (ret != 0) {
                return false;
        }
 
@@ -212,6 +215,7 @@ static int streams_xattr_stat(vfs_handle_struct *handle,
                              struct smb_filename *smb_fname)
 {
        NTSTATUS status;
+       int ret;
        int result = -1;
        char *xattr_name = NULL;
        char *tmp_stream_name = NULL;
@@ -238,10 +242,12 @@ static int streams_xattr_stat(vfs_handle_struct *handle,
        }
 
        /* Derive the xattr name to lookup. */
-       status = streams_xattr_get_name(handle, talloc_tos(),
-                                       smb_fname->stream_name, &xattr_name);
-       if (!NT_STATUS_IS_OK(status)) {
-               errno = map_errno_from_nt_status(status);
+       ret = streams_xattr_get_name(handle,
+                                    talloc_tos(),
+                                    smb_fname->stream_name,
+                                    &xattr_name);
+       if (ret != 0) {
+               errno = ret;
                return -1;
        }
 
@@ -342,10 +348,12 @@ static int streams_xattr_openat(struct vfs_handle_struct *handle,
        SMB_ASSERT(fsp_is_alternate_stream(fsp));
        SMB_ASSERT(dirfsp == NULL);
 
-       status = streams_xattr_get_name(handle, talloc_tos(),
-                                       smb_fname->stream_name, &xattr_name);
-       if (!NT_STATUS_IS_OK(status)) {
-               errno = map_errno_from_nt_status(status);
+       ret = streams_xattr_get_name(handle,
+                                    talloc_tos(),
+                                    smb_fname->stream_name,
+                                    &xattr_name);
+       if (ret != 0) {
+               errno = ret;
                goto fail;
        }
 
@@ -488,10 +496,12 @@ static int streams_xattr_unlinkat(vfs_handle_struct *handle,
        /* A stream can never be rmdir'ed */
        SMB_ASSERT((flags & AT_REMOVEDIR) == 0);
 
-       status = streams_xattr_get_name(handle, talloc_tos(),
-                                       smb_fname->stream_name, &xattr_name);
-       if (!NT_STATUS_IS_OK(status)) {
-               errno = map_errno_from_nt_status(status);
+       ret = streams_xattr_get_name(handle,
+                                    talloc_tos(),
+                                    smb_fname->stream_name,
+                                    &xattr_name);
+       if (ret != 0) {
+               errno = ret;
                goto fail;
        }
 
@@ -580,18 +590,20 @@ static int streams_xattr_renameat(vfs_handle_struct *handle,
        }
 
        /* Get the xattr names. */
-       status = streams_xattr_get_name(handle, talloc_tos(),
-                                       smb_fname_src->stream_name,
-                                       &src_xattr_name);
-       if (!NT_STATUS_IS_OK(status)) {
-               errno = map_errno_from_nt_status(status);
+       ret = streams_xattr_get_name(handle,
+                                    talloc_tos(),
+                                    smb_fname_src->stream_name,
+                                    &src_xattr_name);
+       if (ret != 0) {
+               errno = ret;
                goto fail;
        }
-       status = streams_xattr_get_name(handle, talloc_tos(),
-                                       smb_fname_dst->stream_name,
-                                       &dst_xattr_name);
-       if (!NT_STATUS_IS_OK(status)) {
-               errno = map_errno_from_nt_status(status);
+       ret = streams_xattr_get_name(handle,
+                                    talloc_tos(),
+                                    smb_fname_dst->stream_name,
+                                    &dst_xattr_name);
+       if (ret != 0) {
+               errno = ret;
                goto fail;
        }