mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #6618 from ethereum/forwardPortChangelogAndBuglist
Forward-port 0.4.26 release notes and update bug list.
This commit is contained in:
commit
0dc461b926
14
Changelog.md
14
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:
|
||||
|
@ -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.",
|
||||
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user