예제 #1
0
파일: vfs_gpfs.c 프로젝트: gojdic/samba
static NTSTATUS gpfsacl_get_nt_acl(vfs_handle_struct *handle,
	const char *name,
	uint32 security_info, SEC_DESC **ppdesc)
{
	SMB4ACL_T *pacl = NULL;
	int	result;

	*ppdesc = NULL;
	result = gpfs_get_nfs4_acl(name, &pacl);

	if (result == 0)
		return smb_get_nt_acl_nfs4(handle->conn, name, security_info, ppdesc, pacl);

	if (result > 0) {
		DEBUG(10, ("retrying with posix acl...\n"));
		return posix_get_nt_acl(handle->conn, name, security_info, ppdesc);
	}

	/* GPFS ACL was not read, something wrong happened, error code is set in errno */
	return map_nt_error_from_unix(errno);
}
예제 #2
0
파일: vfs_aixacl2.c 프로젝트: Arkhont/samba
static NTSTATUS aixjfs2_get_nt_acl(vfs_handle_struct *handle,
	const char *name,
	uint32 security_info, struct security_descriptor **ppdesc)
{
	SMB4ACL_T *pacl = NULL;
	bool	result;
	bool	retryPosix = False;

	*ppdesc = NULL;
	result = aixjfs2_get_nfs4_acl(name, &pacl, &retryPosix);
	if (retryPosix)
	{
		DEBUG(10, ("retrying with posix acl...\n"));
		return posix_get_nt_acl(handle->conn, name, security_info,
					ppdesc);
	}
	if (result==False)
		return NT_STATUS_ACCESS_DENIED;

	return smb_get_nt_acl_nfs4(handle->conn, name, security_info, ppdesc,
				   pacl);
}