1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

s3: VFS: zfsacl: Ensure we use a pathref fd, not an io fd, for getting/setting ZFS ACLs.

Don't use path-based calls.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14685

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Böhme <slow@samba.org>

Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Tue Oct 12 18:14:27 UTC 2021 on sn-devel-184
This commit is contained in:
Jeremy Allison 2021-10-11 12:26:57 -07:00
parent 14db80fe61
commit 0a376b23db

View File

@ -235,13 +235,12 @@ static bool zfs_process_smbacl(vfs_handle_struct *handle, files_struct *fsp,
SMB_ASSERT(i == naces);
/* store acl */
fd = fsp_get_io_fd(fsp);
if (fd != -1) {
rv = facl(fd, ACE_SETACL, naces, acebuf);
}
else {
rv = acl(fsp->fsp_name->base_name, ACE_SETACL, naces, acebuf);
fd = fsp_get_pathref_fd(fsp);
if (fd == -1) {
errno = EBADF;
return false;
}
rv = facl(fd, ACE_SETACL, naces, acebuf);
if (rv != 0) {
if(errno == ENOSYS) {
DEBUG(9, ("acl(ACE_SETACL, %s): Operation is not "
@ -322,11 +321,11 @@ static int fget_zfsacl(TALLOC_CTX *mem_ctx,
ace_t *acebuf = NULL;
int fd;
fd = fsp_get_io_fd(fsp);
fd = fsp_get_pathref_fd(fsp);
if (fd == -1) {
return get_zfsacl(mem_ctx, fsp->fsp_name, outbuf);
errno = EBADF;
return -1;
}
naces = facl(fd, ACE_GETACLCNT, 0, NULL);
if (naces == -1) {
int dbg_level = 10;