mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Bug list entry, changelog entry and tests.
This commit is contained in:
parent
d3a837b340
commit
352a3c5f4b
@ -1,5 +1,9 @@
|
|||||||
### 0.8.14 (unreleased)
|
### 0.8.14 (unreleased)
|
||||||
|
|
||||||
|
Important Bugfixes:
|
||||||
|
* ABI Encoding: When ABI-encoding values from calldata that contain nested arrays, correctly validate the nested array length against ``calldatasize()`` in all cases.
|
||||||
|
|
||||||
|
|
||||||
Language Features:
|
Language Features:
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,14 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"uid": "SOL-2022-2",
|
||||||
|
"name": "NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
|
"summary": "ABI-reencoding of nested dynamic calldata arrays did not always perform proper size checks against the size of calldata and could read beyond ``calldatasize()``.",
|
||||||
|
"description": "Calldata validation for nested dynamic types is deferred until the first access to the nested values. Such an access may for example be a copy to memory or an index or member access to the outer type. While in most such accesses calldata validation correctly checks that the data area of the nested array is completely contained in the passed calldata (i.e. in the range [0, calldatasize()]), this check may not be performed, when ABI encoding such nested types again directly from calldata. For instance, this can happen, if a value in calldata with a nested dynamic array is passed to an external call, used in ``abi.encode`` or emitted as event. In such cases, if the data area of the nested array extends beyond ``calldatasize()``, ABI encoding it did not revert, but continued reading values from beyond ``calldatasize()`` (i.e. zero values).",
|
||||||
|
"link": "https://blog.soliditylang.org/2022/05/17/calldata-reencode-size-check-bug/",
|
||||||
|
"introduced": "0.5.8",
|
||||||
|
"fixed": "0.8.14",
|
||||||
|
"severity": "very low"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"uid": "SOL-2022-1",
|
"uid": "SOL-2022-1",
|
||||||
"name": "AbiEncodeCallLiteralAsFixedBytesBug",
|
"name": "AbiEncodeCallLiteralAsFixedBytesBug",
|
||||||
|
@ -1036,6 +1036,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.10": {
|
"0.5.10": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1051,6 +1052,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.11": {
|
"0.5.11": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1065,6 +1067,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.12": {
|
"0.5.12": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1079,6 +1082,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.13": {
|
"0.5.13": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1093,6 +1097,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.14": {
|
"0.5.14": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1109,6 +1114,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.15": {
|
"0.5.15": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1124,6 +1130,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.16": {
|
"0.5.16": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1138,6 +1145,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.17": {
|
"0.5.17": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1269,6 +1277,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.8": {
|
"0.5.8": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1287,6 +1296,7 @@
|
|||||||
},
|
},
|
||||||
"0.5.9": {
|
"0.5.9": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1304,6 +1314,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.0": {
|
"0.6.0": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1319,6 +1330,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.1": {
|
"0.6.1": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1333,6 +1345,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.10": {
|
"0.6.10": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1343,6 +1356,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.11": {
|
"0.6.11": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1353,6 +1367,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.12": {
|
"0.6.12": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1363,6 +1378,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.2": {
|
"0.6.2": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1377,6 +1393,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.3": {
|
"0.6.3": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1391,6 +1408,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.4": {
|
"0.6.4": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
"EmptyByteArrayCopy",
|
"EmptyByteArrayCopy",
|
||||||
@ -1405,6 +1423,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.5": {
|
"0.6.5": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1419,6 +1438,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.6": {
|
"0.6.6": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1432,6 +1452,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.7": {
|
"0.6.7": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1445,6 +1466,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.8": {
|
"0.6.8": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1455,6 +1477,7 @@
|
|||||||
},
|
},
|
||||||
"0.6.9": {
|
"0.6.9": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1466,6 +1489,7 @@
|
|||||||
},
|
},
|
||||||
"0.7.0": {
|
"0.7.0": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1476,6 +1500,7 @@
|
|||||||
},
|
},
|
||||||
"0.7.1": {
|
"0.7.1": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1487,6 +1512,7 @@
|
|||||||
},
|
},
|
||||||
"0.7.2": {
|
"0.7.2": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1497,6 +1523,7 @@
|
|||||||
},
|
},
|
||||||
"0.7.3": {
|
"0.7.3": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching",
|
"KeccakCaching",
|
||||||
@ -1506,6 +1533,7 @@
|
|||||||
},
|
},
|
||||||
"0.7.4": {
|
"0.7.4": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching"
|
"KeccakCaching"
|
||||||
@ -1514,6 +1542,7 @@
|
|||||||
},
|
},
|
||||||
"0.7.5": {
|
"0.7.5": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching"
|
"KeccakCaching"
|
||||||
@ -1522,6 +1551,7 @@
|
|||||||
},
|
},
|
||||||
"0.7.6": {
|
"0.7.6": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching"
|
"KeccakCaching"
|
||||||
@ -1530,6 +1560,7 @@
|
|||||||
},
|
},
|
||||||
"0.8.0": {
|
"0.8.0": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching"
|
"KeccakCaching"
|
||||||
@ -1538,6 +1569,7 @@
|
|||||||
},
|
},
|
||||||
"0.8.1": {
|
"0.8.1": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching"
|
"KeccakCaching"
|
||||||
@ -1545,27 +1577,34 @@
|
|||||||
"released": "2021-01-27"
|
"released": "2021-01-27"
|
||||||
},
|
},
|
||||||
"0.8.10": {
|
"0.8.10": {
|
||||||
"bugs": [],
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation"
|
||||||
|
],
|
||||||
"released": "2021-11-09"
|
"released": "2021-11-09"
|
||||||
},
|
},
|
||||||
"0.8.11": {
|
"0.8.11": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"AbiEncodeCallLiteralAsFixedBytesBug"
|
"AbiEncodeCallLiteralAsFixedBytesBug"
|
||||||
],
|
],
|
||||||
"released": "2021-12-20"
|
"released": "2021-12-20"
|
||||||
},
|
},
|
||||||
"0.8.12": {
|
"0.8.12": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"AbiEncodeCallLiteralAsFixedBytesBug"
|
"AbiEncodeCallLiteralAsFixedBytesBug"
|
||||||
],
|
],
|
||||||
"released": "2022-02-16"
|
"released": "2022-02-16"
|
||||||
},
|
},
|
||||||
"0.8.13": {
|
"0.8.13": {
|
||||||
"bugs": [],
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation"
|
||||||
|
],
|
||||||
"released": "2022-03-16"
|
"released": "2022-03-16"
|
||||||
},
|
},
|
||||||
"0.8.2": {
|
"0.8.2": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory",
|
"ABIDecodeTwoDimensionalArrayMemory",
|
||||||
"KeccakCaching"
|
"KeccakCaching"
|
||||||
@ -1574,6 +1613,7 @@
|
|||||||
},
|
},
|
||||||
"0.8.3": {
|
"0.8.3": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables",
|
"SignedImmutables",
|
||||||
"ABIDecodeTwoDimensionalArrayMemory"
|
"ABIDecodeTwoDimensionalArrayMemory"
|
||||||
],
|
],
|
||||||
@ -1581,37 +1621,44 @@
|
|||||||
},
|
},
|
||||||
"0.8.4": {
|
"0.8.4": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables"
|
"SignedImmutables"
|
||||||
],
|
],
|
||||||
"released": "2021-04-21"
|
"released": "2021-04-21"
|
||||||
},
|
},
|
||||||
"0.8.5": {
|
"0.8.5": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables"
|
"SignedImmutables"
|
||||||
],
|
],
|
||||||
"released": "2021-06-10"
|
"released": "2021-06-10"
|
||||||
},
|
},
|
||||||
"0.8.6": {
|
"0.8.6": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables"
|
"SignedImmutables"
|
||||||
],
|
],
|
||||||
"released": "2021-06-22"
|
"released": "2021-06-22"
|
||||||
},
|
},
|
||||||
"0.8.7": {
|
"0.8.7": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"SignedImmutables"
|
"SignedImmutables"
|
||||||
],
|
],
|
||||||
"released": "2021-08-11"
|
"released": "2021-08-11"
|
||||||
},
|
},
|
||||||
"0.8.8": {
|
"0.8.8": {
|
||||||
"bugs": [
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation",
|
||||||
"UserDefinedValueTypesBug",
|
"UserDefinedValueTypesBug",
|
||||||
"SignedImmutables"
|
"SignedImmutables"
|
||||||
],
|
],
|
||||||
"released": "2021-09-27"
|
"released": "2021-09-27"
|
||||||
},
|
},
|
||||||
"0.8.9": {
|
"0.8.9": {
|
||||||
"bugs": [],
|
"bugs": [
|
||||||
|
"NestedCallataArrayAbiReencodingSizeValidation"
|
||||||
|
],
|
||||||
"released": "2021-09-29"
|
"released": "2021-09-29"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
pragma abicoder v2;
|
||||||
|
|
||||||
|
contract C {
|
||||||
|
function f(uint[] calldata) public {}
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// revertStrings: debug
|
||||||
|
// compileViaYul: also
|
||||||
|
// ----
|
||||||
|
// f(uint256[]): 0x20, 0 ->
|
||||||
|
// f(uint256[]): 0x20, 1 -> FAILURE, hex"08c379a0", 0x20, 0x2b, "ABI decoding: invalid calldata a", "rray stride"
|
||||||
|
// f(uint256[]): 0x20, 2 -> FAILURE, hex"08c379a0", 0x20, 0x2b, "ABI decoding: invalid calldata a", "rray stride"
|
@ -0,0 +1,10 @@
|
|||||||
|
contract C {
|
||||||
|
function f(uint[] calldata) public {}
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// compileViaYul: also
|
||||||
|
// ----
|
||||||
|
// f(uint256[]): 0x20, 0 ->
|
||||||
|
// f(uint256[]): 0x20, 1 -> FAILURE
|
||||||
|
// f(uint256[]): 0x20, 2 -> FAILURE
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
pragma abicoder v2;
|
||||||
|
|
||||||
|
contract C {
|
||||||
|
function f(uint[3][] calldata a) public {
|
||||||
|
abi.encode(a);
|
||||||
|
}
|
||||||
|
function f(uint[][3] calldata a) public {
|
||||||
|
abi.encode(a);
|
||||||
|
}
|
||||||
|
function f(uint[2][2] calldata a) public {
|
||||||
|
abi.encode(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// compileViaYul: also
|
||||||
|
// ----
|
||||||
|
// f(uint256[3][]): 0x20, 1, 0x01 -> FAILURE
|
||||||
|
// f(uint256[3][]): 0x20, 1, 0x01, 0x02 -> FAILURE
|
||||||
|
// f(uint256[3][]): 0x20, 1, 0x01, 0x02, 0x03 ->
|
||||||
|
// f(uint256[][3]): 0x20, 0x60, 0x60, 0x60, 3, 0x01 -> FAILURE
|
||||||
|
// f(uint256[][3]): 0x20, 0x60, 0x60, 0x60, 3, 0x01, 0x02 -> FAILURE
|
||||||
|
// f(uint256[][3]): 0x20, 0x60, 0x60, 0x60, 3, 0x01, 0x02, 0x03 ->
|
||||||
|
// f(uint256[2][2]): 0x01 -> FAILURE
|
||||||
|
// f(uint256[2][2]): 0x01, 0x02 -> FAILURE
|
||||||
|
// f(uint256[2][2]): 0x01, 0x02, 0x03 -> FAILURE
|
||||||
|
// f(uint256[2][2]): 0x01, 0x02, 0x03, 0x04 ->
|
||||||
|
// f(uint256[2][2]): 0x01, 0x02, 0x03, 0x04, 0x05 ->
|
Loading…
Reference in New Issue
Block a user