From ecb8dfb26c604eec850f69f2137dc1031ce4c4e5 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 29 Apr 2019 15:31:11 +0200 Subject: [PATCH] Forward-port 0.4.26 release notes and update bug list. --- Changelog.md | 14 +++++ docs/bugs.json | 34 +++++++++- docs/bugs_by_version.json | 126 ++++++++++++++++++++------------------ 3 files changed, 110 insertions(+), 64 deletions(-) diff --git a/Changelog.md b/Changelog.md index 8eef012bb..4409f30bc 100644 --- a/Changelog.md +++ b/Changelog.md @@ -410,6 +410,20 @@ Bugfixes: * Parser: Fix incorrect source location for nameless parameters. * Command Line Interface: Fix internal error when compiling stdin with no content and --ast option. + +### 0.4.26 (2019-04-29) + +Important Bugfixes: + * Code Generator: Fix initialization routine of uninitialized internal function pointers in constructor context. + * Type System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation. + +Bugfixes: + * ABIEncoderV2: Refuse to generate code that is known to be potentially buggy. + * General: Split rule list such that JavaScript environments with small stacks can use the compiler. + +Note: The above changes are not included in 0.5.0, because they were backported. + + ### 0.4.25 (2018-09-12) Important Bugfixes: diff --git a/docs/bugs.json b/docs/bugs.json index 5bbc1d743..2f13b13df 100644 --- a/docs/bugs.json +++ b/docs/bugs.json @@ -3,30 +3,58 @@ "name": "UninitializedFunctionPointerInConstructor", "summary": "Calling uninitialized internal function pointers created in the constructor does not always revert and can cause unexpected behaviour.", "description": "Uninitialized internal function pointers point to a special piece of code that causes a revert when called. Jump target positions are different during construction and after deployment, but the code for setting this special jump target only considered the situation after deployment.", - "introduced": "0.4.5", + "introduced": "0.5.0", "fixed": "0.5.8", "severity": "very low" }, + { + "name": "UninitializedFunctionPointerInConstructor_0.4.x", + "summary": "Calling uninitialized internal function pointers created in the constructor does not always revert and can cause unexpected behaviour.", + "description": "Uninitialized internal function pointers point to a special piece of code that causes a revert when called. Jump target positions are different during construction and after deployment, but the code for setting this special jump target only considered the situation after deployment.", + "introduced": "0.4.5", + "fixed": "0.4.26", + "severity": "very low" + }, { "name": "IncorrectEventSignatureInLibraries", "summary": "Contract types used in events in libraries cause an incorrect event signature hash", "description": "Instead of using the type `address` in the hashed signature, the actual contract name was used, leading to a wrong hash in the logs.", - "introduced": "0.3.0", + "introduced": "0.5.0", "fixed": "0.5.8", "severity": "very low" }, + { + "name": "IncorrectEventSignatureInLibraries_0.4.x", + "summary": "Contract types used in events in libraries cause an incorrect event signature hash", + "description": "Instead of using the type `address` in the hashed signature, the actual contract name was used, leading to a wrong hash in the logs.", + "introduced": "0.3.0", + "fixed": "0.4.26", + "severity": "very low" + }, { "name": "ABIEncoderV2PackedStorage", "summary": "Storage structs and arrays with types shorter than 32 bytes can cause data corruption if encoded directly from storage using the experimental ABIEncoderV2.", "description": "Elements of structs and arrays that are shorter than 32 bytes are not properly decoded from storage when encoded directly (i.e. not via a memory type) using ABIEncoderV2. This can cause corruption in the values themselves but can also overwrite other parts of the encoded data.", "link": "https://blog.ethereum.org/2019/03/26/solidity-optimizer-and-abiencoderv2-bug/", - "introduced": "0.4.19", + "introduced": "0.5.0", "fixed": "0.5.7", "severity": "low", "conditions": { "ABIEncoderV2": true } }, + { + "name": "ABIEncoderV2PackedStorage_0.4.x", + "summary": "Storage structs and arrays with types shorter than 32 bytes can cause data corruption if encoded directly from storage using the experimental ABIEncoderV2.", + "description": "Elements of structs and arrays that are shorter than 32 bytes are not properly decoded from storage when encoded directly (i.e. not via a memory type) using ABIEncoderV2. This can cause corruption in the values themselves but can also overwrite other parts of the encoded data.", + "link": "https://blog.ethereum.org/2019/03/26/solidity-optimizer-and-abiencoderv2-bug/", + "introduced": "0.4.19", + "fixed": "0.4.26", + "severity": "low", + "conditions": { + "ABIEncoderV2": true + } + }, { "name": "IncorrectByteInstructionOptimization", "summary": "The optimizer incorrectly handles byte opcodes whose second argument is 31 or a constant expression that evaluates to 31. This can result in unexpected values.", diff --git a/docs/bugs_by_version.json b/docs/bugs_by_version.json index c19d53324..38f9a224c 100644 --- a/docs/bugs_by_version.json +++ b/docs/bugs_by_version.json @@ -211,7 +211,7 @@ }, "0.3.0": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -232,7 +232,7 @@ }, "0.3.1": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -252,7 +252,7 @@ }, "0.3.2": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -272,7 +272,7 @@ }, "0.3.3": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -291,7 +291,7 @@ }, "0.3.4": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -310,7 +310,7 @@ }, "0.3.5": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -329,7 +329,7 @@ }, "0.3.6": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -346,7 +346,7 @@ }, "0.4.0": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -363,7 +363,7 @@ }, "0.4.1": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -380,8 +380,8 @@ }, "0.4.10": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -394,8 +394,8 @@ }, "0.4.11": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -407,8 +407,8 @@ }, "0.4.12": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -419,8 +419,8 @@ }, "0.4.13": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -431,8 +431,8 @@ }, "0.4.14": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -442,8 +442,8 @@ }, "0.4.15": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector" @@ -452,8 +452,8 @@ }, "0.4.16": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector" @@ -462,8 +462,8 @@ }, "0.4.17": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "EventStructWrongData", "NestedArrayFunctionCallDecoder", @@ -473,8 +473,8 @@ }, "0.4.18": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "EventStructWrongData", "NestedArrayFunctionCallDecoder" @@ -483,9 +483,9 @@ }, "0.4.19": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", - "ABIEncoderV2PackedStorage", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", "ExpExponentCleanup", "EventStructWrongData", "NestedArrayFunctionCallDecoder" @@ -494,7 +494,7 @@ }, "0.4.2": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -510,9 +510,9 @@ }, "0.4.20": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", - "ABIEncoderV2PackedStorage", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", "ExpExponentCleanup", "EventStructWrongData", "NestedArrayFunctionCallDecoder" @@ -521,9 +521,9 @@ }, "0.4.21": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", - "ABIEncoderV2PackedStorage", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", "ExpExponentCleanup", "EventStructWrongData", "NestedArrayFunctionCallDecoder" @@ -532,9 +532,9 @@ }, "0.4.22": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", - "ABIEncoderV2PackedStorage", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", "ExpExponentCleanup", "EventStructWrongData", "OneOfTwoConstructorsSkipped" @@ -543,9 +543,9 @@ }, "0.4.23": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", - "ABIEncoderV2PackedStorage", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", "ExpExponentCleanup", "EventStructWrongData" ], @@ -553,9 +553,9 @@ }, "0.4.24": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", - "ABIEncoderV2PackedStorage", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", "ExpExponentCleanup", "EventStructWrongData" ], @@ -563,15 +563,19 @@ }, "0.4.25": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", - "ABIEncoderV2PackedStorage" + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x" ], "released": "2018-09-12" }, + "0.4.26": { + "bugs": [], + "released": "2019-04-29" + }, "0.4.3": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -586,7 +590,7 @@ }, "0.4.4": { "bugs": [ - "IncorrectEventSignatureInLibraries", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -600,8 +604,8 @@ }, "0.4.5": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -616,8 +620,8 @@ }, "0.4.6": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -631,8 +635,8 @@ }, "0.4.7": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -645,8 +649,8 @@ }, "0.4.8": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector", @@ -659,8 +663,8 @@ }, "0.4.9": { "bugs": [ - "UninitializedFunctionPointerInConstructor", - "IncorrectEventSignatureInLibraries", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", "ExpExponentCleanup", "NestedArrayFunctionCallDecoder", "ZeroFunctionSelector",