aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changelog.md3
-rw-r--r--docs/bugs.json7
-rw-r--r--docs/bugs_by_version.json43
3 files changed, 53 insertions, 0 deletions
diff --git a/Changelog.md b/Changelog.md
index 8f3bfff9..997c4069 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -91,6 +91,9 @@ Compiler Features:
* Code Generator: Allocate and free local variables according to their scope.
* Removed ``pragma experimental "v0.5.0";``.
+Critical Bugfixes:
+ * Code Generator: Properly perform cleanup for exponentiation and non-256 bit types.
+
Bugfixes:
* Build System: Support versions of CVC4 linked against CLN instead of GMP. In case of compilation issues due to the experimental SMT solver support, the solvers can be disabled when configuring the project with CMake using ``-DUSE_CVC4=OFF`` or ``-DUSE_Z3=OFF``.
* Tests: Fix chain parameters to make ipc tests work with newer versions of cpp-ethereum.
diff --git a/docs/bugs.json b/docs/bugs.json
index cf03adfe..b629d485 100644
--- a/docs/bugs.json
+++ b/docs/bugs.json
@@ -1,5 +1,12 @@
[
{
+ "name": "ExpCleanupZero",
+ "summary": "Using exponentiating with types shorter than 256 bits and zero as base can result in unexpected values.",
+ "description": "As defined by the EVM, 0 ** 0 is one. Solidity does not always remove dirty higher order bits of types that are smaller than 256 bits before applying an operation because it does not matter if the cleanup is performed before or after the operation. This is true for EXP except for the case where the base is zero, which was overlooked.",
+ "fixed": "0.5.0",
+ "severity": "high"
+ },
+ {
"name": "EventStructWrongData",
"summary": "Using structs in events logged wrong data.",
"description": "If a struct is used in an event, the address of the struct is logged instead of the actual data.",
diff --git a/docs/bugs_by_version.json b/docs/bugs_by_version.json
index ab200036..1d41626e 100644
--- a/docs/bugs_by_version.json
+++ b/docs/bugs_by_version.json
@@ -1,6 +1,7 @@
{
"0.1.0": {
"bugs": [
+ "ExpCleanupZero",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
"SkipEmptyStringLiteral",
@@ -18,6 +19,7 @@
},
"0.1.1": {
"bugs": [
+ "ExpCleanupZero",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
"SkipEmptyStringLiteral",
@@ -35,6 +37,7 @@
},
"0.1.2": {
"bugs": [
+ "ExpCleanupZero",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
"SkipEmptyStringLiteral",
@@ -52,6 +55,7 @@
},
"0.1.3": {
"bugs": [
+ "ExpCleanupZero",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
"SkipEmptyStringLiteral",
@@ -69,6 +73,7 @@
},
"0.1.4": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
@@ -87,6 +92,7 @@
},
"0.1.5": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
@@ -105,6 +111,7 @@
},
"0.1.6": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
@@ -124,6 +131,7 @@
},
"0.1.7": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
@@ -143,6 +151,7 @@
},
"0.2.0": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
@@ -162,6 +171,7 @@
},
"0.2.1": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
@@ -181,6 +191,7 @@
},
"0.2.2": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"ECRecoverMalformedInput",
@@ -200,6 +211,7 @@
},
"0.3.0": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -219,6 +231,7 @@
},
"0.3.1": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -237,6 +250,7 @@
},
"0.3.2": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -255,6 +269,7 @@
},
"0.3.3": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -272,6 +287,7 @@
},
"0.3.4": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -289,6 +305,7 @@
},
"0.3.5": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -306,6 +323,7 @@
},
"0.3.6": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -321,6 +339,7 @@
},
"0.4.0": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -336,6 +355,7 @@
},
"0.4.1": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -351,6 +371,7 @@
},
"0.4.10": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -362,6 +383,7 @@
},
"0.4.11": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -372,6 +394,7 @@
},
"0.4.12": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -381,6 +404,7 @@
},
"0.4.13": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -390,6 +414,7 @@
},
"0.4.14": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue"
@@ -398,6 +423,7 @@
},
"0.4.15": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector"
],
@@ -405,6 +431,7 @@
},
"0.4.16": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector"
],
@@ -412,6 +439,7 @@
},
"0.4.17": {
"bugs": [
+ "ExpCleanupZero",
"EventStructWrongData",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector"
@@ -420,6 +448,7 @@
},
"0.4.18": {
"bugs": [
+ "ExpCleanupZero",
"EventStructWrongData",
"NestedArrayFunctionCallDecoder"
],
@@ -427,6 +456,7 @@
},
"0.4.19": {
"bugs": [
+ "ExpCleanupZero",
"EventStructWrongData",
"NestedArrayFunctionCallDecoder"
],
@@ -434,6 +464,7 @@
},
"0.4.2": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -448,6 +479,7 @@
},
"0.4.20": {
"bugs": [
+ "ExpCleanupZero",
"EventStructWrongData",
"NestedArrayFunctionCallDecoder"
],
@@ -455,6 +487,7 @@
},
"0.4.21": {
"bugs": [
+ "ExpCleanupZero",
"EventStructWrongData",
"NestedArrayFunctionCallDecoder"
],
@@ -462,6 +495,7 @@
},
"0.4.22": {
"bugs": [
+ "ExpCleanupZero",
"EventStructWrongData",
"OneOfTwoConstructorsSkipped"
],
@@ -469,18 +503,21 @@
},
"0.4.23": {
"bugs": [
+ "ExpCleanupZero",
"EventStructWrongData"
],
"released": "2018-04-19"
},
"0.4.24": {
"bugs": [
+ "ExpCleanupZero",
"EventStructWrongData"
],
"released": "2018-05-16"
},
"0.4.3": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -494,6 +531,7 @@
},
"0.4.4": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -506,6 +544,7 @@
},
"0.4.5": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -519,6 +558,7 @@
},
"0.4.6": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -531,6 +571,7 @@
},
"0.4.7": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -542,6 +583,7 @@
},
"0.4.8": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",
@@ -553,6 +595,7 @@
},
"0.4.9": {
"bugs": [
+ "ExpCleanupZero",
"NestedArrayFunctionCallDecoder",
"ZeroFunctionSelector",
"DelegateCallReturnValue",