From 488716a979561ef3d12f4cc33f257b427eb7ea43 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 Reviewed-by: Ralph Boehme (cherry picked from commit fda1e701af804db81dcb3844921e9a327563bc5c) --- 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 0ee7c36a361..c6d8f584b5f 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.13.0.219.gdb65acc882-goog