char *acl_text;
int type;
struct smb_filename *smb_fname = NULL;
+ struct smb_filename *pathref_fname = NULL;
+ NTSTATUS status;
if (argc != 3) {
printf("Usage: sys_acl_get_file <path> <type>\n");
return NT_STATUS_NO_MEMORY;
}
type = atoi(argv[2]);
- acl = SMB_VFS_SYS_ACL_GET_FILE(vfs->conn, smb_fname,
+
+ status = synthetic_pathref(mem_ctx,
+ vfs->conn->cwd_fsp,
+ smb_fname->base_name,
+ NULL,
+ NULL,
+ smb_fname->twrp,
+ smb_fname->flags,
+ &pathref_fname);
+ if (!NT_STATUS_IS_OK(status)) {
+ TALLOC_FREE(smb_fname);
+ return status;
+ }
+
+ acl = SMB_VFS_SYS_ACL_GET_FD(pathref_fname->fsp,
type, talloc_tos());
if (!acl) {
- printf("sys_acl_get_file failed (%s)\n", strerror(errno));
+ printf("sys_acl_get_fd failed (%s)\n", strerror(errno));
+ TALLOC_FREE(smb_fname);
+ TALLOC_FREE(pathref_fname);
return NT_STATUS_UNSUCCESSFUL;
}
acl_text = sys_acl_to_text(acl, NULL);
printf("%s", acl_text);
TALLOC_FREE(acl);
+ TALLOC_FREE(smb_fname);
+ TALLOC_FREE(pathref_fname);
SAFE_FREE(acl_text);
return NT_STATUS_OK;
}