From 50014b93e08fe768f8496a00739f6d83800bab91 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 24 May 2017 11:45:35 -0700 Subject: [PATCH] s3: VFS: Catia: Ensure path name is also converted. https://bugzilla.samba.org/show_bug.cgi?id=12804 Signed-off-by: Jeremy Allison --- source3/modules/vfs_catia.c | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/source3/modules/vfs_catia.c b/source3/modules/vfs_catia.c index 9a28371..972f51a 100644 --- a/source3/modules/vfs_catia.c +++ b/source3/modules/vfs_catia.c @@ -1316,19 +1316,29 @@ catia_getxattr(vfs_handle_struct *handle, const char *path, const char *name, void *value, size_t size) { char *mapped_name = NULL; + char *mapped_ea_name = NULL; NTSTATUS status; ssize_t ret; status = catia_string_replace_allocate(handle->conn, - name, &mapped_name, vfs_translate_to_unix); + path, &mapped_name, vfs_translate_to_unix); if (!NT_STATUS_IS_OK(status)) { errno = map_errno_from_nt_status(status); return -1; } + status = catia_string_replace_allocate(handle->conn, + name, &mapped_ea_name, vfs_translate_to_unix); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(mapped_name); + errno = map_errno_from_nt_status(status); + return -1; + } - ret = SMB_VFS_NEXT_GETXATTR(handle, path, mapped_name, value, size); + ret = SMB_VFS_NEXT_GETXATTR(handle, mapped_name, + mapped_ea_name, value, size); TALLOC_FREE(mapped_name); + TALLOC_FREE(mapped_ea_name); return ret; } @@ -1360,19 +1370,28 @@ catia_removexattr(vfs_handle_struct *handle, const char *path, const char *name) { char *mapped_name = NULL; + char *mapped_ea_name = NULL; NTSTATUS status; ssize_t ret; status = catia_string_replace_allocate(handle->conn, - name, &mapped_name, vfs_translate_to_unix); + path, &mapped_name, vfs_translate_to_unix); if (!NT_STATUS_IS_OK(status)) { errno = map_errno_from_nt_status(status); return -1; } + status = catia_string_replace_allocate(handle->conn, + name, &mapped_ea_name, vfs_translate_to_unix); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(mapped_name); + errno = map_errno_from_nt_status(status); + return -1; + } - ret = SMB_VFS_NEXT_REMOVEXATTR(handle, path, mapped_name); + ret = SMB_VFS_NEXT_REMOVEXATTR(handle, mapped_name, mapped_ea_name); TALLOC_FREE(mapped_name); + TALLOC_FREE(mapped_ea_name); return ret; } @@ -1383,19 +1402,29 @@ catia_setxattr(vfs_handle_struct *handle, const char *path, int flags) { char *mapped_name = NULL; + char *mapped_ea_name = NULL; NTSTATUS status; ssize_t ret; status = catia_string_replace_allocate(handle->conn, - name, &mapped_name, vfs_translate_to_unix); + path, &mapped_name, vfs_translate_to_unix); if (!NT_STATUS_IS_OK(status)) { errno = map_errno_from_nt_status(status); return -1; } + status = catia_string_replace_allocate(handle->conn, + name, &mapped_ea_name, vfs_translate_to_unix); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(mapped_name); + errno = map_errno_from_nt_status(status); + return -1; + } - ret = SMB_VFS_NEXT_SETXATTR(handle, path, mapped_name, value, size, flags); + ret = SMB_VFS_NEXT_SETXATTR(handle, mapped_name, mapped_ea_name, + value, size, flags); TALLOC_FREE(mapped_name); + TALLOC_FREE(mapped_ea_name); return ret; } -- 2.7.4