Skip to content

Commit fad1fcf

Browse files
committed
Add missing _msgData() override for AllowanceHolderContext and MultiCallContext
1 parent 5eac0b1 commit fad1fcf

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

src/allowanceholder/AllowanceHolderContext.sol

+8
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ abstract contract AllowanceHolderContext is Context {
1111
return super._isForwarded() || super._msgSender() == address(_ALLOWANCE_HOLDER);
1212
}
1313

14+
function _msgData() internal view viertual override returns (bytes calldata) {
15+
if (super._msgSender() == address(_ALLOWANCE_HOLDER)) {
16+
return msg.data[:msg.data.length - 20];
17+
} else {
18+
return msg.data;
19+
}
20+
}
21+
1422
function _msgSender() internal view virtual override returns (address sender) {
1523
sender = super._msgSender();
1624
if (sender == address(_ALLOWANCE_HOLDER)) {

src/multicall/MultiCallContext.sol

+15
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,21 @@ 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) {
37+
address sender = super._msgSender();
38+
assembly ("memory-safe") {
39+
r.offset := 0x00
40+
r.length :=
41+
xor(
42+
calldatasize(),
43+
mul(
44+
xor(calldatasize(), sub(calldatasize(), 0x14)),
45+
eq(_MULTICALL_ADDRESS, and(0xffffffffffffffffffffffffffffffffffffffff, sender))
46+
)
47+
)
48+
}
49+
}
50+
3651
function _msgSender() internal view virtual override returns (address sender) {
3752
sender = super._msgSender();
3853
assembly ("memory-safe") {

0 commit comments

Comments
 (0)