Skip to content

Commit a374e39

Browse files
committed
Pedantry
1 parent 6828a3e commit a374e39

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/allowanceholder/AllowanceHolderContext.sol

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ abstract contract AllowanceHolderContext is Context {
2424
if (sender == address(_ALLOWANCE_HOLDER)) {
2525
// ERC-2771 like usage where the _trusted_ `AllowanceHolder` has appended the appropriate
2626
// msg.sender to the msg data
27+
bytes calldata data = super._msgData();
2728
assembly ("memory-safe") {
28-
sender := shr(0x60, calldataload(sub(calldatasize(), 0x14)))
29+
sender := shr(0x60, calldataload(add(data.offset, sub(data.length, 0x14))))
2930
}
3031
}
3132
}

src/multicall/MultiCallContext.sol

+9-5
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ abstract contract MultiCallContext is Context {
3333
return super._isForwarded() || super._msgSender() == address(_MULTICALL);
3434
}
3535

36-
function _msgData() internal view override virtual returns (bytes calldata r) {
36+
function _msgData() internal view virtual override returns (bytes calldata r) {
3737
address sender = super._msgSender();
38+
r = super._msgData();
3839
assembly ("memory-safe") {
39-
r.offset := 0x00
4040
r.length :=
4141
xor(
42-
calldatasize(),
42+
r.length,
4343
mul(
44-
xor(calldatasize(), sub(calldatasize(), 0x14)),
44+
xor(r.length, sub(r.length, 0x14)),
4545
eq(_MULTICALL_ADDRESS, and(0xffffffffffffffffffffffffffffffffffffffff, sender))
4646
)
4747
)
@@ -50,14 +50,18 @@ abstract contract MultiCallContext is Context {
5050

5151
function _msgSender() internal view virtual override returns (address sender) {
5252
sender = super._msgSender();
53+
bytes calldata data = super._msgData();
5354
assembly ("memory-safe") {
5455
sender := and(0xffffffffffffffffffffffffffffffffffffffff, sender)
5556
// ERC-2771. The trusted forwarder (`_MULTICALL`) has appended the appropriate
5657
// msg.sender to the msg data
5758
sender :=
5859
xor(
5960
sender,
60-
mul(xor(sender, shr(0x60, calldataload(sub(calldatasize(), 0x14)))), eq(_MULTICALL_ADDRESS, sender))
61+
mul(
62+
xor(sender, shr(0x60, calldataload(add(data.offset, sub(data.length, 0x14))))),
63+
eq(_MULTICALL_ADDRESS, sender)
64+
)
6165
)
6266
}
6367
}

0 commit comments

Comments
 (0)