Skip to content
Snippets Groups Projects
Commit 1c408c4f authored by kwolekr's avatar kwolekr
Browse files

Make NetworkPacket respect serialized string size limits

parent 18cfd89a
No related branches found
No related tags found
No related merge requests found
......@@ -85,7 +85,7 @@ NetworkPacket& NetworkPacket::operator>>(std::string& dst)
{
checkReadOffset(m_read_offset, 2);
u16 strLen = readU16(&m_data[m_read_offset]);
m_read_offset += sizeof(u16);
m_read_offset += 2;
dst.clear();
......@@ -105,8 +105,8 @@ NetworkPacket& NetworkPacket::operator>>(std::string& dst)
NetworkPacket& NetworkPacket::operator<<(std::string src)
{
u16 msgsize = src.size();
if (msgsize > 0xFFFF) {
msgsize = 0xFFFF;
if (msgsize > STRING_MAX_LEN) {
throw PacketError("String too long");
}
*this << msgsize;
......@@ -119,8 +119,8 @@ NetworkPacket& NetworkPacket::operator<<(std::string src)
void NetworkPacket::putLongString(std::string src)
{
u32 msgsize = src.size();
if (msgsize > 0xFFFFFFFF) {
msgsize = 0xFFFFFFFF;
if (msgsize > LONG_STRING_MAX_LEN) {
throw PacketError("String too long");
}
*this << msgsize;
......@@ -155,8 +155,8 @@ NetworkPacket& NetworkPacket::operator>>(std::wstring& dst)
NetworkPacket& NetworkPacket::operator<<(std::wstring src)
{
u16 msgsize = src.size();
if (msgsize > 0xFFFF) {
msgsize = 0xFFFF;
if (msgsize > WIDE_STRING_MAX_LEN) {
throw PacketError("String too long");
}
*this << msgsize;
......@@ -179,6 +179,10 @@ std::string NetworkPacket::readLongString()
return "";
}
if (strLen > LONG_STRING_MAX_LEN) {
throw PacketError("String too long");
}
checkReadOffset(m_read_offset, strLen);
std::string dst;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment