From 3ebfa8cc645e5b35c8e6985ece3ef090858a9cb2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 18 Mar 2020 23:20:11 +0100 Subject: Core/PacketIO: Add a validating string helper class for use in packet classes (cherry picked from commit f2f47f774f3d9c5da1a38b5f20cbfe59c2ff66af) --- src/server/shared/Packets/ByteBuffer.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/server/shared/Packets/ByteBuffer.cpp') diff --git a/src/server/shared/Packets/ByteBuffer.cpp b/src/server/shared/Packets/ByteBuffer.cpp index 6c1ed3842cc..f8470332893 100644 --- a/src/server/shared/Packets/ByteBuffer.cpp +++ b/src/server/shared/Packets/ByteBuffer.cpp @@ -39,16 +39,16 @@ ByteBufferPositionException::ByteBufferPositionException(size_t pos, size_t size message().assign(ss.str()); } -ByteBufferInvalidValueException::ByteBufferInvalidValueException(char const* type, size_t pos) +ByteBufferInvalidValueException::ByteBufferInvalidValueException(char const* type, char const* value) { - message().assign(Trinity::StringFormat("Invalid %s value found in ByteBuffer at pos " SZFMTD, type, pos)); + message().assign(Trinity::StringFormat("Invalid %s value (%s) found in ByteBuffer", type, value)); } ByteBuffer& ByteBuffer::operator>>(float& value) { value = read(); if (!std::isfinite(value)) - throw ByteBufferInvalidValueException("float", _rpos - sizeof(float)); + throw ByteBufferInvalidValueException("float", "infinity"); return *this; } @@ -56,7 +56,7 @@ ByteBuffer& ByteBuffer::operator>>(double& value) { value = read(); if (!std::isfinite(value)) - throw ByteBufferInvalidValueException("double", _rpos - sizeof(double)); + throw ByteBufferInvalidValueException("double", "infinity"); return *this; } @@ -71,7 +71,7 @@ std::string ByteBuffer::ReadCString(bool requireValidUtf8 /*= true*/) value += c; } if (requireValidUtf8 && !utf8::is_valid(value.begin(), value.end())) - throw ByteBufferInvalidValueException("string", _rpos - value.length() - 1); + throw ByteBufferInvalidValueException("string", value.c_str()); return value; } @@ -87,7 +87,7 @@ std::string ByteBuffer::ReadString(uint32 length, bool requireValidUtf8 /*= true std::string value(reinterpret_cast(&_storage[_rpos]), length); _rpos += length; if (requireValidUtf8 && !utf8::is_valid(value.begin(), value.end())) - throw ByteBufferInvalidValueException("string", _rpos - value.length() - 1); + throw ByteBufferInvalidValueException("string", value.c_str()); return value; } -- cgit v1.2.3