Merge pull request #1446 from ethereum/utf8-validate

Improve UTF8 validate
This commit is contained in:
chriseth 2016-11-29 15:14:10 +01:00 committed by GitHub
commit 071cbc4a9d
4 changed files with 11 additions and 7 deletions

View File

@ -28,7 +28,7 @@ namespace dev
{
bool validate(std::string const& _input, size_t& _invalidPosition)
bool validateUTF8(std::string const& _input, size_t& _invalidPosition)
{
const size_t length = _input.length();
bool valid = true;

View File

@ -30,6 +30,12 @@ namespace dev
/// Validate an input for UTF8 encoding
/// @returns false if it is invalid and the first invalid position in invalidPosition
bool validate(std::string const& _input, size_t& _invalidPosition);
bool validateUTF8(std::string const& _input, size_t& _invalidPosition);
inline bool validateUTF8(std::string const& _input)
{
size_t invalidPos;
return validateUTF8(_input, invalidPos);
}
}

View File

@ -417,9 +417,8 @@ bool ASTJsonConverter::visit(ElementaryTypeNameExpression const& _node)
bool ASTJsonConverter::visit(Literal const& _node)
{
char const* tokenString = Token::toString(_node.token());
size_t invalidPos = 0;
Json::Value value{_node.value()};
if (!dev::validate(_node.value(), invalidPos))
if (!dev::validateUTF8(_node.value()))
value = Json::nullValue;
Token::Value subdenomination = Token::Value(_node.subDenomination());
addJsonNode(_node, "Literal", {

View File

@ -896,7 +896,7 @@ std::string StringLiteralType::toString(bool) const
{
size_t invalidSequence;
if (!dev::validate(m_value, invalidSequence))
if (!dev::validateUTF8(m_value, invalidSequence))
return "literal_string (contains invalid UTF-8 sequence at position " + dev::toString(invalidSequence) + ")";
return "literal_string \"" + m_value + "\"";
@ -909,8 +909,7 @@ TypePointer StringLiteralType::mobileType() const
bool StringLiteralType::isValidUTF8() const
{
size_t dontCare {};
return dev::validate(m_value, dontCare);
return dev::validateUTF8(m_value);
}
shared_ptr<FixedBytesType> FixedBytesType::smallestTypeForLiteral(string const& _literal)