Fix incorrect string length check after cast
authorrubenwardy <rw@rubenwardy.com>
Wed, 6 Mar 2019 22:24:39 +0000 (22:24 +0000)
committerrubenwardy <rw@rubenwardy.com>
Mon, 11 Mar 2019 22:07:19 +0000 (22:07 +0000)
src/network/networkpacket.cpp

index 35a131a342dbbb3f831c93383dbf80547c795a4c..6d869e5eb47b5572ca91ceba50d48a5e0c597720 100644 (file)
@@ -110,11 +110,12 @@ NetworkPacket& NetworkPacket::operator>>(std::string& dst)
 
 NetworkPacket& NetworkPacket::operator<<(const std::string &src)
 {
-       u16 msgsize = src.size();
-       if (msgsize > STRING_MAX_LEN) {
+       if (src.size() > STRING_MAX_LEN) {
                throw PacketError("String too long");
        }
 
+       u16 msgsize = src.size();
+
        *this << msgsize;
 
        putRawString(src.c_str(), (u32)msgsize);
@@ -124,11 +125,12 @@ NetworkPacket& NetworkPacket::operator<<(const std::string &src)
 
 void NetworkPacket::putLongString(const std::string &src)
 {
-       u32 msgsize = src.size();
-       if (msgsize > LONG_STRING_MAX_LEN) {
+       if (src.size() > LONG_STRING_MAX_LEN) {
                throw PacketError("String too long");
        }
 
+       u32 msgsize = src.size();
+
        *this << msgsize;
 
        putRawString(src.c_str(), msgsize);
@@ -160,11 +162,12 @@ NetworkPacket& NetworkPacket::operator>>(std::wstring& dst)
 
 NetworkPacket& NetworkPacket::operator<<(const std::wstring &src)
 {
-       u16 msgsize = src.size();
-       if (msgsize > WIDE_STRING_MAX_LEN) {
+       if (src.size() > WIDE_STRING_MAX_LEN) {
                throw PacketError("String too long");
        }
 
+       u16 msgsize = src.size();
+
        *this << msgsize;
 
        // Write string