Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@

ERC-721 integrators that interpret contract state from events should make sure that they implement the clearing of approval that is implicit in every transfer according to the EIP. Previous versions of OpenZeppellin Contracts emitted an explicit `Approval` event even though it was not required by the specification, and this is no longer the case.

## 4.7.2

* `LibArbitrumL2`, `CrossChainEnabledArbitrumL2`: Fixed detection of cross-chain calls for EOAs. Previously, calls from EOAs would be classified as cross-chain calls. ([#3578](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3578))

## 4.7.1

* `SignatureChecker`: Fix an issue that causes `isValidSignatureNow` to revert when the target contract returns ill-encoded data. ([#3552](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3552))
Expand Down
7 changes: 2 additions & 5 deletions contracts/crosschain/arbitrum/LibArbitrumL2.sol
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ library LibArbitrumL2 {
address public constant ARBSYS = 0x0000000000000000000000000000000000000064;

function isCrossChain(address arbsys) internal view returns (bool) {
return ArbitrumL2_Bridge(arbsys).isTopLevelCall();
return ArbitrumL2_Bridge(arbsys).wasMyCallersAddressAliased();
}

/**
Expand All @@ -35,9 +35,6 @@ library LibArbitrumL2 {
function crossChainSender(address arbsys) internal view returns (address) {
if (!isCrossChain(arbsys)) revert NotCrossChainCall();

return
ArbitrumL2_Bridge(arbsys).wasMyCallersAddressAliased()
? ArbitrumL2_Bridge(arbsys).myCallersAddressWithoutAliasing()
: msg.sender;
return ArbitrumL2_Bridge(arbsys).myCallersAddressWithoutAliasing();
}
}
6 changes: 1 addition & 5 deletions contracts/mocks/crosschain/bridges.sol
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,10 @@ contract BridgeArbitrumL1Outbox {
}

contract BridgeArbitrumL2Mock is BaseRelayMock {
function isTopLevelCall() public view returns (bool) {
function wasMyCallersAddressAliased() public view returns (bool) {
return _currentSender != address(0);
}

function wasMyCallersAddressAliased() public pure returns (bool) {
return true;
}

function myCallersAddressWithoutAliasing() public view returns (address) {
return _currentSender;
}
Expand Down