Add buglist entry

Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
This commit is contained in:
r0qs 2023-07-11 11:54:24 +02:00 committed by Kamil Śliwak
parent 5c7214cbe3
commit 86602852be
4 changed files with 67 additions and 5 deletions

View File

@ -1,7 +1,7 @@
### 0.8.21 (unreleased) ### 0.8.21 (unreleased)
Important Bugfixes: Important Bugfixes:
* Code Generator: Always generate code for the expression in ``expression.selector``. * Code Generator: Always generate code for the expression in ``<expression>.selector`` in the legacy code generation pipeline.
* Yul Optimizer: Fix ``FullInliner`` step (``i``) not preserving the evaluation order of arguments passed into inlined functions in code that is not in expression-split form (i.e. when using a custom optimizer sequence in which the step not preceded by ``ExpressionSplitter`` (``x``)). * Yul Optimizer: Fix ``FullInliner`` step (``i``) not preserving the evaluation order of arguments passed into inlined functions in code that is not in expression-split form (i.e. when using a custom optimizer sequence in which the step not preceded by ``ExpressionSplitter`` (``x``)).

View File

@ -12,6 +12,19 @@
"yulOptimizer": true "yulOptimizer": true
} }
}, },
{
"uid": "SOL-2023-1",
"name": "MissingSideEffectsOnSelectorAccess",
"summary": "Accessing the ``.selector`` member on complex expressions leaves the expression unevaluated in the legacy code generation.",
"description": "When accessing the ``.selector`` member on an expression with side-effects, like an assignment, a function call or a conditional, the expression would not be evaluated in the legacy code generation. This would happen in expressions where the functions used in the expression were all known at compilation time, regardless of whether the whole expression could be evaluated at compilation time or not. Note that the code generated by the IR pipeline was unaffected and would behave as expected.",
"link": "https://blog.soliditylang.org/2023/07/19/missing-side-effects-on-selector-access-bug/",
"introduced": "0.6.2",
"fixed": "0.8.21",
"severity": "low",
"conditions": {
"viaIR": false
}
},
{ {
"uid": "SOL-2022-7", "uid": "SOL-2022-7",
"name": "StorageWriteRemovalBeforeConditionalTermination", "name": "StorageWriteRemovalBeforeConditionalTermination",

View File

@ -1423,6 +1423,7 @@
"0.6.10": { "0.6.10": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1438,6 +1439,7 @@
"0.6.11": { "0.6.11": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1453,6 +1455,7 @@
"0.6.12": { "0.6.12": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1467,6 +1470,7 @@
}, },
"0.6.2": { "0.6.2": {
"bugs": [ "bugs": [
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"NestedCalldataArrayAbiReencodingSizeValidation", "NestedCalldataArrayAbiReencodingSizeValidation",
@ -1484,6 +1488,7 @@
}, },
"0.6.3": { "0.6.3": {
"bugs": [ "bugs": [
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"NestedCalldataArrayAbiReencodingSizeValidation", "NestedCalldataArrayAbiReencodingSizeValidation",
@ -1501,6 +1506,7 @@
}, },
"0.6.4": { "0.6.4": {
"bugs": [ "bugs": [
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"NestedCalldataArrayAbiReencodingSizeValidation", "NestedCalldataArrayAbiReencodingSizeValidation",
@ -1518,6 +1524,7 @@
}, },
"0.6.5": { "0.6.5": {
"bugs": [ "bugs": [
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"NestedCalldataArrayAbiReencodingSizeValidation", "NestedCalldataArrayAbiReencodingSizeValidation",
@ -1535,6 +1542,7 @@
}, },
"0.6.6": { "0.6.6": {
"bugs": [ "bugs": [
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"NestedCalldataArrayAbiReencodingSizeValidation", "NestedCalldataArrayAbiReencodingSizeValidation",
@ -1552,6 +1560,7 @@
"0.6.7": { "0.6.7": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"NestedCalldataArrayAbiReencodingSizeValidation", "NestedCalldataArrayAbiReencodingSizeValidation",
@ -1569,6 +1578,7 @@
"0.6.8": { "0.6.8": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"NestedCalldataArrayAbiReencodingSizeValidation", "NestedCalldataArrayAbiReencodingSizeValidation",
@ -1583,6 +1593,7 @@
"0.6.9": { "0.6.9": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1599,6 +1610,7 @@
"0.7.0": { "0.7.0": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1614,6 +1626,7 @@
"0.7.1": { "0.7.1": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1630,6 +1643,7 @@
"0.7.2": { "0.7.2": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1645,6 +1659,7 @@
"0.7.3": { "0.7.3": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1659,6 +1674,7 @@
"0.7.4": { "0.7.4": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1672,6 +1688,7 @@
"0.7.5": { "0.7.5": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1685,6 +1702,7 @@
"0.7.6": { "0.7.6": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1698,6 +1716,7 @@
"0.8.0": { "0.8.0": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1711,6 +1730,7 @@
"0.8.1": { "0.8.1": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1724,6 +1744,7 @@
"0.8.10": { "0.8.10": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1734,6 +1755,7 @@
"0.8.11": { "0.8.11": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1745,6 +1767,7 @@
"0.8.12": { "0.8.12": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1756,6 +1779,7 @@
"0.8.13": { "0.8.13": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"StorageWriteRemovalBeforeConditionalTermination", "StorageWriteRemovalBeforeConditionalTermination",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
@ -1768,6 +1792,7 @@
"0.8.14": { "0.8.14": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"StorageWriteRemovalBeforeConditionalTermination", "StorageWriteRemovalBeforeConditionalTermination",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
@ -1778,6 +1803,7 @@
"0.8.15": { "0.8.15": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"StorageWriteRemovalBeforeConditionalTermination", "StorageWriteRemovalBeforeConditionalTermination",
"AbiReencodingHeadOverflowWithStaticArrayCleanup" "AbiReencodingHeadOverflowWithStaticArrayCleanup"
], ],
@ -1786,31 +1812,36 @@
"0.8.16": { "0.8.16": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"StorageWriteRemovalBeforeConditionalTermination" "StorageWriteRemovalBeforeConditionalTermination"
], ],
"released": "2022-08-08" "released": "2022-08-08"
}, },
"0.8.17": { "0.8.17": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder" "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess"
], ],
"released": "2022-09-08" "released": "2022-09-08"
}, },
"0.8.18": { "0.8.18": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder" "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess"
], ],
"released": "2023-02-01" "released": "2023-02-01"
}, },
"0.8.19": { "0.8.19": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder" "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess"
], ],
"released": "2023-02-22" "released": "2023-02-22"
}, },
"0.8.2": { "0.8.2": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1823,13 +1854,15 @@
}, },
"0.8.20": { "0.8.20": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder" "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess"
], ],
"released": "2023-05-10" "released": "2023-05-10"
}, },
"0.8.3": { "0.8.3": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1842,6 +1875,7 @@
"0.8.4": { "0.8.4": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1853,6 +1887,7 @@
"0.8.5": { "0.8.5": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1864,6 +1899,7 @@
"0.8.6": { "0.8.6": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1875,6 +1911,7 @@
"0.8.7": { "0.8.7": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1886,6 +1923,7 @@
"0.8.8": { "0.8.8": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",
@ -1898,6 +1936,7 @@
"0.8.9": { "0.8.9": {
"bugs": [ "bugs": [
"FullInlinerNonExpressionSplitArgumentEvaluationOrder", "FullInlinerNonExpressionSplitArgumentEvaluationOrder",
"MissingSideEffectsOnSelectorAccess",
"AbiReencodingHeadOverflowWithStaticArrayCleanup", "AbiReencodingHeadOverflowWithStaticArrayCleanup",
"DirtyBytesArrayToStorage", "DirtyBytesArrayToStorage",
"DataLocationChangeInInternalOverride", "DataLocationChangeInInternalOverride",

View File

@ -0,0 +1,10 @@
contract C {
bool public z;
function f() public {
((z = true) ? this.f : this.f).selector;
}
}
// ----
// f()
// z() -> true