diff --git a/qubes/api/__init__.py b/qubes/api/__init__.py index 43472346..aaae4b02 100644 --- a/qubes/api/__init__.py +++ b/qubes/api/__init__.py @@ -118,20 +118,21 @@ class AbstractQubesAPI: #: :py:class:`qubes.Qubes` object self.app = app - #: source qube - self.src = self.app.domains[src.decode('ascii')] - try: + vm = src.decode('ascii') + #: source qube + self.src = self.app.domains[vm] + + vm = dest.decode('ascii') #: destination qube - self.dest = self.app.domains[dest.decode('ascii')] + self.dest = self.app.domains[vm] except KeyError: # normally this should filtered out by qrexec policy, but there are # two cases it might not be: # 1. The call comes from dom0, which bypasses qrexec policy # 2. Domain was removed between checking the policy and here - # For uniform handling on the client side, treat this as permission - # denied error too - raise PermissionDenied + # we inform the client accordingly + raise qubes.exc.QubesVMNotFoundError(vm) #: argument self.arg = arg.decode('ascii')