diff options
author | rubenwardy <rw@rubenwardy.com> | 2019-03-06 22:24:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-06 22:24:39 +0000 |
commit | 82c63635594b0f33a9378566ea3a5185c196ae84 (patch) | |
tree | b7ee8d862009e6d316dc4975e0cc388027c8dd51 /src | |
parent | c735497a65c8133c0df6b7ee7fc87dc4725994e6 (diff) | |
download | minetest-82c63635594b0f33a9378566ea3a5185c196ae84.tar.gz minetest-82c63635594b0f33a9378566ea3a5185c196ae84.tar.bz2 minetest-82c63635594b0f33a9378566ea3a5185c196ae84.zip |
Fix incorrect string length check after cast
Diffstat (limited to 'src')
-rw-r--r-- | src/network/networkpacket.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/network/networkpacket.cpp b/src/network/networkpacket.cpp index 35a131a34..6d869e5eb 100644 --- a/src/network/networkpacket.cpp +++ b/src/network/networkpacket.cpp @@ -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 |