Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Make NetworkPacket respect serialized string size limits
  • Loading branch information
kwolekr committed Aug 10, 2015
1 parent 18cfd89 commit 1c408c4
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions src/network/networkpacket.cpp
Expand Up @@ -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();

Expand All @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand Down

0 comments on commit 1c408c4

Please sign in to comment.