From: Volker Lendecke Date: Wed, 9 Oct 2024 09:17:20 +0000 (+0200) Subject: vfs: Convert streams_xattr_get_name() to return 0/errno X-Git-Tag: tdb-1.4.13~544 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bea01e845c8df277b7fa8225a4079d43835d7e1c;p=thirdparty%2Fsamba.git vfs: Convert streams_xattr_get_name() to return 0/errno This function is pretty simple, this avoids a few calls to map_errno_from_nt_status in the callers Signed-off-by: Volker Lendecke Reviewed-by: Ralph Boehme --- diff --git a/source3/modules/vfs_streams_xattr.c b/source3/modules/vfs_streams_xattr.c index 572bd2960ba..bfa5113a530 100644 --- a/source3/modules/vfs_streams_xattr.c +++ b/source3/modules/vfs_streams_xattr.c @@ -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; }