aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2019-03-06 22:24:39 +0000
committerGitHub <noreply@github.com>2019-03-06 22:24:39 +0000
commit82c63635594b0f33a9378566ea3a5185c196ae84 (patch)
treeb7ee8d862009e6d316dc4975e0cc388027c8dd51 /src
parentc735497a65c8133c0df6b7ee7fc87dc4725994e6 (diff)
downloadminetest-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.cpp15
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