Merge pull request #6618 from ethereum/forwardPortChangelogAndBuglist

Forward-port 0.4.26 release notes and update bug list.
This commit is contained in:
chriseth 2019-04-30 13:18:30 +02:00 committed by GitHub
commit 0dc461b926
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 110 additions and 64 deletions

View File

@ -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:

View File

@ -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.",

View File

@ -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",