mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #2386 from ethereum/utf8-fix
Fix UTF-8 validation for high codepoints (>10000)
This commit is contained in:
commit
3abadc7122
@ -10,6 +10,7 @@ Features:
|
|||||||
* Inline Assembly: introduce ``keccak256`` as an opcode. ``sha3`` is still a valid alias.
|
* Inline Assembly: introduce ``keccak256`` as an opcode. ``sha3`` is still a valid alias.
|
||||||
|
|
||||||
Bugfixes:
|
Bugfixes:
|
||||||
|
* Type Checker: Make UTF8-validation a bit more sloppy to include more valid sequences.
|
||||||
* Fixed crash concerning non-callable types.
|
* Fixed crash concerning non-callable types.
|
||||||
* Unused variable warnings no longer issued for variables used inside inline assembly.
|
* Unused variable warnings no longer issued for variables used inside inline assembly.
|
||||||
* Inline Assembly: Enforce function arguments when parsing functional instructions.
|
* Inline Assembly: Enforce function arguments when parsing functional instructions.
|
||||||
|
@ -40,7 +40,7 @@ bool validateUTF8(std::string const& _input, size_t& _invalidPosition)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
switch(_input[i] & 0xe0) {
|
switch(_input[i] & 0xf0) {
|
||||||
case 0xc0: count = 1; break;
|
case 0xc0: count = 1; break;
|
||||||
case 0xe0: count = 2; break;
|
case 0xe0: count = 2; break;
|
||||||
case 0xf0: count = 3; break;
|
case 0xf0: count = 3; break;
|
||||||
|
@ -2422,6 +2422,16 @@ BOOST_AUTO_TEST_CASE(invalid_utf8_explicit)
|
|||||||
CHECK_ERROR(sourceCode, TypeError, "Explicit type conversion not allowed");
|
CHECK_ERROR(sourceCode, TypeError, "Explicit type conversion not allowed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(large_utf8_codepoint)
|
||||||
|
{
|
||||||
|
char const* sourceCode = R"(
|
||||||
|
contract C {
|
||||||
|
string s = "\xf0\x9f\xa6\x84";
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
CHECK_SUCCESS(sourceCode);
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(string_index)
|
BOOST_AUTO_TEST_CASE(string_index)
|
||||||
{
|
{
|
||||||
char const* sourceCode = R"(
|
char const* sourceCode = R"(
|
||||||
|
Loading…
Reference in New Issue
Block a user