diff --git a/src/PRBProxy.sol b/src/PRBProxy.sol index 0624f89..8fcd3ca 100644 --- a/src/PRBProxy.sol +++ b/src/PRBProxy.sol @@ -89,9 +89,11 @@ contract PRBProxy is IPRBProxy { /// @inheritdoc IPRBProxy function execute(address target, bytes calldata data) external payable override returns (bytes memory response) { // Check that the caller is either the owner or an envoy with permission. - bool permission = registry.getPermissionByOwner({ owner: owner, envoy: msg.sender, target: target }); - if (owner != msg.sender && !permission) { - revert PRBProxy_ExecutionUnauthorized({ owner: owner, caller: msg.sender, target: target }); + if (owner != msg.sender) { + bool permission = registry.getPermissionByOwner({ owner: owner, envoy: msg.sender, target: target }); + if (!permission) { + revert PRBProxy_ExecutionUnauthorized({ owner: owner, caller: msg.sender, target: target }); + } } // Delegate call to the target contract, and handle the response.