fix(BalancerV3Executor): Slice callback data nicely
Make a stricter data validation Took 35 minutes
This commit is contained in:
@@ -87,8 +87,9 @@ contract BalancerV3Executor is IExecutor, RestrictTransferFrom, ICallback {
|
|||||||
returns (bytes memory result)
|
returns (bytes memory result)
|
||||||
{
|
{
|
||||||
verifyCallback(data);
|
verifyCallback(data);
|
||||||
result = _swapCallback(data[68:]);
|
// Remove the first 68 bytes 4 selector + 32 dataOffset + 32 dataLength and extra padding at the end
|
||||||
// Our general callback logic returns a not ABI encoded result.
|
result = _swapCallback(data[68:181]);
|
||||||
|
// Our general callback logic returns a not ABI encoded result (see Dispatcher._callHandleCallbackOnExecutor).
|
||||||
// However, the Vault expects the result to be ABI encoded. That is why we need to encode it here again.
|
// However, the Vault expects the result to be ABI encoded. That is why we need to encode it here again.
|
||||||
return abi.encode(result);
|
return abi.encode(result);
|
||||||
}
|
}
|
||||||
@@ -112,7 +113,7 @@ contract BalancerV3Executor is IExecutor, RestrictTransferFrom, ICallback {
|
|||||||
address receiver
|
address receiver
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (data.length < 113) {
|
if (data.length != 113) {
|
||||||
revert BalancerV3Executor__InvalidDataLength();
|
revert BalancerV3Executor__InvalidDataLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user