diff options
author | Jeremy Allison <jra@samba.org> | 2017-05-24 11:45:35 -0700 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2017-05-26 16:46:12 +0200 |
commit | fda1e701af804db81dcb3844921e9a327563bc5c (patch) | |
tree | 638765cc43d6fbadfd3c0cd20672e3ba6fd27db0 /source3 | |
parent | 986b98390491715014f9de7382b887902a8db347 (diff) | |
download | samba-fda1e701af804db81dcb3844921e9a327563bc5c.tar.gz |
s3: VFS: Catia: Ensure path name is also converted.
https://bugzilla.samba.org/show_bug.cgi?id=12804
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/modules/vfs_catia.c | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/source3/modules/vfs_catia.c b/source3/modules/vfs_catia.c index 9a283710fcb..972f51a5ba6 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; } |