diff --git a/Changelog.md b/Changelog.md index 4e0d867b3..b2f6a8b46 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,6 +3,7 @@ Breaking Changes: * Assembler: The artificial ASSIGNIMMUTABLE opcode and the corresponding builtin in the "EVM with object access" dialect of Yul take the base offset of the code to modify as additional argument. * Code Generator: All arithmetic is checked by default. These checks can be disabled using ``unchecked { ... }``. + * Code Generator: Cause a panic if a byte array in storage is accessed whose length is encoded incorrectly. * General: Remove global functions ``log0``, ``log1``, ``log2``, ``log3`` and ``log4``. * Type Checker: Function call options can only be given once. * Type System: Unary negation can only be used on signed integers, not on unsigned integers. diff --git a/docs/080-breaking-changes.rst b/docs/080-breaking-changes.rst index f1da9ca07..0d981fbe5 100644 --- a/docs/080-breaking-changes.rst +++ b/docs/080-breaking-changes.rst @@ -32,6 +32,9 @@ the compiler notifying you about it. This will save gas on errors while it still allows static analysis tools to distinguish these situations from a revert on invalid input, like a failing ``require``. +* If a byte array in storage is accessed whose length is encoded incorrectly, a panic is caused. + A contract cannot get into this situation unless inline assembly is used to modify the raw representation of storage byte arrays. + New Restrictions ================